diff --git a/.gitattributes b/.gitattributes index 92dfc3c617..a0fd4fed62 100644 --- a/.gitattributes +++ b/.gitattributes @@ -92,3 +92,4 @@ GRAPHICS # hex files *.hex binary *.eep binary +nix/sources.nix linguist-generated=true diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index dfb1b58895..c8d988d0f0 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -25,18 +25,13 @@ jobs: - name: Generate API Data run: qmk generate-api - - name: Install rsync - run: | - apt-get update && apt-get install -y rsync - - name: Upload API Data - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: jakejarvis/s3-sync-action@master with: - ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: main - FOLDER: api_data/v1 - CLEAN: true - GIT_CONFIG_EMAIL: hello@qmk.fm - REPOSITORY_NAME: qmk/qmk_keyboards - TARGET_FOLDER: v1 + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: ${{ secrets.API_SPACE_MASTER }} + AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} + AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com + SOURCE_DIR: 'api_data' diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 28c6bb3679..df727518e5 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -23,6 +23,6 @@ jobs: with: submodules: recursive - name: Install dependencies - run: pip3 install -r requirements.txt + run: pip3 install -r requirements-dev.txt - name: Run tests run: bin/qmk pytest diff --git a/.github/workflows/develop_api.yml b/.github/workflows/develop_api.yml index 53a5b452f8..4e64cbcf8c 100644 --- a/.github/workflows/develop_api.yml +++ b/.github/workflows/develop_api.yml @@ -25,18 +25,13 @@ jobs: - name: Generate API Data run: qmk generate-api - - name: Install rsync - run: | - apt-get update && apt-get install -y rsync - - name: Upload API Data - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: jakejarvis/s3-sync-action@master with: - ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: main - FOLDER: api_data/v1 - CLEAN: true - GIT_CONFIG_EMAIL: hello@qmk.fm - REPOSITORY_NAME: qmk/qmk_keyboards_devel - TARGET_FOLDER: v1 + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: ${{ secrets.API_SPACE_DEVELOP }} + AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} + AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com + SOURCE_DIR: 'api_data' diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 201f3c230f..c17a04a542 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -1,47 +1,42 @@ -name: Format Codebase +name: PR Lint Format on: - push: - branches: - - master - - develop + pull_request: + paths: + - 'drivers/**' + - 'lib/arm_atsam/**' + - 'lib/lib8tion/**' + - 'lib/python/**' + - 'platforms/**' + - 'quantum/**' + - 'tests/**' + - 'tmk_core/**' jobs: - format: + lint: runs-on: ubuntu-latest - container: qmkfm/base_container - # protect against those who develop with their fork on master - if: github.repository == 'qmk/qmk_firmware' + container: qmkfm/base_container steps: - uses: rlespinasse/github-slug-action@v3.x - uses: actions/checkout@v2 with: - token: ${{ secrets.API_TOKEN_GITHUB }} + fetch-depth: 0 - - name: Install dependencies - run: | - apt-get update && apt-get install -y dos2unix - - - name: Format files - run: | - bin/qmk cformat -a - bin/qmk pyformat - bin/qmk fileformat - - - 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 + - uses: trilom/file-changes-action@v1.2.4 + id: file_changes with: - 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' + output: ' ' + fileOutput: ' ' + + - name: Run qmk cformat and qmk pyformat + shell: 'bash {0}' + run: | + qmk cformat --core-only -n $(< ~/files.txt) + cformat_exit=$? + qmk pyformat -n + pyformat_exit=$? + + exit $((cformat_exit + pyformat_exit)) diff --git a/.gitignore b/.gitignore index 3966243b0a..4628d0a89f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.eep *.elf *.hex +*.uf2 *.qmk !util/bootloader.hex !quantum/tools/eeprom_reset.hex @@ -51,6 +52,7 @@ doxygen/ .browse.VC.db* *.stackdump # Let these ones be user specific, since we have so many different configurations +*.code-workspace .vscode/c_cpp_properties.json .vscode/launch.json .vscode/tasks.json @@ -72,6 +74,7 @@ id_rsa_* # python things __pycache__ +.python-version # prerequisites for updating ChibiOS /util/fmpp* diff --git a/.vscode/settings.json b/.vscode/settings.json index 775b3df172..5fedaf477b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,5 +22,9 @@ "[markdown]": { "editor.trimAutoWhitespace": false, "files.trimTrailingWhitespace": false + }, + "python.formatting.provider": "yapf", + "[json]": { + "editor.formatOnSave": false } } diff --git a/Makefile b/Makefile index 6314c8e4f1..76d658c074 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,13 @@ $(info QMK Firmware $(QMK_VERSION)) endif endif +# Determine which qmk cli to use +ifeq (,$(shell which qmk)) + QMK_BIN = bin/qmk +else + QMK_BIN = qmk +endif + # avoid 'Entering|Leaving directory' messages MAKEFLAGS += --no-print-directory @@ -86,8 +93,8 @@ clean: .PHONY: distclean distclean: clean - echo -n 'Deleting *.bin and *.hex ... ' - rm -f *.bin *.hex + echo -n 'Deleting *.bin, *.hex, and *.uf2 ... ' + rm -f *.bin *.hex *.uf2 echo 'done.' #Compatibility with the old make variables, anything you specify directly on the command line @@ -384,7 +391,7 @@ define PARSE_KEYMAP # Format it in bold KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) # Specify the variables that we are passing forward to submake - MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) + MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) QMK_BIN=$$(QMK_BIN) # And the first part of the make command MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) # The message to display @@ -501,8 +508,8 @@ endef %: # Check if we have the CMP tool installed cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; - # Ensure that bin/qmk works. - if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi + # Ensure that $(QMK_BIN) works. + if ! $(QMK_BIN) hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi # Check if the submodules are dirty, and display a warning if they are ifndef SKIP_GIT if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi diff --git a/bin/qmk b/bin/qmk index a3c1be328a..617f992826 100755 --- a/bin/qmk +++ b/bin/qmk @@ -3,7 +3,6 @@ """ import os import sys -from importlib.util import find_spec from pathlib import Path # Add the QMK python libs to our path @@ -12,52 +11,9 @@ qmk_dir = script_dir.parent python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve() sys.path.append(str(python_lib_dir)) - -def _check_modules(requirements): - """ Check if the modules in the given requirements.txt are available. - """ - with Path(qmk_dir / requirements).open() as fd: - for line in fd.readlines(): - line = line.strip().replace('<', '=').replace('>', '=') - - if len(line) == 0 or line[0] == '#' or line.startswith('-r'): - continue - - if '#' in line: - line = line.split('#')[0] - - module = dict() - module['name'] = line.split('=')[0] if '=' in line else line - module['import'] = module['name'].replace('-', '_') - - # Not every module is importable by its own name. - if module['name'] == "pep8-naming": - module['import'] = "pep8ext_naming" - - if not find_spec(module['import']): - print('Could not find module %s!' % module['name']) - print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,)) - if developer: - print('You can also turn off developer mode: qmk config user.developer=None') - print() - exit(255) - - -developer = False -# Make sure our modules have been setup -_check_modules('requirements.txt') - # Setup the CLI import milc # noqa -# For developers additional modules are needed -if milc.cli.config.user.developer: - # Do not run the check for 'config', - # so users can turn off developer mode - if len(sys.argv) == 1 or (len(sys.argv) > 1 and 'config' != sys.argv[1]): - developer = True - _check_modules('requirements-dev.txt') - milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}' @@ -73,9 +29,13 @@ def main(): """ # 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 diff --git a/bootloader.mk b/bootloader.mk index 92affebfaa..0866a5f531 100644 --- a/bootloader.mk +++ b/bootloader.mk @@ -89,11 +89,17 @@ ifeq ($(strip $(BOOTLOADER)), USBasp) BOOTLOADER_SIZE = 4096 endif ifeq ($(strip $(BOOTLOADER)), lufa-ms) - # DO NOT USE THIS BOOTLOADER IN NEW PROJECTS! - # It is extremely prone to bricking, and is only included to support existing boards. OPT_DEFS += -DBOOTLOADER_MS - BOOTLOADER_SIZE = 6144 + BOOTLOADER_SIZE ?= 8192 FIRMWARE_FORMAT = bin +cpfirmware: lufa_warning +.INTERMEDIATE: lufa_warning +lufa_warning: $(FIRMWARE_FORMAT) + $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) + $(info LUFA MASS STORAGE Bootloader selected) + $(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!) + $(info It is extremely prone to bricking, and is only included to support existing boards.) + $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) endif ifdef BOOTLOADER_SIZE OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE)) @@ -137,7 +143,6 @@ ifeq ($(strip $(BOOTLOADER)), stm32duino) DFU_ARGS = -d 1EAF:0003 -a 2 -R DFU_SUFFIX_ARGS = -v 1EAF -p 0003 endif - ifeq ($(strip $(BOOTLOADER)), vibl) MCU_LDSCRIPT = STM32_F103_vibl BOARD = STM32_F103_vibl @@ -147,3 +152,6 @@ ifeq ($(strip $(BOOTLOADER)), vibl) DFU_SUFFIX_ARGS = VIBL = 1 endif +ifeq ($(strip $(BOOTLOADER)), tinyuf2) + OPT_DEFS += -DBOOTLOADER_TINYUF2 +endif diff --git a/build_json.mk b/build_json.mk index 6e2f9c4c8f..8822be6a12 100644 --- a/build_json.mk +++ b/build_json.mk @@ -28,4 +28,4 @@ endif # Generate the keymap.c $(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) - bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) + $(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) diff --git a/build_keyboard.mk b/build_keyboard.mk index b2a152bb98..91a6c23b71 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -12,6 +12,9 @@ endif include common.mk +# Set the qmk cli to use +QMK_BIN ?= qmk + # Set the filename for the final firmware binary KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) @@ -97,7 +100,7 @@ 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 bin/qmk generate-rules-mk --quiet --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/rules.mk) include $(INFO_RULES_MK) # Check for keymap.json first, so we can regenerate keymap.c @@ -205,6 +208,7 @@ endif # # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic # +QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h endif @@ -294,12 +298,15 @@ endif CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h $(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES) - bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h + $(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h + +$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES) + $(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES) - bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h + $(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h -generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h +generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h .INTERMEDIATE : generated-files diff --git a/common_features.mk b/common_features.mk index edbd57152a..702e262892 100644 --- a/common_features.mk +++ b/common_features.mk @@ -223,14 +223,17 @@ VALID_LED_MATRIX_TYPES := IS31FL3731 custom ifeq ($(strip $(LED_MATRIX_ENABLE)), yes) ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),) - $(error LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type) - else - BACKLIGHT_ENABLE = yes - BACKLIGHT_DRIVER = custom - OPT_DEFS += -DLED_MATRIX_ENABLE - SRC += $(QUANTUM_DIR)/led_matrix.c - SRC += $(QUANTUM_DIR)/led_matrix_drivers.c + $(error "$(LED_MATRIX_DRIVER)" is not a valid matrix type) endif + OPT_DEFS += -DLED_MATRIX_ENABLE +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 + SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c + SRC += $(QUANTUM_DIR)/led_matrix.c + SRC += $(QUANTUM_DIR)/led_matrix_drivers.c + CIE1931_CURVE := yes ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731) OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE @@ -347,7 +350,11 @@ endif VALID_BACKLIGHT_TYPES := pwm timer software custom BACKLIGHT_ENABLE ?= no -BACKLIGHT_DRIVER ?= pwm +ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) + BACKLIGHT_DRIVER ?= software +else + BACKLIGHT_DRIVER ?= pwm +endif ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),) $(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type) @@ -422,10 +429,6 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes) OPT_DEFS += -DUSER_PRINT endif -ifeq ($(strip $(USB_HID_ENABLE)), yes) - include $(TMK_DIR)/protocol/usb_hid.mk -endif - ifeq ($(strip $(WPM_ENABLE)), yes) SRC += $(QUANTUM_DIR)/wpm.c OPT_DEFS += -DWPM_ENABLE @@ -478,6 +481,23 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes) SRC += $(QUANTUM_DIR)/dip_switch.c endif +VALID_MAGIC_TYPES := yes full lite +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) + 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 +QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c + VALID_CUSTOM_MATRIX_TYPES:= yes lite no CUSTOM_MATRIX ?= no @@ -692,4 +712,4 @@ ifeq ($(strip $(USBPD_ENABLE)), yes) # Board designers can add their own driver to $(SRC) endif endif -endif \ No newline at end of file +endif diff --git a/data/mappings/keyboard_aliases.json b/data/mappings/keyboard_aliases.json new file mode 100644 index 0000000000..c205b5e13e --- /dev/null +++ b/data/mappings/keyboard_aliases.json @@ -0,0 +1,446 @@ +{ + # Format for each entry: + # : { + # target: , + # layouts: { + # : + # } + # } + # + # Both target and layouts are optional. + '2_milk': { + target: 'spaceman/2_milk' + }, + 'aeboards/ext65': { + target: 'aeboards/ext65/rev1' + }, + 'ai03/equinox': { + target: 'ai03/equinox/rev1' + }, + aleth42: { + target: 'aleth42/rev1' + }, + alice: { + target: 'tgr/alice' + }, + angel17: { + target: 'angel17/alpha' + }, + angel64: { + target: 'angel64/alpha' + }, + at101_blackheart: { + target: 'at101_bh' + }, + 'atom47/rev2': { + target: 'maartenwut/atom47/rev2' + }, + 'atom47/rev3': { + target: 'maartenwut/atom47/rev3' + }, + bear_face: { + target: 'bear_face/v1' + }, + 'bpiphany/pegasushoof': { + target: 'bpiphany/pegasushoof/2013' + }, + chavdai40: { + target: 'chavdai40/rev1' + }, + 'candybar/lefty': { + target: 'tkc/candybar/lefty' + }, + 'candybar/righty': { + target: 'tkc/candybar/righty' + }, + canoe: { + target: 'percent/canoe' + }, + 'cmm_studio/saka68': { + target: 'cmm_studio/saka68/solder' + }, + 'crkbd/rev1/legacy': { + target: 'crkbd/rev1' + }, + 'crkbd/rev1/common': { + target: 'crkbd/rev1' + }, + 'doro67/multi': { + layouts: { + LAYOUT_ansi: 'LAYOUT_65_ansi_blocker' + } + }, + 'doro67/regular': { + layouts: { + LAYOUT: 'LAYOUT_65_ansi_blocker' + } + }, + 'doro67/rgb': { + layouts: { + LAYOUT: 'LAYOUT_65_ansi_blocker' + } + }, + drakon: { + target: 'jagdpietr/drakon' + }, + 'dztech/dz60rgb': { + target: 'dztech/dz60rgb/v1' + }, + 'dztech/dz60rgb_ansi': { + target: 'dztech/dz60rgb_ansi/v1' + }, + 'dztech/dz60rgb_wkl': { + target: 'dztech/dz60rgb_wkl/v1' + }, + 'dztech/dz65rgb': { + target: 'dztech/dz65rgb/v1' + }, + eek: { + target: 'eek/silk_down' + }, + ergoinu: { + target: 'dm9records/ergoinu' + }, + 'exclusive/e85': { + target: 'exclusive/e85/hotswap' + }, + gh60: { + target: 'gh60/revc' + }, + 'handwired/ferris': { + target: 'ferris/0_1' + }, + 'helix/pico/sc/back': { + target: 'helix/pico/sc' + }, + 'helix/pico/sc/under': { + target: 'helix/pico/sc' + }, + 'helix/rev2/back/oled': { + target: 'helix/rev2/back' + }, + 'helix/rev2/oled': { + target: 'helix/rev2' + }, + 'helix/rev2/oled/back': { + target: 'helix/rev2/back' + }, + 'helix/rev2/oled/under': { + target: 'helix/rev2/under' + }, + 'helix/rev2/sc/back': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/sc/oled': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/sc/oledback': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/sc/oledunder': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/sc/under': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/under': { + target: 'helix/rev2/sc' + }, + 'helix/rev2/under/oled': { + target: 'helix/rev2/under' + }, + id80: { + target: 'id80/ansi' + }, + idb_60: { + target: 'idb/idb_60', + layouts: { + LAYOUT: 'LAYOUT_all' + } + }, + jones: { + target: 'jones/v03_1' + }, + katana60: { + target: 'rominronin/katana60/rev1' + }, + 'kbdfans/kbd67mkiirgb': { + target: 'kbdfans/kbd67/mkiirgb', + layouts: { + LAYOUT: 'LAYOUT_65_ansi_blocker' + } + }, + 'kbdfans/kbd67/mkiirgb': { + target: 'kbdfans/kbd67/mkiirgb/v1' + }, + 'keebio/dsp40': { + target: 'keebio/dsp40/rev1' + }, + 'keycapsss/plaid_pad': { + target: 'keycapsss/plaid_pad/rev1' + }, + kudox: { + target: 'kudox/rev1' + }, + 'lfkeyboards/lfk78': { + target: 'lfkeyboards/lfk78/revj' + }, + 'lfkeyboards/smk65': { + target: 'lfkeyboards/smk65/revb' + }, + 'maartenwut/atom47/rev2': { + target: 'evyd13/atom47/rev2' + }, + 'maartenwut/atom47/rev3': { + target: 'evyd13/atom47/rev3' + }, + 'maartenwut/eon40': { + target: 'evyd13/eon40' + }, + 'maartenwut/eon65': { + target: 'evyd13/eon65' + }, + 'maartenwut/eon75': { + target: 'evyd13/eon75' + }, + 'maartenwut/eon87': { + target: 'evyd13/eon87' + }, + 'maartenwut/eon95': { + target: 'evyd13/eon95' + }, + 'maartenwut/gh80_1800': { + target: 'evyd13/gh80_1800' + }, + 'maartenwut/gh80_3700': { + target: 'evyd13/gh80_3700' + }, + 'maartenwut/minitomic': { + target: 'evyd13/minitomic' + }, + 'maartenwut/mx5160': { + target: 'evyd13/mx5160' + }, + 'maartenwut/nt660': { + target: 'evyd13/nt660' + }, + 'maartenwut/omrontkl': { + target: 'evyd13/omrontkl' + }, + 'maartenwut/plain60': { + target: 'evyd13/plain60' + }, + 'maartenwut/pockettype': { + target: 'evyd13/pockettype' + }, + 'maartenwut/quackfire': { + target: 'evyd13/quackfire' + }, + 'maartenwut/solheim68': { + target: 'evyd13/solheim68' + }, + 'maartenwut/ta65': { + target: 'evyd13/ta65' + }, + 'maartenwut/wasdat': { + target: 'evyd13/wasdat' + }, + 'maartenwut/wasdat_code': { + target: 'evyd13/wasdat_code' + }, + 'maartenwut/wonderland': { + target: 'evyd13/wonderland' + }, + 'mechlovin/hannah910': { + target: 'mechlovin/hannah910/rev1' + }, + 'mechlovin/adelais/rgb_led': { + target: 'mechlovin/adelais/rgb_led/rev1' + }, + 'mechlovin/adelais/standard_led': { + target: 'mechlovin/adelais/standard_led/rev2' + }, + 'mechlovin/delphine': { + target: 'mechlovin/delphine/mono_led' + }, + 'mechlovin/hannah60rgb': { + target: 'mechlovin/hannah60rgb/rev1' + }, + 'melgeek/z70ultra': { + target: 'melgeek/z70ultra/rev1' + }, + 'mechlovin/hannah65': { + target: 'mechlovin/hannah65/rev1' + }, + model01: { + target: 'keyboardio/model01' + }, + m0lly: { + target: 'tkc/m0lly' + }, + 'montsinger/rebound': { + target: 'montsinger/rebound/rev1' + }, + nomu30: { + target: 'nomu30/rev1' + }, + 'noxary/268_2': { + layouts: { + LAYOUT: 'LAYOUT_65_ansi_blocker' + } + }, + oddball: { + target: 'oddball/v1' + }, + omnikey_blackheart: { + target: 'omnikey_bh' + }, + 'pabile/p20': { + target: 'pabile/p20/ver1' + }, + 'pancake/feather': { + target: 'spaceman/pancake/feather' + }, + 'pancake/promicro': { + target: 'spaceman/pancake/promicro' + }, + 'percent/canoe': { + layouts: { + LAYOUT_iso: 'LAYOUT_65_iso_blocker' + } + }, + plaid: { + target: 'dm9records/plaid' + }, + plain60: { + target: 'maartenwut/plain60' + }, + 'ploopyco/trackball': { + target: 'ploopyco/trackball/rev1_005' + }, + polilla: { + target: 'polilla/rev1' + }, + 'preonic/rev1': { + layouts: { + LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12' + } + }, + 'preonic/rev2': { + layouts: { + LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12' + } + }, + 'preonic/rev3': { + layouts: { + LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12' + } + }, + 'primekb/prime_l': { + target: 'primekb/prime_l/v1' + }, + 'primekb/prime_l_v2': { + target: 'primekb/prime_l/v2' + }, + 'projectkb/alice': { + target: 'projectkb/alice/rev1' + }, + 'rama/koyu': { + target: 'wilba_tech/rama_works_koyu' + }, + 'rama/m6_a': { + target: 'wilba_tech/rama_works_m6_a' + }, + 'rama/m6_b': { + target: 'wilba_tech/rama_works_m6_b' + }, + 'rama/m10_b': { + target: 'wilba_tech/rama_works_m10_b' + }, + 'rama/m60_a': { + target: 'wilba_tech/rama_works_m60_a' + }, + 'rama/u80_a': { + target: 'wilba_tech/rama_works_u80_a' + }, + 'ramonimbao/herringbone': { + target: 'ramonimbao/herringbone/v1' + }, + 'rgbkb/pan': { + target: 'rgbkb/pan/rev1/32a' + }, + 'rgbkb/pan/rev1': { + target: 'rgbkb/pan/rev1/32a' + }, + romac: { + target: 'kingly_keys/romac' + }, + ropro: { + target: 'kingly_keys/ropro' + }, + satan: { + target: 'gh60/satan' + }, + skog: { + target: 'percent/skog' + }, + speedo: { + target: 'cozykeys/speedo/v2' + }, + stoutgat: { + target: 'tkw/stoutgat/v1' + }, + suihankey: { + target: 'suihankey/split/alpha' + }, + ta65: { + target: 'maartenwut/ta65' + }, + tartan: { + target: 'dm9records/tartan' + }, + tkc1800: { + target: 'tkc/tkc1800' + }, + 'tkw/stoutgat/v2': { + target: 'tkw/stoutgat/v2/f411' + }, + underscore33: { + target: 'underscore33/rev1' + }, + vinta: { + layouts: { + LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker' + } + }, + wasdat: { + target: 'maartenwut/wasdat' + }, + 'westfoxtrot/cypher': { + target: 'westfoxtrot/cypher/rev1' + }, + 'whale/sk': { + target: 'whale/sk/v3' + }, + 'xelus/dawn60': { + target: 'xelus/dawn60/rev1' + }, + 'xelus/valor': { + target: 'xelus/valor/rev1' + }, + yd60mq: { + target: 'yd60mq/12led' + }, + ymd75: { + target: 'ymd75/rev1' + }, + z150_blackheart: { + target: 'z150_bh' + }, + zeal60: { + target: 'wilba_tech/zeal60' + }, + zeal65: { + target: 'wilba_tech/zeal65' + } +} diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index aa49c2d1e8..2425ac7b8f 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -25,7 +25,7 @@ }, "processor": { "type": "string", - "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32G431", "STM32G474", "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", "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"] }, "board": { "type": "string", @@ -34,7 +34,7 @@ }, "bootloader": { "type": "string", - "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp", "vibl"] + "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2", "vibl"] }, "diode_direction": { "type": "string", diff --git a/docs/ChangeLog/20200829.md b/docs/ChangeLog/20200829.md index 00e0bd1a28..c6abed5b30 100644 --- a/docs/ChangeLog/20200829.md +++ b/docs/ChangeLog/20200829.md @@ -5,7 +5,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch ## Changes Requiring User Action :id=changes-requiring-user-action -### Relocated Keyboards :id-relocated-keyboards +### Relocated Keyboards :id=relocated-keyboards #### The Key Company project consolidation ([#9547](https://github.com/qmk/qmk_firmware/pull/9547)) #### relocating boards by flehrad to flehrad/ folder ([#9635](https://github.com/qmk/qmk_firmware/pull/9635)) diff --git a/docs/ChangeLog/20201128.md b/docs/ChangeLog/20201128.md index 86abd384df..4441320295 100644 --- a/docs/ChangeLog/20201128.md +++ b/docs/ChangeLog/20201128.md @@ -5,7 +5,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch ## Changes Requiring User Action :id=changes-requiring-user-action -### Relocated Keyboards :id-relocated-keyboards +### Relocated Keyboards :id=relocated-keyboards #### Reduce Helix keyboard build variation ([#8669](https://github.com/qmk/qmk_firmware/pull/8669)) diff --git a/docs/ChangeLog/20210529.md b/docs/ChangeLog/20210529.md new file mode 100644 index 0000000000..d005aeed36 --- /dev/null +++ b/docs/ChangeLog/20210529.md @@ -0,0 +1,192 @@ +# QMK Breaking Changes - 2021 May 29 Changelog + +## Notable Changes :id=notable-changes + +### RGB Matrix support for split common ([#11055](https://github.com/qmk/qmk_firmware/pull/11055)) :id=rgb-matrix-split-common + +Split boards can now use RGB Matrix without defining a custom matrix. + +### Teensy 3.6 support ([#12258](https://github.com/qmk/qmk_firmware/pull/12258)) :id=teensy-3-6-support + +Added support for MK66F18 (Teensy 3.6) microcontroller. + +### New command: qmk console ([#12828](https://github.com/qmk/qmk_firmware/pull/12828)) :id=new-command-qmk-console + +A new `qmk console` command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages. + +### Improved command: qmk config :id=improve-command-qmk-config + +We've updated the `qmk config` command to show only the configuration items you have actually set. You can now display (almost) all of the available configuration options, along with their default values, using `qmk config -a`. + +### LED Matrix Improvements ([#12509](https://github.com/qmk/qmk_firmware/pull/12509), [#12580](https://github.com/qmk/qmk_firmware/pull/12580), [#12588](https://github.com/qmk/qmk_firmware/pull/12588), [#12633](https://github.com/qmk/qmk_firmware/pull/12633), [#12651](https://github.com/qmk/qmk_firmware/pull/12651), [#12685](https://github.com/qmk/qmk_firmware/pull/12685)) :id=led-matrix-improvements + +LED Matrix has been improved with effects, CIE1931 curves, and a task system. + +## Changes Requiring User Action :id=changes-requiring-user-action + +### Updated Keyboard Codebases :id=updated-keyboard-codebases + +* Durgod keyboard refactor in preparation for adding additional durgod keyboards ([#11978](https://github.com/qmk/qmk_firmware/pull/11978)) +* Updated Function96 with V2 files and removed chconf.h and halconf.h ([#12613](https://github.com/qmk/qmk_firmware/pull/12613)) +* [Keyboard] updated a vendor name / fixed minor keymap issues ([#12881](https://github.com/qmk/qmk_firmware/pull/12881)) +* [Keyboard] Corne - Remove legacy revision support ([#12226](https://github.com/qmk/qmk_firmware/pull/12226)) + +The following keyboards have had their source moved within QMK: + +Old Keyboard Name | New Keyboard Name +:---------------- | :---------------- +crkbd/rev1/common | crkbd/rev1 +function96 | function96/v1 +nckiibs/flatbread60 | delikeeb/flatbread60 +nckiibs/vaguettelite | delikeeb/vaguettelite +nckiibs/vanana/rev1 | delikeeb/vanana/rev1 +nckiibs/vanana/rev2 | delikeeb/vanana/rev2 +nckiibs/vaneela | delikeeb/vaneela +nckiibs/vaneelaex | delikeeb/vaneelaex +nckiibs/waaffle/rev3/elite_c | delikeeb/waaffle/rev3/elite_c +nckiibs/waaffle/rev3/pro_micro | delikeeb/waaffle/rev3/pro_micro + +The [Function96 V2](https://github.com/qmk/qmk_firmware/tree/0.13.0/keyboards/function96/v2) has also been added as part of these changes. + +The codebase for the [Durgod K320](https://github.com/qmk/qmk_firmware/tree/0.13.0/keyboards/durgod/k320) has been reworked in anticipation of additional Durgod keyboards gaining QMK support. + +Additionally, the `crkbd/rev1/legacy` keyboard has been removed. + +### Bootmagic Deprecation and Refactor ([#12172](https://github.com/qmk/qmk_firmware/pull/12172)) :id=bootmagic-deprecation-and-refactor + +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 `BOOTMAGIC_ENABLE = yes` enables Bootmagic Lite instead of full Bootmagic. + +If attempts to use Bootmagic functionality result in unexpected behavior, check your `rules.mk` file and change the `BOOTMAGIC_ENABLE` setting to specify either `lite` or `full`. + +#### Tentative Deprecation Schedule + +This is the current planned roadmap for the behavior of `BOOTMAGIC_ENABLE`: + +- From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic. +- From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` – setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail. +- From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` – setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail. + +### Removal of LAYOUT_kc ([#12160](https://github.com/qmk/qmk_firmware/pull/12160)) :id=removal-of-layout-kc + +We've removed support for `LAYOUT_kc` macros, if your keymap uses one you will need to update it use a regular `LAYOUT` macro. + +### Encoder callbacks are now boolean ([#12805](https://github.com/qmk/qmk_firmware/pull/12805), [#12985](https://github.com/qmk/qmk_firmware/pull/12985)) :id=encoder-callback-boolean + +To allow for keyboards to override (or not) keymap level code the `encoder_update_kb` function has been changed from `void` to `bool`. You will need to update your function definition to reflect this and ensure that you return a `true` or `false` value. + +Example code before change: + +```c +void encoder_update_kb(uint8_t index, bool clockwise) { + encoder_update_user(index, clockwise); +} +``` + +Example code after change: + +```c +bool encoder_update_kb(uint8_t index, bool clockwise) { + return encoder_update_user(index, clockwise); +} +``` + +## Core Changes :id=core-changes + +### Fixes :id=core-fixes + +* Fix connection issue in split keyboards when slave and OLED display are connected via I2C (fixes #9335) ([#11487](https://github.com/qmk/qmk_firmware/pull/11487)) +* Terrazzo: Fix wrong LED Matrix function names ([#12561](https://github.com/qmk/qmk_firmware/pull/12561)) +* Apply the "NO_LIMITED_CONTROLLER_CONNECT" fix to atmega16u2 ([#12482](https://github.com/qmk/qmk_firmware/pull/12482)) +* Fix comment parsing ([#12750](https://github.com/qmk/qmk_firmware/pull/12750)) +* Turn OLED off on suspend in soundmonster Corne keymap ([#10419](https://github.com/qmk/qmk_firmware/pull/10419)) +* Fixup build errors on `develop` branch. ([#12723](https://github.com/qmk/qmk_firmware/pull/12723)) +* Fix syntax error when compiling for ARM ([#12866](https://github.com/qmk/qmk_firmware/pull/12866)) +* Add missing LED Matrix suspend code to suspend.c ([#12878](https://github.com/qmk/qmk_firmware/pull/12878)) +* Fix spelling mistake regarding LED Matrix in split_common. ([#12888](https://github.com/qmk/qmk_firmware/pull/12888)) +* [Keymap] Fix QWERTY/DVORAK status output for kzar keymap ([#12895](https://github.com/qmk/qmk_firmware/pull/12895)) +* Fixup housekeeping from being invoked twice per loop. ([#12933](https://github.com/qmk/qmk_firmware/pull/12933)) +* wait for matrix row signal to go HIGH for every row ([#12945](https://github.com/qmk/qmk_firmware/pull/12945)) +* ensure we do not conflict with existing keymap aliases ([#12976](https://github.com/qmk/qmk_firmware/pull/12976)) +* [Keyboard] Fix Terrazzo build failure ([#12977](https://github.com/qmk/qmk_firmware/pull/12977)) +* Do not hard set config in CPTC files ([#11864](https://github.com/qmk/qmk_firmware/pull/11864)) + +### Additions and Enhancements :id=core-additions + +* ARM - Refactor SLEEP_LED to support more platforms ([#8403](https://github.com/qmk/qmk_firmware/pull/8403)) +* Add ability to toggle One Shot functionality ([#4198](https://github.com/qmk/qmk_firmware/pull/4198)) +* Add RGB Matrix support to Split Common ([#11055](https://github.com/qmk/qmk_firmware/pull/11055)) +* Add support for complementary outputs to the ChibiOS WS2812 PWM driver ([#11988](https://github.com/qmk/qmk_firmware/pull/11988)) +* Enable RGB Matrix for Corne ([#12091](https://github.com/qmk/qmk_firmware/pull/12091)) +* Set default OLED Update Interval for Split Keyboards to improve matrix scan performance ([#12107](https://github.com/qmk/qmk_firmware/pull/12107)) +* Add support for MK66F18 (Teensy 3.6) micro controller ([#12258](https://github.com/qmk/qmk_firmware/pull/12258)) +* Split RGB Matrix support for RGBKB Zygomorph ([#11083](https://github.com/qmk/qmk_firmware/pull/11083)) +* Add baudrate and circular buffer to ARM WS2812 SPI config ([#12216](https://github.com/qmk/qmk_firmware/pull/12216)) +* Add keyboard level weak function for slave matrix scan ([#12317](https://github.com/qmk/qmk_firmware/pull/12317)) +* Add link to schematic on EasyEDA for XD60 ([#12018](https://github.com/qmk/qmk_firmware/pull/12018)) +* Add Config functions for LED Matrix ([#12361](https://github.com/qmk/qmk_firmware/pull/12361)) +* Add pin definitions for MK66F18 ([#12419](https://github.com/qmk/qmk_firmware/pull/12419)) +* add kinesis/kint36 keyboard ([#10171](https://github.com/qmk/qmk_firmware/pull/10171)) +* Add support for producing UF2-format binaries. ([#12435](https://github.com/qmk/qmk_firmware/pull/12435)) +* Implement CIE1931 curve for LED Matrix ([#12417](https://github.com/qmk/qmk_firmware/pull/12417)) +* Change `BOOTMAGIC_ENABLE=yes` to use Bootmagic Lite ([#12172](https://github.com/qmk/qmk_firmware/pull/12172)) +* Add kzar keymap for Kinesis Advantage ([#12444](https://github.com/qmk/qmk_firmware/pull/12444)) +* LED Matrix: suspend code ([#12509](https://github.com/qmk/qmk_firmware/pull/12509)) +* LED Matrix: Task system ([#12580](https://github.com/qmk/qmk_firmware/pull/12580)) +* Add missing RGB_MODE_TWINKLE / RGB_M_TW keycodes ([#11935](https://github.com/qmk/qmk_firmware/pull/11935)) +* Enhancement of WPM feature ([#11727](https://github.com/qmk/qmk_firmware/pull/11727)) +* Add Per Key functionality for AutoShift ([#11536](https://github.com/qmk/qmk_firmware/pull/11536)) +* LED Matrix: Reactive effect buffers & advanced indicators ([#12588](https://github.com/qmk/qmk_firmware/pull/12588)) +* LED Matrix: support for Split keyboards ([#12633](https://github.com/qmk/qmk_firmware/pull/12633)) +* add setting to enable infinite timeout for leader key ([#6580](https://github.com/qmk/qmk_firmware/pull/6580), [#12721](https://github.com/qmk/qmk_firmware/pull/12721 "Fix bad PR merge for #6580")) +* Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx ([#12403](https://github.com/qmk/qmk_firmware/pull/12403)) +* Add initial support for tinyuf2 bootloader (when hosted on F411 blackpill) ([#12600](https://github.com/qmk/qmk_firmware/pull/12600)) +* Add support for STM32F446 MCU ([#12619](https://github.com/qmk/qmk_firmware/pull/12619)) +* Add STM32L433 and L443 support ([#12063](https://github.com/qmk/qmk_firmware/pull/12063)) +* Added OLED fade out support ([#12086](https://github.com/qmk/qmk_firmware/pull/12086)) +* New command: `qmk console` ([#12828](https://github.com/qmk/qmk_firmware/pull/12828)) +* LED Matrix: Effects! ([#12651](https://github.com/qmk/qmk_firmware/pull/12651)) +* Add setup, clone, and env to the list of commands we allow even with broken modules ([#12868](https://github.com/qmk/qmk_firmware/pull/12868)) +* LED Matrix: Documentation ([#12685](https://github.com/qmk/qmk_firmware/pull/12685)) +* Add function to allow repeated blinking of one layer ([#12237](https://github.com/qmk/qmk_firmware/pull/12237)) +* Add support for up to 4 IS31FL3733 drivers ([#12342](https://github.com/qmk/qmk_firmware/pull/12342)) +* Convert Encoder callbacks to be boolean functions ([#12805](https://github.com/qmk/qmk_firmware/pull/12805), [#12985](https://github.com/qmk/qmk_firmware/pull/12985)) +* [Keymap] Update to Drashna keymap and user code (based on develop) ([#12936](https://github.com/qmk/qmk_firmware/pull/12936)) +* Add Full-duplex serial driver for ARM boards ([#9842](https://github.com/qmk/qmk_firmware/pull/9842)) +* Document LED_MATRIX_FRAMEBUFFER_EFFECTS ([#12987](https://github.com/qmk/qmk_firmware/pull/12987)) +* Backlight: add defines for default level and breathing state ([#12560](https://github.com/qmk/qmk_firmware/pull/12560), [#13024](https://github.com/qmk/qmk_firmware/pull/13024)) +* Add dire message about LUFA mass storage bootloader ([#13014](https://github.com/qmk/qmk_firmware/pull/13014)) + +### Clean-ups and Optimizations :id=core-optimizations + +* Overhaul bootmagic logic to have single entrypoint ([#8532](https://github.com/qmk/qmk_firmware/pull/8532)) +* Refactor of USB code within split_common ([#11890](https://github.com/qmk/qmk_firmware/pull/11890)) +* Begin the process of deprecating `bin/qmk` in favor of the global CLI ([#12109](https://github.com/qmk/qmk_firmware/pull/12109)) +* LED Matrix: decouple from Backlight ([#12054](https://github.com/qmk/qmk_firmware/pull/12054)) +* Remove `FUNC()` ([#12161](https://github.com/qmk/qmk_firmware/pull/12161)) +* Move gpio wait logic to wait.h ([#12067](https://github.com/qmk/qmk_firmware/pull/12067)) +* LED Matrix: Clean up includes ([#12197](https://github.com/qmk/qmk_firmware/pull/12197)) +* Consistently use bin/qmk when that script is called ([#12286](https://github.com/qmk/qmk_firmware/pull/12286)) +* LED Matrix: Additional common_features.mk tweaks ([#12187](https://github.com/qmk/qmk_firmware/pull/12187)) +* LED Matrix: Fix up eeconfig code ([#12327](https://github.com/qmk/qmk_firmware/pull/12327)) +* Big quantum_keycodes cleanup ([#12249](https://github.com/qmk/qmk_firmware/pull/12249)) +* Fix up builds that are now too big for `develop` branch. ([#12495](https://github.com/qmk/qmk_firmware/pull/12495)) +* [Keyboard] kint36: switch to sym_eager_pk debouncing ([#12626](https://github.com/qmk/qmk_firmware/pull/12626)) +* [Keyboard] kint2pp: reduce input latency by ≈10ms ([#12625](https://github.com/qmk/qmk_firmware/pull/12625)) +* eeprom driver: Refactor where eeprom driver initialisation (and EEPROM emulation initialisation) occurs to make it non-target-specific. ([#12671](https://github.com/qmk/qmk_firmware/pull/12671)) +* Change RGB/LED Matrix to use a simple define for USB suspend ([#12697](https://github.com/qmk/qmk_firmware/pull/12697), [#12770](https://github.com/qmk/qmk_firmware/pull/12770 "Fixing transport's led/rgb matrix suspend state logic")) +* Remove pointless SERIAL_LINK_ENABLE rules ([#12846](https://github.com/qmk/qmk_firmware/pull/12846)) +* Make Swap Hands use PROGMEM ([#12284](https://github.com/qmk/qmk_firmware/pull/12284)) +* Remove KEYMAP and LAYOUT_kc ([#12160](https://github.com/qmk/qmk_firmware/pull/12160)) +* Rename `point_t` -> `led_point_t` ([#12864](https://github.com/qmk/qmk_firmware/pull/12864)) +* Deprecate `send_unicode_hex_string()` ([#12602](https://github.com/qmk/qmk_firmware/pull/12602)) +* [Keyboard] Remove redundant legacy and common headers for crkbd ([#13023](https://github.com/qmk/qmk_firmware/pull/13023)) + +### QMK Infrastructure and Internals :id=qmk-internals + +* trivial change to trigger api update ([`b15288fb87`](https://github.com/qmk/qmk_firmware/commit/b15288fb87)) +* fix some references to bin/qmk that slipped in ([#12832](https://github.com/qmk/qmk_firmware/pull/12832)) +* Resolve a number of warnings in `qmk generate-api` ([#12833](https://github.com/qmk/qmk_firmware/pull/12833)) +* Fix another bin/qmk reference ([#12856](https://github.com/qmk/qmk_firmware/pull/12856)) +* Use milc.subcommand.config instead of qmk.cli.config ([#12915](https://github.com/qmk/qmk_firmware/pull/12915)) diff --git a/docs/_summary.md b/docs/_summary.md index 83799acdb8..9798ef5127 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -29,6 +29,7 @@ * [Overview](cli.md) * [Configuration](cli_configuration.md) * [Commands](cli_commands.md) + * [Tab Completion](cli_tab_complete.md) * Using QMK * Guides @@ -107,6 +108,7 @@ * [Haptic Feedback](feature_haptic_feedback.md) * [Joystick](feature_joystick.md) * [LED Indicators](feature_led_indicators.md) + * [MIDI](feature_midi.md) * [Proton C Conversion](proton_c_conversion.md) * [PS/2 Mouse](feature_ps2_mouse.md) * [Split Keyboard](feature_split_keyboard.md) @@ -119,7 +121,7 @@ * Breaking Changes * [Overview](breaking_changes.md) * [My Pull Request Was Flagged](breaking_changes_instructions.md) - * [Most Recent ChangeLog](ChangeLog/20210227.md "QMK v0.12.0 - 2021 Feb 27") + * [Most Recent ChangeLog](ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29") * [Past Breaking Changes](breaking_changes_history.md) * C Development diff --git a/docs/adc_driver.md b/docs/adc_driver.md index 6e3d513863..69fff4b3c2 100644 --- a/docs/adc_driver.md +++ b/docs/adc_driver.md @@ -47,73 +47,79 @@ Note that some of these pins are doubled-up on ADCs with the same channel. This Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation. -|ADC|Channel|STM32F0xx|STM32F3xx| -|---|-------|---------|---------| -|1 |0 |`A0` | | -|1 |1 |`A1` |`A0` | -|1 |2 |`A2` |`A1` | -|1 |3 |`A3` |`A2` | -|1 |4 |`A4` |`A3` | -|1 |5 |`A5` |`F4` | -|1 |6 |`A6` |`C0` | -|1 |7 |`A7` |`C1` | -|1 |8 |`B0` |`C2` | -|1 |9 |`B1` |`C3` | -|1 |10 |`C0` |`F2` | -|1 |11 |`C1` | | -|1 |12 |`C2` | | -|1 |13 |`C3` | | -|1 |14 |`C4` | | -|1 |15 |`C5` | | -|1 |16 | | | -|2 |1 | |`A4` | -|2 |2 | |`A5` | -|2 |3 | |`A6` | -|2 |4 | |`A7` | -|2 |5 | |`C4` | -|2 |6 | |`C0` | -|2 |7 | |`C1` | -|2 |8 | |`C2` | -|2 |9 | |`C3` | -|2 |10 | |`F2` | -|2 |11 | |`C5` | -|2 |12 | |`B2` | -|2 |13 | | | -|2 |14 | | | -|2 |15 | | | -|2 |16 | | | -|3 |1 | |`B1` | -|3 |2 | |`E9` | -|3 |3 | |`E13` | -|3 |4 | | | -|3 |5 | | | -|3 |6 | |`E8` | -|3 |7 | |`D10` | -|3 |8 | |`D11` | -|3 |9 | |`D12` | -|3 |10 | |`D13` | -|3 |11 | |`D14` | -|3 |12 | |`B0` | -|3 |13 | |`E7` | -|3 |14 | |`E10` | -|3 |15 | |`E11` | -|3 |16 | |`E12` | -|4 |1 | |`E14` | -|4 |2 | |`B12` | -|4 |3 | |`B13` | -|4 |4 | |`B14` | -|4 |5 | |`B15` | -|4 |6 | |`E8` | -|4 |7 | |`D10` | -|4 |8 | |`D11` | -|4 |9 | |`D12` | -|4 |10 | |`D13` | -|4 |11 | |`D14` | -|4 |12 | |`D8` | -|4 |13 | |`D9` | -|4 |14 | | | -|4 |15 | | | -|4 |16 | | | +|ADC|Channel|STM32F0xx|STM32F1xx|STM32F3xx|STM32F4xx| +|---|-------|---------|---------|---------|---------| +|1 |0 |`A0` |`A0` | |`A0` | +|1 |1 |`A1` |`A1` |`A0` |`A1` | +|1 |2 |`A2` |`A2` |`A1` |`A2` | +|1 |3 |`A3` |`A3` |`A2` |`A3` | +|1 |4 |`A4` |`A4` |`A3` |`A4` | +|1 |5 |`A5` |`A5` |`F4` |`A5` | +|1 |6 |`A6` |`A6` |`C0` |`A6` | +|1 |7 |`A7` |`A7` |`C1` |`A7` | +|1 |8 |`B0` |`B0` |`C2` |`B0` | +|1 |9 |`B1` |`B1` |`C3` |`B1` | +|1 |10 |`C0` |`C0` |`F2` |`C0` | +|1 |11 |`C1` |`C1` | |`C1` | +|1 |12 |`C2` |`C2` | |`C2` | +|1 |13 |`C3` |`C3` | |`C3` | +|1 |14 |`C4` |`C4` | |`C4` | +|1 |15 |`C5` |`C5` | |`C5` | +|1 |16 | | | | | +|2 |0 | |`A0`¹ | |`A0`² | +|2 |1 | |`A1`¹ |`A4` |`A1`² | +|2 |2 | |`A2`¹ |`A5` |`A2`² | +|2 |3 | |`A3`¹ |`A6` |`A3`² | +|2 |4 | |`A4`¹ |`A7` |`A4`² | +|2 |5 | |`A5`¹ |`C4` |`A5`² | +|2 |6 | |`A6`¹ |`C0` |`A6`² | +|2 |7 | |`A7`¹ |`C1` |`A7`² | +|2 |8 | |`B0`¹ |`C2` |`B0`² | +|2 |9 | |`B1`¹ |`C3` |`B1`² | +|2 |10 | |`C0`¹ |`F2` |`C0`² | +|2 |11 | |`C1`¹ |`C5` |`C1`² | +|2 |12 | |`C2`¹ |`B2` |`C2`² | +|2 |13 | |`C3`¹ | |`C3`² | +|2 |14 | |`C4`¹ | |`C4`² | +|2 |15 | |`C5`¹ | |`C5`² | +|2 |16 | | | | | +|3 |0 | |`A0`¹ | |`A0`² | +|3 |1 | |`A1`¹ |`B1` |`A1`² | +|3 |2 | |`A2`¹ |`E9` |`A2`² | +|3 |3 | |`A3`¹ |`E13` |`A3`² | +|3 |4 | |`F6`¹ | |`F6`² | +|3 |5 | |`F7`¹ |`B13` |`F7`² | +|3 |6 | |`F8`¹ |`E8` |`F8`² | +|3 |7 | |`F9`¹ |`D10` |`F9`² | +|3 |8 | |`F10`¹ |`D11` |`F10`² | +|3 |9 | | |`D12` |`F3`² | +|3 |10 | |`C0`¹ |`D13` |`C0`² | +|3 |11 | |`C1`¹ |`D14` |`C1`² | +|3 |12 | |`C2`¹ |`B0` |`C2`² | +|3 |13 | |`C3`¹ |`E7` |`C3`² | +|3 |14 | | |`E10` |`F4`² | +|3 |15 | | |`E11` |`F5`² | +|3 |16 | | |`E12` | | +|4 |1 | | |`E14` | | +|4 |2 | | |`E15` | | +|4 |3 | | |`B12` | | +|4 |4 | | |`B14` | | +|4 |5 | | |`B15` | | +|4 |6 | | |`E8` | | +|4 |7 | | |`D10` | | +|4 |8 | | |`D11` | | +|4 |9 | | |`D12` | | +|4 |10 | | |`D13` | | +|4 |11 | | |`D14` | | +|4 |12 | | |`D8` | | +|4 |13 | | |`D9` | | +|4 |14 | | | | | +|4 |15 | | | | | +|4 |16 | | | | | + +¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins `F6`…`F10`, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation. + +² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins `F4`…`F10` cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported. ## Functions @@ -141,10 +147,10 @@ Also note that the F0 and F3 use different numbering schemes. The F0 has a singl The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options. -|`#define` |Type |Default |Description | -|---------------------|------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. | -|`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. | -|`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.| -|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. | -|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. | +|`#define` |Type |Default |Description | +|---------------------|------|----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. | +|`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. | +|`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.| +|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. | +|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_10BIT` or `ADC_CFGR_RES_10BITS`|The resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants. | diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index de9148ad62..b0d56a81bd 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -6,6 +6,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero ## What has been included in past Breaking Changes? +* [2021 May 29](ChangeLog/20210529.md) * [2021 Feb 27](ChangeLog/20210227.md) * [2020 Nov 28](ChangeLog/20201128.md) * [2020 Aug 29](ChangeLog/20200829.md) @@ -15,16 +16,16 @@ 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 February 27, 2021. +The next Breaking Change is scheduled for August 28, 2021. ### Important Dates -* [x] 2021 Feb 27 - `develop` is created. Each push to `master` is subsequently merged to `develop` -* [ ] 2021 May 01 - `develop` closed to new PR's. -* [ ] 2021 May 01 - Call for testers. -* [ ] 2021 May 27 - `master` is locked, no PR's merged. -* [ ] 2021 May 29 - Merge `develop` to `master`. -* [ ] 2021 May 29 - `master` is unlocked. PR's can be merged again. +* [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. ## What changes will be included? @@ -55,7 +56,7 @@ This happens immediately after the previous `develop` branch is merged. * [ ] `git commit -m 'Branch point for Breaking Change'` * [ ] `git tag breakpoint___
` * [ ] `git tag ` # Prevent the breakpoint tag from confusing version incrementing - * [ ] `git push origin develop` + * [ ] `git push upstream develop` * [ ] `git push --tags` ## 4 Weeks Before Merge @@ -85,13 +86,17 @@ This happens immediately after the previous `develop` branch is merged. * `qmk_firmware` git commands * [ ] `git checkout develop` * [ ] `git pull --ff-only` - * [ ] `git rebase origin/master` * [ ] Edit `readme.md` * [ ] Remove the notes about `develop` * [ ] Roll up the ChangeLog into one file. * [ ] `git commit -m 'Merge point for Breaking Change'` - * [ ] `git push origin develop` + * [ ] `git push upstream develop` * GitHub Actions * [ ] Create a PR for `develop` * [ ] Make sure travis comes back clean - * [ ] Merge `develop` PR + * [ ] **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` diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index dd474f1bb7..6ba8fe3b06 100644 --- a/docs/breaking_changes_history.md +++ b/docs/breaking_changes_history.md @@ -2,6 +2,7 @@ This page links to all previous changelogs from the QMK Breaking Changes process. +* [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 * [2020 Aug 29](ChangeLog/20200829.md) - version 0.10.0 diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 5ab49abd27..581342093a 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -107,6 +107,54 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN] ``` +## `qmk console` + +This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLED=yes`. + +**Usage**: + +``` +qmk console [-d :[:]] [-l] [-n] [-t] [-w ] +``` + +**Examples**: + +Connect to all available keyboards and show their console messages: + +``` +qmk console +``` + +List all devices: + +``` +qmk console -l +``` + +Show only messages from clueboard/66/rev3 keyboards: + +``` +qmk console -d C1ED:2370 +``` + +Show only messages from the second clueboard/66/rev3: + +``` +qmk console -d C1ED:2370:2 +``` + +Show timestamps and VID:PID instead of names: + +``` +qmk console -n -t +``` + +Disable bootloader messages: + +``` +qmk console --no-bootloaders +``` + ## `qmk doctor` This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to. @@ -131,6 +179,16 @@ Check your environment and report problems only: qmk doctor -n +## `qmk format-json` + +Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with `--format` if neccesary. + +**Usage**: + +``` +qmk format-json [-f FORMAT] +``` + ## `qmk info` Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps. @@ -170,7 +228,7 @@ qmk json2c [-o OUTPUT] filename ## `qmk c2json` Creates a keymap.json from a keymap.c. -**Note:** Parsing C source files is not easy, therefore this subcommand may not work your keymap. In some cases not using the C pre-processor helps. +**Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps. **Usage**: @@ -218,6 +276,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a qmk list-keymaps -kb planck/ez ``` +## `qmk new-keyboard` + +This command creates a new keyboard based on available templates. + +This command will prompt for input to guide you though the generation process. + +**Usage**: + +``` +qmk new-keyboard +``` + ## `qmk new-keymap` This command creates a new keymap based on a keyboard's existing default keymap. diff --git a/docs/cli_tab_complete.md b/docs/cli_tab_complete.md new file mode 100644 index 0000000000..2217d4fd3b --- /dev/null +++ b/docs/cli_tab_complete.md @@ -0,0 +1,27 @@ +# Tab Completion for QMK + +If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other `qmk` options. + +## Setup + +There are several ways you can setup tab completion. + +### For Your User Only + +Add this to the end of your `.profile` or `.bashrc`: + + source ~/qmk_firmware/util/qmk_tab_complete.sh + +If you put `qmk_firmware` into another location you will need to adjust this path. + +### System Wide Symlink + +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` + +### System Wide Copy + +In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically. + + cp util/qmk_tab_complete.sh /etc/profile.d diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md index 47a4844e7f..0f5b140de0 100644 --- a/docs/compatible_microcontrollers.md +++ b/docs/compatible_microcontrollers.md @@ -28,8 +28,11 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s * [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html) * [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.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) + * [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) + * [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) ### NXP (Kinetis) diff --git a/docs/config_options.md b/docs/config_options.md index aeaaf47aaf..d0f0b316e0 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -78,10 +78,10 @@ This is a C header file that is one of the first things included, and will persi * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B5`, or use `#define AUDIO_PIN_ALT B5` if a `C` pin is enabled with `AUDIO_PIN` * `#define B6_AUDIO` - * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) + * enables audio on pin B6 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B6`, or use `#define AUDIO_PIN_ALT B6` if a `C` pin is enabled with `AUDIO_PIN` * `#define B7_AUDIO` - * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) + * enables audio on pin B7 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B7`, or use `#define AUDIO_PIN_ALT B7` if a `C` pin is enabled with `AUDIO_PIN` * `#define BACKLIGHT_PIN B7` * pin of the backlight diff --git a/docs/faq_debug.md b/docs/faq_debug.md index 872b1688ed..13a649bfa2 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -109,6 +109,19 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`. +On many Linux distros you can avoid having to run hid_listen as root +by creating a file called `/etc/udev/rules.d/70-hid-listen.rules` with +the following content: + +``` +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess" +``` + +Replace abcd and def1 with your keyboard's vendor and product id, +letters must be lowercase. The `RUN{builtin}+="uaccess"` part is only +needed for older distros. + + ## Can't Get Message on Console Check: - *hid_listen* finds your device. See above. diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md index 75b7fef89b..36b81a4e8e 100644 --- a/docs/feature_advanced_keycodes.md +++ b/docs/feature_advanced_keycodes.md @@ -2,24 +2,27 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent. -|Key |Aliases |Description | -|----------|-------------------------------|------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` | -|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)` |Hold Left Shift and GUI and press `kc` | -|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | +|Key |Aliases |Description | +|----------|----------------------------------|------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` | +|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | You can also chain them, for example `LCTL(LALT(KC_DEL))` or `C(A(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress. diff --git a/docs/feature_audio.md b/docs/feature_audio.md index 9e7ba75f52..9ffbc2cba8 100644 --- a/docs/feature_audio.md +++ b/docs/feature_audio.md @@ -8,7 +8,7 @@ To activate this feature, add `AUDIO_ENABLE = yes` to your `rules.mk`. On Atmega32U4 based boards, up to two simultaneous tones can be rendered. With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1. -The following pins can be configured as audio outputs in `config.h` - for one speaker set eiter one out of: +The following pins can be configured as audio outputs in `config.h` - for one speaker set either one out of: * `#define AUDIO_PIN C4` * `#define AUDIO_PIN C5` @@ -131,12 +131,14 @@ You can override the default songs by doing something like this in your `config. ```c #ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(STARTUP_SOUND) +# define STARTUP_SONG SONG(STARTUP_SOUND) #endif ``` A full list of sounds can be found in [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) - feel free to add your own to this list! All available notes can be seen in [quantum/audio/musical_notes.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/musical_notes.h). +Additionally, if you with to maintain your own list of songs (such as ones that may be copyrighted) and not have them added to the repo, you can create a `user_song_list.h` file and place it in your keymap (or userspace) folder. This file will be automatically included, it just needs to exist. + To play a custom sound at a particular time, you can define a song like this (near the top of the file): ```c @@ -166,7 +168,7 @@ 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. ## Tempo -the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lenghts are defined relative to that. +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`. There is also a set of functions to modify the tempo from within the user/keymap code: ```c @@ -291,7 +293,7 @@ You can configure the default, min and max frequencies, the stepping and built i |--------|---------------|-------------| | `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. | | `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). | -| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. | +| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the highest frequency. Too high may result in coworkers attacking you. | | `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. | | `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. | | `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. | @@ -301,8 +303,7 @@ You can configure the default, min and max frequencies, the stepping and built i ## MIDI Functionality -This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to see what's happening. Enable from the Makefile. - +See [MIDI](feature_midi.md) ## Audio Keycodes @@ -319,114 +320,3 @@ This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to s |`MU_OFF` | |Turns off Music Mode | |`MU_TOG` | |Toggles Music Mode | |`MU_MOD` | |Cycles through the music modes | - - diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md index 8e04d9dd38..ec7eeaaa0c 100644 --- a/docs/feature_auto_shift.md +++ b/docs/feature_auto_shift.md @@ -109,6 +109,33 @@ Do not Auto Shift numeric keys, zero through nine. Do not Auto Shift alpha characters, which include A through Z. +### Auto Shift Per Key + +This is a function that allows you to determine which keys shold be autoshifted, much like the tap-hold keys. + +The default function looks like this: + +```c +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; + } + return false; +} +``` +This functionality is enabled by default, and does not need a define. + ### AUTO_SHIFT_REPEAT (simple define) Enables keyrepeat. diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 2adb16e4a8..d47ecc6824 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -62,15 +62,17 @@ Valid driver values are `pwm`, `software`, `custom` or `no`. See below for help To configure the backlighting, `#define` these in your `config.h`: -| Define | Default | Description | -|------------------------|---------------|-------------------------------------------------------------------------------------------------------------------| -| `BACKLIGHT_PIN` | *Not defined* | The pin that controls the LED(s) | -| `BACKLIGHT_LEVELS` | `3` | The number of brightness levels (maximum 31 excluding off) | -| `BACKLIGHT_CAPS_LOCK` | *Not defined* | Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) | -| `BACKLIGHT_BREATHING` | *Not defined* | Enable backlight breathing, if supported | -| `BREATHING_PERIOD` | `6` | The length of one backlight "breath" in seconds | -| `BACKLIGHT_ON_STATE` | `1` | The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low | -| `BACKLIGHT_LIMIT_VAL ` | `255` | The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum. | +|Define |Default |Description | +|-----------------------------|------------------|-----------------------------------------------------------------------------------------------------------------| +|`BACKLIGHT_PIN` |*Not defined* |The pin that controls the LED(s) | +|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) | +|`BACKLIGHT_CAPS_LOCK` |*Not defined* |Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) | +|`BACKLIGHT_BREATHING` |*Not defined* |Enable backlight breathing, if supported | +|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | +|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low | +|`BACKLIGHT_LIMIT_VAL` |`255` |The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum.| +|`BACKLIGHT_DEFAULT_LEVEL` |`BACKLIGHT_LEVELS`|The default backlight level to use upon clearing the EEPROM | +|`BACKLIGHT_DEFAULT_BREATHING`|*Not defined* |Whether to enable backlight breathing upon clearing the EEPROM | Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`. @@ -171,7 +173,7 @@ BACKLIGHT_DRIVER = software #### Multiple Backlight Pins :id=multiple-backlight-pins -Most keyboards have only one backlight pin which control all backlight LEDs (especially if the backlight is connected to an hardware PWM pin). +Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin). In software PWM, it is possible to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle. This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight. diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md index e2cafdac48..a56f093a39 100644 --- a/docs/feature_encoders.md +++ b/docs/feature_encoders.md @@ -53,15 +53,15 @@ If you are using different pinouts for the encoders on each half of a split keyb The callback functions can be inserted into your `.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) { + return encoder_update_user(index, clockwise); } ``` or `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); @@ -75,9 +75,29 @@ void encoder_update_user(uint8_t index, bool clockwise) { 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. + ## Hardware The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground. + +## Multiple Encoders + +Multiple encoders may share pins so long as each encoder has a distinct pair of pins. + +For example you can support two encoders using only 3 pins like this +``` +#define ENCODERS_PAD_A { B1, B1 } +#define ENCODERS_PAD_B { B2, B3 } +``` + +You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example: +``` +#define ENCODERS_PAD_A { B1, B1, B2 } +#define ENCODERS_PAD_B { B2, B3, B3 } +``` +Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case diff --git a/docs/feature_layers.md b/docs/feature_layers.md index 3f62cfc805..78d950dc49 100644 --- a/docs/feature_layers.md +++ b/docs/feature_layers.md @@ -19,12 +19,10 @@ These functions allow you to activate layers in various ways. Note that layers a ### Caveats :id=caveats -Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only. +Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode. Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this. -Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two. - ## Working with Layers :id=working-with-layers Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems. diff --git a/docs/feature_leader_key.md b/docs/feature_leader_key.md index 41ff8f1a4e..f10bca7589 100644 --- a/docs/feature_leader_key.md +++ b/docs/feature_leader_key.md @@ -72,6 +72,19 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) { } ``` +## Infinite Leader key timeout + +Sometimes your leader key is not on a comfortable places as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key. +This can make typing the entire sequence on time hard even if you are able to type most of the sequence fast. For example, if your sequence is `Leader + asd` typing `asd` fast is very easy once you have your hands in your home row. However starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not. +To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This mean that, after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably. +This infinite timeout only affects the leader key, so in our previous example of `Leader + asd` you will have an infinite amount of time between `Leader` and `a`, but once you start the sequence the timeout you have configured (global or per key) will work normally. +This way you can configure a very short `LEADER_TIMEOUT` but still have plenty of time to position your hands. + +In order to enable this, place this in your `config.h`: +```c +#define LEADER_NO_TIMEOUT +``` + ## Strict Key Processing By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_layers.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users. diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md index f4a6616340..5134ab6efa 100644 --- a/docs/feature_led_matrix.md +++ b/docs/feature_led_matrix.md @@ -1,14 +1,14 @@ -# LED Matrix Lighting +# LED Matrix Lighting :id=led-matrix-lighting This feature allows you to use LED matrices driven by external drivers. It hooks into the backlight system so you can use the same keycodes as backlighting to control it. If you want to use RGB LED's you should use the [RGB Matrix Subsystem](feature_rgb_matrix.md) instead. -## Driver configuration +## Driver configuration :id=driver-configuration +--- +### IS31FL3731 :id=is31fl3731 -### IS31FL3731 - -There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`: +There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 LED controller. To enable it, add this to your `rules.mk`: ```make LED_MATRIX_ENABLE = yes @@ -19,7 +19,7 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_ | Variable | Description | Default | |----------|-------------|---------| -| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages | 100 | +| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | | `LED_DRIVER_COUNT` | (Required) How many LED driver IC's are present | | | `DRIVER_LED_TOTAL` | (Required) How many LED lights are present across all drivers | | @@ -42,59 +42,338 @@ Here is an example using 2 drivers. #define LED_DRIVER_ADDR_2 0b1110110 #define LED_DRIVER_COUNT 2 -#define LED_DRIVER_1_LED_COUNT 25 -#define LED_DRIVER_2_LED_COUNT 24 -#define DRIVER_LED_TOTAL LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL +#define LED_DRIVER_1_LED_TOTAL 25 +#define LED_DRIVER_2_LED_TOTAL 24 +#define DRIVER_LED_TOTAL (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL) ``` -Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations. +!> 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`. Define these arrays listing all the LEDs in your `.c`: ```c - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - /* Refer to IS31 manual for these locations - * driver - * | LED address - * | | */ - { 0, C1_1 }, - { 0, C1_15 }, - // ... - } +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | LED address + * | | */ + { 0, C1_1 }, + { 0, C1_15 }, + // ... +} ``` 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` ). -## Keycodes +--- -All LED matrix keycodes are currently shared with the [backlight system](feature_backlight.md). +## Common Configuration :id=common-configuration -## LED Matrix Effects - -Currently no LED matrix effects have been created. - -## Custom Layer Effects - -Custom layer effects can be done by defining this in your `.c`: +From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example: +```c +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 5, NO_LED, NO_LED, 0 }, + { NO_LED, NO_LED, NO_LED, NO_LED }, + { 4, NO_LED, NO_LED, 1 }, + { 3, NO_LED, NO_LED, 2 } +}, { + // LED Index to Physical Position + { 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 } +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 1 +} }; +``` + +The first part, `// Key Matrix to LED Index`, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, `// LED Index to Physical Position` represents the LED's physical `{ x, y }` position on the keyboard. The default expected range of values for `{ x, y }` is the inclusive range `{ 0..224, 0..64 }`. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents `{ x, y }` coordinate `{ 0, 0 }` and the bottom right of your keyboard represents `{ 224, 64 }`. Using this as a basis, you can use the following formula to calculate the physical position: + +```c +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. + +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 LED_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. + +`// LED Index to Flag` is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type. + +## Flags :id=flags + +|Define |Value |Description | +|----------------------------|------|-------------------------------------------------| +|`HAS_FLAGS(bits, flags)` |*n/a* |Evaluates to `true` if `bits` has all `flags` set| +|`HAS_ANY_FLAGS(bits, flags)`|*n/a* |Evaluates to `true` if `bits` has any `flags` set| +|`LED_FLAG_NONE` |`0x00`|If this LED has no flags | +|`LED_FLAG_ALL` |`0xFF`|If this LED has all flags | +|`LED_FLAG_MODIFIER` |`0x01`|If the LED is on a modifier key | +|`LED_FLAG_KEYLIGHT` |`0x04`|If the LED is for key backlight | +|`LED_FLAG_INDICATOR` |`0x08`|If the LED is for keyboard state indication | + +## Keycodes :id=keycodes + +All LED matrix keycodes are currently shared with the [Backlight feature](feature_backlight.md). + +|Key |Description | +|---------|-----------------------------| +|`BL_TOGG`|Toggle LED Matrix on or off | +|`BL_STEP`|Cycle through modes | +|`BL_ON` |Turn on LED Matrix | +|`BL_OFF` |Turn off LED Matrix | +|`BL_INC` |Increase the brightness level| +|`BL_DEC` |Decrease the brightness level| + +## LED Matrix Effects :id=led-matrix-effects + +These are the effects that are currently available: + +```c +enum led_matrix_effects { + LED_MATRIX_NONE = 0, + LED_MATRIX_SOLID = 1, // Static single val, no speed support + LED_MATRIX_ALPHAS_MODS, // Static dual val, speed is val for LEDs marked as modifiers + LED_MATRIX_BREATHING, // Cycling brightness animation + LED_MATRIX_BAND, // Band fading brightness scrolling left to right + LED_MATRIX_BAND_PINWHEEL, // 3 blade spinning pinwheel fades brightness + LED_MATRIX_BAND_SPIRAL, // Spinning spiral fades brightness + LED_MATRIX_CYCLE_LEFT_RIGHT, // Full gradient scrolling left to right + LED_MATRIX_CYCLE_UP_DOWN, // Full gradient scrolling top to bottom + LED_MATRIX_CYCLE_OUT_IN, // Full gradient scrolling out to in + LED_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard +#if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES) + LED_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit then fades out + LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out + LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out + LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out + LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out + LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out + LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out + LED_MATRIX_SOLID_SPLASH, // Value pulses away from a single key hit then fades out + LED_MATRIX_SOLID_MULTISPLASH, // Value pulses away from multiple key hits then fades out +#endif + LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right + LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down + LED_MATRIX_EFFECT_MAX +}; +``` + +You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`: + + +|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` | + +## Custom LED Matrix Effects :id=custom-led-matrix-effects + +By setting `LED_MATRIX_CUSTOM_USER` (and/or `LED_MATRIX_CUSTOM_KB`) in `rules.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files. + +To declare new effects, create a new `led_matrix_user/kb.inc` that looks something like this: + +`led_matrix_user.inc` should go in the root of the keymap directory. +`led_matrix_kb.inc` should go in the root of the keyboard directory. + +To use custom effects in your code, simply prepend `LED_MATRIX_CUSTOM_` to the effect name specified in `LED_MATRIX_EFFECT()`. For example, an effect declared as `LED_MATRIX_EFFECT(my_cool_effect)` would be referenced with: + +```c +led_matrix_mode(led_MATRIX_CUSTOM_my_cool_effect); +``` + +```c +// !!! DO NOT ADD #pragma once !!! // + +// Step 1. +// Declare custom effects using the LED_MATRIX_EFFECT macro +// (note the lack of semicolon after the macro!) +LED_MATRIX_EFFECT(my_cool_effect) +LED_MATRIX_EFFECT(my_cool_effect2) + +// Step 2. +// Define effects inside the `LED_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block +#ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +// e.g: A simple effect, self-contained within a single method +static bool my_cool_effect(effect_params_t* params) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min; i < led_max; i++) { + led_matrix_set_value(i, 0xFF); + } + return led_max < DRIVER_LED_TOTAL; +} + +// e.g: A more complex effect, relying on external methods and state, with +// dedicated init and run methods +static uint8_t some_global_state; +static void my_cool_effect2_complex_init(effect_params_t* params) { + some_global_state = 1; +} +static bool my_cool_effect2_complex_run(effect_params_t* params) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min; i < led_max; i++) { + led_matrix_set_value(i, some_global_state++); + } + + return led_max < DRIVER_LED_TOTAL; +} +static bool my_cool_effect2(effect_params_t* params) { + if (params->init) my_cool_effect2_complex_init(params); + return my_cool_effect2_complex_run(params); +} + +#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +``` + +For inspiration and examples, check out the built-in effects under `quantum/led_matrix_animations/` + + + + + + + + + +## Additional `config.h` Options :id=additional-configh-options + +```c +#define LED_MATRIX_KEYPRESSES // reacts to keypresses +#define LED_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects +#define 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_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 +#define LED_MATRIX_STARTUP_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set +#define LED_MATRIX_STARTUP_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set +#define LED_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set +#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right. + // If LED_MATRIX_KEYPRESSES or LED_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR +``` + +## EEPROM storage :id=eeprom-storage + +The EEPROM for it is currently shared with the RGB Matrix system (it's generally assumed only one feature would be used at a time), but could be configured to use its own 32bit address with: + +```c +#define EECONFIG_LED_MATRIX (uint32_t *)28 +``` + +Where `28` is an unused index from `eeconfig.h`. + +### Direct Operation :id=direct-operation +|Function |Description | +|--------------------------------------------|-------------| +|`led_matrix_set_value_all(v)` |Set all of the LEDs to the given value, where `v` is between 0 and 255 (not written to EEPROM) | +|`led_matrix_set_value(index, v)` |Set a single LED to the given value, where `v` is between 0 and 255, and `index` is between 0 and `DRIVER_LED_TOTAL` (not written to EEPROM) | + +### Disable/Enable Effects :id=disable-enable-effects +|Function |Description | +|--------------------------------------------|-------------| +|`led_matrix_toggle()` |Toggle effect range LEDs between on and off | +|`led_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) | +|`led_matrix_enable()` |Turn effect range LEDs on, based on their previous state | +|`led_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) | +|`led_matrix_disable()` |Turn effect range LEDs off, based on their previous state | +|`led_matrix_disable_noeeprom()` |Turn effect range LEDs off, based on their previous state (not written to EEPROM) | + +### Change Effect Mode :id=change-effect-mode +|Function |Description | +|--------------------------------------------|-------------| +|`led_matrix_mode(mode)` |Set the mode, if LED animations are enabled | +|`led_matrix_mode_noeeprom(mode)` |Set the mode, if LED animations are enabled (not written to EEPROM) | +|`led_matrix_step()` |Change the mode to the next LED animation in the list of enabled LED animations | +|`led_matrix_step_noeeprom()` |Change the mode to the next LED animation in the list of enabled LED animations (not written to EEPROM) | +|`led_matrix_step_reverse()` |Change the mode to the previous LED animation in the list of enabled LED animations | +|`led_matrix_step_reverse_noeeprom()` |Change the mode to the previous LED animation in the list of enabled LED animations (not written to EEPROM) | +|`led_matrix_increase_speed()` |Increase the speed of the animations | +|`led_matrix_increase_speed_noeeprom()` |Increase the speed of the animations (not written to EEPROM) | +|`led_matrix_decrease_speed()` |Decrease the speed of the animations | +|`led_matrix_decrease_speed_noeeprom()` |Decrease the speed of the animations (not written to EEPROM) | +|`led_matrix_set_speed(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 | +|`led_matrix_set_speed_noeeprom(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 (not written to EEPROM) | + +### Change Value :id=change-value +|Function |Description | +|--------------------------------------------|-------------| +|`led_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value | +|`led_matrix_increase_val_noeeprom()` |Increase the value for effect range LEDs. This wraps around at maximum value (not written to EEPROM) | +|`led_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value | +|`led_matrix_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This wraps around at minimum value (not written to EEPROM) | + +### Query Current Status :id=query-current-status +|Function |Description | +|---------------------------------|---------------------------| +|`led_matrix_is_enabled()` |Gets current on/off status | +|`led_matrix_get_mode()` |Gets current mode | +|`led_matrix_get_val()` |Gets current val | +|`led_matrix_get_speed()` |Gets current speed | +|`led_matrix_get_suspend_state()` |Gets current suspend state | + +## Callbacks :id=callbacks + +### Indicators :id=indicators + +If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `led_matrix_indicators_kb` or `led_matrix_indicators_user` function for that: ```c void led_matrix_indicators_kb(void) { - led_matrix_set_index_value(index, value); + led_matrix_set_color(index, value); } ``` -A similar function works in the keymap as `led_matrix_indicators_user`. +In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. This includes a special macro to help make this easier to use: `LED_MATRIX_INDICATOR_SET_VALUE(i, v)`. -## Suspended State +```c +void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + LED_MATRIX_INDICATOR_SET_VALUE(index, value); +} +``` -To use the suspend feature, add this to your `.c`: +## 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(); } -``` \ No newline at end of file +``` +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_midi.md b/docs/feature_midi.md new file mode 100644 index 0000000000..ab29d89db6 --- /dev/null +++ b/docs/feature_midi.md @@ -0,0 +1,260 @@ +# MIDI + +## Usage + +First, enable MIDI by adding the following to your `rules.mk`: + +```makefile +MIDI_ENABLE = yes +``` + +There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like `MI_OCTU` and `MI_OCTD` will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more. + +### Basic MIDI + +To enable basic MIDI, add the following to your `config.h`: + +```c +#define MIDI_BASIC +``` + +### Advanced MIDI + +To enable advanced MIDI, add the following to your `config.h`: + +```c +#define MIDI_ADVANCED +``` + +#### Sending Control Change (CC) Messages + +If you're aiming to emulate the features of something like a Launchpad or other MIDI controller you'll need to access the internal MIDI device directly. + +Because there are so many possible CC messages, not all of them are implemented as keycodes. Additionally, you might need to provide more than just two values that you would get from a keycode (pressed and released) - for example, the analog values from a fader or a potentiometer. So, you will need to implement [custom keycodes](feature_macros.md) if you want to use them in your keymap directly using `process_record_user()`. + + +For reference of all the possible control code numbers see [MIDI Specification](#midi-specification) + +#### Example code for using Generic On Off Switches as per MIDI Specification. +```c +#include QMK_KEYBOARD_H + +extern MidiDevice midi_device; + +// MIDI CC codes for generic on/off switches (80, 81, 82, 83) +// Off: 0-63 +// On: 64-127 + +#define MIDI_CC_OFF 0 +#define MIDI_CC_ON 127 + +enum custom_keycodes { + MIDI_CC80 = SAFE_RANGE, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MIDI_CC80: + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 80, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 80, OFF); + } + return true; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + // ... + MIDI_CC80, + // ... + ) +}; +``` + +### Keycodes + +|Keycode |Aliases |Description | +|------------|---------|---------------------------------| +|`MI_ON` | |Turn MIDI on | +|`MI_OFF` | |Turn MIDI off | +|`MI_TOG` | |Toggle MIDI enabled | +|`MI_C` | |C octave 0 | +|`MI_Cs` |`MI_Db` |C♯/D♭ octave 0 | +|`MI_D` | |D octave 0 | +|`MI_Ds` |`MI_Eb` |D♯/E♭ octave 0 | +|`MI_E` | |E octave 0 | +|`MI_F` | |F octave 0 | +|`MI_Fs` |`MI_Gb` |F♯/G♭ octave 0 | +|`MI_G` | |G octave 0 | +|`MI_Gs` |`MI_Gs` |G♯/A♭ octave 0 | +|`MI_A` | |A octave 0 | +|`MI_As` |`MI_Bb` |A♯/B♭ octave 0 | +|`MI_B` | |B octave 0 | +|`MI_C_1` | |C octave 1 | +|`MI_Cs_1` |`MI_Db_1`|C♯/D♭ octave 1 | +|`MI_D_1` | |D octave 1 | +|`MI_Ds_1` |`MI_Eb_1`|D♯/E♭ octave 1 | +|`MI_E_1` | |E octave 1 | +|`MI_F_1` | |F octave 1 | +|`MI_Fs_1` |`MI_Gb_1`|F♯/G♭ octave 1 | +|`MI_G_1` | |G octave 1 | +|`MI_Gs_1` |`MI_Ab_1`|G♯/A♭ octave 1 | +|`MI_A_1` | |A octave 1 | +|`MI_As_1` |`MI_Bb_1`|A♯/B♭ octave 1 | +|`MI_B_1` | |B octave 1 | +|`MI_C_2` | |C octave 2 | +|`MI_Cs_2` |`MI_Db_2`|C♯/D♭ octave 2 | +|`MI_D_2` | |D octave 2 | +|`MI_Ds_2` |`MI_Eb_2`|D♯/E♭ octave 2 | +|`MI_E_2` | |E octave 2 | +|`MI_F_2` | |F octave 2 | +|`MI_Fs_2` |`MI_Gb_2`|F♯/G♭ octave 2 | +|`MI_G_2` | |G octave 2 | +|`MI_Gs_2` |`MI_Ab_2`|G♯/A♭ octave 2 | +|`MI_A_2` | |A octave 2 | +|`MI_As_2` |`MI_Bb_2`|A♯/B♭ octave 2 | +|`MI_B_2` | |B octave 2 | +|`MI_C_3` | |C octave 3 | +|`MI_Cs_3` |`MI_Db_3`|C♯/D♭ octave 3 | +|`MI_D_3` | |D octave 3 | +|`MI_Ds_3` |`MI_Eb_3`|D♯/E♭ octave 3 | +|`MI_E_3` | |E octave 3 | +|`MI_F_3` | |F octave 3 | +|`MI_Fs_3` |`MI_Gb_3`|F♯/G♭ octave 3 | +|`MI_G_3` | |G octave 3 | +|`MI_Gs_3` |`MI_Ab_3`|G♯/A♭ octave 3 | +|`MI_A_3` | |A octave 3 | +|`MI_As_3` |`MI_Bb_3`|A♯/B♭ octave 3 | +|`MI_B_3` | |B octave 3 | +|`MI_C_4` | |C octave 4 | +|`MI_Cs_4` |`MI_Db_4`|C♯/D♭ octave 4 | +|`MI_D_4` | |D octave 4 | +|`MI_Ds_4` |`MI_Eb_4`|D♯/E♭ octave 4 | +|`MI_E_4` | |E octave 4 | +|`MI_F_4` | |F octave 4 | +|`MI_Fs_4` |`MI_Gb_4`|F♯/G♭ octave 4 | +|`MI_G_4` | |G octave 4 | +|`MI_Gs_4` |`MI_Ab_4`|G♯/A♭ octave 4 | +|`MI_A_4` | |A octave 4 | +|`MI_As_4` |`MI_Bb_4`|A♯/B♭ octave 4 | +|`MI_B_4` | |B octave 4 | +|`MI_C_5` | |C octave 5 | +|`MI_Cs_5` |`MI_Db_5`|C♯/D♭ octave 5 | +|`MI_D_5` | |D octave 5 | +|`MI_Ds_5` |`MI_Eb_5`|D♯/E♭ octave 5 | +|`MI_E_5` | |E octave 5 | +|`MI_F_5` | |F octave 5 | +|`MI_Fs_5` |`MI_Gb_5`|F♯/G♭ octave 5 | +|`MI_G_5` | |G octave 5 | +|`MI_Gs_5` |`MI_Ab_5`|G♯/A♭ octave 5 | +|`MI_A_5` | |A octave 5 | +|`MI_As_5` |`MI_Bb_5`|A♯/B♭ octave 5 | +|`MI_B_5` | |B octave 5 | +|`MI_OCT_N2` | |Set octave to -2 | +|`MI_OCT_N1` | |Set octave to -1 | +|`MI_OCT_0` | |Set octave to 0 | +|`MI_OCT_1` | |Set octave to 1 | +|`MI_OCT_2` | |Set octave to 2 | +|`MI_OCT_3` | |Set octave to 3 | +|`MI_OCT_4` | |Set octave to 4 | +|`MI_OCT_5` | |Set octave to 5 | +|`MI_OCT_6` | |Set octave to 6 | +|`MI_OCT_7` | |Set octave to 7 | +|`MI_OCTD` | |Move down an octave | +|`MI_OCTU` | |Move up an octave | +|`MI_TRNS_N6`| |Set transposition to -6 semitones| +|`MI_TRNS_N5`| |Set transposition to -5 semitones| +|`MI_TRNS_N4`| |Set transposition to -4 semitones| +|`MI_TRNS_N3`| |Set transposition to -3 semitones| +|`MI_TRNS_N2`| |Set transposition to -2 semitones| +|`MI_TRNS_N1`| |Set transposition to -1 semitone | +|`MI_TRNS_0` | |No transposition | +|`MI_TRNS_1` | |Set transposition to +1 semitone | +|`MI_TRNS_2` | |Set transposition to +2 semitones| +|`MI_TRNS_3` | |Set transposition to +3 semitones| +|`MI_TRNS_4` | |Set transposition to +4 semitones| +|`MI_TRNS_5` | |Set transposition to +5 semitones| +|`MI_TRNS_6` | |Set transposition to +6 semitones| +|`MI_TRNSD` | |Decrease transposition | +|`MI_TRNSU` | |Increase transposition | +|`MI_VEL_0` | |Set velocity to 0 | +|`MI_VEL_1` | |Set velocity to 12 | +|`MI_VEL_2` | |Set velocity to 25 | +|`MI_VEL_3` | |Set velocity to 38 | +|`MI_VEL_4` | |Set velocity to 51 | +|`MI_VEL_5` | |Set velocity to 64 | +|`MI_VEL_6` | |Set velocity to 76 | +|`MI_VEL_7` | |Set velocity to 89 | +|`MI_VEL_8` | |Set velocity to 102 | +|`MI_VEL_9` | |Set velocity to 114 | +|`MI_VEL_10` | |Set velocity to 127 | +|`MI_VELD` | |Decrease velocity | +|`MI_VELU` | |Increase velocity | +|`MI_CH1` | |Set channel to 1 | +|`MI_CH2` | |Set channel to 2 | +|`MI_CH3` | |Set channel to 3 | +|`MI_CH4` | |Set channel to 4 | +|`MI_CH5` | |Set channel to 5 | +|`MI_CH6` | |Set channel to 6 | +|`MI_CH7` | |Set channel to 7 | +|`MI_CH8` | |Set channel to 8 | +|`MI_CH9` | |Set channel to 9 | +|`MI_CH10` | |Set channel to 10 | +|`MI_CH11` | |Set channel to 11 | +|`MI_CH12` | |Set channel to 12 | +|`MI_CH13` | |Set channel to 13 | +|`MI_CH14` | |Set channel to 14 | +|`MI_CH15` | |Set channel to 15 | +|`MI_CH16` | |Set channel to 16 | +|`MI_CHD` | |Decrease channel | +|`MI_CHU` | |Increase channel | +|`MI_ALLOFF` | |Stop all notes | +|`MI_SUS` | |Sustain | +|`MI_PORT` | |Portmento | +|`MI_SOST` | |Sostenuto | +|`MI_SOFT` | |Soft Pedal | +|`MI_LEG` | |Legato | +|`MI_MOD` | |Modulation | +|`MI_MODSD` | |Decrease modulation speed | +|`MI_MODSU` | |Increase modulation speed | +|`MI_BENDD` | |Bend pitch down | +|`MI_BENDU` | |Bend pitch up | + +### Configuration + +Certain values are stored in the `midi_config` struct. This configuration is not persisted to EEPROM. By default, these values are: + +|Configuration |Value|Comments | +|-------------------|-----|-------------------------| +|Octave |`4` |Corresponds to `MI_OCT_2`| +|Transposition |`0` | | +|Velocity |`127`| | +|Channel |`0` | | +|Modulation Interval|`8` | | + +For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on. + +### References +#### MIDI Specification + + * [MIDI.org](https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message) + * [CMU MIDI Programmer's Reference](https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html) +#### QMK C Files + + * `quantum/process_keycode/process_midi.c` + * `quantum/quantum_keycodes.h` + * `tmk_core/protocol/midi.h` + * `tmk_core/protocol/midi.c` + * `tmk_core/protocol/qmk_midi.c` + * `tmk_core/protocol/midi_device.h` + + diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md index 44202487f1..f3b659b1bc 100644 --- a/docs/feature_oled_driver.md +++ b/docs/feature_oled_driver.md @@ -145,6 +145,8 @@ void oled_task_user(void) { |`OLED_FONT_WIDTH` |`6` |The font width | |`OLED_FONT_HEIGHT` |`8` |The font height (untested) | |`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. | +|`OLED_FADE_OUT` |*Not defined* |Enables fade out animation. Use together with `OLED_TIMEOUT`. | +|`OLED_FADE_OUT_INTERVAL` |`0` |The speed of fade out animation, from 0 to 15. Larger values are slower. | |`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. | |`OLED_SCROLL_TIMEOUT_RIGHT`|*Not defined* |Scroll timeout direction is right when defined, left when undefined. | |`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. | @@ -261,11 +263,25 @@ void oled_write(const char *data, bool invert); void oled_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 +// Useful for moving the screen in preparation for new drawing // oled_scroll_left or oled_scroll_right should be preferred for all cases of moving a static // image such as a logo or to avoid burn-in as it's much, much less cpu intensive void oled_pan(bool left); +// Returns a pointer to the requested start index in the buffer plus remaining +// buffer length as struct +oled_buffer_reader_t oled_read_raw(uint16_t start_index); + +// Writes a string to the buffer at current cursor position +void oled_write_raw(const char *data, uint16_t size); + +// Writes a single byte into the buffer at the specified index +void oled_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 oled_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 oled_write(const char *data, bool invert);' on ARM @@ -277,23 +293,9 @@ void oled_write_P(const char *data, bool invert); // Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM void oled_write_ln_P(const char *data, bool invert); -// Returns a pointer to the requested start index in the buffer plus remaining -// buffer length as struct -oled_buffer_reader_t oled_read_raw(uint16_t start_index); - -// Writes a string to the buffer at current cursor position -void oled_write_raw(const char *data, uint16_t size); - -// Writes a single byte into the buffer at the specified index -void oled_write_raw_byte(const char data, uint16_t index); - // Writes a PROGMEM string to the buffer at current cursor position void oled_write_raw_P(const char *data, uint16_t size); -// Sets a specific pixel on or off -// Coordinates start at top-left and go right and down for positive x and y -void oled_write_pixel(uint8_t x, uint8_t y, bool on); - // Can be used to manually turn on the screen if it is off // Returns true if the screen was on or turns on bool oled_on(void); diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index fd866bd571..bfb3688b67 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -15,7 +15,20 @@ RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 ``` -Configure the hardware via your `config.h`: +You can use between 1 and 4 IS31FL3731 IC's. Do not specify `DRIVER_ADDR_` defines for IC's that are not present on your keyboard. You can define the following items in `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 | +| `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 | | +| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | +| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | + +Here is an example using 2 drivers. ```c // This is a 7-bit address, that gets left-shifted and bit 0 @@ -36,8 +49,6 @@ Configure the hardware via your `config.h`: !> 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 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 @@ -53,12 +64,10 @@ 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` or `1` right now). +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`). --- -### IS31FL3733/IS31FL3737 :id=is31fl3733is31fl3737 - -!> For the IS31FL3737, replace all instances of `IS31FL3733` below with `IS31FL3737`. +### 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`: @@ -67,7 +76,24 @@ RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3733 ``` -Configure the hardware via your `config.h`: +You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` defines for IC's that are not present on your keyboard. You can define the following items in `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 | +| `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 | | +| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | +| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | +| `DRIVER_SYNC_1` | (Optional) Sync configuration for the first RGB driver | 0 | +| `DRIVER_SYNC_2` | (Optional) Sync configuration for the second RGB driver | 0 | +| `DRIVER_SYNC_3` | (Optional) Sync configuration for the third RGB driver | 0 | +| `DRIVER_SYNC_4` | (Optional) Sync configuration for the fourth RGB driver | 0 | + +Here is an example using 2 drivers. ```c // This is a 7-bit address, that gets left-shifted and bit 0 @@ -81,6 +107,58 @@ Configure the hardware via your `config.h`: // 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_1_LED_TOTAL 58 +#define DRIVER_2_LED_TOTAL 10 +#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 4 drivers are supported, but it would be trivial to support all 8 combinations. + +Define these arrays listing all the LEDs in your `.c`: + +```c +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, B_1, A_1, C_1}, + .... +} +``` + +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). + +--- +### 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3737 +``` + +Configure the hardware via your `config.h`: + +```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) +// The address will vary depending on your wiring: +// 0000 <-> GND +// 0101 <-> SCL +// 1010 <-> SDA +// 1111 <-> VCC +// 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_COUNT 2 @@ -105,7 +183,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/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.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/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now). --- @@ -151,6 +229,8 @@ Configure the hardware via your `config.h`: --- +## Common Configuration :id=common-configuration + From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example: ```c @@ -254,6 +334,9 @@ enum rgb_matrix_effects { RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue 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 #if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS) RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM! RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation @@ -283,6 +366,7 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |-------------------------------------------------------|-----------------------------------------------| |`#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` | @@ -293,20 +377,23 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |`#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_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` | -|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` | |`#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` |Disables `RGB_MATRIX_SOLID_REACTIVE` | |`#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` | @@ -391,7 +478,7 @@ 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_animation/` +For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix_animations/` ## Colors :id=colors @@ -427,9 +514,10 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo ```c #define RGB_MATRIX_KEYPRESSES // reacts to keypresses #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects #define RGB_DISABLE_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off #define RGB_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: 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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 @@ -439,11 +527,13 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo #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 RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right. + // If RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR ``` ## EEPROM storage :id=eeprom-storage -The EEPROM for it is currently shared with the RGBLIGHT system (it's generally assumed only one RGB would be used at a time), but could be configured to use its own 32bit address with: +The EEPROM for it is currently shared with the LED Matrix system (it's generally assumed only one feature would be used at a time), but could be configured to use its own 32bit address with: ```c #define EECONFIG_RGB_MATRIX (uint32_t *)28 diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index d2612a6d1b..994a014a28 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -74,6 +74,7 @@ Changing the **Value** sets the overall brightness.
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode | |`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode | |`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode | +|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode | !> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) 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. @@ -309,6 +310,18 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) { } ``` +You can also use `rgblight_blink_layer_repeat` to specify the amount of times the layer is supposed to blink. Using the layers from above, +```c +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DEBUG: + rgblight_blink_layer_repeat(debug_enable ? 0 : 1, 200, 3); + break; + } +} +``` +would turn the layer 0 (or 1) on and off again three times when `DEBUG` is pressed. + ### Overriding RGB Lighting on/off status 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`. @@ -359,9 +372,9 @@ rgblight_set(); // Utility functions do not call rgblight_set() automatically, s Example: ```c -rgblight_sethsv(HSV_WHITE, 0); // led 0 -rgblight_sethsv(HSV_RED, 1); // led 1 -rgblight_sethsv(HSV_GREEN, 2); // led 2 +rgblight_sethsv_at(HSV_WHITE, 0); // led 0 +rgblight_sethsv_at(HSV_RED, 1); // led 1 +rgblight_sethsv_at(HSV_GREEN, 2); // led 2 // The above functions automatically calls rgblight_set(), so there is no need to call it explicitly. // Note that it is inefficient to call repeatedly. ``` diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index dc081ff3ae..4ebf585f5c 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -60,6 +60,7 @@ The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros. The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves. +Note that the total resistance for the connected system should be within spec at 2.2k-10kOhm, with an 'ideal' at 4.7kOhm, regardless of the placement and number. sk-i2c-connection-mono @@ -133,6 +134,12 @@ However, you'll have to flash the EEPROM files for the correct hand to each cont * `:dfu-util-split-left` * `:dfu-util-split-right` +Example: + +``` +make crkbd:default:avrdude-split-left +``` + This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files. You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common). @@ -243,7 +250,12 @@ This sets how many LEDs are directly connected to each controller. The first nu ```c #define SPLIT_USB_DETECT ``` -This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations). + +Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave. + +Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection). + +Enabled by default on ChibiOS/ARM. ?> This setting will stop the ability to demo using battery packs. @@ -259,9 +271,13 @@ This sets the poll frequency when detecting master/slave when using `SPLIT_USB_D ## Hardware Considerations and Mods -While most any Pro Micro can be used, micro controllers like the AVR Teensys and most (if not all) ARM boards require the Split USB Detect. +Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (`SPLIT_USB_DETECT`). Pro Micro boards can use VBUS detection out of the box and be used with or without `SPLIT_USB_DETECT`. -However, with the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the Split USB detection option. +Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targetted). + +### Teensy boards + +Teensy boards lack VBUS detection out of the box and must have `SPLIT_USB_DETECT` defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the `SPLIT_USB_DETECT` option. You'll only need a few things: diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md index 009477d203..cbc574b6b8 100644 --- a/docs/feature_swap_hands.md +++ b/docs/feature_swap_hands.md @@ -7,7 +7,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 -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +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}}, {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md index d2da39ad2b..7396e791c3 100644 --- a/docs/feature_tap_dance.md +++ b/docs/feature_tap_dance.md @@ -76,7 +76,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), }; -// Add tap dance item in place of a key code +// Add tap dance item to your keymap in place of a keycode const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ... TD(TD_ESC_CAPS) @@ -206,20 +206,22 @@ You will need a few things that can be used for 'Quad Function Tap-Dance'. You'll need to add these to the top of your `keymap.c` file, before your keymap. ```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, // Send two single taps - TRIPLE_TAP, - TRIPLE_HOLD -}; + td_state_t state; +} td_tap_t; // Tap dance enums enum { @@ -227,7 +229,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); // For the x tap dance. Put it here so it can be used in any keymap void x_finished(qk_tap_dance_state_t *state, void *user_data); @@ -261,61 +263,61 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following: * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the * letter 'p', the word 'pepper' would be quite frustating to type. * - * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested + * For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested * */ -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; // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'. - else return SINGLE_HOLD; + else return TD_SINGLE_HOLD; } else if (state->count == 2) { - // DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap + // TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap // action when hitting 'pp'. Suggested use case for this return value is when you want to send two // keystrokes of the key, and not the 'double tap' action/macro. - 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; } // Assumes no one is trying to type the same letter three times (at least not quickly). // If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add - // an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP' + // an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP' if (state->count == 3) { - if (state->interrupted || !state->pressed) return TRIPLE_TAP; - else return TRIPLE_HOLD; - } else return 8; // Magic number. At some point this method will expand to work for more presses + if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP; + else return TD_TRIPLE_HOLD; + } else return TD_UNKNOWN; } -// Create an instance of 'tap' for the 'x' tap dance. -static tap xtap_state = { +// Create an instance of 'td_tap_t' for the 'x' tap dance. +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; // Last case is for fast typing. Assuming your key is `f`: // For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. // In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 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[] = { @@ -343,9 +345,11 @@ enum td_keycodes { // Define a type containing as many tapdance states as you need 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; // Create a global instance of the tapdance state type @@ -354,7 +358,7 @@ static td_state_t td_state; // Declare your tapdance functions: // Function to determine the current tapdance state -uint8_t cur_dance(qk_tap_dance_state_t *state); +td_state_t cur_dance(qk_tap_dance_state_t *state); // `finished` and `reset` functions for each tapdance keycode void altlp_finished(qk_tap_dance_state_t *state, void *user_data); @@ -365,14 +369,14 @@ Below your `LAYOUT`, define each of the tapdance functions: ```c // Determine the tapdance state to return -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; // Any number higher than the maximum state value you return above + if (state->count == 2) return TD_DOUBLE_SINGLE_TAP; + else return TD_UNKNOWN; // Any number higher than the maximum state value you return above } // Handle the possible states for each tapdance keycode you define: @@ -380,13 +384,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)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here break; - case DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term + case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term tap_code16(KC_LPRN); register_code16(KC_LPRN); } @@ -394,13 +398,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)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here break; - case DOUBLE_SINGLE_TAP: + case TD_DOUBLE_SINGLE_TAP: unregister_code16(KC_LPRN); } } @@ -420,17 +424,19 @@ Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this e The first step is to include the following code towards the beginning of your `keymap.c`: ```c +// Define a type for as many tap dance states as you need +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; - -// Define a type for as many tap dance states as you need -enum { - SINGLE_TAP = 1, - SINGLE_HOLD, - DOUBLE_TAP -}; + td_state_t state; +} td_tap_t; enum { QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum @@ -439,7 +445,7 @@ enum { // Declare the functions to be used with your tap dance key(s) // Function associated with all tap dances -uint8_t cur_dance(qk_tap_dance_state_t *state); +td_state_t cur_dance(qk_tap_dance_state_t *state); // Functions associated with individual tap dances void ql_finished(qk_tap_dance_state_t *state, void *user_data); @@ -450,31 +456,31 @@ Towards the bottom of your `keymap.c`, include the following code: ```c // Determine the current tap dance state -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; } // Initialize tap structure associated with example tap dance key -static tap ql_tap_state = { +static td_tap_t ql_tap_state = { .is_press_action = true, - .state = 0 + .state = TD_NONE }; // Functions that control what our tap dance key does 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: // Check to see if the layer is already set if (layer_state_is(_MY_LAYER)) { // If already set, then switch it off @@ -489,10 +495,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 the key was held down and now is released then switch off the layer - 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; } // Associate our tap dance key with its functionality @@ -505,7 +511,7 @@ The above code is similar to that used in previous examples. The one point to no The use of `cur_dance()` and `ql_tap_state` mirrors the above examples. -The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`. +The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`. `tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. diff --git a/docs/feature_unicode.md b/docs/feature_unicode.md index 1208ac0064..6c3e2a1a2f 100644 --- a/docs/feature_unicode.md +++ b/docs/feature_unicode.md @@ -230,7 +230,7 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); Example uses include sending Unicode strings when a key is pressed, as described in [Macros](feature_macros.md). -### `send_unicode_hex_string()` +### `send_unicode_hex_string()` (Deprecated) Similar to `send_unicode_string()`, but the characters are represented by their Unicode code points, written in hexadecimal and separated by spaces. For example, the table flip above would be achieved with: diff --git a/docs/feature_wpm.md b/docs/feature_wpm.md index 12dd080579..c8ec3a7f32 100644 --- a/docs/feature_wpm.md +++ b/docs/feature_wpm.md @@ -1,25 +1,62 @@ # Word Per Minute (WPM) Calculcation -The WPM feature uses time between keystrokes to compute a rolling average words -per minute rate and makes this available for various uses. +The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses. Enable the WPM system by adding this to your `rules.mk`: WPM_ENABLE = yes -For split keyboards using soft serial, the computed WPM -score will be available on the master AND slave half. +For split keyboards using soft serial, the computed WPM score will be available on the master AND slave half. +## 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 | ## Public Functions -`uint8_t get_current_wpm(void);` -This function returns the current WPM as an unsigned integer. +|Function |Description | +|--------------------------|--------------------------------------------------| +|`get_current_wpm(void)` | Returns the current WPM as a value between 0-255 | +|`set_current_wpm(x)` | Sets the current WPM to `x` (between 0-255) | +## Callbacks -## Customized keys for WPM calc +By default, the WPM score only includes letters, numbers, space and some punctuation. If you want to change the set of characters considered as part of the WPM calculation, you can implement your own `bool wpm_keycode_user(uint16_t keycode)` and return true for any characters you would like included in the calculation, or false to not count that particular keycode. -By default, the WPM score only includes letters, numbers, space and some -punctuation. If you want to change the set of characters considered as part of -the WPM calculation, you can implement `wpm_keycode_user(uint16_t keycode)` -and return true for any characters you would like included in the calculation, -or false to not count that particular keycode. +For instance, the default is: + +```c +bool wpm_keycode_user(uint16_t keycode) { + 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 >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) { + return true; + } + + return false; +} +``` + +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). + +__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); + + 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 (((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL} || weak_modded) && (keycode == KC_DEL || keycode == KC_BSPC)) { + return WPM_ESTIMATED_WORD_SIZE; + } + if (keycode == KC_DEL || keycode == KC_BSPC) { + return 1; + } +} diff --git a/docs/flashing.md b/docs/flashing.md index 7804a6bad8..83c97444e1 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -249,3 +249,29 @@ Flashing sequence: 2. Wait for the OS to detect the device 3. Flash a .bin file 4. Reset the device into application mode (may be done automatically) + +## tinyuf2 + +Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F411 blackpill. + +The `rules.mk` setting for this bootloader is `tinyuf2`, and can be specified at the keymap or user level. + +To ensure compatibility with the tinyuf2 bootloader, make sure this block is present in your `rules.mk`: + +```make +# Bootloader selection +BOOTLOADER = tinyuf2 +``` + +Compatible flashers: + +* Any application able to copy a file from one place to another, such as _macOS Finder_ or _Windows Explorer_. + +Flashing sequence: + +1. Enter the bootloader using any of the following methods: + * Tap the `RESET` keycode + * Double-tap the `nRST` button on the PCB. +2. Wait for the OS to detect the device +3. Copy the .uf2 file to the new USB disk +4. Wait for the keyboard to become available diff --git a/docs/fr-fr/README.md b/docs/fr-fr/README.md index df4627c492..dfb9dcda4e 100644 --- a/docs/fr-fr/README.md +++ b/docs/fr-fr/README.md @@ -7,9 +7,9 @@ [![Contributeurs GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) [![Forks GitHub](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/) -## Qu'est-ce que QMK Firmware ? +## Qu'est-ce que QMK Firmware? -QMK (*Quantum Mechanical Keyboard*) est une communauté open source qui maintient le firmware QMK, la QMK Toolbox (*Boite à outil*), qmk.fm et leurs documentations. QMK Firmware est un firmware dédié aux claviers qui est basé sur [tmk\_keyboard](https://github.com/tmk/tmk_keyboard). Il offre des fonctionnalités très utiles pour les contrôleurs Atmel AVR, et, plus spécifiquement pour [les produits d'OLKB](https://olkb.com), le clavier [ErgoDox EZ](https://www.ergodox-ez.com), et pour les [produits Clueboard](https://clueboard.co/). Il prend désormais aussi en charge les processeurs ARM qui utilisent ChibiOS. Vous pouvez l'utiliser pour contrôler un clavier personnalisé soudé à la main ou alors sur un clavier avec un PCB personnalisé. +QMK (*Quantum Mechanical Keyboard*) est une communauté open source qui maintient le firmware QMK, la QMK Toolbox (*Boite à outil*), qmk.fm et leurs documentations. QMK Firmware est un firmware dédié aux claviers qui est basé sur [tmk\_keyboard](https://github.com/tmk/tmk_keyboard). Il offre des fonctionnalités très utiles pour les contrôleurs Atmel AVR, et, plus spécifiquement pour [les produits d'OLKB](https://olkb.com), le clavier [ErgoDox EZ](https://www.ergodox-ez.com), et pour les [produits Clueboard](https://clueboard.co/). Il prend désormais aussi en charge les processeurs ARM qui utilisent ChibiOS. Vous pouvez l'utiliser pour contrôler un clavier personnalisé soudé à la main ou alors sur un clavier avec un PCB personnalisé. ## Comment l'obtenir @@ -23,7 +23,7 @@ Avant d'être prêt à compiler vous allez devoir [installer un environnement](f make planck/rev4:default -Cette commande compilera la révision `rev4` du clavier `planck` avec la disposition `default`. Notez que tous les claviers n'ont pas forcément de révisions (aussi appelées sous-projects ou dossiers, ou en anglais « subprojects » ou « folder »). Cette option peut donc être omise : +Cette commande compilera la révision `rev4` du clavier `planck` avec la disposition `default`. Notez que tous les claviers n'ont pas forcément de révisions (aussi appelées sous-projects ou dossiers, ou en anglais «subprojects» ou «folder»). Cette option peut donc être omise: make preonic:default diff --git a/docs/fr-fr/driver_installation_zadig.md b/docs/fr-fr/driver_installation_zadig.md index 9e7d77b6dc..35beefa3c9 100644 --- a/docs/fr-fr/driver_installation_zadig.md +++ b/docs/fr-fr/driver_installation_zadig.md @@ -9,7 +9,7 @@ Nous vous recommandons d'utiliser l'utilitaire [Zadig](https://zadig.akeo.ie/). ## Installation Passez votre clavier en mode bootloader, soit en appuyant sur le keycode `RESET` (qui peut se trouver dans un calque différent) ou en appuyant sur le bouton reset qui se trouve en général sous la board. Si votre clavier n'a aucune de ces options, essayez de le brancher en maintenant Escape ou Espace+`B` appuyés (voir la documentation de [Bootmagic](feature_bootmagic.md) pour plus de détails). Certaines boards utilisent [Command](feature_command.md) à la place de Bootmagic. Dans ce cas, vous pouvez entrer en mode bootloader en appuyant, à n'importe quel moment lorsque le clavier est branché, sur les combinaisons de touches Shift Gauche+Shift Droit+`B` ou Shift Gauche+Shift Droit+Escape. -Certains claviers ont des instructions spécifiques pour passer en mode bootloader. Par exemple, la touche [Bootmagic Lite]](feature_bootmagic.md#bootmagic-lite) (défaut : Échap) peut être sur une touche différente telle que Contrôle Gauche. La combinaison pour la Command (défaut : Shift Gauche+Shift Droit) peut être différente, par exemple Contrôle Gauche+Contrôle Droit. Référez-vous au fichier README de votre clavier. +Certains claviers ont des instructions spécifiques pour passer en mode bootloader. Par exemple, la touche [Bootmagic Lite]](feature_bootmagic.md#bootmagic-lite) (défaut: Échap) peut être sur une touche différente telle que Contrôle Gauche. La combinaison pour la Command (défaut: Shift Gauche+Shift Droit) peut être différente, par exemple Contrôle Gauche+Contrôle Droit. Référez-vous au fichier README de votre clavier. Pour mettre un clavier en mode bootloader avec USBaspLoader, appuyez sur le bouton `RESET` tout en maintenant le bouton `BOOT`. Vous pouvez aussi maintenir le bouton `BOOT` en branchant le câble USB. @@ -43,4 +43,4 @@ Cliquez dessus avec le bouton droit et sélectionner **Désinstaller le périph ![Le dialogue Suppression de périphérique, avec la boîte "suppression de pilote" cochée](https://i.imgur.com/aEs2RuA.png) -Appuyez sur **Action → Analyser les changements de hardware**. A ce stade, vous devriez pouvoir saisir à nouveau. Vérifiez dans Zadig que les périphériques utilisent bien le pilote `HidUsb`. Si c'est le cas, vous avez corrigé le problème, votre clavier devrait fonctionner à nouveau ! +Appuyez sur **Action → Analyser les changements de hardware**. A ce stade, vous devriez pouvoir saisir à nouveau. Vérifiez dans Zadig que les périphériques utilisent bien le pilote `HidUsb`. Si c'est le cas, vous avez corrigé le problème, votre clavier devrait fonctionner à nouveau! diff --git a/docs/fr-fr/faq_build.md b/docs/fr-fr/faq_build.md index b8d09ef771..c6a3253530 100644 --- a/docs/fr-fr/faq_build.md +++ b/docs/fr-fr/faq_build.md @@ -20,7 +20,7 @@ Veuillez noter que lancer `make` avec `sudo` est généralement une **mauvaise** ### Règles `udev` pour Linux -Sous Linux, vous aurez besoin des permissions appropriées pour accéder au MCU (le micro-contrôleur). Vous avez le choix d'utiliser `sudo` en flashant le firmware, ou placer ces fichiers dans `/etc/udev/rules.d`. Une fois ajouté, lancez les commandes suivantes : +Sous Linux, vous aurez besoin des permissions appropriées pour accéder au MCU (le micro-contrôleur). Vous avez le choix d'utiliser `sudo` en flashant le firmware, ou placer ces fichiers dans `/etc/udev/rules.d`. Une fois ajouté, lancez les commandes suivantes: ```console sudo udevadm control --reload-rules diff --git a/docs/fr-fr/faq_debug.md b/docs/fr-fr/faq_debug.md index 344776ebb9..3b13b96b55 100644 --- a/docs/fr-fr/faq_debug.md +++ b/docs/fr-fr/faq_debug.md @@ -6,13 +6,13 @@ Cette page détaille diverses questions fréquemment posées par les utilisateur ## `hid_listen` ne reconnaît pas de périphérique -Lorsque la console de débugage sur votre périphérique n'est pas prêt, vous obtiendrez un message similaire : +Lorsque la console de débugage sur votre périphérique n'est pas prêt, vous obtiendrez un message similaire: ``` Waiting for device:......... ``` -Une fois le périphérique connecté, *hid_listen* le trouve et vous obtiendrez ce message : +Une fois le périphérique connecté, *hid_listen* le trouve et vous obtiendrez ce message: ``` Waiting for new device:......................... @@ -61,7 +61,7 @@ Vous ne voulez probablement pas "briquer" votre clavier, rendre impossible d'éc - Si votre map de clavier n'inclut pas de RESET, pour entrer en mode DFU, vous devrez appuyer sur le bouton reset du PCB. Cela implique que vous devrez certainement dévisser certaines pièces de votre clavier pour y accéder. - Modifier les fichiers tmk_core / common peut rendre le clavier inutilisable -- Si un fichier .hex trop large est la cause du problème : `make dfu` supprime le bloc puis teste la taille (il ne fait pas les choses dans le bon ordre), ce qui provoque une erreur. En résultat, le flash n’aura pas été fait et le clavier restera en mode DFU. +- Si un fichier .hex trop large est la cause du problème: `make dfu` supprime le bloc puis teste la taille (il ne fait pas les choses dans le bon ordre), ce qui provoque une erreur. En résultat, le flash n’aura pas été fait et le clavier restera en mode DFU. - Pour finir, notez que la taille maximale d'un fichier .hex sur un Plank est de 7000h (28672 decimal) ``` @@ -118,7 +118,7 @@ Sous Windows, activez l'option `Permettre au périphérique de sortir l'ordinate Appuyer sur n'importe quelle touche en mode veille devrait sortir l'ordinateur de veille. -## Vous utilisez un Arduino ? +## Vous utilisez un Arduino? **Faites attention au fait que le nommage des pin d'un Arduino diffère de la puce**. Par exemple, la pin `D0` n'est pas `PD0`. Vérifiez le circuit avec la fiche technique. diff --git a/docs/fr-fr/faq_keymap.md b/docs/fr-fr/faq_keymap.md index b6e29aede8..374a005227 100644 --- a/docs/fr-fr/faq_keymap.md +++ b/docs/fr-fr/faq_keymap.md @@ -44,7 +44,7 @@ Le premier n'est reconnu que sur macOS, alors que le dernier, `KC_SLEP` et `KC_W ## Modificateur "One Shot" -Cette fonctionnalité permet de corriger un problème avec la touche Shift. En effet, il arrive de saisir plusieurs majuscules en ne voulant en saisir qu'une sur un mot. Ex : `CEtte` à la place de `Cette`. La fonctionnalité « One shot » shift permet de corriger ça. +Cette fonctionnalité permet de corriger un problème avec la touche Shift. En effet, il arrive de saisir plusieurs majuscules en ne voulant en saisir qu'une sur un mot. Ex: `CEtte` à la place de `Cette`. La fonctionnalité «One shot» shift permet de corriger ça. https://github.com/tmk/tmk_keyboard/issues/67 @@ -59,7 +59,7 @@ Pour les touches de modification et les actions de calque, vous devez placer `KC ## Support de touche à verrouillage mécanique -Cette fonctionnalité permet l'usage de *touches à verrouillage mécanique* comme [ces interrupteurs Alps](https://deskthority.net/wiki/Alps_SKCL_Lock). Vous pouvez l'activer en ajoutant ceci à votre `config.h` : +Cette fonctionnalité permet l'usage de *touches à verrouillage mécanique* comme [ces interrupteurs Alps](https://deskthority.net/wiki/Alps_SKCL_Lock). Vous pouvez l'activer en ajoutant ceci à votre `config.h`: ``` #define LOCKING_SUPPORT_ENABLE diff --git a/docs/fr-fr/flashing.md b/docs/fr-fr/flashing.md index 4d6655c817..9f5493194a 100644 --- a/docs/fr-fr/flashing.md +++ b/docs/fr-fr/flashing.md @@ -27,15 +27,15 @@ Méthodes de flash compatibles : * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé) * [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` avec QMK (outil en ligne de commande recommandé) -Ordre des actions : +Ordre des actions: 1. Pressez le keycode `RESET`, ou appuyez sur le bouton physique RESET ou alors créez un contact entre RST et GND. 2. Attendez que l'OS detecte l'appareil. 3. Éffacez la mémoire, cela peut être fait automatiquement. 4. Flasher le fichier .hex. -5. Redémarrez l'appareil en mode « application », cela peut être fait automatiquement. +5. Redémarrez l'appareil en mode «application», cela peut être fait automatiquement. -Alternativement : +Alternativement: make ::dfu @@ -48,11 +48,11 @@ QMK a un fork du bootloader LUFA DFU qui vous permet de faire un simple scan de #define QMK_LED E6 #define QMK_SPEAKER C6 -Le fabricant et le nom du produit proviennent de vos définitions dans fichier `config.h`, et la chaîne de caractère « bootloader » est ajoutée au nom du produit. +Le fabricant et le nom du produit proviennent de vos définitions dans fichier `config.h`, et la chaîne de caractère «bootloader» est ajoutée au nom du produit. -Pour génerer le bootloader, utilisez la cible `bootloader`. Exemple : `make planck/rev4:default:bootloader`. +Pour génerer le bootloader, utilisez la cible `bootloader`. Exemple: `make planck/rev4:default:bootloader`. -Pour génerer un fichier .hex prêt pour la production qui contiendra tant l'application que le bootloader, utilisez la cible `production`. Exemple : `make planck/rev4:default:production`. +Pour génerer un fichier .hex prêt pour la production qui contiendra tant l'application que le bootloader, utilisez la cible `production`. Exemple: `make planck/rev4:default:production`. ### Commandes DFU @@ -67,7 +67,7 @@ Il y a plusieurs commandes DFU que vous pouvez utiliser pour flasher le firmware Les cartes arduinos et leurs clones utilisent le [bootloader Caterina](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (tous les claviers utilisant un Pro Micro, ou un clone). Ils utilisent aussi le protocole avr109 pour communiquer en virtuellement en série (serial en anglais). Les bootloaders comme le [A-Star](https://www.pololu.com/docs/0J61/9) sont basés sur Caterina. -Pour vérifier la compatibilité avec un bootloader Caterina, vérifiez que ce bloc est présent dans votre fichier `rules.mk` : +Pour vérifier la compatibilité avec un bootloader Caterina, vérifiez que ce bloc est présent dans votre fichier `rules.mk`: ```make # Bootloader selection @@ -81,20 +81,20 @@ Pour vérifier la compatibilité avec un bootloader Caterina, vérifiez que ce b BOOTLOADER = caterina ``` -Flashers compatibles : +Flashers compatibles: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandée) * [avrdude](https://www.nongnu.org/avrdude/) avec avr109 / `:avrdude` (Outil en ligne de commande recommandé) * [AVRDUDESS](https://github.com/zkemble/AVRDUDESS) -Séquence de flash :  +Séquence de flash : 1. Pressez la touche avec le keycode `RESET`, ou reliez les ports GND et RST. Vous n'avez que 7 secondes pour flasher une fois que l'opération a été faite. 2. Attendez que l'OS détecte l'appareil. 3. Flasher le fichier .hex. 4. Attendez que l'appareil redémarre automatiquement. -ou, utilisez : +ou, utilisez: make ::avrdude @@ -111,7 +111,7 @@ Il existe un certain nombre de commandes DFU que vous pouvez utiliser pour mettr Halfkay est un protocole ultra-simple développé par PJRC qui utilise HID et qui est fourni avec tous les Teensys après le modèle 2.0. -Pour vérifier la compatibilité avec le booloader Halfkay, vérifiez que ce bloc est présent dans votre fichier `rules.mk` : +Pour vérifier la compatibilité avec le booloader Halfkay, vérifiez que ce bloc est présent dans votre fichier `rules.mk`: ```make # Bootloader selection @@ -125,24 +125,24 @@ Pour vérifier la compatibilité avec le booloader Halfkay, vérifiez que ce blo BOOTLOADER = halfkay ``` -Flasher compatibles : +Flasher compatibles: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recomandée) * [Teensy Loader](https://www.pjrc.com/teensy/loader.html) (petit utilitaire ultra simple) [Teensy Loader en ligne de commande](https://www.pjrc.com/teensy/loader_cli.html) (Outil en ligne de commande recommandé) -Séquence de flash : +Séquence de flash: 1. Pressez la touche du keycode `RESET`, ou reliez les ports RST et GND rapidement. Vous avez ensuite 7 secondes pour réaliser le flash. 2. Attendez que l'OS détecte l'appareil. 3. Flasher le fichier .hex. -4. Redémarrez l'appareil en mode « application ». Cela peut être fait automatiquement. +4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement. ## USBasploader USBasploader est un bootloader développé par matrixstorm. Il est utilisé sur des processeurs AVR non-USB comme le ATmega328P, qui fonctionne grâce à V-USB. -Pour vérifier la compatibilité avec le booloader USBasploader, vérifiez que ce bloc est présent dans votre fichier `rules.mk` : +Pour vérifier la compatibilité avec le booloader USBasploader, vérifiez que ce bloc est présent dans votre fichier `rules.mk`: ```make # Bootloader selection @@ -156,24 +156,24 @@ Pour vérifier la compatibilité avec le booloader USBasploader, vérifiez que c BOOTLOADER = USBasp ``` -Flashers compatibles : +Flashers compatibles: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandé) * [avrdude](https://www.nongnu.org/avrdude/) avec le programmeur `usbasp`. * [AVRDUDESS](https://github.com/zkemble/AVRDUDESS) -Séquence de flash : +Séquence de flash: 1. Pressez la touche du keycode `RESET`, ou reliez le port de boot pendant que RST et GND snt reliés. Cela doit être fait très rapidement. 2. Attendez que l'OS détecte l'appareil. 3. Flasher le fichier .hex. -4. Redémarrez l'appareil en mode « application ». Cela peut être fait automatiquement. +4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement. ## BootloadHID BootloadHID est un bootloader pour les microcontrôleurs AVR. L'utilitaire de téleversement ne demande pas de drivers au niveau du kernel et peut être lancé sans installer aucune DLLs. -Pour vérifier la compatibilité avec le bootloader bootloadHID, vérifiez que ce bloc existe dans votre fichier `rules.mk` :  +Pour vérifier la compatibilité avec le bootloader bootloadHID, vérifiez que ce bloc existe dans votre fichier `rules.mk` : ```make # Bootloader selection @@ -187,50 +187,50 @@ Pour vérifier la compatibilité avec le bootloader bootloadHID, vérifiez que c BOOTLOADER = bootloadHID ``` -Utilitaires de flash compatibles : +Utilitaires de flash compatibles: * [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (Utilitaire avec interface graphique recommandé) * [bootloadhid Command Line](https://www.obdev.at/products/vusb/bootloadhid.html) / `:BootloadHID` avec QMK (utilitaire en ligne de commande recommandé) Séquence de flash -1. Entrez dans le bootloader en utilisant l'une de ces méthodes : +1. Entrez dans le bootloader en utilisant l'une de ces méthodes: * Pressez la touche du keycode `RESET` (Cela ne fonctionnera pas sur certains appareils). - * Verrouillez la touche « Salt » tout en branchant le clavier (Généralement ce principe est documenté dans le fichier readme du clavier) + * Verrouillez la touche «Salt» tout en branchant le clavier (Généralement ce principe est documenté dans le fichier readme du clavier) 2. Attendez que l'OS détecte l'appareil. 3. Flasher le fichier .hex. -4. Redémarrez l'appareil en mode « application ». Cela peut être fait automatiquement. +4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement. -Ou alors : +Ou alors: make ::bootloadHID ## STM32 -Tous les processeurs STM32 contiennent un bootloader installé en usine qui ne peut pas être modifié ou supprimé. Certains processeurs STM32 ont des bootloaders qui ne peuvent pas être programmés par USB (ex : STM32F103) mais le processus reste le même. +Tous les processeurs STM32 contiennent un bootloader installé en usine qui ne peut pas être modifié ou supprimé. Certains processeurs STM32 ont des bootloaders qui ne peuvent pas être programmés par USB (ex: STM32F103) mais le processus reste le même. Pour le moment, aucune variable `BOOTLOADER` n'est nécessaire dans le fichier `rules.mk`. -Flashers compatibles : +Flashers compatibles: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé) * [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (utilitaire en ligne de commande recommandé) Séquence pour flasher: -1. Entrez dans le bootloader en utilisant l'une de ces méthodes : +1. Entrez dans le bootloader en utilisant l'une de ces méthodes: * Utilisez une touche sur laquelle le keycode `RESET` (Cela peut ne pas fonctionner sur les appareils STM32F042) * Si un circuit de réinitialisation (Reset) est présent alors utilisé le bouton qui lui est dédié. * Autrement, vous devez réaliser une liaison entre BOOT0 et VCC (en appuyant sur le bouton ou à l'aide d'un pont) puis faire un pont entre RESET et GND et enfin relacher le pont BOOT0. 2. Attendre que l'os détecte l'appareil. 3. Flasher un fichier `.bin`.h * Vous allez recevoir un avertissement à propos de la signature DFU. Ignorez-la. -4. Réinitialisez l'appareil en mode « application ». Cela peut être fait automatiquement. - * Si vous êtes en train de travailler en ligne de commande, par exemple avec un `make planck/rev6:default:dfu-util` alors soyez bien sur que l'argument `:leave` est passé aux arguments DFU grâce à la variable `DFU_ARGS` à l'intérieur de votre fichier `rules.mk` (Ex : `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) afin que votre appareil redémarre après avoir été flashé. +4. Réinitialisez l'appareil en mode «application». Cela peut être fait automatiquement. + * Si vous êtes en train de travailler en ligne de commande, par exemple avec un `make planck/rev6:default:dfu-util` alors soyez bien sur que l'argument `:leave` est passé aux arguments DFU grâce à la variable `DFU_ARGS` à l'intérieur de votre fichier `rules.mk` (Ex: `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) afin que votre appareil redémarre après avoir été flashé. ### Commandes STM32 -Il y a différentes commandes que vous pouvez utiliser pour flasher un firmware dans un appareil STM32  : +Il y a différentes commandes que vous pouvez utiliser pour flasher un firmware dans un appareil STM32: * `:dfu-util` - C'est l'option standard pour flasher un appareil STM32. Le script attendra qu'un bootloader STM32 soit présent. * `:dfu-util-split-left` - Permet de flasher un firmware normalement, tout comme l'option précédente mais permet de configurer le côté gauche des paramètres EEPROM sur un clavier scindé. diff --git a/docs/fr-fr/newbs_flashing.md b/docs/fr-fr/newbs_flashing.md index c9849eb104..f1f6b1131f 100644 --- a/docs/fr-fr/newbs_flashing.md +++ b/docs/fr-fr/newbs_flashing.md @@ -88,7 +88,7 @@ Par exemple, si votre keymap s'appelle "xyverz" et que vous fabriquez une keymap La commande va vérifier la configuration du clavier, puis tentera de le flasher en fonction du bootloader (chargeur d’amorçage) spécifié. Cela signifie que vous n'avez pas besoin de savoir quel bootloader votre clavier utilise. Exécutez simplement la commande et laissez-le faire le gros du travail. -Cependant, tout dépend du bootloader qui est installé sur le clavier. Si cette information n’est pas configurée ou si vous tentez de flasher un clavier qui ne permet pas d’être flashé alors vous obtiendrez cette erreur : +Cependant, tout dépend du bootloader qui est installé sur le clavier. Si cette information n’est pas configurée ou si vous tentez de flasher un clavier qui ne permet pas d’être flashé alors vous obtiendrez cette erreur: WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time. @@ -326,7 +326,7 @@ Il y aun certain nombre de commandes du DFU que vous pouvez utiliser pour flash ### BootloadHID -Pour les claviers basés sur Bootmapper Client(BMC)/bootloadHID/ATmega32A, si vous êtes prêts à compiler et flasher le firmware, ouvrez votre fenêtre de terminal et lancez la commande suivante : +Pour les claviers basés sur Bootmapper Client(BMC)/bootloadHID/ATmega32A, si vous êtes prêts à compiler et flasher le firmware, ouvrez votre fenêtre de terminal et lancez la commande suivante: make ::bootloaderHID @@ -351,7 +351,7 @@ Error opening HIDBoot device: The specified device was not found Trying again in 5s. ``` -Une fois ce résultat obtenu, réinitialisez le contrôleur. Le résultat suivant devrait s’afficher : +Une fois ce résultat obtenu, réinitialisez le contrôleur. Le résultat suivant devrait s’afficher: ``` Page size = 128 (0x80) diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index 7198576e3a..02216875c8 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -22,8 +22,8 @@ The `` means the following The following targets are for developers: -* `show-path` shows the path of the source and object files. -* `dump-vars` dumps the makefile variable. +* `show_path` shows the path of the source and object files. +* `dump_vars` dumps the makefile variable. * `objs-size` displays the size of individual object files. * `show_build_options` shows the options set in 'rules.mk'. * `check-md5` displays the md5 checksum of the generated binary file. diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md index d6b67440a2..b90480041c 100644 --- a/docs/ja/_summary.md +++ b/docs/ja/_summary.md @@ -3,7 +3,6 @@ * [セットアップ](ja/newbs_getting_started.md) * [初めてのファームウェアの構築](ja/newbs_building_firmware.md) * [ファームウェアのフラッシュ](ja/newbs_flashing.md) - * [テストとデバッグ](ja/newbs_testing_debugging.md) * [手助けを得る/サポート](ja/support.md) * [他のリソース](ja/newbs_learn_more_resources.md) * [シラバス](ja/syllabus.md) @@ -11,7 +10,8 @@ * FAQ * [一般的な FAQ](ja/faq_general.md) * [QMK のビルド/コンパイル](ja/faq_build.md) - * [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md) + * [QMK のデバッグ](ja/faq_debug.md) + * [QMK のトラブルシューティング](ja/faq_misc.md) * [キーマップ FAQ](ja/faq_keymap.md) * [用語](ja/reference_glossary.md) @@ -23,11 +23,13 @@ * [概要](ja/api_overview.md) * [API ドキュメント](ja/api_docs.md) * [キーボードサポート](ja/reference_configurator_support.md) + * [デフォルトキーマップの追加](ja/configurator_default_keymaps.md) * CLI * [概要](ja/cli.md) * [設定](ja/cli_configuration.md) * [コマンド](ja/cli_commands.md) + * [Tab 補完](ja/cli_tab_complete.md) * QMK を使う * ガイド @@ -41,8 +43,8 @@ * [書き込み](ja/flashing.md) * [ATmega32A の書き込み (ps2avrgb)](ja/flashing_bootloadhid.md) * IDE - * [Eclipse で QMK を使用](ja/other_eclipse.md) - * [VSCode で QMK を使用](ja/other_vscode.md) + * [QMK での Eclipse の使用](ja/other_eclipse.md) + * [QMK での VSCode の使用](ja/other_vscode.md) * Git のベストプラクティス * [入門](ja/newbs_git_best_practices.md) * [フォーク](ja/newbs_git_using_your_master_branch.md) @@ -79,6 +81,7 @@ * [ワンショットキー](ja/one_shot_keys.md) * [ポインティング デバイス](ja/feature_pointing_device.md) * [ロー HID](ja/feature_rawhid.md) + * [シーケンサー](ja/feature_sequencer.md) * [スワップハンド](ja/feature_swap_hands.md) * [タップダンス](ja/feature_tap_dance.md) * [タップホールド設定](ja/tap_hold.md) @@ -103,6 +106,7 @@ * [DIP スイッチ](ja/feature_dip_switch.md) * [エンコーダ](ja/feature_encoders.md) * [触覚フィードバック](ja/feature_haptic_feedback.md) + * [ジョイスティック](ja/feature_joystick.md) * [LED インジケータ](ja/feature_led_indicators.md) * [Proton C 変換](ja/proton_c_conversion.md) * [PS/2 マウス](ja/feature_ps2_mouse.md) @@ -116,11 +120,8 @@ * 互換性を破る変更/Breaking changes * [概要](ja/breaking_changes.md) * [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md) - * 履歴 - * [2020年8月29日](ja/ChangeLog/20200829.md) - * [2020年5月30日](ja/ChangeLog/20200530.md) - * [2020年2月29日](ja/ChangeLog/20200229.md) - * [2019年8月30日](ja/ChangeLog/20190830.md) + * [最近の変更履歴](ChangeLog/20210227.md "QMK v0.12.0 - 2021 Feb 27") + * [過去の互換性を破る変更](ja/breaking_changes_history.md) * C 開発 * [ARM デバッグ ガイド](ja/arm_debugging.md) @@ -129,11 +130,13 @@ * [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md) * [ドライバ](ja/hardware_drivers.md) * [ADC ドライバ](ja/adc_driver.md) + * [オーディオドライバ](ja/audio_driver.md) * [I2C ドライバ](ja/i2c_driver.md) * [SPI ドライバ](ja/spi_driver.md) * [WS2812 ドライバ](ja/ws2812_driver.md) * [EEPROM ドライバ](ja/eeprom_driver.md) * [シリアル ドライバ](ja/serial_driver.md) + * [UART ドライバ](ja/uart_driver.md) * [GPIO 制御](ja/internals_gpio_control.md) * [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md) @@ -155,6 +158,7 @@ * [QMK への貢献](ja/contributing.md) * [QMK ドキュメントの翻訳](ja/translating.md) * [設定オプション](ja/config_options.md) + * [データ駆動型コンフィギュレーション](ja/data_driven_config.md) * [Make ドキュメント](ja/getting_started_make_guide.md) * [ドキュメント ベストプラクティス](ja/documentation_best_practices.md) * [ドキュメント テンプレート](ja/documentation_templates.md) diff --git a/docs/ja/cli_configuration.md b/docs/ja/cli_configuration.md index f4857a6029..6ed791b471 100644 --- a/docs/ja/cli_configuration.md +++ b/docs/ja/cli_configuration.md @@ -74,7 +74,7 @@ default.keymap: None -> default qmk config compile -### 単一キーの例 +### 単一キーの例 :id=single-key-example qmk config compile.keyboard diff --git a/docs/ja/compatible_microcontrollers.md b/docs/ja/compatible_microcontrollers.md index fdd11f14fa..b675b038d2 100644 --- a/docs/ja/compatible_microcontrollers.md +++ b/docs/ja/compatible_microcontrollers.md @@ -33,8 +33,11 @@ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR ま * [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html) * [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.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) +* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) +* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) ### NXP (Kinetis) diff --git a/docs/ja/custom_quantum_functions.md b/docs/ja/custom_quantum_functions.md index c19fea5275..c348f85566 100644 --- a/docs/ja/custom_quantum_functions.md +++ b/docs/ja/custom_quantum_functions.md @@ -1,8 +1,8 @@ # キーボードの挙動をカスタマイズする方法 多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。 @@ -190,6 +190,14 @@ void keyboard_post_init_user(void) { カスタムマトリックススキャンコードが必要な場合は、この関数を使う必要があります。また、カスタムステータス出力 (LED あるいはディスプレイなど)や、ユーザが入力していない場合でも定期的にトリガーするその他の機能のために使うことができます。 +# キーボードハウスキーピング :id=keyboard-housekeeping + +* キーボード/リビジョン: `void housekeeping_task_kb(void)` +* キーマップ: `void housekeeping_task_user(void)` + +この関数は、全ての QMK 処理の最後に、次の繰り返しを開始する前に呼び出されます。`housekeeping_task_*` の関数が呼び出された時点で、QMK が最後のマトリックススキャンを処理したと、安全に見なすことができます -- レイヤーの状態が更新され、USB レポートが送信され、LED が更新され、表示が描画されています。 + +`matrix_scan_*` と同様に、これらは MCU が処理できる頻度で呼び出されます。キーボードの応答性を維持するために、これらの関数の呼び出し中にできるだけ何もしないことをお勧めします。実際に何か特別なものを実装する必要がある場合に動作を停止させる可能性があります。 # キーボードアイドリング/ウェイクコード diff --git a/docs/ja/data_driven_config.md b/docs/ja/data_driven_config.md new file mode 100644 index 0000000000..bc8f4d24a5 --- /dev/null +++ b/docs/ja/data_driven_config.md @@ -0,0 +1,123 @@ +# データ駆動型コンフィギュレーション + + + +このページでは、QMK のデータ駆動型 JSON コンフィギュレーションシステムがどのように動作するかを説明します。これは、QMK 自体に取り組みたい開発者を対象としています。 + +## ヒストリー + +これまで、QMK は、`rules.mk` と `config.h` の2つのメカニズムを組み合わせてコンフィギュレーションされてきました。 +この方法は、QMK がほんの一握りのキーボードをサポートしていたときは上手く機能していましたが、今では、サポートするキーボードは1500近くまで成長しました。 +`keyboards` の下だけで6000個の設定ファイルがあることが推定されます。 +これらのファイルの自由形式の性質と、重複を避けるために人々が使用してきたユニークなパターンが継続的なメンテナンスを困難にしており、また、多くのキーボードが時代遅れで時には理解が難しいパターンに従っています。 + +また、CLI に慣れていない人に QMK のパワーを提供することにも取り組んでおり、VIA などの他のプロジェクトでは、プログラムをインストールするのと同じくらい簡単に QMK を使用できるように取り組んでいます。 +これらのツールには、ユーザーが QMK を最大限に活用できるように、キーボードのレイアウト方法や使用可能なピンと機能に関する情報が必要です。 +その第一歩として `info.json` を導入しました。 +QMK API は、これら3つの情報源(`config.h`、` rules.mk`、および `info.json`)を、エンドユーザーツールが使用できる信頼できる単一の情報源に結合するための取り組みです。 + +これで、`info.json`から `rules.mk` と `config.h` の値を生成することがサポートされ、信頼できる単一の情報源を持つことができます。 +これにより、自動化されたツールを使用してキーボードを保守できるため、時間と保守作業を大幅に節約できます。 + +## 概要 + +C 側では何も変わりません。 +新しいルールを作成したり、定義したりする必要がある場合は、同じプロセスに従います。 + +1. `docs/config_options.md` に追加します。 +1. 適切なコアファイルにデフォルトを設定します。 +1. 必要に応じて ifdef 文を追加します。 + +次に、新しい構成のサポートを `info.json` に追加する必要があります。 +基本的なプロセスは次のとおりです。 + +1. `data/schemas/keyboards.jsonschema` のスキーマに追加します +1. `data/maps` にマッピングを追加します +1. (オプションおよび非推奨)構成を抽出/生成するコードを追加します。 + * `lib/python/qmk/info.py` + * `lib/python/qmk/cli/generate/config_h.py` + * `lib/python/qmk/cli/generate/rules_mk.py` + +## info.json にオプションを追加する + +このセクションでは、info.json に `config.h`/`rules.mk` の値のサポートを追加することについて説明します。 + +### スキーマに追加する + +QMK では、[jsonschema](https:json-schema.org) のファイルを `data/schemas` に保持しています。 +キーボード固有の `info.json` ファイルに入る値は `keyboard.jsonschema` に保持されています。 +エンドユーザーが編集できるようにしたい値はすべてここに入れなければなりません。 + +場合によっては、新しいトップレベルキーを追加するだけで済みます。 +従うべきいくつかの例は、 `keyboard_name`、`maintainer`、 `processor`、および `url` です。 +これは、オプションが自己完結型で、他のオプションと直接関係がない場合に適しています。 + +その他の場合、1つの `object` の中に、似ているオプションを集める必要があります。 +これは、機能のサポートを追加する場合に特に当てはまります。 +このために従うべきいくつかの例は、`indicators`、`matrix_pins`、および `rgblight` です。 +新しいオプションを統合する方法がわからない場合は、[問題を開く](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=)か、[Discord で #cli に参加](https://discord.gg/heQPAgy)して、そこで会話を始めてください。 + +### マッピングを追加する + +ほとんどの場合、単純なマッピングを追加することができます。 +これらは `data/mappings/info_config.json` と `data/mappings/info_rules.json` に JSON ファイルとして保持され、それぞれ `config.h` と `rules.mk` のマッピングを制御します。 +各マッピングは `config.h` または `rules.mk` 変数名をキーとし、値は以下のキーを持つハッシュです。 + +* `info_key`: (必須)この値の `info.json` 内の場所。 下記参照。 +* `value_type`: (オプション)デフォルトは `str`。 この変数の値の形式。 下記参照。 +* `to_json`: (オプション)デフォルトは `true`。 このマッピングを info.json から除外するには、`false` に設定します +* `to_c`: (オプション)デフォルトは `true`。 このマッピングを config.h から除外するには、`false` に設定します +* `warn_duplicate`: (オプション)デフォルトは `true`。 値が両方の場所に存在する場合に警告をオフにするには、`false` に設定します + +#### Info Key + +info.json 内の変数をアドレス指定するために JSON ドット表記を使用します。 +たとえば、`info_json["rgblight"]["split_count"]` にアクセスするには、`rgblight.split_count` を指定します。 +これにより、深くネストされたキーを単純な文字列でアドレス指定できます。 + +内部では [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/) を使用しています。これらの文字列がオブジェクトアクセスに変換される方法についてはそのドキュメントを参照してください。 + +#### Value Types + +デフォルトでは、すべての値を単純な文字列として扱います。 +値がより複雑な場合は、次のいずれかのタイプを使用してデータをインテリジェントに解析できます。 + +* `array`: 文字列のコンマ区切りの配列 +* `array.int`: 整数のコンマ区切り配列 +* `int`: 整数 +* `hex`: 16進数としてフォーマットされた数値 +* `list`: 文字列のスペース区切りの配列 +* `mapping`: キーと値のペアのハッシュ + +### 抽出するコードを追加する + +ほとんどのユースケースは、上記のマッピングファイルによって解決できます。 +できない場合は、代わりに設定値を抽出するコードを書くことができます。 + +QMK が完全な `info.json` を生成するときはいつでも、`config.h` と `rules.mk` から情報を抽出します。 +あなたの新しい設定値のためのコードを `lib/python/qmk/info.py` に追加する必要があります。 +通常、これは、新しい `_extract_()` 関数を追加してから、 `_extract_config_h()` または `_extract_rules_mk()` のいずれかで関数を呼び出すことを意味します。 + +このファイルの編集方法がわからない場合、または Python に慣れていない場合は、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=)か [Discord で #cli に参加](https://discord.gg/heQPAgy)すると、この部分を誰かが手伝ってくれるでしょう。 + +### 生成するコードを追加する + +パズルの最後のピースは、ビルドシステムに新しいオプションを提供することです。 +これは、2つのファイルを生成することによって行われます。 + +* `.build/obj_/src/info_config.h` +* `.build/obj_/src/rules.mk` + +この2つのファイルは、次のコードによって生成されます。 + +* `lib/python/qmk/cli/generate/config_h.py` +* `lib/python/qmk/cli/generate/rules_mk.py` + +`config.h`値の場合、ルール用の関数を記述し、その関数を `generate_config_h()` で呼び出す必要があります。 + +`rules.mk` の新しいトップレベルの `info.json` キーがある場合は、`lib/python/qmk/cli/generate/rules_mk.py` の上部にある `info_to_rules` にキーを追加するだけです。 +それ以外の場合は、`generate_rules_mk()` で機能の新しい if ブロックを作成する必要があります。 diff --git a/docs/ja/faq_build.md b/docs/ja/faq_build.md index 9aa11389e9..a1c55407ee 100644 --- a/docs/ja/faq_build.md +++ b/docs/ja/faq_build.md @@ -1,8 +1,8 @@ # よくあるビルドの質問 このページは QMK のビルドに関する質問を説明します。まだビルドをしていない場合は、[ビルド環境のセットアップ](ja/getting_started_build_tools.md) および [Make 手順](ja/getting_started_make_guide.md)ガイドを読むべきです。 @@ -22,73 +22,9 @@ `make` を `sudo` で実行することは一般的には良い考えでは***なく***、可能であれば前者の方法のいずれかを使うべきです。 -### Linux の `udev` ルール +### Linux の `udev` ルール :id=linux-udev-rules -Linux では、ブートローダデバイスと通信するには適切な権限が必要です。ファームウェアを書き込む時に `sudo` を使うか、`/etc/udev/rules.d/` にこのファイルを配置することで、通信することができます。 - -**/etc/udev/rules.d/50-qmk.rules:** -``` -# Atmel DFU -### ATmega16U2 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FEF", TAG+="uaccess", RUN{builtin}+="uaccess" -### ATmega32U2 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF0", TAG+="uaccess", RUN{builtin}+="uaccess" -### ATmega16U4 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF3", TAG+="uaccess", RUN{builtin}+="uaccess" -### ATmega32U4 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF4", TAG+="uaccess", RUN{builtin}+="uaccess" -### AT90USB64 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FF9", TAG+="uaccess", RUN{builtin}+="uaccess" -### AT90USB128 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="2FFB", TAG+="uaccess", RUN{builtin}+="uaccess" - -# Input Club -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1C11", ATTRS{idProduct}=="B007", TAG+="uaccess", RUN{builtin}+="uaccess" - -# STM32duino -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1EAF", ATTRS{idProduct}=="0003", TAG+="uaccess", RUN{builtin}+="uaccess" -# STM32 DFU -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="DF11", TAG+="uaccess", RUN{builtin}+="uaccess" - -# BootloadHID -SUBSYSTEMS=="usb", ATTRS{idVendor}=="16C0", ATTRS{idProduct}=="05DF", TAG+="uaccess", RUN{builtin}+="uaccess" - -# USBAspLoader -SUBSYSTEMS=="usb", ATTRS{idVendor}=="16C0", ATTRS{idProduct}=="05DC", TAG+="uaccess", RUN{builtin}+="uaccess" - -# ModemManager should ignore the following devices -# Atmel SAM-BA (Massdrop) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03EB", ATTRS{idProduct}=="6124", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" - -# Caterina (Pro Micro) -## Spark Fun Electronics -### Pro Micro 3V3/8MHz -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9203", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### Pro Micro 5V/16MHz -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9205", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### LilyPad 3V3/8MHz (and some Pro Micro clones) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1B4F", ATTRS{idProduct}=="9207", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -## Pololu Electronics -### A-Star 32U4 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1FFB", ATTRS{idProduct}=="0101", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -## Arduino SA -### Leonardo -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### Micro -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -## Adafruit Industries LLC -### Feather 32U4 -SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000C", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### ItsyBitsy 32U4 3V3/8MHz -SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000D", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### ItsyBitsy 32U4 5V/16MHz -SUBSYSTEMS=="usb", ATTRS{idVendor}=="239A", ATTRS{idProduct}=="000E", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -## dog hunter AG -### Leonardo -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2A03", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -### Micro -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2A03", ATTRS{idProduct}=="0037", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" -``` +Linux では、ブートローダデバイスと通信するには適切な権限が必要です。ファームウェアを書き込む時に `sudo` を使うか(非推奨)、`/etc/udev/rules.d/` に[このファイル](https://github.com/qmk/qmk_firmware/tree/master/util/udev/50-qmk.rules)を配置することで、通信することができます。 追加が完了したら、以下を実行します: @@ -129,9 +65,9 @@ https://github.com/tmk/tmk_keyboard/issues/150 - https://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1 ### キーボードに書き込んだが何も起こらない、あるいはキーの押下が登録されない - ARM (rev6 planck、clueboard 60、hs60v2 など) でも同じ (Feb 2019) -ARM ベースのチップ上での EEPROM の動作によって、保存された設定が無効になる場合があります。これはデフォルトレイヤに影響し、まだ調査中の特定の環境下でキーボードが使えなくなる*しれません*。EEPROM のリセットでこれが修正されます。 +ARM ベースのチップ上での EEPROM の動作によって、保存された設定が無効になる場合があります。これはデフォルトレイヤに影響し、まだ調査中の特定の環境下でキーボードが使えなくなるかも*しれません*。EEPROM のリセットでこれが修正されます。 -[Planck rev6 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) を使って eeprom のリセットを強制することができます。このイメージを書き込んだ後で、通常のファームウェアを書き込むと、キーボードが_通常_ の動作順序に復元されます。 +[Planck rev6 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) を使って eeprom のリセットを強制することができます。このイメージを書き込んだ後で、通常のファームウェアを書き込むと、キーボードが _通常_ の動作順序に復元されます。 [Preonic rev3 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin) いずれかの形式でブートマジックが有効になっている場合は、これも実行できるはずです (実行方法の詳細については、[ブートマジックドキュメント](ja/feature_bootmagic.md)とキーボード情報を見てください)。 diff --git a/docs/ja/faq_debug.md b/docs/ja/faq_debug.md index 95293fed23..236f43a6ef 100644 --- a/docs/ja/faq_debug.md +++ b/docs/ja/faq_debug.md @@ -1,13 +1,100 @@ # デバッグの FAQ このページは、キーボードのトラブルシューティングについての様々な一般的な質問を説明します。 -# デバッグコンソール +## デバッグ :id=debugging + +`rules.mk` へ `CONSOLE_ENABLE = yes` の設定をするとキーボードはデバッグ情報を出力します。デフォルトの出力は非常に限られたものですが、デバッグモードをオンにすることでデバッグ情報の量を増やすことが出来ます。キーマップの `DEBUG` キーコードを使用するか、デバッグモードを有効にする[コマンド](ja/feature_command.md)機能を使用するか、以下のコードをキーマップに追加します。 + +```c +void keyboard_post_init_user(void) { + // 希望する動作に合わせて値をカスタマイズします + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} +``` + +## デバッグツール + +キーボードのデバッグに使えるツールは2つあります。 + +### QMK Toolbox を使ったデバッグ + +互換性のある環境では、[QMK Toolbox](https://github.com/qmk/qmk_toolbox) を使うことでキーボードからのデバッグメッセージを表示できます。 + +### hid_listen を使ったデバッグ + +ターミナルベースの方法がお好みですか?PJRC が提供する [hid_listen](https://www.pjrc.com/teensy/hid_listen.html) もデバッグメッセージの表示に使用できます。ビルド済みの実行ファイルは Windows、Linux、MacOS 用が用意されています。 + +## 独自のデバッグメッセージを送信する + +[カスタムコード](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に `print.h` のインクルードを追加します: + +```c +#include "print.h" +``` + +その後は、いくつかの異なった print 関数を使用することが出来ます: + +* `print("string")`: シンプルな文字列を出力します +* `uprintf("%s string", var)`: フォーマットされた文字列を出力します +* `dprint("string")` デバッグモードが有効な場合のみ、シンプルな文字列を出力します +* `dprintf("%s string", var)`: デバッグモードが有効な場合のみ、フォーマットされた文字列を出力します + +## デバッグの例 + +以下は現実世界での実際のデバッグ手法の例を集めたものです。 + +### マトリックス上のどの場所でキー押下が起こったか? + +移植する場合や、PCB の問題を診断する場合、キー入力が正しくスキャンされているかどうかを確認することが役立つ場合があります。この手法でのロギングを有効化するには、`keymap.c` へ以下のコードを追加します。 + +```c +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // コンソールが有効化されている場合、マトリックス上の位置とキー押下状態を出力します +#ifdef CONSOLE_ENABLE + 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 + return true; +} +``` + +出力例 +```text +Waiting for device:....... +Listening: +KL: kc: 169, col: 0, row: 0, pressed: 1 +KL: kc: 169, col: 0, row: 0, pressed: 0 +KL: kc: 174, col: 1, row: 0, pressed: 1 +KL: kc: 174, col: 1, row: 0, pressed: 0 +KL: kc: 172, col: 2, row: 0, pressed: 1 +KL: kc: 172, col: 2, row: 0, pressed: 0 +``` + +### キースキャンにかかる時間の測定 + +パフォーマンスの問題をテストする場合、スイッチマトリックスをスキャンする頻度を知ることが役立ちます。この手法でのロギングを有効化するには `config.h` へ以下のコードを追加します。 + +```c +#define DEBUG_MATRIX_SCAN_RATE +``` + +出力例 +```text + > matrix scan frequency: 315 + > matrix scan frequency: 313 + > matrix scan frequency: 316 + > matrix scan frequency: 316 + > matrix scan frequency: 316 + > matrix scan frequency: 316 +``` ## `hid_listen` がデバイスを認識できない デバイスのデバッグコンソールの準備ができていない場合、以下のように表示されます: @@ -25,116 +112,20 @@ Listening: この 'Listening:' のメッセージが表示されない場合は、[Makefile] を `CONSOLE_ENABLE=yes` に設定してビルドしてみてください -Linux のような OS でデバイスにアクセスするには、権限が必要かもしれません。 -- `sudo hid_listen` を試してください +Linux のような OS でデバイスにアクセスするには、特権が必要かもしれません。`sudo hid_listen` を試してください。 + +多くの Linux ディストリビューションでは、次の内容で `/etc/udev/rules.d/70-hid-listen.rules` というファイルを作成することで、root として hid_listen を実行する必要がなくなります: + +``` +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess" +``` + +abcd と def1 をキーボードのベンダーとプロダクト IDに置き換えてください。文字は小文字でなければなりません。`RUN{builtin}+="uaccess"` の部分は、古いディストリビューションでのみ必要です。 ## コンソールにメッセージが表示されない 以下を調べてください: - *hid_listen* がデバイスを検出する。上記を見てください。 - **Magic**+d を使ってデバッグを有効にする。[マジックコマンド](https://github.com/tmk/tmk_keyboard#magic-commands)を見てください。 -- `debug_enable=true` を設定します。[テストとデバッグ](ja/newbs_testing_debugging.md#debugging)を見てください -- デバッグ print の代わりに 'print' 関数を使ってみてください。**common/print.h** を見てください。 +- `debug_enable=true` を設定します。[デバッグ](#debugging)を見てください。 +- デバッグプリントの代わりに `print` 関数を使ってみてください。**common/print.h** を見てください。 - コンソール機能を持つ他のデバイスを切断します。[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) を見てください。 - -*** - -# 雑多なこと -## 安全性の考慮 - -あなたはおそらくキーボードを「文鎮化」したくないでしょう。文鎮化するとファームウェアを書き換えられないようになります。リスクがあまりに高い(そしてそうでないかもしれない)ものの一部のリストを示します。 - -- キーボードマップに RESET が含まれない場合、DFU モードに入るには、PCB のリセットボタンを押す必要があります。底部のネジを外す必要があります。 -- tmk_core / common にあるファイルを触るとキーボードが操作不能になるかもしれません。 -- .hex ファイルが大きすぎると問題を引き起こします; `make dfu` コマンドはブロックを削除し、 -サイズを検査し(おっと、間違った順序です!)、エラーを出力し、 -キーボードへの書き込みに失敗し、DFU モードのままになります。 - - この目的のためには、Planck の最大の .hex ファイルサイズは 7000h (10進数で28672)であることに注意してください。 - -``` -Linking: .build/planck_rev4_cbbrowne.elf [OK] -Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK] - -Size after: - text data bss dec hex filename - 0 22396 0 22396 577c planck_rev4_cbbrowne.hex -``` - -- 上のファイルのサイズは 22396/577ch で、28672/7000h より小さいです -- 適切な替わりの .hex ファイルがある限り、それをロードして再試行することができます -- あなたがキーボードの Makefile で指定したかもしれない一部のオプションは、余分なメモリを消費します; BOOTMAGIC_ENABLE、MOUSEKEY_ENABLE、EXTRAKEY_ENABLE、CONSOLE_ENABLE、API_SYSEX_ENABLE に注意してください -- DFU ツールは(オプションの余計なフルーツサラダを投げ込まない限り)ブートローダに書き込むことを許可しないので、 -ここにはリスクはほとんどありません。 -- EEPROM の書き込みサイクルは、約100000です。ファームウェアを繰り返し継続的に書き換えるべきではありません。それは最終的に EEPROM を焼き焦がします。 - -## NKRO が動作しません -最初に、**Makefile** 内でビルドオプション `NKRO_ENABLE` を使ってファームウェアをコンパイルする必要があります。 - -**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 - - -## TrackPoint はリセット回路が必要です (PS/2 マウスサポート) -リセット回路が無いとハードウェアの不適切な初期化のために一貫性の無い結果になります。TPM754 の回路図を見てください。 - -- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447 -- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf - - -## 16 を超えるマトリックの列を読み込めない -列が 16 を超える場合、[matrix.h] の `read_cols()` 内の `1<<16` の代わりに `1UL<<16` を使ってください。 - -C では、AVR の場合 `1` は [16 bit] である [int] 型の1を意味し、15 を超えて左にシフトすることはできません。`1<<16` すると予期しないゼロが発生します。`1UL` として [unsigned long] 型を使う必要があります。 - -https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279 - -## 特別なエクストラキーが動作しない (システム、オーディオコントロールキー) -QMK でそれらを使うには、`rules.mk` 内で `EXTRAKEY_ENABLE` を定義する必要があります。 - -``` -EXTRAKEY_ENABLE = yes # オーディオ制御とシステム制御 -``` - -## スリープから復帰しない - -Windows では、**デバイスマネージャ**の**電源の管理**タブ内の `このデバイスで、コンピュータのスタンバイ状態を解除できるようにする` 設定を調べてください。また BIOS 設定も調べてください。 - -スリープ中に任意のキーを押すとホストが起動するはずです。 - -## Arduino を使っていますか? - -**Arduino のピンの命名は実際のチップと異なることに注意してください。** 例えば、Arduino のピン `D0` は `PD0` ではありません。回路図を自身で確認してください。 - -- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf -- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf - -Arduino の Leonardo と micro には **ATMega32U4** が載っていて、TMK 用に使うことができますが、Arduino のブートローダが問題になることがあります。 - -## JTAG を有効にする - -デフォルトでは、キーボードが起動するとすぐに JTAG デバッグインタフェースが無効になります。JTAG 対応 MCU は `JTAGEN` ヒューズが設定された状態で出荷されており、キーボードがスイッチマトリックス、LED などに使用している可能性のある MCU の特定のピンを乗っ取ります。 - -JTAG を有効にしたままにしたい場合は、単に以下のものを `config.h` に追加します: - -```c -#define NO_JTAG_DISABLE -``` - -## USB 3 の互換性 -USB 3 ポートで問題がある人がいると聞きました。USB 2 ポートを試してください。 - - -## Mac の互換性 -### OS X 10.11 と Hub -https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034 - - -## リジューム (スリープとウェークアップ)/電源サイクルの問題 -一部の人がキーボードが BIOS で動作しなくなった、またはリジューム(電源サイクル)の後で動作しなくなったと報告しました。 - -今のところ、この問題の根本は明確ではないですが、幾つかのビルドオプションが関係しているようです。Makefileで、`CONSOLE_ENABLE`、`NKRO_ENABLE`、`SLEEP_LED_ENABLE` あるいは他のオプションを無効にしてみてください。 - -https://github.com/tmk/tmk_keyboard/issues/266 -https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778 diff --git a/docs/ja/faq_misc.md b/docs/ja/faq_misc.md new file mode 100644 index 0000000000..e9a35ef329 --- /dev/null +++ b/docs/ja/faq_misc.md @@ -0,0 +1,107 @@ +# その他の FAQ + + + +## どうやってキーボードをテストすればいいですか? :id=testing + +通常、キーボードのテストは非常に簡単です。全てのキーをひとつずつ押して、期待するキーが送信されることを確認します。例え QMK で動作していない場合でも、[QMK Configurator](https://config.qmk.fm/#/test/) のテストモードを使用すると、キーボードをチェックできます。 + +## 安全性の考慮 + +あなたはおそらくキーボードを「文鎮化」したくないでしょう。文鎮化するとファームウェアを書き換えられないようになります。リスクがあまりに高い(そしてそうでないかもしれない)ものの一部のリストを示します。 + +- キーボードマップに RESET が含まれない場合、DFU モードに入るには、PCB のリセットボタンを押す必要があります。底部のネジを外す必要があります。 +- tmk_core / common にあるファイルを触るとキーボードが操作不能になるかもしれません。 +- .hex ファイルが大きすぎると問題を引き起こします; `make dfu` コマンドはブロックを削除し、サイズを検査し(おっと、間違った順序です!)、エラーを出力し、 +キーボードへの書き込みに失敗し、DFU モードのままになります。 + - この目的のためには、Planck の最大の .hex ファイルサイズは 7000h (10進数で28672)であることに注意してください。 + +``` +Linking: .build/planck_rev4_cbbrowne.elf [OK] +Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK] + +Size after: + text data bss dec hex filename + 0 22396 0 22396 577c planck_rev4_cbbrowne.hex +``` + + - 上のファイルのサイズは 22396/577ch で、28672/7000h より小さいです。 + - 適切な代わりの .hex ファイルがある限り、それをロードして再試行することができます。 + - あなたがキーボードの Makefile で指定したかもしれない一部のオプションは、余分なメモリを消費します; BOOTMAGIC_ENABLE、MOUSEKEY_ENABLE、EXTRAKEY_ENABLE、CONSOLE_ENABLE、API_SYSEX_ENABLE に注意してください。 +- DFU ツールは(オプションの余計なフルーツサラダを投げ込まない限り)ブートローダに書き込むことを許可しないので、ここにはリスクはほとんどありません。 +- EEPROM の書き込みサイクルは、約100000(10万)です。ファームウェアを繰り返し継続的に書き換えるべきではありません。それは最終的に EEPROM を焼き焦がします。 + +## NKRO が動作しません +最初に、**Makefile** 内でビルドオプション `NKRO_ENABLE` を使ってファームウェアをコンパイルする必要があります。 + +**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 の回路図を見てください: + +- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447 +- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf + + +## 16 を超えるマトリックの列を読み込めない +列が 16 を超える場合、[matrix.h] の `read_cols()` 内の `1<<16` の代わりに `1UL<<16` を使ってください。 + +C では、AVR の場合 `1` は [16 bit] である [int] 型の1を意味し、15を超えて左にシフトすることはできません。従って、`1<<16` を計算すると予期せずゼロになります。これを回避するには `1UL` として [unsigned long] 型を使う必要があります。 + +https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279 + +## 特別なエクストラキーが動作しない(システム、オーディオコントロールキー) +QMK でそれらを使うには、`rules.mk` 内で `EXTRAKEY_ENABLE` を定義する必要があります。 + +``` +EXTRAKEY_ENABLE = yes # オーディオ制御とシステム制御 +``` + +## スリープから復帰しない + +**デバイスマネージャ**の**電源の管理**タブ内の `このデバイスで、コンピュータのスタンバイ状態を解除できるようにする` 設定を調べてください。また BIOS 設定も調べてください。スリープ中に任意のキーを押すとホストが起動するはずです。 + +## Arduino を使っていますか? + +**Arduino のピンの命名は実際のチップと異なることに注意してください。** 例えば、Arduino のピン `D0` は `PD0` ではありません。回路図を自身で確認してください。 + +- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf +- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf + +Arduino の Leonardo と micro には **ATMega32U4** が載っていて、TMK 用に使うことができますが、Arduino のブートローダが問題になることがあります。 + +## JTAG を有効にする + +デフォルトでは、キーボードが起動するとすぐに JTAG デバッグインタフェースが無効になります。JTAG 対応 MCU は `JTAGEN` ヒューズが設定された状態で出荷されており、キーボードがスイッチマトリックス、LED などに使用している可能性のある MCU の特定のピンを乗っ取ります。 + +JTAG を有効にしたままにしたい場合は、単に以下のものを `config.h` に追加します: + +```c +#define NO_JTAG_DISABLE +``` + +## USB 3 の互換性 +一部の問題は、USB 3.x ポートから USB 2.0 ポートに切り替えることで修正できます。 + + +## Mac の互換性 +### OS X 10.11 と Hub +こちらを見てください: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034 + + +## BIOS (UEFI) 設定/リジューム (スリープとウェークアップ)/電源サイクルの問題 +一部の人がキーボードが BIOS で動作しなくなった、またはリジューム(電源サイクル)の後で動作しなくなったと報告しました。 + +今のところ、この問題の根本は明確ではないですが、幾つかのビルドオプションが関係しているようです。Makefile で、`CONSOLE_ENABLE`、`NKRO_ENABLE`、`SLEEP_LED_ENABLE` あるいは他のオプションを無効にしてみてください。 + +より詳しい情報: +- https://github.com/tmk/tmk_keyboard/issues/266 +- https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778 diff --git a/docs/ja/feature_advanced_keycodes.md b/docs/ja/feature_advanced_keycodes.md index 502a67f80c..5dfa341e37 100644 --- a/docs/ja/feature_advanced_keycodes.md +++ b/docs/ja/feature_advanced_keycodes.md @@ -1,27 +1,30 @@ # 修飾キー :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` を押します。 | -| `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` を押します。 | +| `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(LALT(KC_DEL))` または `C(A(KC_DEL))` は1回のキー押下で Control+Alt+Delete を送信するキーを作成します。 diff --git a/docs/ja/feature_haptic_feedback.md b/docs/ja/feature_haptic_feedback.md index b9b4267014..1580797253 100644 --- a/docs/ja/feature_haptic_feedback.md +++ b/docs/ja/feature_haptic_feedback.md @@ -1,8 +1,8 @@ # 触覚フィードバック ## 触覚フィードバック の rules.mk オプション @@ -31,7 +31,7 @@ | `HPT_TOG` | 触覚フィードバックのオン/オフを切り替え | | `HPT_RST` | 触覚フィードバック設定をデフォルトに戻す | | `HPT_FBK` | キー押下またはリリースまたはその両方でフィードバックを切り替え | -| `HPT_BUZ` | ソレノイドの振動のオン/オフを切り替え | +| `HPT_BUZ` | ソレノイドのブザー音のオン/オフを切り替え | | `HPT_MODI` | 次の DRV2605L 波形に移動 | | `HPT_MODD` | 前の DRV2605L 波形に移動 | | `HPT_CONT` | 連続触覚モードのオン/オフを切り替え | @@ -44,7 +44,7 @@ ほとんどの MCU はソレノイドのコイルを駆動するために必要な電流を供給できないため、最初に MOSFET を介してソレノイドを駆動する回路を構築する必要があります。 -[Adafruit が提供する配線図](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) +[Adafruit が提供する配線図](https://cdn-shop.adafruit.com/product-files/412/412_solenoid_driver.pdf) | 設定 | デフォルト | 説明 | @@ -53,8 +53,15 @@ | `SOLENOID_DEFAULT_DWELL` | `12` ms | ソレノイドのデフォルトの滞留時間を設定する。 | | `SOLENOID_MIN_DWELL` | `4` ms | 滞留時間の下限を設定する。 | | `SOLENOID_MAX_DWELL` | `100` ms | 滞留時間の上限を設定する。 | +| `SOLENOID_DWELL_STEP_SIZE` | `1` ms | `HPT_DWL*` キーコードが送信される時に使われるステップサイズ | +| `SOLENOID_DEFAULT_BUZZ` | `0` (無効) | HPT_RST では、この値が "1" の場合、ブザー音が "on" に設定されます | +| `SOLENOID_BUZZ_ACTUATED` | `SOLENOID_MIN_DWELL` | ソレノイドがブザー音モードの場合の動作時間 | +| `SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` | ソレノイドがブザー音モードの場合の非動作時間 | -?> 滞留時間とは、「プランジャー」が作動したままになる時間です。滞留時間により、ソレノイドの音が変わります。 +* ソレノイドのブザー音がオフの場合、滞留時間は「プランジャー」が作動したままになる時間です。滞留時間により、ソレノイドの音が変わります。 +* ソレノイドのブザー音がオンの場合、滞留時間は振動の長さを設定しますが、`SOLENOID_BUZZ_ACTUATED` と `SOLENOID_BUZZ_NONACTUATED` はブザー音の間の(非)動作時間を設定します。 +* 現在の実装では、上記の時間設定のいずれについても、設定の精度はキーボードがマトリックスをスキャンできる速度によって影響を受ける可能性があります。 + したがって、キーボードのスキャンルーチンが遅い場合は、`SOLENOID_DWELL_STEP_SIZE` をキーボードのスキャンに掛かる時間よりもわずかに小さい値に設定することをお勧めします。 ブートローダ実行中に一部のピンが給電されているかもしれず (例えば、STM32F303 チップ上の A13)、そうすると書き込みプロセスの間ずっとソレノイドがオン状態になることに注意してください。これはソレノイドを加熱し損傷を与えるかもしれません。ソレノイドが接続されているピンがブートローダ/DFU 実行中にソレノイドをオンにしていることが分かった場合は、他のピンを選択してください。 diff --git a/docs/ja/feature_layers.md b/docs/ja/feature_layers.md index d27251f7e3..011f0e0ef1 100644 --- a/docs/ja/feature_layers.md +++ b/docs/ja/feature_layers.md @@ -1,8 +1,8 @@ # レイヤー :id=layers QMK ファームウェアの最も強力で良く使われている機能の一つは、レイヤーを使う機能です。ほとんどの人にとって、これはラップトップやタブレットキーボードにあるのと同じように、様々なキーを可能にするファンクションキーに相当します。 @@ -24,12 +24,10 @@ QMK ファームウェアの最も強力で良く使われている機能の一 ### 注意事項 :id=caveats -現在のところ、`LT()` と `MT()` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。特に、`LT` と `MT` のような二重の機能キーは16ビットキーコードを使います。4ビットは機能の識別のために使われ、次の12ビットはパラメータに分かれます。レイヤータップはレイヤーに4ビットを使います(実はレイヤータップがレイヤー 0-15 に制限されている理由です)。モッドタップも同じですが、識別子に4ビット、モッドのために4ビットが使われ、全体でキーコードに8ビットを使います。このため、使用されるキーコードは `0xFF` (0-255) に制限され、基本的なキーコードのみです。 +現在のところ、`LT()` の `layer` 引数はレイヤー 0-15 に制限され、`kc` 引数は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。これは、QMK が16ビットのキーコードを使うためです。4ビットは機能の識別のために使われ、4ビットはレイヤーのために使われ、キーコードには8ビットしか残されていません。 これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)を使うことができます。 -さらに、モッドタップあるいはレイヤータップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。 - ## レイヤーとの連携 :id=working-with-layers レイヤーを切り替える時は注意してください。(キーボードを取り外さずに)そのレイヤーを非アクティブにすることができずレイヤーから移動できなくなる可能性があります。最も一般的な問題を避けるためのガイドラインを作成しました。 diff --git a/docs/ja/feature_led_matrix.md b/docs/ja/feature_led_matrix.md index b73487ca63..62e22859fb 100644 --- a/docs/ja/feature_led_matrix.md +++ b/docs/ja/feature_led_matrix.md @@ -76,7 +76,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED カスタムレイヤー効果は `.c` 内で以下を定義することで行うことができます: void led_matrix_indicators_kb(void) { - led_matrix_set_index_value(index, value); + led_matrix_set_value(index, value); } 同様の関数がキーマップ内で `led_matrix_indicators_user` として動作します。 diff --git a/docs/ja/feature_macros.md b/docs/ja/feature_macros.md index c42a61b5fb..6371f0c20a 100644 --- a/docs/ja/feature_macros.md +++ b/docs/ja/feature_macros.md @@ -210,7 +210,7 @@ SEND_STRING(".."SS_TAP(X_END)); ``` -## 高度なマクロ関数 +## 高度なマクロ関数 :id=advanced-macro-functions マクロの生成に役立つ関数が幾つかあります。マクロの中にかなり高度なコードを書くことができますが、機能が複雑になりすぎる場合は、代わりにカスタムキーコードを定義することをお勧めします。マクロはシンプルにしなければなりません。 diff --git a/docs/ja/feature_pointing_device.md b/docs/ja/feature_pointing_device.md index f606036d14..69bd86c552 100644 --- a/docs/ja/feature_pointing_device.md +++ b/docs/ja/feature_pointing_device.md @@ -1,8 +1,8 @@ # ポインティングデバイス :id=pointing-device ポインティングデバイスは汎用的な機能の総称です: システムポインタを移動します。マウスキーのような他のオプションも確かにありますが、これは簡単に変更可能で軽量であることを目指しています。機能を制御するためにカスタムキーを実装したり、他の周辺機器から情報を収集してここに直接挿入したりできます - QMK に処理を任せてください。 @@ -24,7 +24,7 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ * `mouseReport.y` - これは、y軸の動き(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。 * `mouseReport.v` - これは、垂直スクロール(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。 * `mouseReport.h` - これは、水平スクロール(+ 右へ、- 左へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。 -* `mouseReport.buttons` - これは uint8_t で、上位の5ビットを使っています。これらのビットはマウスボタンの状態を表します - ビット 3 はマウスボタン 5、ビット 7 はマウスボタン 1 です。 +* `mouseReport.buttons` - これは uint8_t で、8ビット全てを使っています。これらのビットはマウスボタンの状態を表します - ビット 0 はマウスボタン 1、ビット 7 はマウスボタン 8 です。 マウスレポートに必要な変更を行ったら、それを送信する必要があります: @@ -32,6 +32,10 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ マウスレポートが送信されると、x、y、v、h のいずれの値も 0 に設定されます (これは `pointing_device_send()` で行われます。この挙動を回避するためにオーバーライドすることができます)。このように、ボタンの状態は持続しますが、動きは1度だけ起こります。さらにカスタマイズするために、`pointing_device_init` と `pointing_device_task` のどちらもオーバーライドすることができます。 +さらに、デフォルトでは、`pointing_device_send()` はレポートが実際に変更された場合のみレポートを送信します。これにより、マウスレポートが継続的に送信されてホストシステムが起動されたままになることを防ぎます。この動作は、独自の `pointing_device_send()` 関数を作成することで変更できます。 + +また、`has_mouse_report_changed(new, old)` 関数を使って、レポートが変更されたかどうかを確認できます。(訳注:独自の `pointing_device_send()` 関数を作成する場合でも、その中で `has_mouse_report_changed(new, old)` 関数でチェックして、デフォルトの `pointing_device_send()` と類似の無駄なレポートの抑制をして、ホストシステムがスリープ状態に入れる余地を残すようにしておくのが良いでしょう。) + 以下の例では、カスタムキーを使ってマウスをクリックし垂直および水平方向に127単位スクロールし、リリースされた時にそれを全て元に戻します - なぜならこれは完全に便利な機能だからです。いいですか、以下はひとつの例です: ```c diff --git a/docs/ja/feature_rawhid.md b/docs/ja/feature_rawhid.md index c99c3fd8d8..1e922625f8 100644 --- a/docs/ja/feature_rawhid.md +++ b/docs/ja/feature_rawhid.md @@ -1,8 +1,8 @@ # Raw HID Raw HID は、HID インタフェースを介して QMK とホストコンピュータ間の双方向通信を可能にします。これには、キーマップをその場で切り替えたり、RGB LED の色とモードを変更したりなど、多くの潜在的な使用方法があります。 @@ -34,7 +34,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { } ``` -`raw_hid_receive` はホストから最大長 `RAW_EPSIZE` の可変サイズのパケットを受信することができます。一方、`raw_hid_send` はパケットを厳密に `RAW_EPSIZE` の長さで送信するため、長さ `RAW_EPSIZE` のデータを使う必要があります。 +これら2つの関数は、ホストとの間で長さ `RAW_EPSIZE` バイトのパケットを送受信します (LUFA/ChibiOS/V-USB では 32、ATSAM では 64)。 ホスト側での作業を進める前に、raw 対応のファームウェアを書き込むようにしてください。 diff --git a/docs/ja/feature_swap_hands.md b/docs/ja/feature_swap_hands.md index 3150801c55..5164584e8a 100644 --- a/docs/ja/feature_swap_hands.md +++ b/docs/ja/feature_swap_hands.md @@ -12,7 +12,7 @@ 設定テーブルは列/行から新しい列/行にマップするための単純な2次元配列です。Planck の `hand_swap_config` の例: ```C -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +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}}, {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, diff --git a/docs/ja/getting_started_docker.md b/docs/ja/getting_started_docker.md index 6498d727b4..ceaebb0179 100644 --- a/docs/ja/getting_started_docker.md +++ b/docs/ja/getting_started_docker.md @@ -1,16 +1,17 @@ # Docker クイックスタート このプロジェクトは、プライマリオペレーティングシステムに大きな変更を加えることなくキーボードの新しいファームウェアを非常に簡単に構築することができる Docker ワークフローを含みます。これは、あなたがプロジェクトをクローンしビルドを実行した時に、他の人とまったく同じ環境と QMK ビルド基盤を持つことも保証します。これにより、人々はあなたが遭遇した問題の解決をより簡単に行えるようになります。 ## 必要事項 -主な前提条件は動作する `docker` がインストールされていることです。 +主な前提条件は動作する `docker` または `podman` がインストールされていることです。 * [Docker CE](https://docs.docker.com/install/#supported-platforms) +* [Podman](https://podman.io/getting-started/installation) ## 使い方 @@ -29,7 +30,7 @@ util/docker_build.sh : これは目的のキーボード/キーマップをコンパイルし、結果として書き込み用に `.hex` あるいは `.bin` ファイルを QMK ディレクトリの中に残します。`:keymap` が省略された場合は全てのキーマップが使われます。パラメータの形式は、`make` を使ってビルドする時と同じであることに注意してください。 -`target` を指定して Docker から直接キーボードをビルドし、_かつ_書き込むためのサポートもあります。 +`target` を指定して Docker から直接キーボードをビルドし、_かつ_ 書き込むためのサポートもあります。 ```bash util/docker_build.sh keyboard:keymap:target @@ -43,10 +44,17 @@ util/docker_build.sh # パラメータを入力として読み込みます (空白にすると全てのキーボード/キーマップ) ``` +`RUNTIME` 環境変数にコンテナランタイム名やパスを設定することで、使用したいコンテナランタイムを手動で設定できます。 +デフォルトでは docker や podman は自動的に検出され、podman より docker が優先されます。 + +```bash +RUNTIME="podman" util/docker_build.sh keyboard:keymap:target +``` + ## FAQ ### なぜ Windows/macOS 上で書き込めないのですか? Windows と macOS では、実行するために [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) が必要です。これはセットアップが面倒なので、お勧めではありません: 代わりに [QMK Toolbox](https://github.com/qmk/qmk_toolbox) を使ってください。 -!> Docker for Windows は[Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) を有効にする必要があります。これは、Windows 7、Windows 8 および **Windows 10 Home** のような Hyper-V を搭載していない Windows のバージョンでは機能しないことを意味します。 +!> Docker for Windows は [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) を有効にする必要があります。これは、Windows 7、Windows 8 および **Windows 10 Home** のような Hyper-V を搭載していない Windows のバージョンでは機能しないことを意味します。 diff --git a/docs/ja/getting_started_github.md b/docs/ja/getting_started_github.md index 43049dde03..6d9b70c410 100644 --- a/docs/ja/getting_started_github.md +++ b/docs/ja/getting_started_github.md @@ -1,8 +1,8 @@ # QMK で GitHub を使う方法 GitHub は慣れていない人には少し注意が必要です - このガイドは、QMK におけるフォーク、クローン、プルリクエストのサブミットの各ステップについて説明します。 diff --git a/docs/ja/getting_started_make_guide.md b/docs/ja/getting_started_make_guide.md index 45284a0b9f..07d7f0597a 100644 --- a/docs/ja/getting_started_make_guide.md +++ b/docs/ja/getting_started_make_guide.md @@ -1,8 +1,8 @@ # より詳細な `make` 手順 `make` コマンドの完全な構文は `::` です: @@ -19,16 +19,32 @@ `` は以下を意味します * target が指定されない場合は、以下の `all` と同じです * `all` は指定されたキーボード/リビジョン/キーマップの可能な全ての組み合わせのコンパイルを行います。例えば、`make planck/rev4:default` は1つの .hex を生成しますが、`make planck/rev4:all` は planck で利用可能な全てのキーマップについて hex を生成します。 -* `flash`、`dfu`、`teensy`、`avrdude`、`dfu-util` または `bootloadHID` はファームウェアをコンパイルし、キーボードにアップロードします。コンパイルが失敗すると、何もアップロードされません。使用するプログラマはキーボードに依存します。ほとんどのキーボードでは `dfu` ですが、ChibiOS キーボードについては `dfu-util` 、標準的な Teensy については `teensy` を使います。キーボードに使うコマンドを見つけるには、キーボード固有の readme をチェックしてください。 -* **注意**: 一部のオペレーティングシステムではこれらのコマンドが機能するためには root アクセスが必要です。その場合、例えば `sudo make planck/rev4:default:flash` を実行する必要があります。 +* `flash`、`dfu`、`teensy`、`avrdude`、`dfu-util`、`bootloadHID` はファームウェアをコンパイルし、キーボードにアップロードします。コンパイルが失敗すると、何もアップロードされません。使用するプログラマはキーボードに依存します。ほとんどのキーボードでは `dfu` ですが、ChibiOS キーボードについては `dfu-util` 、標準的な Teensy については `teensy` を使います。キーボードに使うコマンドを見つけるには、キーボード固有の readme をチェックしてください。 + 利用可能なブートローダの詳細は[ファームウェアの書き込み](ja/flashing.md)ガイドを参照してください。 + * **Note**: 一部のオペレーティングシステムでは、これらのコマンドが機能するためには特権アクセスが必要です。これは、root アクセスなしでこれらにアクセスするために [`udev ルール`](ja/faq_build.md#linux-udev-rules) を設定するか、あるいは root アクセスでコマンドを実行する (`sudo make planck/rev4:default:flash`) 必要があるかもしれないことを意味します。 * `clean` は、全てをゼロからビルドするためにビルド出力フォルダを掃除します。説明できない問題がある場合は、通常のコンパイルの前にこれを実行してください。 +* `distclean` は、.hex ファイルと .bin ファイルを削除します。 + +次のターゲットは開発者向けです: + +* `show_path` ソースとオブジェクトファイルのパスを表示します。 +* `dump_vars` makefile 変数をダンプします。 +* `objs-size` 個々のオブジェクトファイルのサイズを表示します。 +* `show_build_options` 'rules.mk' のオプションセットを表示します。 +* `check-md5` 生成されたバイナリファイルの md5 チェックサムを表示します。 make コマンドの最後、つまり target の後に追加のオプションを追加することもできます * `make COLOR=false` - カラー出力をオフ * `make SILENT=true` - エラー/警告以外の出力をオフ * `make VERBOSE=true` - 全ての gcc のものを出力 (デバッグする必要が無い限り面白くありません) -* `make EXTRAFLAGS=-E` - コンパイルせずにコードを前処理 (#define コマンドをデバッグしようとする場合に便利) +* `make VERBOSE_LD_CMD=yes` - -v オプションを指定して ld コマンドを実行します。 +* `make VERBOSE_AS_CMD=yes` - -v オプションを指定して as コマンドを実行します。 +* `make VERBOSE_C_CMD=` - 指定された C ソースファイルをコンパイルするときに -v オプションを追加します。 +* `make DUMP_C_MACROS=` - 指定された C ソースファイルをコンパイルするときにプリプロセッサマクロをダンプします。 +* `make DUMP_C_MACROS= > ` - 指定された C ソースファイルをコンパイルするときにプリプロセッサマクロを `` にダンプします。 +* `make VERBOSE_C_INCLUDE=` - 指定された C ソースファイルをコンパイルするときにインクルードされるファイル名をダンプします。 +* `make VERBOSE_C_INCLUDE= 2> ` - 指定された C ソースファイルをコンパイルするときにインクルードされるファイル名を `` にダンプします。 make コマンド自体にもいくつかの追加オプションがあります。詳細は `make --help` を入力してください。最も有用なのはおそらく `-jx` です。これは複数の CPU を使ってコンパイルしたいことを指定し、`x` は使用したい CPU の数を表します。設定すると、特に多くのキーボード/キーマップをコンパイルしている場合は、コンパイル時間を大幅に短縮することができます。通常は、コンパイル中に他の作業を行うための余裕をもたせるために、持っている CPU の数より1つ少ない値に設定します。全てのオペレーティングシステムと make バージョンがオプションをサポートしているわけではないことに注意してください。 @@ -104,7 +120,7 @@ make コマンド自体にもいくつかの追加オプションがあります これにより、送信したい文字に対応するニーモニックを入力することで Unicode 文字を送信することができます。キーマップファイル内にマッピングテーブルを保持する必要があります。可能な全てのコードポイント( `0x10FFFF` まで)がサポートされます。 -詳細と制限については、[Unicode ページ](ja/feature_unicode.md) を見てください。 +詳細と制限については、[Unicode ページ](ja/feature_unicode.md)を見てください。 `AUDIO_ENABLE` @@ -116,11 +132,11 @@ C6 ピン(抽象化が必要)でオーディオ出力できます。詳細は[ `API_SYSEX_ENABLE` -これにより Quantum SYSEX API を使って文字列を送信することができます (どこに?) +これにより Quantum SYSEX API を使って文字列を(どこかに?)送信することができます `KEY_LOCK_ENABLE` -これは [キーロック](ja/feature_key_lock.md) を有効にします。 +これは[キーロック](ja/feature_key_lock.md)を有効にします。 `SPLIT_KEYBOARD` @@ -132,7 +148,7 @@ ARM ベースの分割キーボード用の標準分割通信ドライバはま `CUSTOM_MATRIX` -デフォルトのマトリックス走査ルーチンを独自のコードで置き換えます。詳細については、[カスタムマトリックスページ](ja/custom_matrix.md) を見てください。 +デフォルトのマトリックス走査ルーチンを独自のコードで置き換えます。詳細については、[カスタムマトリックスページ](ja/custom_matrix.md)を見てください。 `DEBOUNCE_TYPE` diff --git a/docs/ja/getting_started_vagrant.md b/docs/ja/getting_started_vagrant.md index 933f7a248b..4506bb1faf 100644 --- a/docs/ja/getting_started_vagrant.md +++ b/docs/ja/getting_started_vagrant.md @@ -1,8 +1,8 @@ # Vagrant クイックスタート このプロジェクトは、プライマリオペレーティングシステムに大きな変更を加えることなくキーボードの新しいファームウェアを非常に簡単に構築することができる `Vagrantfile` を含みます。これは、あなたがプロジェクトをクローンしビルドを実行した時に、ビルドのために Vagrantfile を使っている他のユーザと全く同じ環境を持つことも保証します。これにより、人々はあなたが遭遇した問題の解決をより簡単に行えるようになります。 @@ -12,16 +12,16 @@ このリポジトリ内の `Vagrantfile` を使うには、[Vagrant](https://www.vagrantup.com/) およびサポートされるプロバイダがインストールされている必要があります: * [VirtualBox](https://www.virtualbox.org/) (バージョン 5.0.12 以降) - * 'Vagrant を使うために最もアクセスしやすいプラットフォーム' として販売 + * 「Vagrant を使うために最もアクセスしやすいプラットフォーム」とうたわれています。 * [VMware Workstation](https://www.vmware.com/products/workstation) および [Vagrant VMware プラグイン](https://www.vagrantup.com/vmware) * (有料) VMware プラグインには、ライセンスされた VMware Workstation/Fusion のコピーが必要です。 * [Docker](https://www.docker.com/) -Vagrant 以外に、適切なプロバイダがインストールされ、その後におそらくコンピュータを再起動すると、このプロジェクトをチェックアウトしたフォルダ内の任意の場所で 'vagrant up' を単純に実行することができ、このプロジェクトをビルドするのに必要な全てのツールが含まれる環境(仮想マシンあるいはコンテナ)が開始されます。Vagrant をうまく始めるためのヒントの投稿がありますが、それ以外に、以下のビルドドキュメントを参照することもできます。 +Vagrant 以外に、適切なプロバイダがインストールされ、その後におそらくコンピュータを再起動すると、このプロジェクトをチェックアウトしたフォルダ内の任意の場所で 'vagrant up' を単純に実行することができ、このプロジェクトをビルドするのに必要な全てのツールが含まれる環境(仮想マシンあるいはコンテナ)が開始されます。Vagrant 起動時にうまく始めるためのヒントが表示されますが、それ以外に、以下のビルドドキュメントを参照することもできます。 ## ファームウェアの書き込み -ファームウェアを書き込む"簡単"な方法は、ホスト OS からツールを使うことです: +ファームウェアを書き込む「簡単な」方法は、ホスト OS からツールを使うことです: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (推奨) * [Teensy ローダー](https://www.pjrc.com/teensy/loader.html) diff --git a/docs/ja/hardware_avr.md b/docs/ja/hardware_avr.md index df6b0f8bf1..66be2f71c9 100644 --- a/docs/ja/hardware_avr.md +++ b/docs/ja/hardware_avr.md @@ -2,8 +2,8 @@ このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。 @@ -83,7 +83,7 @@ or open the directory in your favourite text editor. #define PRODUCT my_awesome_keyboard ``` -?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。 +?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりに [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストの値を優先します。デフォルトでは、リストに `VENDOR_ID` / `PRODUCT_ID` を含まない場合にのみ、`MANUFACTURER` と `PRODUCT` を使います。`sudo lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。 ### キーボードマトリックスの設定 diff --git a/docs/ja/hardware_keyboard_guidelines.md b/docs/ja/hardware_keyboard_guidelines.md index faf0217765..8a9127abc9 100644 --- a/docs/ja/hardware_keyboard_guidelines.md +++ b/docs/ja/hardware_keyboard_guidelines.md @@ -2,12 +2,31 @@ QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。 +## QMK Lint を使う + +キーボードの問題をチェックできるツール、`qmk lint` を提供しています。キーボードとキーマップで作業をしている間は、頻繁に使うことをお勧めします。 + +チェックに合格した例: + +``` +$ qmk lint -kb rominronin/katana60/rev2 +Ψ Lint check passed! +``` + +チェックに失敗した例: + +``` +$ qmk lint -kb clueboard/66/rev3 +☒ Missing keyboards/clueboard/66/rev3/readme.md +☒ Lint check failed! +``` + ## あなたのキーボード/プロジェクトの名前を決める キーボードの名前は全て小文字で、アルファベット、数字、アンダースコア(`_`)のみで構成されています。アンダースコア(`_`)で始めてはいけません。スラッシュ(`/`)はサブフォルダの区切り文字として使用されます。 diff --git a/docs/ja/keycodes.md b/docs/ja/keycodes.md new file mode 100644 index 0000000000..c5c075bb2b --- /dev/null +++ b/docs/ja/keycodes.md @@ -0,0 +1,574 @@ +# キーコードの概要 + + + +[キーマップ](ja/keymap.md) を定義するときは、それぞれのキーに有効な定義が必要です。このページは、QMK で使えるキーコードに相当するシンボルについて記述しています。 + +このページは参照のみです。それぞれのキーの種類毎のリンク先のページに、それぞれのキーの機能についてもっと詳細に記載しています。 + +## 基本的なキーコード :id=basic-keycodes + +[基本的なキーコード](ja/keycodes_basic.md) も見てください。 + +?> 訳注: 以下の説明は、OS のキーボード配列の設定が「US」の場合のものです。OS のキーボード配列の設定が「JIS」の場合、一部のキーは下の表と異なる文字が入力されます。例えば、`KC_LBRC` は、OS のキーボード配列の設定が US であれば「`[` または `{`」が入力されますが、JIS の場合「`@` または `」が入力されます。 +?> これは、OS がキーボードから送信されたキーコードを解釈する際に、キーボード配列の設定によって対応する文字を変えるためです。もし、OS のキーボード配列の設定を JIS にする場合、`#include "keymap_jp.h"` を `keymap.c` に追加すると`JP_AT` のような JIS キーボードのキーキャップに対応したキーを指定できます。 + +|キー |エイリアス |説明 |Windows |macOS |Linux1| +|-----------------------|------------------------------|-----------------------------------------|-------------|-------------|-----------------| +|`KC_NO` |`XXXXXXX` |このキーを無視します (何もしません) 。 |*N/A* |*N/A* |*N/A* | +|`KC_TRANSPARENT` |`KC_TRNS`, `_______` | 次に低いレイヤーの非透過キーを使う |*N/A* |*N/A* |*N/A* | +|`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_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_CAPSLOCK` |`KC_CLCK`, `KC_CAPS` |Caps Lock |✔ |✔ |✔ | +|`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_PSCREEN` |`KC_PSCR` |Print Screen |✔ |✔2|✔ | +|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD` |Scroll Lock, 画面の明るさダウン (macOS) |✔ |✔2|✔ | +|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, 画面の明るさアップ (macOS) |✔ |✔2|✔ | +|`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_NUMLOCK` |`KC_NLCK` |テンキー Num Lock と Clear |✔ |✔ |✔ | +|`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_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` と `\|` |✔ |✔ |✔ | +|`KC_APPLICATION` |`KC_APP` |アプリケーションキー (Windows コンテキストメニューキー) |✔ | |✔ | +|`KC_POWER` | |システム電源 | |✔3|✔ | +|`KC_KP_EQUAL` |`KC_PEQL` |テンキー `=` |✔ |✔ |✔ | +|`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_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_LOCKING_CAPS` |`KC_LCAP` |Caps Lock のロック |✔ |✔ | | +|`KC_LOCKING_NUM` |`KC_LNUM` |Num Lock のロック |✔ |✔ | | +|`KC_LOCKING_SCROLL` |`KC_LSCR` |Scroll Lock のロック |✔ |✔ | | +|`KC_KP_COMMA` |`KC_PCMM` |テンキー `,` | | |✔ | +|`KC_KP_EQUAL_AS400` | |AS/400 キーボードのテンキー `=` | | | | +|`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_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 | | | | +|`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 key) |✔ |✔ |✔ | +|`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 key) |✔ |✔ |✔ | +|`KC_SYSTEM_POWER` |`KC_PWR` |システム電源オフ |✔ |✔3|✔ | +|`KC_SYSTEM_SLEEP` |`KC_SLEP` |システムスリープ |✔ |✔3|✔ | +|`KC_SYSTEM_WAKE` |`KC_WAKE` |システムスリープ解除 | |✔3|✔ | +|`KC_AUDIO_MUTE` |`KC_MUTE` |ミュート |✔ |✔ |✔ | +|`KC_AUDIO_VOL_UP` |`KC_VOLU` |音量アップ |✔ |✔4|✔ | +|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |音量ダウン |✔ |✔4|✔ | +|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |次の曲へ |✔ |✔5|✔ | +|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |前の曲へ |✔ |✔5|✔ | +|`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` |次の曲へ |✔ |✔5|✔ | +|`KC_MEDIA_REWIND` |`KC_MRWD` |前の曲へ |✔6|✔5|✔ | +|`KC_BRIGHTNESS_UP` |`KC_BRIU` |画面の明るさアップ |✔ |✔ |✔ | +|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |画面の明るさダウン |✔ |✔ |✔ | + +1. Linux カーネル HID ドライバは [ほぼ全てのキーコード](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c) を識別しますが、デフォルトの関連付けは デスクトップ環境/ウィンドウマネージャによって決まります。
+2. F13-F15 として取り扱われます。
+3. 約3秒間押していると、プロンプトが表示されます。
+4. Shift と Option を押していると、ボリュームレベルの細かいコントロールが可能になります。
+5. iTunes では、タップすると1曲全体がスキップされます。押していると曲の中で早送り/巻き戻しになります。
+6. Windows Media Player は巻き戻しキーを識別しませんが、VLC では早送り/巻き戻しキーで再生速度が変更されます。 + +## Quantum キーコード :id=quantum-keycodes + +[Quantum キーコード](ja/quantum_keycodes.md#qmk-keycodes) も見てください。 + +|キー |エイリアス |説明 | +|--------------|-----------|---------------------------------------------------------| +|`RESET` | |ファームウエア書き込みのためにキーボードをブートローダーモードにします | +|`DEBUG` | |デバッグモードを切り替えます | +|`EEPROM_RESET`|`EEP_RST` |キーボードの EEPROM (不揮発メモリ) を再初期化します | + +## オーディオキー :id=audio-keys + +[オーディオ](ja/feature_audio.md) も見てください。 + +|キー |エイリアス |説明 | +|----------------|------------|---------------------------------------| +|`AU_ON` | |オーディオモードオン | +|`AU_OFF` | |オーディオモードオフ | +|`AU_TOG` | |オーディオモードを切り替えます | +|`CLICKY_TOGGLE` |`CK_TOGG` |オーディオクリックモードを切り替えます | +|`CLICKY_UP` |`CK_UP` |クリック音の周波数を増やします | +|`CLICKY_DOWN` |`CK_DOWN` |クリック音の周波数を減らします | +|`CLICKY_RESET` |`CK_RST` |周波数をデフォルトに再設定します | +|`MU_ON` | |音楽モードをオンにします | +|`MU_OFF` | |音楽モードをオフにします | +|`MU_TOG` | |音楽モードを切り替えます | +|`MU_MOD` | |音楽モードを循環します | + +## バックライト :id=backlighting + +[バックライト](ja/feature_backlight.md) も見てください。 + +|キー |説明 | +|---------|-------------------------------------| +|`BL_TOGG`|バックライトをオンあるいはオフにする | +|`BL_STEP`|バックライトレベルを循環する | +|`BL_ON` |バックライトを最大輝度にセットする | +|`BL_OFF` |バックライトをオフにする | +|`BL_INC` |バックライトのレベルを上げる | +|`BL_DEC` |バックライトのレベルを下げる | +|`BL_BRTG`|バックライトの明滅動作を切り替える | + +## ブートマジック :id=bootmagic + +[ブートマジック](ja/feature_bootmagic.md) も見てください。 + +| キー | エイリアス| 説明 | +|------------------------------------|-----------|-------------------------------------------------------| +| `MAGIC_SWAP_CONTROL_CAPSLOCK` | `CL_SWAP` | Caps Lock と左 Control の入れ替え | +| `MAGIC_UNSWAP_CONTROL_CAPSLOCK` | `CL_NORM` | Caps Lock と左 Control の入れ替えの解除 | +| `MAGIC_CAPSLOCK_TO_CONTROL` | `CL_CTRL` | Caps Lock を Control として扱う | +| `MAGIC_UNCAPSLOCK_TO_CONTROL` | `CL_CAPS` | Caps Lock を Control として扱うことを止める | +| `MAGIC_SWAP_LCTL_LGUI` | `LCG_SWP` | 左 Control と GUI の入れ替え | +| `MAGIC_UNSWAP_LCTL_LGUI` | `LCG_NRM` | 左 Control と GUI の入れ替えを解除 | +| `MAGIC_SWAP_RCTL_RGUI` | `RCG_SWP` | 右 Control と GUI の入れ替え | +| `MAGIC_UNSWAP_RCTL_RGUI` | `RCG_NRM` | 右 Control と GUI の入れ替えを解除 | +| `MAGIC_SWAP_CTL_GUI` | `CG_SWAP` | 両側の Control と GUI の入れ替え | +| `MAGIC_UNSWAP_CTL_GUI` | `CG_NORM` | 両側の Control と GUI の入れ替えを解除 | +| `MAGIC_TOGGLE_CTL_GUI` | `CG_TOGG` | 両側の Control と GUI の入れ替えの切り替え | +| `MAGIC_SWAP_LALT_LGUI` | `LAG_SWP` | 左 Alt と GUI の入れ替え | +| `MAGIC_UNSWAP_LALT_LGUI` | `LAG_NRM` | 左 Alt と GUI の入れ替えを解除 | +| `MAGIC_SWAP_RALT_RGUI` | `RAG_SWP` | 右 Alt と GUI の入れ替え | +| `MAGIC_UNSWAP_RALT_RGUI` | `RAG_NRM` | 右 Alt と GUI の入れ替えを解除 | +| `MAGIC_SWAP_ALT_GUI` | `AG_SWAP` | 両側の Alt と GUI の入れ替え | +| `MAGIC_UNSWAP_ALT_GUI` | `AG_NORM` | 両側の Alt と GUI の入れ替えを解除 | +| `MAGIC_TOGGLE_ALT_GUI` | `AG_TOGG` | 両側の Alt と GUI の入れ替えの切り替え | +| `MAGIC_NO_GUI` | `GUI_OFF` | GUI キーを無効にする | +| `MAGIC_UNNO_GUI` | `GUI_ON` | GUI キーを有効にする | +| `MAGIC_SWAP_GRAVE_ESC` | `GE_SWAP` | ` とエスケープの入れ替え | +| `MAGIC_UNSWAP_GRAVE_ESC` | `GE_NORM` | ` とエスケープの入れ替えを解除 | +| `MAGIC_SWAP_BACKSLASH_BACKSPACE` | `BS_SWAP` | `\` と Backspace を入れ替え | +| `MAGIC_UNSWAP_BACKSLASH_BACKSPACE` | `BS_NORM` | `\` と Backspace の入れ替えを解除する | +| `MAGIC_HOST_NKRO` | `NK_ON` | N キーロールオーバーを有効にする | +| `MAGIC_UNHOST_NKRO` | `NK_OFF` | N キーロールオーバーを無効にする | +| `MAGIC_TOGGLE_NKRO` | `NK_TOGG` | N キーロールオーバーの有効・無効を切り替え | +| `MAGIC_EE_HANDS_LEFT` | `EH_LEFT` | 分割キーボードのマスター側を左手に設定(`EE_HANDS` 用) | +| `MAGIC_EE_HANDS_RIGHT` | `EH_RGHT` | 分割キーボードのマスター側を右手に設定(`EE_HANDS` 用) | + +## Bluetooth :id=bluetooth + +[Bluetooth](ja/feature_bluetooth.md) も見てください。 + + +|キー |説明 | +|----------|--------------------------------------| +|`OUT_AUTO`|USB と Bluetooth を自動的に切り替える | +|`OUT_USB` |USB のみ | +|`OUT_BT` |Bluetooth のみ | + +## 動的マクロ :id=dynamic-macros + +[動的マクロ](ja/feature_dynamic_macros.md) も見てください。 + +|キー |エイリアス |説明 | +|-----------------|---------|-------------------------------------| +|`DYN_REC_START1` |`DM_REC1`|マクロ 1 の記録を開始します | +|`DYN_REC_START2` |`DM_REC2`|マクロ 2 の記録を開始します | +|`DYN_MACRO_PLAY1`|`DM_PLY1`|マクロ 1 を再生します | +|`DYN_MACRO_PLAY2`|`DM_PLY2`|マクロ 2 を再生します | +|`DYN_REC_STOP` |`DM_RSTP`|現在記録中のマクロの記録を終了します | + +## グレイブエスケープ :id=grave-escape + +[グレイブエスケープ](ja/feature_grave_esc.md) も見てください。 + +|キー |エイリアス |説明 | +|-----------|---------|------------------------------------------------------------------| +|`GRAVE_ESC`|`KC_GESC`|押された場合に Escape。Shift あるいは GUI が押されたままの場合は `| + +## キーロック :id=key-lock + +[キーロック](ja/feature_key_lock.md) も見てください。 + +|キー |説明 | +|---------|--------------------------------------------------| +|`KC_LOCK`|キーが再び押されるまで次のキーを押したままにします | + +## レイヤー切り替え :id=layer-switching + +[レイヤー切り替え](ja/feature_layers.md#switching-and-toggling-layers) も見てください。 + +|キー |説明 | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +|`DF(layer)` |指定されたレイヤーを基本 (デフォルト) レイヤーに設定する | +|`MO(layer)` |キーを押したら一時的に `layer` を切り替える。(切り替え先のレイヤーには `KC_TRNS` が必要です) | +|`OSL(layer)` |次のキーが押されるまで、一時的にレイヤーをアクティブにします。詳細は [ワンショットキー](ja/one_shot_keys.md) のとおり。 | +|`LM(layer, mod)`|`mod` がアクティブな状態で (MO のように) 一時的にレイヤーをアクティブにします。ここでは、`mod` は mods_bit のことです。Mod については [こちら](ja/mod_tap.md) で見ることができます。実装例: `LM(LAYER_1, MOD_LALT)` | +|`LT(layer, kc)` |押していると `layer` をオンにし、タップすると `kc` になります。 | +|`TG(layer)` |`layer` のオン・オフを切り替え | +|`TO(layer)` |`layer` をオンにして、デフォルトレイヤーを除く他のレイヤーをオフにします。 | +|`TT(layer)` |複数回タップしない限り `MO` のように動作し、複数回タップすると `layer` をオンにトグルします。 | + +## リーダーキー :id=leader-key + +[リーダーキー](ja/feature_leader_key.md) も見てください。 + +|キー |説明 | +|---------|-------------------------------| +|`KC_LEAD`|リーダーキーのシーケンスを開始 | + +## マウスキー :id=mouse-keys + +[マウスキー](ja/feature_mouse_keys.md) も見てください。 + +|キー |エイリアス |説明 | +|----------------|---------|-------------------------| +|`KC_MS_UP` |`KC_MS_U`|マウスカーソルを上に移動 | +|`KC_MS_DOWN` |`KC_MS_D`|マウスカーソルを下に移動 | +|`KC_MS_LEFT` |`KC_MS_L`|マウスカーソルを左に移動 | +|`KC_MS_RIGHT` |`KC_MS_R`|マウスカーソルを右に移動 | +|`KC_MS_BTN1` |`KC_BTN1`|ボタン1を押す | +|`KC_MS_BTN2` |`KC_BTN2`|ボタン2を押す | +|`KC_MS_BTN3` |`KC_BTN3`|ボタン3を押す | +|`KC_MS_BTN4` |`KC_BTN4`|ボタン4を押す | +|`KC_MS_BTN5` |`KC_BTN5`|ボタン5を押す | +|`KC_MS_WH_UP` |`KC_WH_U`|ホイールを向こう側に回転 | +|`KC_MS_WH_DOWN` |`KC_WH_D`|ホイールを手前側に回転 | +|`KC_MS_WH_LEFT` |`KC_WH_L`|ホイールを左に倒す | +|`KC_MS_WH_RIGHT`|`KC_WH_R`|ホイールを右に倒す | +|`KC_MS_ACCEL0` |`KC_ACL0`|速度を0に設定 | +|`KC_MS_ACCEL1` |`KC_ACL1`|速度を1に設定 | +|`KC_MS_ACCEL2` |`KC_ACL2`|速度を2に設定 | + +## 修飾キー :id=modifiers + +[修飾キー](ja/feature_advanced_keycodes.md#modifier-keys) も見てください。 + +| キー | エイリアス | 説明 | +|------------|---------------------------------|---------------------------------------------------------------| +| `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 (AltGr) を押しながら `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` を押します。 | +| `KC_MEH` | | 左 Control、Shift、Alt | +| `KC_HYPR` | | 左 Control、Shift、Alt、GUI | + + +## モッドタップキー :id=mod-tap-keys + +[モッドタップキー](ja/mod_tap.md) も見てください。 + +|キー |エイリアス | 説明 | +|--------------|-------------------------------------------------------------------|------------------------------------------------------------------------| +| `MT(mod, kc)`| |押したままの場合は `mod` 、タップした場合は `kc` | +| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` | +| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` | +| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` | +| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` | +| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` | +| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` | +| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt (AltGr) 、タップした場合は `kc` | +| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` | +| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と GUI、タップした場合は `kc` | +| `LCA_T(kc)` | | 押したままの場合は左 Control と Alt、タップした場合は `kc` | +| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` | +| `RSA_T(kc)` |`SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr) 、タップした場合は `kc` | +| `RCS_T(kc)` | | 押したままの場合は右 Control と Shift、タップした場合は `kc` | +| `LCAG_T(kc)` | | 押したままの場合は左 Control、Alt、GUI、タップした場合は `kc` | +| `RCAG_T(kc)` | | 押したままの場合は右 Control、Alt、GUI、タップした場合は `kc` | +| `C_S_T(kc)` | | 押したままの場合は左 Control と Shift、タップした場合は `kc` | +| `MEH_T(kc)` | | 押したままの場合は左 Control、Shift、Alt、タップした場合は `kc` | +| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、Shift、Alt、GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください | + +## RGB ライト :id=rgb-lighting + +[RGB ライト](ja/feature_rgblight.md) も見てください。 + +|キー |エイリアス|説明 | +|-------------------|----------|---------------------------------------------------------------------| +|`RGB_TOG` | |RGB ライトのオン・オフを切り替え | +|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 | +|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 | +|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 | +|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 | +|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 | +|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 | +|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 | +|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 | +|`RGB_MODE_PLAIN` |`RGB_M_P `|静止(動き無し) モードに固定します | +|`RGB_MODE_BREATHE` |`RGB_M_B` |明滅アニメーションモード | +|`RGB_MODE_RAINBOW` |`RGB_M_R` |レインボーアニメーションモード | +|`RGB_MODE_SWIRL` |`RGB_M_SW`|渦巻アニメーションモード | +|`RGB_MODE_SNAKE` |`RGB_M_SN`|スネークアニメーションモード | +|`RGB_MODE_KNIGHT` |`RGB_M_K` |「ナイトライダー」アニメーションモード | +|`RGB_MODE_XMAS` |`RGB_M_X` |クリスマスアニメーションモード | +|`RGB_MODE_GRADIENT`|`RGB_M_G` |固定階調アニメーションモード | +|`RGB_MODE_RGBTEST` |`RGB_M_T` |赤、緑、青のテストアニメーションモード | + +## RGB マトリックスライト :id=rgb-matrix-lighting + +[RGB マトリックスライト](ja/feature_rgb_matrix.md) も見てください。 + +|キー |エイリアス|説明 | +|-------------------|----------|--------------------------------------------------------------------------------------------------------| +|`RGB_TOG` | |RGB ライトのオン・オフを切り替え | +|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 | +|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 | +|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 | +|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 | +|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 | +|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 | +|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 | +|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 | +|`RGB_SPI` | |エフェクトのスピード (EEPROM はまだサポートしていません) を増加させ、Shift を押していると減少させます。 | +|`RGB_SPD` | |エフェクトのスピード (EEPROM はまだサポートしていません) を減少させ、Shift を押していると増加させます。 | + +## 感熱式プリンタ :id=thermal-printer + +[感熱式プリンタ](ja/feature_thermal_printer.md) も見てください。 + +|キー |説明 | +|-----------|---------------------------------| +|`PRINT_ON` |ユーザが入力した全ての印刷を開始 | +|`PRINT_OFF`|ユーザが入力した全ての印刷を停止 | + +## US ANSI シフト済シンボル :id=us-ansi-shifted-symbols + +[US ANSI シフト済シンボル](ja/keycodes_us_ansi_shifted.md) も見てください。 + +|キー |エイリアス |説明| +|------------------------|-------------------|-----------| +|`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` |`?` | + +## ワンショットキー :id=one-shot-keys + +[ワンショットキー](ja/one_shot_keys.md) も見てください。 + +|キー |説明 | +|------------|--------------------------------| +|`OSM(mod)` | 次のキーが押されるまで、`mod` を押したままにします | +|`OSL(layer)`| 次のキーが押されるまで、一時的にレイヤーをアクティブにします | + +## Space Cadet :id=space-cadet + +[Space Cadet](ja/feature_space_cadet.md) も見てください。 + +|キー |説明 | +|-----------|-------------------------------------------| +|`KC_LCPO` |押したままの場合は左 Control、タップした場合は `(` | +|`KC_RCPC` |押したままの場合は右 Control、タップした場合は `)` | +|`KC_LSPO` |押したままの場合は左 Shift、タップした場合は `(`、 | +|`KC_RSPC` |押したままの場合は右 Shift、タップした場合は `)`、 | +|`KC_LAPO` |押したままの場合は左 Alt、タップした場合は `(`、 | +|`KC_RAPC` |押したままの場合は右 Alt、タップした場合は `)`、 | +|`KC_SFTENT`|押したままの場合は右 Shift、タップした場合は Enter | + +## スワップハンド :id=swap-hands + +[スワップハンド](ja/feature_swap_hands.md) も見てください。 + +|キー |説明 | +|-------------|----------------------------------------------------------------------------------| +| `SH_T(key)` | タップで `key` を送信する。押している時に一時的に入れ替え。 | +| `SH_ON` | 入れ替えをオンにして、そのままにする。 | +| `SH_OFF` | 入れ替えをオフにして、そのままにする。既知の状態に戻るのに適しています。 | +| `SH_MON` | 押すとスワップハンドし、放すと通常に戻る (一時的)。 | +| `SH_MOFF` | 一時的に入れ替えをオフする。 | +| `SH_TG` | キーを押すたびにオンとオフを切り替える。 | +| `SH_TT` | タップで切り替える。押している時に一時的に切り替える。 | +| `SH_OS` | ワンショットスワップハンド: 押している時あるいは次のキーを押すまで切り替える。 | + +## ユニコードサポート :id=unicode-support + +[ユニコードサポート](ja/feature_unicode.md) も見てください。 + +|キー |エイリアス |説明 | +|----------------------|-----------|----------------------------------------------------------------------| +|`UC(c)` | |コードポイント `c` のユニコードを送信 | +|`X(i)` | |`unicode_map` のインデックス `i` のユニコードを送信 | +|`XP(i, j)` | |Shift/Capsが有効なら、インデックス `i` または `j` のユニコードを送信 | +|`UNICODE_MODE_FORWARD`|`UC_MOD` |ユニコード入力方式を順送りで選択 | +|`UNICODE_MODE_REVERSE`|`UC_RMOD` |ユニコード入力方式を逆順で選択 | +|`UNICODE_MODE_OSX` |`UC_M_OS` |ユニコード入力方式を macOS 方式に切り替え | +|`UNICODE_MODE_LNX` |`UC_M_LN` |ユニコード入力方式を Linux 方式に切り替え | +|`UNICODE_MODE_WIN` |`UC_M_WI` |ユニコード入力方式を Windows 方式に切り替え | +|`UNICODE_MODE_BSD` |`UC_M_BS` |ユニコード入力方式を BSD 方式に切り替え (実装されていません) | +|`UNICODE_MODE_WINC` |`UC_M_WC` |ユニコード入力方式を WinCompose を使う Windows 方式に切り替え | diff --git a/docs/ja/mod_tap.md b/docs/ja/mod_tap.md index 01afd201bb..371870abd6 100644 --- a/docs/ja/mod_tap.md +++ b/docs/ja/mod_tap.md @@ -1,8 +1,8 @@ # モッドタップ モッドタップキー `MT(mod, kc)` は、押したままの時にモディファイアのように機能し、タップされた時に通常のキーのように振舞います。別の言い方をすると、タップした時に Escape を送信しますが、押したままの時に Control あるいは Shift キーとして機能するキーを持つことができます。 @@ -32,23 +32,26 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC) 便利なように、QMK はキーマップで一般的な組み合わせをよりコンパクトにするためのモッドタップショートカットを含んでいます: -| キー | エイリアス | 説明 | -|--------------|-----------------------------|-------------------------------------------------------------| -| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` | -| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` | -| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` | -| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` | -| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` | -| `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` | -| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` | -| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` | -| `RCAG_T(kc)` | | 押したままの場合は右 Control、右 Alt と右 GUI、タップした場合は `kc` | -| `C_S_T(kc)` | | 押したままの場合は左 Control と左 Shift、タップした場合は `kc` | -| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` | -| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、左 Shift、左 Alt と左 GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください | +| キー | エイリアス | 説明 | +| ------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` | +| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` | +| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` | +| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` | +| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` | +| `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` | +| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` | +| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` | +| `RSA_T(kc)` | `SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr)、タップした場合は `kc` | +| `RCS_T(kc)` | | 押したままの場合は右 Control と Shift、タップした場合は `kc` | +| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` | +| `RCAG_T(kc)` | | 押したままの場合は右 Control、右 Alt と右 GUI、タップした場合は `kc` | +| `C_S_T(kc)` | | 押したままの場合は左 Control と左 Shift、タップした場合は `kc` | +| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` | +| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、左 Shift、左 Alt と左 GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください | ## 注意事項 @@ -57,3 +60,7 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC) さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。これらのコードはシフトを非常に高速に送信するため、リモートデスクトップはコードを見逃すかもしれません。 これを修正するには、リモートデスクトップ接続を開き、「オプションの表示」を開き、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これにより問題が修正され、キャラクタが正しく動作するようになります。 + +## 他のリソース + +モッドタップの動作を調整する追加フラグについては、[タップホールド設定オプション](ja/tap_hold.md)を参照してください。 diff --git a/docs/ja/newbs.md b/docs/ja/newbs.md index 1cb2c4f549..5fdf40425a 100644 --- a/docs/ja/newbs.md +++ b/docs/ja/newbs.md @@ -1,9 +1,9 @@ -# QMK 初心者ガイド +# QMK チュートリアル キーボードには、コンピュータ入っているものと似たようなプロセッサが入っています。 @@ -19,20 +19,16 @@ QMK は、簡単なことは簡単に、そして、難しいことを可能な QMK は[多くの趣味のキーボード](https://qmk.fm/keyboards/)をサポートしています。 現在使用しているキーボードが QMK を実行できない場合、QMK を実行できるキーボードの選択肢はたくさんあります。 -## このガイドは私のためにあるのでしょうか? - -このガイドは、ソースコードを使ってキーボードのファームウェアを構築したいと考えている人に適しています。 -もしあなたがすでにプログラマーであれば、このプロセスはとても身近で簡単に理解できるでしょう。 -もし、プログラミングの考え方に抵抗があるのであれば、代わりに[私たちのオンラインGUI](ja/newbs_building_firmware_configurator.md)を見てみてください。 +?> **このガイドは私のためにあるのでしょうか?**
+もし、プログラミングの考え方に抵抗があるのであれば、代わりに[私たちのオンライン GUI](ja/newbs_building_firmware_configurator.md) を見てみてください。 ## 概要 -このガイドには4つの主要なセクションがあります。 +このガイドは、ソースコードを使ってキーボードのファームウェアを構築したいと考えている人に適しています。 もしあなたがすでにプログラマーであれば、このプロセスはとても身近で簡単に理解できるでしょう。このガイドには3つの主要なセクションがあります: 1. [環境設定](ja/newbs_getting_started.md) 2. [コマンドラインを使用して初めてのファームウェアを構築する](ja/newbs_building_firmware.md) 3. [ファームウェアを書きこむ](ja/newbs_flashing.md) -4. [テストとデバッグ](ja/newbs_testing_debugging.md) このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。 その観点から選択と推奨を行います。 @@ -41,8 +37,4 @@ QMK は[多くの趣味のキーボード](https://qmk.fm/keyboards/)をサポ ## 追加のリソース -このガイドの他にも、QMK の学習に役立つリソースがいくつかあります。[学習リソース](ja/newbs_learn_more_resources.md)のページにまとめました。 - -## オープンソース - -QMKは GNU General Public License でリリースされているオープンソース・ソフトウェアです。 +このガイドの他にも、QMK の学習に役立つリソースがいくつかあります。[シラバス](ja/syllabus.md)と[学習リソース](ja/newbs_learn_more_resources.md)のページにまとめました。 diff --git a/docs/ja/newbs_building_firmware_configurator.md b/docs/ja/newbs_building_firmware_configurator.md index 61d25ffb52..6b48e79de8 100644 --- a/docs/ja/newbs_building_firmware_configurator.md +++ b/docs/ja/newbs_building_firmware_configurator.md @@ -2,13 +2,13 @@ [![QMK Configurator Screenshot](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/) -[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの hex ファイルを生成するオンライングラフィカルユーザーインターフェイスです。 +[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの `.hex` や `.bin` ファイルを生成するオンライングラフィカルユーザーインターフェイスです。 [ビデオチュートリアル](https://www.youtube.com/watch?v=-imgglzDMdY) を見てください。 多くの人は、それが自分のキーボードのプログラミングを始めるのに十分な情報であることに気づくでしょう。 diff --git a/docs/ja/newbs_flashing.md b/docs/ja/newbs_flashing.md index 3e1529706e..39f5da88a8 100644 --- a/docs/ja/newbs_flashing.md +++ b/docs/ja/newbs_flashing.md @@ -1,12 +1,12 @@ -# ファームウェアを書きこむ +# ファームウェアを書き込む -カスタムファームウェアは出来たので、キーボードに書き込みたくなるでしょう/フラッシュしたくなるでしょう。 +カスタムファームウェアは出来たので、いよいよキーボードへの書き込み(フラッシュ)です。 ## キーボードを DFU (Bootloader) モードにする @@ -50,18 +50,22 @@ Finder またはエクスプローラーでファームウェアのファイル Windows か macOS を使用している場合、現在のフォルダをエクスプローラーか Finder で簡単に開くためのコマンドがあります。 -#### Windows + + +#### ** Windows ** ``` start . ``` -#### macOS +#### ** macOS ** ``` open . ``` + + ファームウェアファイルは常に以下の命名形式に従っています: ``` @@ -117,11 +121,13 @@ QMK Toolbox の `Flash` ボタンをクリックします。次のような出 WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time. -この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。詳細は、[ファームウェアのフラッシュ](ja/flashing.md) ガイドを参照してください。 +この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。詳細は、[ファームウェアのフラッシュ](ja/flashing.md)ガイドを参照してください。 ## テストしましょう! -おめでとうございます! カスタムファームウェアがキーボードにプログラムされました! +おめでとうございます!カスタムファームウェアがキーボードにプログラムされ、テストする準備ができました! -使ってみて、すべてがあなたの望むように動作するかどうか確認してください。 -この初心者ガイドを完全なものにするために [テストとデバッグ](ja/newbs_testing_debugging.md) を書いたので、ファームウェアの検証とカスタム機能のトラブルシューティング方法について学ぶには、こちらをご覧ください。 +少し運が良ければ全てが完璧に機能しますが、そうでない場合は何が問題なのかを理解するのに役立つ手順があります。 +通常、キーボードのテストは非常に簡単です。全てのキーをひとつずつ押して、期待するキーが送信されることを確認します。例え QMK で動作していない場合でも、[QMK Configurator](https://config.qmk.fm/#/test/) のテストモードを使用すると、キーボードをチェックできます。 + +まだ動作しませんか?詳細については FAQ トピックを参照するか、[Discord でチャット](https://discord.gg/Uq7gcHh)してください。 diff --git a/docs/ja/newbs_getting_started.md b/docs/ja/newbs_getting_started.md index 44ce93aec8..b5a725bc7e 100644 --- a/docs/ja/newbs_getting_started.md +++ b/docs/ja/newbs_getting_started.md @@ -2,125 +2,182 @@ キーマップをビルドする前に、いくつかのソフトウェアをインストールしてビルド環境を構築する必要があります。 ファームウェアをコンパイルするキーボードの数に関わらず、この作業を一度だけ実行する必要があります。 -## 1. ソフトウェアのダウンロード +## 1. 前提条件 始めるために必要なソフトウェアがいくつかあります。 -### テキストエディタ +* [テキストエディタ](ja/newbs_learn_more_resources.md#text-editor-resources) + * プレーンテキストファイルを編集して保存できるプログラムが必要です。多くの OS に付属するデフォルトのエディタはプレーンテキストファイルを保存しないため、選択したエディタがプレーンテキストファイルを保存することを確認する必要があります。 +* [Toolbox (オプション)](https://github.com/qmk/qmk_toolbox) + * Windows と macOS で使える GUI を備えたプログラムで、カスタムキーボードのプログラミングとデバッグの両方ができます。 -**プレーンテキスト** ファイルを編集して保存できるプログラムが必要です。 -Windows の場合、メモ帳が使えます。Linux の場合、gedit が使えます。どちらもシンプルですが機能的なテキストエディタです。 -macOS では、デフォルトのテキストエディットアプリに注意してください。_フォーマット_ メニューから _標準テキストにする_ を選択しない限り、プレーンテキストとして保存されません。 - -[Sublime Text](https://www.sublimetext.com/) や [VS Code](https://code.visualstudio.com/) のような専用のテキストエディタをダウンロードしてインストールすることもできます。これらのプログラムはコードを編集するために特別に作成されているため、これはプラットフォームに関係なくベストな方法です。 - -?> どのエディタを使えば良いか分からない場合、Laurence Bradford が書いたこの記事 [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) を読んでください。 - -### QMK Toolbox - -QMK Toolbox は、Windows と macOS で使える GUI を備えたプログラムで、カスタムキーボードのプログラミングとデバッグの両方ができます。 -このプログラムは、キーボードに簡単にファームウェアを書き込んだり、出力されるデバッグメッセージを確認する際に、かけがえのないものであることがわかるでしょう。 - -[QMK Toolbox の最新版](https://github.com/qmk/qmk_toolbox/releases/latest) - -* Windows 版: `qmk_toolbox.exe` (portable) または `qmk_toolbox_install.exe` (installer) -* macOS 版: `QMK.Toolbox.app.zip` (portable) または `QMK.Toolbox.pkg` (installer) - -### Unix ライクな環境 - -Linux や macOS には既に実行可能な unix シェルが付属しています。ビルド環境を構築するだけで済みます。 - -Windows では、MSYS2 や WSL をインストールして、これらの環境を使う必要があります。MSYS2 の構築手順を以下に示します。 +?> もし、Linux か Unix のコマンドを使ったことがない場合、こちらで基本的な概念や各種コマンドを学んでください。[これらの教材](ja/newbs_learn_more_resources.md#command-line-resources)で QMK を使うのに必要なことを学ぶことができます。 ## 2. ビルド環境を準備する :id=set-up-your-environment -私たちは、QMK を可能な限り簡単に構築できるように努力しています。 -Linux か Unix 環境を用意するだけで、QMK に残りをインストールさせることができます。 +私たちは、QMK を可能な限り簡単に構築できるように努力しています。Linux か Unix 環境を用意するだけで、QMK に残りをインストールさせることができます。 -?> もし、Linux か Unix のコマンドを使ったことがない場合、こちらで基本的な概念や各種コマンドを学んでください。これらの教材で QMK を使うのに必要なことを学ぶことができます:
-[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)
-[Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html) + -### Windows +### ** Windows ** -MSYS2 と Git と QMK CLI のインストールが必要です。 +QMK は、MSYS2、CLI、および必要な全ての依存関係のバンドルを保守しています。また、正しい環境で直接起動するための便利な `QMK MSYS` ターミナルショートカットも提供しています。 -[MSYS2 homepage](https://www.msys2.org) のインストール手順に従ってください。開いている MSYS2 の全ターミナル画面を閉じて、新しい MinGW 64-bit ターミナル画面を開きます。**注意: これはインストールが完了した時に開く MSYS ターミナルと同じ *ではありません*。** +#### 前提条件 + +[QMK MSYS](https://msys.qmk.fm/) をインストールする必要があります。最新リリースは[ここ](https://github.com/qmk/qmk_distro_msys/releases/latest)から入手できます。 + +または、MSYS2 を手動でインストールしたい場合、次のセクションでプロセスを説明します。 + +
+ 手動インストール + +?> `QMK MSYS` を使う場合、次のステップは無視してください。 + +#### 前提条件 + +MSYS2 と Git と Python をインストールする必要があります。https://www.msys2.org のインストール手順に従ってください。 + +MSYS2 をインストールしたら、開いている MSYS の全ターミナル画面を閉じて、新しい MinGW 64-bit ターミナル画面を開きます。 + +!> **注意:** MinGW 64-bit ターミナルは、インストールが完了した時に開く MSYS ターミナルと*同じではありません*。プロンプトには、「MSYS」ではなく、紫色のテキストで「MINGW64」と表示されます。違いについての詳細は[このページ](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems)を参照してください。 それから、次のように実行します: pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip - python3 -m pip install qmk -### macOS +#### インストール -Homebrew のインストールが必要です。[Homebrew homepage](https://brew.sh) の手順に従ってください。 +次のコマンドを実行して、QMK CLI をインストールします: -Homebrew をインストールした後で、以下のコマンドを実行します: + PYTHONUTF8=1 python3 -m pip install qmk + +!> **訳注:** 現在、日本語版 Windows 環境では、環境変数として `PYTHONUTF8=1` を指定してインストールする必要があります。この環境変数を指定しない場合、システムのロケール設定が原因で一部の Python モジュールのインストールでエラーが発生します。この問題は該当モジュールのソースコードでは修正済みですが、配布モジュールはまだ修正されていません。 + +
+ +### ** macOS ** + +QMK は CLI と全ての必要な依存関係を自動的にインストールする Homebrew tap と formula を保守しています。 + +#### 前提条件 + +Homebrew のインストールが必要です。https://brew.sh の手順に従ってください。 + +#### インストール + +次のコマンドを実行して、QMK CLI をインストールします: brew install qmk/qmk/qmk -### Linux +### ** Linux/WSL ** + +?> **WSL ユーザーへの注意**: デフォルトでは、インストールプロセスは QMK リポジトリを WSL ホームディレクトリに clone しますが、手動で clone した場合、Windows ファイルシステムではなく、WSL インスタンス内にある(つまり `/mnt` 内にない)ことを確認してください。これは、現在アクセスが[非常に遅い](https://github.com/microsoft/WSL/issues/4197)ためです。 + +#### 前提条件 Git と Python をインストールする必要があります。両方とも既にインストールされている可能性は高いですが、そうでない場合、次のコマンドのいずれかでそれらをインストールできます: -* Debian / Ubuntu / Devuan: `sudo apt install git python3 python3-pip` -* Fedora / Red Hat / CentOS: `sudo yum install git python3 python3-pip` -* Arch / Manjaro: `sudo pacman -S git python python-pip python-setuptools libffi` +* Debian / Ubuntu / Devuan: `sudo apt install -y git python3-pip` +* Fedora / Red Hat / CentOS: `sudo yum -y install git python3-pip` +* Arch / Manjaro: `sudo pacman --needed --noconfirm -S git python-pip libffi` +* Void: `sudo xbps-install -y git python3-pip` +* Solus: `sudo eopkg -y install git python3` +* Sabayon: `sudo equo install dev-vcs/git dev-python/pip` +* Gentoo: `sudo emerge dev-vcs/git dev-python/pip` -グローバル CLI をインストールして、システムをブートストラップします: +#### インストール -`python3 -m pip install --user qmk` (Arch ベースのディストリビューションでは AUR から `qmk` パッケージを試すこともできます(**メモ**: コミュニティメンバーによって保守されています): `yay -S qmk`) - -### FreeBSD - -Git と Python をインストールする必要があります。両方とも既にインストールされている可能性は高いですが、そうでない場合、次のコマンドを実行してそれらをインストールします: - - pkg install git python3 - -ローカルにインストールした Python パッケージが利用できるように、`$HOME/.local/bin` が `$PATH` に追加されていることを確認してください。 - -インストール完了後、QMK CLI をインストールできます: +次のコマンドを実行して、QMK CLI をインストールします: python3 -m pip install --user qmk +#### コミュニティパッケージ + +これらのパッケージはコミュニティメンバーによって保守されているため、最新ではないか、完全には機能しない可能性があります。問題が発生した場合は、それぞれのメンテナに報告してください。 + +Arch ベースのディストリビューションでは、公式リポジトリから CLI をインストールできます(注意: 執筆時点では、このパッケージは一部の依存関係をオプションとしてマークしていますが、そうではありません): + + sudo pacman -S qmk + +AUR から `qmk-git` パッケージを試すこともできます: + + yay -S qmk-git + +### ** FreeBSD ** + +#### インストール + +次のコマンドを実行して、QMK CLI の FreeBSD パッケージをインストールします: + + pkg install -g "py*-qmk" + +注意: インストールの最後に表示された指示に従うことを忘れないでください(再度表示するには、`pkg info -Dg "py*-qmk"` を使ってください)。 + + + ## 3. QMK の設定を行う :id=set-up-qmk + + +### ** Windows ** + QMK のインストール後に、このコマンドで設定できます: qmk setup -ほとんどの場合、全てのプロンプトに Yes と答えます。 +ほとんどの場合、全てのプロンプトに `y` と答えます。 + +### ** macOS ** + +QMK のインストール後に、このコマンドで設定できます: + + qmk setup + +ほとんどの場合、全てのプロンプトに `y` と答えます。 + +### ** Linux/WSL ** + +QMK のインストール後に、このコマンドで設定できます: + + qmk setup + +ほとんどの場合、全てのプロンプトに `y` と答えます。 ?>**Debian、Ubuntu、それらの派生に関する注意**: 次のようなエラーが表示される可能性があります: `bash: qmk: command not found`. -これは Debian の Bash 4.4 リリースで導入された [バグ](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155) で、`$HOME/.local/bin` が PATH から削除されました。このバグは後に Debian や Ubuntu で修正されました。 +これは Debian の Bash 4.4 リリースで導入された[バグ](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155)で、`$HOME/.local/bin` が PATH から削除されました。このバグは後に Debian や Ubuntu で修正されました。 残念なことに、Ubuntu はこのバグを再導入し、[まだ修正していません](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562)。 幸い、修正は簡単です。これをあなたのユーザで実行します: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc` -?>**FreeBSD に関する注意**: -まず、`root` 以外のユーザで `qmk setup` を実行することをお勧めしますが、これはおそらく `pkg` を使って基本システムにインストールする必要があるパッケージを識別します。 -しかし、特権のないユーザで実行すると、インストールはおそらく失敗します。 -基本的な依存関係を手動でインストールするには、`./util/qmk_install.sh` を `root` として実行するか、`sudo` をつけて実行します。 -それが完了したら、`qmk setup` を再実行して設定と確認を完了させます。 +### ** FreeBSD ** -?> 既に [GitHub の使いかた](ja/getting_started_github.md)を知っているなら、fork を作成し、`qmk setup /qmk_firmware` を使って個人用の fork から clone することをお勧めします。この一文の意味が分からない場合、このメッセージは無視してかまいません。 +QMK のインストール後に、このコマンドで設定できます: + + qmk setup + +ほとんどの場合、全てのプロンプトに `y` と答えます。 + + + +?> qmk ホームフォルダは、セットアップ時に `qmk setup -H ` を使って指定し、[cli 構成](ja/cli_configuration.md?id=single-key-example)と変数 `user.qmk_home` を使って変更できます。利用可能な全てのオプションについては、`qmk setup --help` を実行します。 + +?> 既に GitHub の使い方を知っている場合、[これらの手順に従うことをお勧めします](ja/getting_started_github.md)。そして `qmk setup /qmk_firmware` を使って個人用の fork から clone します。この一文の意味が分からない場合、このメッセージは無視してかまいません。 ## 4. ビルド環境の確認 -これで QMK のビルド環境が用意できたので、キーボードのファームウェアをビルドできます。 -キーボードのデフォルトキーマップをビルドすることから始めます。次の形式のコマンドでビルドできるはずです。 +これで QMK のビルド環境が用意できたので、キーボードのファームウェアをビルドできます。キーボードのデフォルトキーマップをビルドすることから始めます。次の形式のコマンドでビルドできるはずです: qmk compile -kb -km default -例えば、Clueboard 66% のファームウェアをビルドする場合: +例えば、Clueboard 66% のファームウェアをビルドする場合、次のようにします: qmk compile -kb clueboard/66/rev3 -km default @@ -152,5 +209,4 @@ QMK を初めて使うほとんどの人は、キーボードを1つしか持っ # キーマップの作成 -これであなた専用のキーマップを作成する準備ができました! -次は [初めてのファームウェアの構築](ja/newbs_building_firmware.md) で専用のキーマップを作成します。 +これであなた専用のキーマップを作成する準備ができました!次は[初めてのファームウェアの構築](ja/newbs_building_firmware.md)で専用のキーマップを作成します。 diff --git a/docs/ja/newbs_learn_more_resources.md b/docs/ja/newbs_learn_more_resources.md index e5437ca86a..686b924465 100644 --- a/docs/ja/newbs_learn_more_resources.md +++ b/docs/ja/newbs_learn_more_resources.md @@ -2,13 +2,13 @@ これらのリソースは、QMK コミュニティの新しいメンバーに、初心者向けドキュメントで提供されている情報に対する理解を深めることを目的としています。 -## QMK に関するリソース: +## QMK に関するリソース ### 英語 :id=english-resources-qmk @@ -18,17 +18,35 @@ _日本語のリソース情報を募集中です。_ -## コマンドラインに関するリソース: +## コマンドラインに関するリソース :id=command-line-resources ### 英語 :id=english-resources-cli * [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line) +* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)
+* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html) ### 日本語 :id=japanese-resources-cli _日本語のリソース情報を募集中です。_ -## Git に関するリソース: +## テキストエディタに関するリソース :id=text-editor-resources + +どのテキストエディタを使えば良いか分かりませんか? + +### 英語 :id=english-resources-text-editor + +* [a great introduction to the subject](https://learntocodewith.me/programming/basics/text-editors/) + +### 日本語 :id=japanese-resources-text-editor + +_日本語のリソース情報を募集中です。_ + +コーディング用に特別に作成されたエディタ: +* [Sublime Text](https://www.sublimetext.com/) +* [VS Code](https://code.visualstudio.com/) + +## Git に関するリソース ### 英語 :id=english-resources-git diff --git a/docs/ja/newbs_testing_debugging.md b/docs/ja/newbs_testing_debugging.md index 41103bae97..d64f0f6dff 100644 --- a/docs/ja/newbs_testing_debugging.md +++ b/docs/ja/newbs_testing_debugging.md @@ -2,105 +2,14 @@ -カスタムファームウェアをキーボードへ書き込んだら、テストする準備が整います。運が良ければ全て問題なく動作しているはずですが、もしそうでなければこのドキュメントがどこが悪いのか調べるのに役立ちます。 - ## テスト -通常、キーボードをテストするのは非常に簡単です。 -全てのキーをひとつずつ押して、期待されるキーが送信されていることを確認します。 -QMK を実行していなくても、[QMK Configurator](https://config.qmk.fm/#/test/) のテストモードを使ってキーボードを確認することができます。 +[ここに移動しました](ja/faq_misc.md#testing) ## デバッグ :id=debugging -`rules.mk`へ`CONSOLE_ENABLE = yes`の設定をするとキーボードはデバッグ情報を出力します。デフォルトの出力は非常に限られたものですが、デバッグモードをオンにすることでデバッグ情報の量を増やすことが出来ます。キーマップの`DEBUG`キーコードを使用するか、デバッグモードを有効にする [コマンド](ja/feature_command.md) 機能を使用するか、以下のコードをキーマップに追加します。 - -```c -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - debug_enable=true; - debug_matrix=true; - //debug_keyboard=true; - //debug_mouse=true; -} -``` - -## デバッグツール :id=debugging-tools - -キーボードのデバッグに使えるツールは2つあります。 - -### QMK Toolboxを使ったデバッグ - -互換性のある環境では、[QMK Toolbox](https://github.com/qmk/qmk_toolbox)を使うことでキーボードからのデバッグメッセージを表示できます。 - -### hid_listenを使ったデバッグ - -ターミナルベースの方法がお好みですか?PJRC が提供する[hid_listen](https://www.pjrc.com/teensy/hid_listen.html)もデバッグメッセージの表示に使用できます。ビルド済みの実行ファイルは Windows, Linux, MacOS 用が用意されています。 - - -## 独自のデバッグメッセージを送信する - -[custom code](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に`print.h`のインクルードを追加します: - -```c -#include "print.h" -``` - -そのあとは、いくつかの異なった print 関数を使用することが出来ます。 - -* `print("string")`: シンプルな文字列を出力します -* `uprintf("%s string", var)`: フォーマットされた文字列を出力します -* `dprint("string")` デバッグモードが有効な場合のみ、シンプルな文字列を出力します -* `dprintf("%s string", var)`: デバッグモードが有効な場合のみ、フォーマットされた文字列を出力します - -## デバッグの例 - -以下は現実世界での実際のデバッグ手法の例を集めたものです。追加情報は[Debugging/Troubleshooting QMK](ja/faq_debug.md)を参照してください。 - -### マトリックス上のどの場所でキー押下が起こったか? - -移植する、PCBの問題を診断する場合、キー入力が正しくスキャンされているかどうかを確認することが役立つ場合があります。この手法でのロギングを有効化するには、`keymap.c`へ以下のコードを追加します。 - -```c -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // コンソールが有効化されている場合、マトリックス上の位置とキー押下状態を出力します -#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; -} -``` - -出力の例 -```text -Waiting for device:....... -Listening: -KL: kc: 169, col: 0, row: 0, pressed: 1 -KL: kc: 169, col: 0, row: 0, pressed: 0 -KL: kc: 174, col: 1, row: 0, pressed: 1 -KL: kc: 174, col: 1, row: 0, pressed: 0 -KL: kc: 172, col: 2, row: 0, pressed: 1 -KL: kc: 172, col: 2, row: 0, pressed: 0 -``` - -### キースキャンにかかる時間の測定 - -パフォーマンスの問題をテストする場合、スイッチマトリックスをスキャンする頻度を知ることが役立ちます。この手法でのロギングを有効化するには`config.h`へ以下のコードを追加します。 - - -```c -#define DEBUG_MATRIX_SCAN_RATE -``` - -出力例 -```text - > matrix scan frequency: 315 - > matrix scan frequency: 313 - > matrix scan frequency: 316 - > matrix scan frequency: 316 - > matrix scan frequency: 316 - > matrix scan frequency: 316 -``` +[ここに移動しました](ja/faq_debug.md#debugging) diff --git a/docs/ja/one_shot_keys.md b/docs/ja/one_shot_keys.md index 61cf31beff..4e6b2aa9d2 100644 --- a/docs/ja/one_shot_keys.md +++ b/docs/ja/one_shot_keys.md @@ -1,8 +1,8 @@ # ワンショットキー ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。 @@ -27,7 +27,7 @@ ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。 -ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD)` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。 +ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。 !> リモートデスクトップ接続で OSM 変換に問題がある場合は、設定を開いて「ローカル リソース」タブに移動し、キーボードセクションでドロップダウンを「このコンピューター」に変更することで修正することができます。これにより問題が修正され、OSM がリモートデスクトップ上で適切に動作するようになります。 diff --git a/docs/ja/ref_functions.md b/docs/ja/ref_functions.md index 029797ff01..61e3943edd 100644 --- a/docs/ja/ref_functions.md +++ b/docs/ja/ref_functions.md @@ -1,8 +1,8 @@ # キーボードをより良くするための便利なコア関数のリスト QMK には、信じられないほど便利な、またはあなたが望んでいた機能を少し追加する、隠された関数がたくさんあります。特定の機能に固有の関数はそれぞれの機能のページにあるため、ここには含まれていません。 @@ -98,7 +98,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { ## EEPROM (永続ストレージ)の消去 -オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。ブートマジックはこれを行う方法の1つですが、有効になっていない場合はカスタムマクロを使って行うことができます。 +オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。EEPROM を強制的にリセットするには、[`EEP_RST` キーコード](ja/quantum_keycodes.md)あるいは[ブートマジック](ja/feature_bootmagic.md)機能を使います。それらのいずれも選択肢にない場合は、カスタムマクロを使って行うことができます。 EEPROM を消去するには、関数またはマクロから `eeconfig_init()` を実行し、ほとんどの設定をデフォルトにリセットします。 diff --git a/docs/ja/tap_hold.md b/docs/ja/tap_hold.md index bf23ae4ab0..07242821a9 100644 --- a/docs/ja/tap_hold.md +++ b/docs/ja/tap_hold.md @@ -1,8 +1,8 @@ # タップホールド設定オプション タップホールドオプションは素晴らしいものですが、問題が無いわけではありません。デフォルト設定を適切なものにしようとしましたが、一部の人にとってまだ問題を引き起こすかもしれません。 @@ -92,7 +92,7 @@ bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { #define IGNORE_MOD_TAP_INTERRUPT ``` -許容ホールドと同様に、これは高速なタイピストのためのファームウェアの処理方法を変更します。モッドタップキーを押し、他のキーを押し、モッドタップキーを放し、通常のキーを放すと、通常は両方のキーのタッピング機能が出力されます。これはローリングコンボキーには望ましくないかもしれません。 +許容ホールドと同様に、これは高速なタイピストのためのファームウェアの処理方法を変更します。モッドタップキーを押し、他のキーを押し、モッドタップキーを放し、通常のキーを放すと、`TAPPING_TERM` 内で押された場合でも、通常はモッドと通常のキーが出力されます。これは、ローリングコンボキーや、頻繁に使用するキー(例えば、`RCTL_T(KC_QUOT)`)にモッドタップを使う高速なタイピストには望ましくない場合があります。 `モッドタップ割り込みの無視`を設定するには、両方のキーを `TAPPING_TERM` の間ホールドすると、(その修飾キーの)ホールド機能を実行する必要があります。 @@ -103,7 +103,7 @@ bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { - `SFT_T(KC_A)` を放す - `KC_X` を放す -通常、これは `X` (`SHIFT`+`x`) を送信します。`モッドタップ割り込みの無視` を有効にすると、ホールドアクションを登録するには、両方のキーを `TAPPING_TERM` の間ホールドする必要があります。この場合、素早いタップは `ax` を送信しますが、両方をホールドすると、`X` (`SHIFT`+`x`) を出力します。 +通常、これは大文字の `X` (`SHIFT`+`x`)、またはモッド + キーを送信します。`モッドタップ割り込みの無視` を有効にすると、ホールドアクションを登録するには、両方のキーを `TAPPING_TERM` の間ホールドする必要があります。この場合、素早いタップは `ax` を送信しますが、両方をホールドすると、大文字の `X` (`SHIFT`+`x`) を出力します。 ?> __注意__: これはモディファイアにのみ関係し、レイヤー切り替えキーには関係しません。 @@ -137,8 +137,7 @@ bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { #define TAPPING_FORCE_HOLD ``` -タップの後でユーザがキーをホールドすると、ホールド機能がアクティブになるのではなく、デフォルトでタッピング機能が繰り返されます。これにより、デュアルロールキーのタッピング機能を自動繰り返しする機能を維持することができます。 -`TAPPING_FORCE_HOLD` は、デュアルロールキーをタップした後ホールドした場合、ユーザがホールド機能をアクティブにする機能を削除します。 +タップの後でユーザがキーをホールドすると、ホールド機能がアクティブになるのではなく、デフォルトでタッピング機能が繰り返されます。これにより、デュアルロールキーのタッピング機能を自動繰り返しする機能を維持することができます。`TAPPING_FORCE_HOLD` は、デュアルロールキーをタップした後ホールドした場合、ユーザがホールド機能をアクティブにする機能を削除します。 例: @@ -185,6 +184,25 @@ bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { 例えば、他のキーを押すことなく `LT(2, KC_SPACE)` を押したり放したりしても何も起こりません。これを有効にすると、代わりに `KC_SPACE` を送信します。 +この機能をより細かく制御するために、以下を `config.h` に追加することができます: + +```c +#define RETRO_TAPPING_PER_KEY +``` + +そして、以下の関数をキーマップに追加します: + +```c +bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LT(2, KC_SPACE): + return true; + default: + return false; + } +} +``` + ## キー別の関数にキーレコードを含めるのはなぜですか? 「キー別」の関数全てにキーレコードを含んでいることに気付いたかもしれません。そしてなぜそうしたのか不思議に思っているかもしれません。 diff --git a/docs/keycodes.md b/docs/keycodes.md index 9acf8b6839..1e9f34774b 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -381,26 +381,29 @@ See also: [Mouse Keys](feature_mouse_keys.md) See also: [Modifier Keys](feature_advanced_keycodes.md#modifier-keys) -|Key |Aliases |Description | -|----------|-------------------------------|------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt (AltGr) and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` | -|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)` |Hold Left Shift and GUI and press `kc` | -|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | -|`KC_MEH` | |Left Control, Shift and Alt | -|`KC_HYPR` | |Left Control, Shift, Alt and GUI | +|Key |Aliases |Description | +|----------|----------------------------------|------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt (AltGr) and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` | +|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | +|`KC_MEH` | |Left Control, Shift and Alt | +|`KC_HYPR` | |Left Control, Shift, Alt and GUI | ## Mod-Tap Keys :id=mod-tap-keys @@ -417,7 +420,10 @@ See also: [Mod-Tap](mod_tap.md) |`RSFT_T(kc)` | |Right Shift when held, `kc` when tapped | |`RALT_T(kc)` |`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt (AltGr) when held, `kc` when tapped | |`RGUI_T(kc)` |`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | -|`SGUI_T(kc)` |`SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | +|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | +|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped | +|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped | +|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped | |`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped | |`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | |`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped | @@ -516,6 +522,9 @@ See also: [One Shot Keys](one_shot_keys.md) |------------|----------------------------------| |`OSM(mod)` |Hold `mod` for one keypress | |`OSL(layer)`|Switch to `layer` for one keypress| +|`OS_ON` |Turns One Shot keys on | +|`OS_OFF` |Turns One Shot keys off | +|`OS_TOGG` |Toggles One Shot keys status | ## Space Cadet :id=space-cadet diff --git a/docs/mod_tap.md b/docs/mod_tap.md index 18440eb661..f4d128482b 100644 --- a/docs/mod_tap.md +++ b/docs/mod_tap.md @@ -37,7 +37,10 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations |`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped | |`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped | |`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | -|`SGUI_T(kc)`|`SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | +|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | +|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped | +|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped | +|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped | |`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped | |`LSA_T(kc)` | |Left Shift and Alt when held, `kc` when tapped | |`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped | @@ -50,11 +53,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations ## Caveats -Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored. +Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift. -Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes. +Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this. -To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. +You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them. +To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. +It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured). ## Other Resources diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index 7ce1f84938..c17ff4c956 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -65,7 +65,7 @@ For example, the `planck/rev5` with a `default` keymap will have this filename: planck_rev5_default.hex ``` -Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored. +Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored. ### Flash Your Keyboard diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 3cb63e5692..b434a04bbe 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -70,6 +70,8 @@ Install the QMK CLI by running: ### ** Linux/WSL ** +?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197). + #### Prerequisites You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them: @@ -102,19 +104,13 @@ You can also try the `qmk-git` package from AUR: ### ** FreeBSD ** -#### Prerequisites - -You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them: - - pkg install git python3 - -Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available. - #### Installation -Install the QMK CLI by running: +Install the FreeBSD package for QMK CLI by running: - python3 -m pip install --user qmk + pkg install -g "py*-qmk" + +NOTE: remember to follow the instructions printed at the end of installation (use `pkg info -Dg "py*-qmk"` to show them again). @@ -160,17 +156,11 @@ After installing QMK you can set it up with this command: In most situations you will want to answer `y` to all of the prompts. -?>**Note on FreeBSD**: -It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your -base system using `pkg`. However the installation will probably fail when run as an unprivileged user. -To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`. -Once that completes, re-run `qmk setup` to complete the setup and checks. - ?> The qmk home folder can be specified at setup with `qmk setup -H `, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`. -?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup /qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message. +?> If you already know how to use GitHub, [we recommend that you follow these instructions](getting_started_github.md) and use `qmk setup /qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message. ## 4. Test Your Build Environment diff --git a/docs/one_shot_keys.md b/docs/one_shot_keys.md index 9a082d7d6d..f1f93199c2 100644 --- a/docs/one_shot_keys.md +++ b/docs/one_shot_keys.md @@ -17,10 +17,13 @@ You can control the behavior of one shot keys by defining these in `config.h`: * `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap.md), not the `KC_*` codes. * `OSL(layer)` - momentary switch to *layer*. +* `OS_ON` - Turns on One Shot keys. +* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`. +* `ON_TOGG` - Toggles the one shot key status. Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine. -For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. +For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. For one shot mods, you need to call `set_oneshot_mods(MOD_BIT(KC_*))` to set it, or `clear_oneshot_mods()` to cancel it. diff --git a/docs/other_eclipse.md b/docs/other_eclipse.md index cb3ceb540b..91557d07d7 100644 --- a/docs/other_eclipse.md +++ b/docs/other_eclipse.md @@ -50,7 +50,7 @@ This is the most important plugin as it will allow Eclipse to _understand_ AVR C ### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console) This plugin is necessary to properly display the colored build output generated by the QMK makefile. -1. Open Help > Eclipse Marketplace… +1. Open Help > Eclipse Marketplace… 2. Search for _ANSI Escape in Console_ 3. Click the Install button of the plugin 4. Follow the instructions and agree again with the security warning for unsigned content. @@ -59,7 +59,7 @@ Once both plugins are installed, restart Eclipse as prompted. # Configure Eclipse for QMK ## Importing the Project -1. Click File > New > Makefile Project with Existing Code +1. Click File > New > Makefile Project with Existing Code 2. On the next screen: * Select the directory where you cloned the repository as _Existing Code Location_; * (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_; @@ -73,16 +73,18 @@ Once both plugins are installed, restart Eclipse as prompted. ¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`). ## Build Your Keyboard -We will now configure a make target that cleans the project and builds the keymap of your choice. -1. On the right side of the screen, select the Make Target tab -2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox` -3. Right-click on the keyboard folder and select New… (or select the folder and click the New Make Target icon above the tree) -4. Choose a name for your build target, e.g. _clean \_ -5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck Same as target name and input the correct arguments, e.g. `clean ` -6. Leave the other options checked and click OK. Your make target will now appear under the selected keyboard. -7. (Optional) Toggle the Hide Empty Folders icon button above the targets tree to only show your build target. -8. Double-click the build target you created to trigger a build. -9. Select the Console view at the bottom to view the running build. +We will now change the default make target of the the project from `all` to the +specific keyboard and keymap combination we are working on, +e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning +and building the project will complete quickly, instead of taking a long time or +outright locking up Eclipse. + +1. Focus an editor tab within the project +2. Open the `Project` > `Properties` window, then select the `C/C++ Build` list + entry and switch to the `Behavior` tab. +3. Change the default `Make build target` text fields for all enabled builds + from `all` to e.g. `kinesis/kint41:stapelberg`. +4. Verify your setup works by selecting `Project` > `Clean...`. [1]: https://en.wikipedia.org/wiki/Eclipse_(software) diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index e0dd0770cb..9bfa79403d 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -68,6 +68,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - bare minimum required code for a board to boot into QMK should be present - initialisation code for the matrix and critical devices - mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps + - Vial-related files or changes will not be accepted, as they are not used by QMK firmware (no Vial-specific core code has been submitted or merged) - `keyboard.c` - empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed - commented-out functions removed too @@ -94,6 +95,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - standard layouts preferred in these keymaps, if possible - submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap - submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board +- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards) + Also, specific to ChibiOS: - **strong** preference to using existing ChibiOS board definitions. @@ -127,3 +130,9 @@ There are instructions on how to keep your fork updated here: Thanks for contributing! ``` + +## Review Process + +In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine! + +Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience. diff --git a/docs/serial_driver.md b/docs/serial_driver.md index c98f4c1176..359fc59551 100644 --- a/docs/serial_driver.md +++ b/docs/serial_driver.md @@ -3,16 +3,18 @@ This driver powers the [Split Keyboard](feature_split_keyboard.md) feature. ?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards. -All drivers in this category have the following characteristics: -* Provides data and signaling over a single conductor -* Limited to single master, single slave +Drivers in this category have the following characteristics: +* bit bang and USART Half-duplex provide data and signaling over a single conductor +* USART Full-duplex provide data and signaling over two conductors +* They are all limited to single master and single slave communication scheme ## Supported Driver Types | | AVR | ARM | -|-------------------|--------------------|--------------------| +| ----------------- | ------------------ | ------------------ | | bit bang | :heavy_check_mark: | :heavy_check_mark: | | USART Half-duplex | | :heavy_check_mark: | +| USART Full-duplex | | :heavy_check_mark: | ## Driver configuration @@ -42,7 +44,7 @@ Configure the driver via your config.h: Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h. ### USART Half-duplex -Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage is that this provides fast and accurate timings. `SOFT_SERIAL_PIN` for this driver is the configured USART TX pin. **The TX pin must have appropriate pull-up resistors**. To configure it, add this to your rules.mk: +Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. `SERIAL_PIN_TX` for this driver is the configured USART TX pin. As this Pin is configured in open-drain mode an **external pull-up resistor is needed to keep the line high** (resistor values of 1.5k to 8.2k are known to work). To configure it, add this to your rules.mk: ```make SERIAL_DRIVER = usart @@ -50,7 +52,8 @@ SERIAL_DRIVER = usart Configure the hardware via your config.h: ```c -#define SOFT_SERIAL_PIN B6 // USART TX pin +#define SOFT_SERIAL_PIN B6 // USART TX pin +//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below. #define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5 // 0: about 460800 baud // 1: about 230400 baud (default) @@ -58,7 +61,7 @@ Configure the hardware via your config.h: // 3: about 57600 baud // 4: about 38400 baud // 5: about 19200 baud -#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1 +#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_TIMEOUT 100 // USART driver timeout. default 100 ``` @@ -68,3 +71,140 @@ You must also enable the ChibiOS `SERIAL` feature: * In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU) Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral. + +### USART Full-duplex +Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver, but it is more efficent as it uses DMA transfers, which can result in even faster transmission speeds. + +#### Pin configuration + +`SERIAL_USART_TX_PIN` is the USART `TX` pin, `SERIAL_USART_RX_PIN` is the USART `RX` pin. No external pull-up resistors are needed as the `TX` pin operates in push-pull mode. To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refeer to the corresponding datasheets of your MCU or find those settings in the table below. + +#### Connecting the halves and Pin Swap +Please note that `TX` of the master half has to be connected with the `RX` pin of the slave half and `RX` of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the pcb. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU, this feature can be enabled using `#define SERIAL_USART_PIN_SWAP` in your config.h. + +#### Setup +To use the driver, add this to your rules.mk: + +```make +SERIAL_DRIVER = usart_duplex +``` + +Next configure the hardware via your config.h: + +```c +#define SERIAL_USART_TX_PIN B6 // USART TX pin +#define SERIAL_USART_RX_PIN B7 // USART RX pin +//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below. +//#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. + // Check if this feature is necessary with your keyboard design and available on the mcu. +#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5 + // 0: 460800 baud + // 1: 230400 baud (default) + // 2: 115200 baud + // 3: 57600 baud + // 4: 38400 baud + // 5: 19200 baud +#define SERIAL_USART_DRIVER UARTD1 // USART driver of TX and RX pin. default: UARTD1 +#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 +``` + +You must also enable the ChibiOS `UART` with blocking api feature: +* In your board's halconf.h: `#define HAL_USE_UART TRUE` and `#define UART_USE_WAIT TRUE` +* In your board's mcuconf.h: `#define STM32_UART_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU) + +Do note that the configuration required is for the `UART` peripheral, not the `SERIAL` peripheral. + +#### Pins for USART Peripherals with Alternate Functions for selected STM32 MCUs + +##### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf) + +Pin Swap available: :heavy_check_mark: + +| Pin | Function | Mode | +| ---------- | -------- | ---- | +| **USART1** | | | +| PA9 | TX | AF7 | +| PA10 | RX | AF7 | +| PB6 | TX | AF7 | +| PB7 | RX | AF7 | +| PC4 | TX | AF7 | +| PC5 | RX | AF7 | +| PE0 | TX | AF7 | +| PE1 | RX | AF7 | +| **USART2** | | | +| PA2 | TX | AF7 | +| PA3 | RX | AF7 | +| PA14 | TX | AF7 | +| PA15 | RX | AF7 | +| PB3 | TX | AF7 | +| PB4 | RX | AF7 | +| PD5 | TX | AF7 | +| PD6 | RX | AF7 | +| **USART3** | | | +| PB10 | TX | AF7 | +| PB11 | RX | AF7 | +| PC10 | TX | AF7 | +| PC11 | RX | AF7 | +| PD8 | TX | AF7 | +| PD9 | RX | AF7 | + +##### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf) + +Pin Swap available: :heavy_check_mark: + +| Pin | Function | Mode | +| ------ | -------- | ---- | +| USART1 | | | +| PA9 | TX | AF1 | +| PA10 | RX | AF1 | +| PB6 | TX | AF0 | +| PB7 | RX | AF0 | +| USART2 | | | +| PA2 | TX | AF1 | +| PA3 | RX | AF1 | +| PA14 | TX | AF1 | +| PA15 | RX | AF1 | +| USART3 | | | +| PB10 | TX | AF4 | +| PB11 | RX | AF4 | +| PC4 | TX | AF1 | +| PC5 | RX | AF1 | +| PC10 | TX | AF1 | +| PC11 | RX | AF1 | +| PD8 | TX | AF0 | +| PD9 | RX | AF0 | +| USART4 | | | +| PA0 | TX | AF4 | +| PA1 | RX | AF4 | + +##### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf) + +Pin Swap available: N/A + +TX Pin is always Alternate Function Push-Pull, RX Pin is always regular input pin for any USART peripheral. **For STM32F103 no additional Alternate Function configuration is necessary. QMK is already configured.** + +Pin remapping: + +The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked **bold**. Add the appropriate defines to your config.h file. + +| Pin | Function | Mode | USART_REMAP | +| ---------- | -------- | ---- | ------------------- | +| **USART1** | | | | +| **PA9** | TX | AFPP | | +| **PA10** | RX | IN | | +| PB6 | TX | AFPP | USART1_REMAP | +| PB7 | RX | IN | USART1_REMAP | +| **USART2** | | | | +| **PA2** | TX | AFPP | | +| **PA3** | RX | IN | | +| PD5 | TX | AFPP | USART2_REMAP | +| PD6 | RX | IN | USART2_REMAP | +| **USART3** | | | | +| **PB10** | TX | AFPP | | +| **PB11** | RX | IN | | +| PC10 | TX | AFPP | USART3_PARTIALREMAP | +| PC11 | RX | IN | USART3_PARTIALREMAP | +| PD8 | TX | AFPP | USART3_FULLREMAP | +| PD9 | RX | IN | USART3_FULLREMAP | diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index cca6827ec8..101798f211 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -72,20 +72,41 @@ WS2812_DRIVER = spi Configure the hardware via your config.h: ```c #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 WS2812_SPI_MOSI_PAL_MODE 5 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 +#define WS2812_SPI_SCK_PIN B3 // Required for F072, may be for others -- SCK pin, see the respective datasheet for the appropriate values for your MCU. default: unspecified +#define WS2812_SPI_SCK_PAL_MODE 5 // SCK pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 ``` You must also turn on the SPI feature in your halconf.h and mcuconf.h +#### Circular Buffer Mode +Some boards may flicker while in the normal buffer mode. To fix this issue, circular buffer mode may be used to rectify the issue. + +By default, the circular buffer mode is disabled. + +To enable this alternative buffer mode, place this into your `config.h` file: +```c +#define WS2812_SPI_USE_CIRCULAR_BUFFER +``` + +#### Setting baudrate with divisor +To adjust the baudrate at which the SPI peripheral is configured, users will need to derive the target baudrate from the clock tree provided by STM32CubeMX. + +Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware. + +|Define |Default|Description | +|--------------------|-------|-------------------------------------| +|`WS2812_SPI_DIVISOR`|`16` |SPI source clock peripheral divisor | + #### Testing Notes While not an exhaustive list, the following table provides the scenarios that have been partially validated: -| | SPI1 | SPI2 | SPI3 | -|-|-|-|-| -| f072 | ? | B15 :heavy_check_mark: | N/A | -| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A | -| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: | +| | SPI1 | SPI2 | SPI3 | +|------|---------------------------------------------|-----------------------------------------|-----------------------| +| f072 | ? | B15 :heavy_check_mark: (needs SCK: B13) | N/A | +| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A | +| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: | *Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.* @@ -102,11 +123,14 @@ Configure the hardware via your config.h: #define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 #define WS2812_PWM_CHANNEL 2 // default: 2 #define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 +//#define WS2812_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_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. ``` +Note that using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (TIM1, TIM8, TIM20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in mcuconf.h must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations. + You must also turn on the PWM feature in your halconf.h and mcuconf.h #### Testing Notes diff --git a/drivers/avr/spi_master.c b/drivers/avr/spi_master.c index 19ca0ced44..4e8fd3bcdf 100644 --- a/drivers/avr/spi_master.c +++ b/drivers/avr/spi_master.c @@ -14,10 +14,8 @@ * along with this program. If not, see . */ -#include - #include "spi_master.h" -#include "quantum.h" + #include "timer.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__) diff --git a/drivers/avr/spi_master.h b/drivers/avr/spi_master.h index 9203698dd5..8a30f47ae4 100644 --- a/drivers/avr/spi_master.h +++ b/drivers/avr/spi_master.h @@ -16,7 +16,9 @@ #pragma once -#include "quantum.h" +#include + +#include "gpio.h" typedef int16_t spi_status_t; diff --git a/drivers/chibios/analog.c b/drivers/chibios/analog.c index 2b3872afbb..8c476fcac2 100644 --- a/drivers/chibios/analog.c +++ b/drivers/chibios/analog.c @@ -101,7 +101,11 @@ // Options are 12, 10, 8, and 6 bit. #ifndef ADC_RESOLUTION -# define ADC_RESOLUTION ADC_CFGR1_RES_10BIT +# 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 = {}; @@ -119,7 +123,7 @@ static ADCConversionGroup adcConversionGroup = { .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... + .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), @@ -161,8 +165,8 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { 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_IN2, 3 ); - case B13: return TO_MUX( ADC_CHANNEL_IN3, 3 ); + 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 @@ -189,11 +193,52 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { 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) // TODO: add all pins +#elif defined(STM32F4XX) case A0: return TO_MUX( ADC_CHANNEL_IN0, 0 ); - //case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 ); -#elif defined(STM32F1XX) // TODO: add all pins + 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 } diff --git a/drivers/chibios/serial_usart.c b/drivers/chibios/serial_usart.c index 7c81b16464..cae29388c3 100644 --- a/drivers/chibios/serial_usart.c +++ b/drivers/chibios/serial_usart.c @@ -1,13 +1,20 @@ -#include "quantum.h" -#include "serial.h" -#include "print.h" +/* 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 - -#ifndef USART_CR1_M0 -# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so -#endif +#include "serial_usart.h" #ifndef USE_GPIOV1 // The default PAL alternate modes are used to signal that the pins are used for USART @@ -20,50 +27,10 @@ # define SERIAL_USART_DRIVER SD1 #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 - #ifdef SOFT_SERIAL_PIN # define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN #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 - static inline msg_t sdWriteHalfDuplex(SerialDriver* driver, uint8_t* data, uint8_t size) { msg_t ret = sdWrite(driver, data, size); @@ -123,6 +90,10 @@ __attribute__((weak)) void usart_init(void) { #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) { diff --git a/drivers/chibios/serial_usart.h b/drivers/chibios/serial_usart.h new file mode 100644 index 0000000000..fee7b4d159 --- /dev/null +++ b/drivers/chibios/serial_usart.h @@ -0,0 +1,90 @@ +/* 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 new file mode 100644 index 0000000000..cc9b889ac2 --- /dev/null +++ b/drivers/chibios/serial_usart_duplex.c @@ -0,0 +1,261 @@ +/* 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 index 8341b59a53..4852a6eba4 100644 --- a/drivers/chibios/spi_master.c +++ b/drivers/chibios/spi_master.c @@ -15,7 +15,7 @@ */ #include "spi_master.h" -#include "quantum.h" + #include "timer.h" static pin_t currentSlavePin = NO_PIN; diff --git a/drivers/chibios/spi_master.h b/drivers/chibios/spi_master.h index 5953bef77f..e93580e319 100644 --- a/drivers/chibios/spi_master.h +++ b/drivers/chibios/spi_master.h @@ -18,7 +18,9 @@ #include #include -#include "quantum.h" +#include + +#include "gpio.h" #ifndef SPI_DRIVER # define SPI_DRIVER SPID2 diff --git a/drivers/chibios/ws2812_pwm.c b/drivers/chibios/ws2812_pwm.c index 140120d488..e6af55b6b3 100644 --- a/drivers/chibios/ws2812_pwm.c +++ b/drivers/chibios/ws2812_pwm.c @@ -27,6 +27,15 @@ # error "please consult your MCU's datasheet and specify in your config.h: #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM?_UP" #endif +#ifndef WS2812_PWM_COMPLEMENTARY_OUTPUT +# define WS2812_PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH +#else +# if !STM32_PWM_USE_ADVANCED +# error "WS2812_PWM_COMPLEMENTARY_OUTPUT requires STM32_PWM_USE_ADVANCED == TRUE" +# endif +# define WS2812_PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH +#endif + // Push Pull or Open Drain Configuration // Default Push Pull #ifndef WS2812_EXTERNAL_PULLUP @@ -247,7 +256,7 @@ void ws2812_init(void) { .channels = { [0 ... 3] = {.mode = PWM_OUTPUT_DISABLED, .callback = NULL}, // Channels default to disabled - [WS2812_PWM_CHANNEL - 1] = {.mode = PWM_OUTPUT_ACTIVE_HIGH, .callback = NULL}, // Turn on the channel we care about + [WS2812_PWM_CHANNEL - 1] = {.mode = WS2812_PWM_OUTPUT_MODE, .callback = NULL}, // Turn on the channel we care about }, .cr2 = 0, .dier = TIM_DIER_UDE, // DMA on update event for next period diff --git a/drivers/chibios/ws2812_spi.c b/drivers/chibios/ws2812_spi.c index 89df2987b5..377a929b94 100644 --- a/drivers/chibios/ws2812_spi.c +++ b/drivers/chibios/ws2812_spi.c @@ -16,22 +16,63 @@ # define WS2812_SPI_MOSI_PAL_MODE 5 #endif +#ifndef WS2812_SPI_SCK_PAL_MODE +# define WS2812_SPI_SCK_PAL_MODE 5 +#endif + // Push Pull or Open Drain Configuration // Default Push Pull #ifndef WS2812_EXTERNAL_PULLUP # if defined(USE_GPIOV1) -# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL # else -# define WS2812_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_STM32_OTYPE_PUSHPULL # endif #else # if defined(USE_GPIOV1) -# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN # else -# define WS2812_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_STM32_OTYPE_OPENDRAIN # endif #endif +// Define SPI config speed +// baudrate should target 3.2MHz +// F072 fpclk = 48MHz +// 48/16 = 3Mhz +#if WS2812_SPI_DIVISOR == 2 +# define WS2812_SPI_DIVISOR (0) +#elif WS2812_SPI_DIVISOR == 4 +# define WS2812_SPI_DIVISOR (SPI_CR1_BR_0) +#elif WS2812_SPI_DIVISOR == 8 +# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1) +#elif WS2812_SPI_DIVISOR == 16 // same as default +# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) +#elif WS2812_SPI_DIVISOR == 32 +# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2) +#elif WS2812_SPI_DIVISOR == 64 +# define WS2812_SPI_DIVISOR (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) +#elif WS2812_SPI_DIVISOR == 256 +# define WS2812_SPI_DIVISOR (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 +#endif + +// Use SPI circular buffer +#ifdef WS2812_SPI_USE_CIRCULAR_BUFFER +# define WS2812_SPI_BUFFER_MODE 1 // circular buffer +#else +# define WS2812_SPI_BUFFER_MODE 0 // normal buffer +#endif + +#if defined(USE_GPIOV1) +# define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL +#else +# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL +#endif + #define BYTES_FOR_LED_BYTE 4 #define NB_COLORS 3 #define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS) @@ -78,17 +119,21 @@ static void set_led_color_rgb(LED_TYPE color, int pos) { } void ws2812_init(void) { - palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); + palSetLineMode(RGB_DI_PIN, WS2812_MOSI_OUTPUT_MODE); + +#ifdef WS2812_SPI_SCK_PIN + palSetLineMode(WS2812_SPI_SCK_PIN, WS2812_SCK_OUTPUT_MODE); +#endif // WS2812_SPI_SCK_PIN // TODO: more dynamic baudrate - static const SPIConfig spicfg = { - 0, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), - SPI_CR1_BR_1 | SPI_CR1_BR_0 // baudrate : fpclk / 8 => 1tick is 0.32us (2.25 MHz) - }; + static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR}; spiAcquireBus(&WS2812_SPI); /* Acquire ownership of the bus. */ spiStart(&WS2812_SPI, &spicfg); /* Setup transfer parameters. */ spiSelect(&WS2812_SPI); /* Slave Select assertion. */ +#ifdef WS2812_SPI_USE_CIRCULAR_BUFFER + spiStartSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); +#endif } void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { @@ -104,9 +149,11 @@ void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { // Send async - each led takes ~0.03ms, 50 leds ~1.5ms, animations flushing faster than send will cause issues. // Instead spiSend can be used to send synchronously (or the thread logic can be added back). -#ifdef WS2812_SPI_SYNC +#ifndef WS2812_SPI_USE_CIRCULAR_BUFFER +# ifdef WS2812_SPI_SYNC spiSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); -#else +# else spiStartSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); +# endif #endif } diff --git a/drivers/haptic/haptic.h b/drivers/haptic/haptic.h index 5d3bd1c310..ba8e0d20be 100644 --- a/drivers/haptic/haptic.h +++ b/drivers/haptic/haptic.h @@ -34,14 +34,14 @@ 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; - uint16_t reserved : 7; + 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; diff --git a/drivers/issi/is31fl3733.c b/drivers/issi/is31fl3733.c index dddf0cb734..d99e5339c9 100644 --- a/drivers/issi/is31fl3733.c +++ b/drivers/issi/is31fl3733.c @@ -68,7 +68,7 @@ uint8_t g_twi_transfer_buffer[20]; 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}, {0}}; +uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0}; bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; bool IS31FL3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) { diff --git a/drivers/oled/glcdfont.c b/drivers/oled/glcdfont.c index de58960189..0e201d71ee 100644 --- a/drivers/oled/glcdfont.c +++ b/drivers/oled/glcdfont.c @@ -4,7 +4,7 @@ // 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, + 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, 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, diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 92c64399e2..8e5ed5f070 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -24,6 +24,8 @@ along with this program. If not, see . #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 @@ -71,6 +73,11 @@ along with this program. If not, see . #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 @@ -108,7 +115,7 @@ bool oled_initialized = false; bool oled_active = false; bool oled_scrolling = false; uint8_t oled_brightness = OLED_BRIGHTNESS; -uint8_t oled_rotation = 0; +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; @@ -151,7 +158,13 @@ static void InvertCharacter(uint8_t *cursor) { } } -bool oled_init(uint8_t rotation) { +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; @@ -478,8 +491,9 @@ 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++) { - if (oled_buffer[i] == data[i]) continue; - oled_buffer[i] = data[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)); } } @@ -539,7 +553,13 @@ bool oled_on(void) { oled_timeout = timer_read32() + OLED_TIMEOUT; #endif - static const uint8_t PROGMEM display_on[] = {I2C_CMD, DISPLAY_ON}; + 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"); @@ -555,7 +575,13 @@ bool oled_off(void) { return !oled_active; } - static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF}; + 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"); diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index 72ab21247d..a6b85f37e6 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h @@ -154,10 +154,22 @@ along with this program. If not, see . # endif #endif +#if !defined(OLED_FADE_OUT_INTERVAL) +# define OLED_FADE_OUT_INTERVAL 0x00 +#endif + +#if OLED_FADE_OUT_INTERVAL > 0x0F || OLED_FADE_OUT_INTERVAL < 0x00 +# error OLED_FADE_OUT_INTERVAL must be between 0x00 and 0x0F +#endif + #if !defined(OLED_I2C_TIMEOUT) # define OLED_I2C_TIMEOUT 100 #endif +#if !defined(OLED_UPDATE_INTERVAL) && defined(SPLIT_KEYBOARD) +# define OLED_UPDATE_INTERVAL 50 +#endif + typedef struct __attribute__((__packed__)) { uint8_t *current_element; uint16_t remaining_element_count; @@ -214,13 +226,17 @@ void oled_write(const char *data, bool invert); void oled_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 oled_pan(bool left); // Returns a pointer to the requested start index in the buffer plus remaining // buffer length as struct oled_buffer_reader_t oled_read_raw(uint16_t start_index); +// Writes a string to the buffer at current cursor position void oled_write_raw(const char *data, uint16_t size); + +// Writes a single byte into the buffer at the specified index void oled_write_raw_byte(const char data, uint16_t index); // Sets a specific pixel on or off @@ -239,17 +255,11 @@ void oled_write_P(const char *data, bool invert); // Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM void oled_write_ln_P(const char *data, bool invert); +// Writes a PROGMEM string to the buffer at current cursor position void oled_write_raw_P(const char *data, uint16_t size); #else -// Writes a string to the buffer at current cursor position -// Advances the cursor while writing, inverts the pixels if true # define oled_write_P(data, invert) oled_write(data, 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 # define oled_write_ln_P(data, invert) oled_write(data, invert) - # define oled_write_raw_P(data, size) oled_write_raw(data, size) #endif // defined(__AVR__) diff --git a/drivers/qwiic/micro_oled.c b/drivers/qwiic/micro_oled.c index c7a4ee081d..8dfff6968f 100644 --- a/drivers/qwiic/micro_oled.c +++ b/drivers/qwiic/micro_oled.c @@ -70,25 +70,28 @@ static uint8_t micro_oled_screen_current[LCDWIDTH * LCDHEIGHT / 8] = {0}; D6 D6.............D6 / D7 D7.............D7 ---- */ - -#if LCDWIDTH == 64 -# if LCDHEIGHT == 48 +#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 +# 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 +# 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, @@ -99,10 +102,11 @@ 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, 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 +# 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) { @@ -145,7 +149,7 @@ void micro_oled_init(void) { #endif send_command(MEMORYMODE); - send_command(0x10); + send_command(0x02); // 0x02 = 10b, Page addressing mode send_command(SETCOMPINS); // 0xDA if (LCDHEIGHT > 32) { @@ -206,6 +210,8 @@ void clear_screen(void) { send_data(0); } } + + memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8); } /** \brief Clear SSD1306's memory. @@ -248,13 +254,14 @@ void send_buffer(void) { 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]; - col_addr = j + 1; } } } diff --git a/keyboards/crkbd/rev1/legacy/post_config.h b/keyboards/0xcb/1337/1337.c similarity index 62% rename from keyboards/crkbd/rev1/legacy/post_config.h rename to keyboards/0xcb/1337/1337.c index b3d6346cc8..142c24639a 100644 --- a/keyboards/crkbd/rev1/legacy/post_config.h +++ b/keyboards/0xcb/1337/1337.c @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +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 @@ -15,13 +14,21 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include "1337.h" -#pragma once - -#ifdef SSD1306OLED -# define USE_I2C +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 -#if defined(OLED_DRIVER_ENABLE) && (defined(USE_I2C) || defined(USE_MATRIX_I2C)) -# error Cannot use both legacy i2c driver and new i2c_master driver at the same time. Undefine USE_I2C and/or USE_MATRIX_I2C -#endif + eeconfig_update_kb(0); + eeconfig_init_user(); +} diff --git a/keyboards/0xcb/1337/1337.h b/keyboards/0xcb/1337/1337.h new file mode 100644 index 0000000000..7de5365d8b --- /dev/null +++ b/keyboards/0xcb/1337/1337.h @@ -0,0 +1,38 @@ +/* +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. + */ + #define LAYOUT( \ + KA1, KA2, KA3, \ + KB1, KB2, KB3, \ + KC1, KC2, KC3 \ + ) \ + { \ + { KA1, KA2, KA3 }, \ + { KB1, KB2, KB3 }, \ + { KC1, KC2, KC3 } \ + } diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h new file mode 100644 index 0000000000..6d25e49cc9 --- /dev/null +++ b/keyboards/0xcb/1337/config.h @@ -0,0 +1,77 @@ +/* +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" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB00 +#define PRODUCT_ID 0x1337 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 0xCB +#define PRODUCT 1337 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* Keyboard Matrix Assignments */ +#define DIRECT_PINS { \ + { D2, D4, F4 }, \ + { D7, B1, B3 }, \ + { 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 BACKLIGHT_PIN B5 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 7 + +#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_ANIMATIONS + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_RAINBOW_MOOD +#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 +/* Oled Size */ +#define OLED_DISPLAY_128X64 +#define OLED_FONT_END 255 +#define OLED_FONT_H "gfxfont.c" + +/* QMK DFU */ +#define QMK_LED B0 diff --git a/keyboards/0xcb/1337/gfxfont.c b/keyboards/0xcb/1337/gfxfont.c new file mode 100644 index 0000000000..4e7940b64a --- /dev/null +++ b/keyboards/0xcb/1337/gfxfont.c @@ -0,0 +1,276 @@ +/* +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" + +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, 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, 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, 0x0E, 0x0E, 0x06, 0x06, 0xFE, + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0C, 0x8E, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xCE, 0xFE, 0x7C, 0x00, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0xE6, 0xE6, 0x3E, 0x3E, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x06, 0x78, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0x1C, 0x02, 0x01, 0x04, 0x18, + 0x00, 0x00, 0x00, 0x02, 0x0C, 0x00, + 0x80, 0x80, 0x71, 0x02, 0x1C, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x78, 0x06, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, + 0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, + 0x00, 0x00, 0x40, 0xF0, 0xFC, 0xFF, + 0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x60, 0x60, 0x60, 0x60, 0x7F, + 0x7F, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x00, 0x30, 0x71, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x73, 0x7F, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, + 0x7F, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xBC, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x87, 0x38, 0x40, 0x80, 0x08, 0x08, + 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x00, 0x00, 0x80, 0x40, 0x38, 0x87, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0xBC, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, + 0xFC, 0xFE, 0xFC, 0xF8, 0xF9, 0xF3, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x00, 0x00, 0x80, 0x40, 0x20, + 0x10, 0xC8, 0xC8, 0x84, 0x04, 0x02, + 0x02, 0x02, 0x02, 0xC2, 0xC2, 0xC2, + 0xC2, 0xC4, 0xC4, 0xC8, 0x88, 0x90, + 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x0F, 0x70, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E, + 0x0F, 0x03, 0x00, 0xFF, 0xFF, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x70, 0x0F, 0x00, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, + 0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x03, + 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, + 0xDF, 0x9F, 0x3F, 0x3C, 0x70, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xF0, 0x0E, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x07, 0x1E, + 0x3C, 0xF0, 0xE0, 0xFF, 0xFF, 0x80, + 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xFF, + 0x3E, 0x00, 0x01, 0x0E, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x13, 0x23, 0x20, 0x40, + 0x40, 0x40, 0x40, 0x43, 0x43, 0x40, + 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, + 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, + 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, + 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0x00, 0x80, 0xC0, 0x70, 0x7C, 0x3F, + 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, + 0x07, 0x03, 0x03, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x03, 0x03, 0x07, + 0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E, + 0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00, +}; diff --git a/keyboards/0xcb/1337/info.json b/keyboards/0xcb/1337/info.json new file mode 100644 index 0000000000..67cb9d0d63 --- /dev/null +++ b/keyboards/0xcb/1337/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "0xCB 1337", + "url": "https://0xCB.dev", + "maintainer": "Conor-Burns", + "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/0xcb/1337/keymaps/default/keymap.c b/keyboards/0xcb/1337/keymaps/default/keymap.c new file mode 100644 index 0000000000..596ffabcc7 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/default/keymap.c @@ -0,0 +1,169 @@ +/* +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 +#include + +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) +) +}; + + +/* 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_DRIVER_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, 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 + }; + + 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 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 +} +void 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(); + } +} +#endif diff --git a/keyboards/0xcb/1337/keymaps/jakob/keymap.c b/keyboards/0xcb/1337/keymaps/jakob/keymap.c new file mode 100644 index 0000000000..14427ee6d8 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/jakob/keymap.c @@ -0,0 +1,169 @@ +/* +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 +#include + +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) +) +}; + + +/* 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_code16(C(A(KC_UP))); + } else { + tap_code16(C(A(KC_DOWN))); + } + } + return true; +} +#endif + +/* oled stuff :) */ +#ifdef OLED_DRIVER_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, 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 + }; + + 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 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 +} +void 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(); + } +} +#endif diff --git a/keyboards/nckiibs/vaneela/keymaps/via/rules.mk b/keyboards/0xcb/1337/keymaps/jakob/rules.mk similarity index 100% rename from keyboards/nckiibs/vaneela/keymaps/via/rules.mk rename to keyboards/0xcb/1337/keymaps/jakob/rules.mk diff --git a/keyboards/0xcb/1337/keymaps/via/keymap.c b/keyboards/0xcb/1337/keymaps/via/keymap.c new file mode 100644 index 0000000000..596ffabcc7 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/via/keymap.c @@ -0,0 +1,169 @@ +/* +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 +#include + +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) +) +}; + + +/* 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_DRIVER_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, 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 + }; + + 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 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 +} +void 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(); + } +} +#endif diff --git a/keyboards/nckiibs/vaneelaex/keymaps/via/rules.mk b/keyboards/0xcb/1337/keymaps/via/rules.mk similarity index 100% rename from keyboards/nckiibs/vaneelaex/keymaps/via/rules.mk rename to keyboards/0xcb/1337/keymaps/via/rules.mk diff --git a/keyboards/0xcb/1337/readme.md b/keyboards/0xcb/1337/readme.md new file mode 100644 index 0000000000..da54eb78fc --- /dev/null +++ b/keyboards/0xcb/1337/readme.md @@ -0,0 +1,25 @@ +# 0xCB 1337 + +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 +* PCB renders :) + +![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/top.png) + +![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/bottom.png) + + +To go to bootloader press row 0 col 0 key (top left) while plugging in the board. + +Make example for this keyboard (after setting up your build environment): + + make 0xcb/1337:default + +Flashing example for this keyboard: + + make 0xcb/1337: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/0xcb/1337/rules.mk b/keyboards/0xcb/1337/rules.mk new file mode 100644 index 0000000000..5469b415c2 --- /dev/null +++ b/keyboards/0xcb/1337/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = yes # Enable keyboard backlight functionality on B7 by default +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 diff --git a/keyboards/10bleoledhub/keymaps/default/keymap.c b/keyboards/10bleoledhub/keymaps/default/keymap.c index ee26168196..fec5f8f379 100644 --- a/keyboards/10bleoledhub/keymaps/default/keymap.c +++ b/keyboards/10bleoledhub/keymaps/default/keymap.c @@ -13,7 +13,7 @@ along with this program. If not, see .*/ /* Keymap _0: (Base Layer) Default Layer * .-----. - * |PGUP | + * |PGUP | * |-----------------. * | 7 | 8 | 9 | * |-----|-----|-----| @@ -37,12 +37,12 @@ along with this program. If not, see .*/ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT( KC_PGUP, - KC_KP_7, KC_KP_8, MO(1), + KC_KP_7, KC_KP_8, MO(1), KC_P4, KC_P5, KC_P6, KC_P1, KC_P2, KC_P3), - [1] = LAYOUT( + [1] = LAYOUT( KC_NUMLOCK, RGB_TOG, RGB_MOD, RGB_M_K, RGB_SAI, RGB_SAD, RGB_HUI, @@ -58,14 +58,15 @@ static void render_logo(void) { void oled_task_user(void) { render_logo(); } #endif -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); } else { tap_code(KC_PGUP); } - } + } + return true; } diff --git a/keyboards/10bleoledhub/keymaps/via/keymap.c b/keyboards/10bleoledhub/keymaps/via/keymap.c index d7e986acfc..6f78ac8af0 100644 --- a/keyboards/10bleoledhub/keymaps/via/keymap.c +++ b/keyboards/10bleoledhub/keymaps/via/keymap.c @@ -9,11 +9,11 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program. If not, see .*/ +along with this program. If not, see .*/ /* Keymap _0: (Base Layer) Default Layer * .-----. - * |PGUP | + * |PGUP | * |-----------------. * | 7 | 8 | 9 | * |-----|-----|-----| @@ -37,12 +37,12 @@ along with this program. If not, see .*/ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT( KC_PGUP, - KC_KP_7, KC_KP_8, MO(1), + KC_KP_7, KC_KP_8, MO(1), KC_P4, KC_P5, KC_P6, KC_P1, KC_P2, KC_P3), - [1] = LAYOUT( + [1] = LAYOUT( KC_NUMLOCK, RGB_TOG, RGB_MOD, RGB_M_K, RGB_SAI, RGB_SAD, RGB_HUI, @@ -58,14 +58,15 @@ static void render_logo(void) { void oled_task_user(void) { render_logo(); } #endif -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); } else { tap_code(KC_PGUP); } - } + } + return true; } diff --git a/keyboards/1upkeyboards/sweet16/keymaps/default/keymap.c b/keyboards/1upkeyboards/sweet16/keymaps/default/keymap.c index 4778d2108c..9ab912d7b5 100644 --- a/keyboards/1upkeyboards/sweet16/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/sweet16/keymaps/default/keymap.c @@ -27,7 +27,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE #include "encoder.h" -void encoder_update_user(int8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -35,5 +35,6 @@ void encoder_update_user(int8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } #endif diff --git a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c index ad9786ba7f..7e6d131307 100644 --- a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c +++ b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c @@ -91,21 +91,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { switch(keycode) { - case CLOUD: // (っ◕‿◕)っ + case CLOUD: if(record->event.pressed){ - send_unicode_hex_string("0028 3063 25D5 203F 25D5 0029 3063"); + send_unicode_string("(っ◕‿◕)っ"); } return false; break; - case FU: // t(-_-t) + case FU: if(record->event.pressed){ SEND_STRING("t(-_-t)"); } return false; break; - case HAPPYFACE: // ʘ‿ʘ + case HAPPYFACE: if(record->event.pressed){ - send_unicode_hex_string("0298 203F 0298"); + send_unicode_string("ʘ‿ʘ"); } return false; break; @@ -118,33 +118,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case SHRUG: // ¯\_(ツ)_/¯ + case SHRUG: if (record->event.pressed) { - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); + send_unicode_string("¯\\_(ツ)_/¯"); } return false; break; - case HEARTFACE: // ♥‿♥ + case HEARTFACE: if(record->event.pressed){ - send_unicode_hex_string("2665 203F 2665"); + send_unicode_string("♥‿♥"); } return false; break; - case DISFACE: // ಠ_ಠ + case DISFACE: if(record->event.pressed){ - send_unicode_hex_string("0CA0 005F 0CA0"); + send_unicode_string("ಠ_ಠ"); } return false; break; - case TFLIP: // (╯°□°)╯ ︵ ┻━┻ + case TFLIP: if(record->event.pressed){ - send_unicode_hex_string("0028 256F 00B0 25A1 00B0 0029 256F 0020 FE35 0020 253B 2501 253B"); + send_unicode_string("(╯°□°)╯ ︵ ┻━┻"); } return false; break; - case TFLIP2: // ┻━┻︵ \(°□°)/ ︵ ┻━┻ + case TFLIP2: if(record->event.pressed){ - send_unicode_hex_string("253B 2501 253B FE35 0020 005C 0028 00B0 25A1 00B0 0029 002F 0020 FE35 0020 253B 2501 253B"); + send_unicode_string("┻━┻︵ \\(°□°)/ ︵ ┻━┻"); } return false; break; @@ -212,4 +212,4 @@ uint32_t layer_state_set_user(uint32_t state) { break; } return state; -} \ No newline at end of file +} diff --git a/keyboards/1upkeyboards/sweet16/rules.mk b/keyboards/1upkeyboards/sweet16/rules.mk index d7e57eb33e..22f9c36e64 100644 --- a/keyboards/1upkeyboards/sweet16/rules.mk +++ b/keyboards/1upkeyboards/sweet16/rules.mk @@ -1,7 +1,7 @@ # Build Options # DEFAULT_FOLDER = 1upkeyboards/sweet16/v1 -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/1upkeyboards/sweet16/v2/promicro/promicro.c b/keyboards/1upkeyboards/sweet16/v2/promicro/promicro.c index 0176dc1a3c..d850a3b5c6 100644 --- a/keyboards/1upkeyboards/sweet16/v2/promicro/promicro.c +++ b/keyboards/1upkeyboards/sweet16/v2/promicro/promicro.c @@ -2,7 +2,7 @@ #include "encoder.h" #ifdef ENCODER_ENABLED -void encoder_update_kb(int8_t index, bool clockwise) { - encoder_update_user(index, clockwise); +bool encoder_update_kb(uint8_t index, bool clockwise) { + return encoder_update_user(index, clockwise); } #endif diff --git a/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk b/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk index 6fb15f5a83..fcfa05c3a1 100644 --- a/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk +++ b/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + ## Features CONSOLE_ENABLE = yes ENCODER_ENABLE = yes diff --git a/keyboards/2key2crawl/info.json b/keyboards/2key2crawl/info.json new file mode 100644 index 0000000000..18f58daf28 --- /dev/null +++ b/keyboards/2key2crawl/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "2Key2CrawlPad", + "url": "", + "maintainer": "qmk", + "width": 6.5, + "height": 2, + "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":"K15", "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":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K16", "x":5.5, "y":0.5} + ] + } + } +} diff --git a/keyboards/2key2crawl/keymaps/default/keymap.c b/keyboards/2key2crawl/keymaps/default/keymap.c index 71222d40f8..3e36b60707 100644 --- a/keyboards/2key2crawl/keymaps/default/keymap.c +++ b/keyboards/2key2crawl/keymaps/default/keymap.c @@ -16,7 +16,7 @@ void matrix_init_user(void) { -void encoder_update_user(int8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { tap_code(KC_PGUP); @@ -24,5 +24,5 @@ void encoder_update_user(int8_t index, bool clockwise) { tap_code(KC_PGDN); } } + return true; } - diff --git a/keyboards/2key2crawl/keymaps/tabs/keymap.c b/keyboards/2key2crawl/keymaps/tabs/keymap.c index fcf4a2af87..9066c3f2e6 100644 --- a/keyboards/2key2crawl/keymaps/tabs/keymap.c +++ b/keyboards/2key2crawl/keymaps/tabs/keymap.c @@ -14,7 +14,7 @@ void matrix_init_user(void) { debug_config.enable = 1; } -void encoder_update_user(int8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { tap_code16(C(KC_T)); @@ -22,5 +22,5 @@ void encoder_update_user(int8_t index, bool clockwise) { tap_code16(C(KC_W)); } } + return true; } - diff --git a/keyboards/2key2crawl/keymaps/vol/keymap.c b/keyboards/2key2crawl/keymaps/vol/keymap.c index 8ffd3f58c8..a45d3f7789 100644 --- a/keyboards/2key2crawl/keymaps/vol/keymap.c +++ b/keyboards/2key2crawl/keymaps/vol/keymap.c @@ -14,7 +14,7 @@ void matrix_init_user(void) { debug_config.enable = 1; } -void encoder_update_user(int8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { tap_code(KC_VOLU); @@ -22,4 +22,5 @@ void encoder_update_user(int8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/40percentclub/25/25.c b/keyboards/40percentclub/25/25.c index 54a42d263c..de1b038aa8 100644 --- a/keyboards/40percentclub/25/25.c +++ b/keyboards/40percentclub/25/25.c @@ -44,7 +44,7 @@ void led_set_kb(uint8_t usb_led) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{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}}, diff --git a/keyboards/40percentclub/25/info.json b/keyboards/40percentclub/25/info.json index abb77a0677..ed73de2c7e 100644 --- a/keyboards/40percentclub/25/info.json +++ b/keyboards/40percentclub/25/info.json @@ -5,7 +5,7 @@ "width": 6, "height": 2, "layouts": { - "LAYOUT_macro": { + "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}, @@ -15,7 +15,7 @@ {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4} ] }, - "LAYOUT_split": { + "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}, diff --git a/keyboards/40percentclub/4x4/4x4.h b/keyboards/40percentclub/4x4/4x4.h index 359cdc80a1..8cc5a150aa 100644 --- a/keyboards/40percentclub/4x4/4x4.h +++ b/keyboards/40percentclub/4x4/4x4.h @@ -56,16 +56,3 @@ { 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 } \ } - -#define LAYOUT_kc_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 \ -) \ -{ \ - { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0a, KC_##K0b, ___, ___, ___, ___}, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1a, KC_##K1b, ___, ___, ___, ___}, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2a, KC_##K2b, ___, ___, ___, ___}, \ - { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3a, KC_##K3b, ___, ___, ___, ___} \ -} diff --git a/keyboards/40percentclub/4x4/info.json b/keyboards/40percentclub/4x4/info.json new file mode 100644 index 0000000000..83012f0136 --- /dev/null +++ b/keyboards/40percentclub/4x4/info.json @@ -0,0 +1,197 @@ +{ + "keyboard_name": "40percent.club 4x4", + "url": "", + "maintainer": "qmk", + "height": 4, + "width": 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} + ] + }, + "LAYOUT_ortho_4x8": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "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":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":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} + ] + }, + "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_ortho_4x16": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"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} + ] + } + } +} diff --git a/keyboards/40percentclub/5x5/info.json b/keyboards/40percentclub/5x5/info.json new file mode 100644 index 0000000000..1c1df8eda9 --- /dev/null +++ b/keyboards/40percentclub/5x5/info.json @@ -0,0 +1,183 @@ +{ + "keyboard_name": "40percent.club 4x4", + "url": "", + "maintainer": "qmk", + "height": 4, + "width": 4, + "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} + ] + }, + "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} + ] + }, + "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/6lit/6lit.c b/keyboards/40percentclub/6lit/6lit.c index fd3ae7d009..59d7e33bd6 100644 --- a/keyboards/40percentclub/6lit/6lit.c +++ b/keyboards/40percentclub/6lit/6lit.c @@ -44,7 +44,7 @@ void led_set_kb(uint8_t usb_led) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{2, 2}, {1, 2}, {0, 2}}, {{2, 3}, {1, 3}, {0, 3}}, {{0, 0}, {1, 0}, {2, 0}}, diff --git a/keyboards/40percentclub/6lit/info.json b/keyboards/40percentclub/6lit/info.json index ce1a7d6e16..dafebea1c1 100644 --- a/keyboards/40percentclub/6lit/info.json +++ b/keyboards/40percentclub/6lit/info.json @@ -5,14 +5,14 @@ "width": 6, "height": 2, "layouts": { - "LAYOUT_macro": { + "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_split": { + "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}, diff --git a/keyboards/40percentclub/foobar/foobar.c b/keyboards/40percentclub/foobar/foobar.c index c032056a15..b0a1518df1 100644 --- a/keyboards/40percentclub/foobar/foobar.c +++ b/keyboards/40percentclub/foobar/foobar.c @@ -44,7 +44,7 @@ void led_set_kb(uint8_t usb_led) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, diff --git a/keyboards/40percentclub/foobar/info.json b/keyboards/40percentclub/foobar/info.json index c9bbda67c9..8b44ae5977 100644 --- a/keyboards/40percentclub/foobar/info.json +++ b/keyboards/40percentclub/foobar/info.json @@ -5,7 +5,7 @@ "width": 10, "height": 3, "layouts": { - "LAYOUT_macro": { + "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}, @@ -13,7 +13,7 @@ {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2} ] }, - "LAYOUT_split": { + "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}, diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk index db971e00ef..18a35b275f 100644 --- a/keyboards/40percentclub/gherkin/rules.mk +++ b/keyboards/40percentclub/gherkin/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk index 6da5cd05a6..3e42dddd6c 100644 --- a/keyboards/40percentclub/luddite/rules.mk +++ b/keyboards/40percentclub/luddite/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c b/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c index 6f9179926c..011d03deba 100644 --- a/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c +++ b/keyboards/40percentclub/mf68/keymaps/delivrance/keymap.c @@ -20,8 +20,6 @@ #include QMK_KEYBOARD_H -#define KC_ KC_TRNS - #define KC_FN1 MO(_FN) #define KC_FN2 LT(_FN, KC_CAPS) @@ -54,30 +52,30 @@ enum { // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QWERTY] = LAYOUT_kc( /* Default layer +[_QWERTY] = LAYOUT_68_ansi( /* Default layer ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */ - GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , BSPC , INS ,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_BSPC , KC_INS ,KC_PGUP, /* ┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫ */ - TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN, /* + KC_TAB , KC_Q , KC_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, /* ┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛ */ - FN2 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , /* + KC_FN2 , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, KC_ENTER , /* ┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓ */ - LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , 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 , /* ┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓ */ - LCTL ,LGUI ,LALT , SPACE ,RALT , FN1 ,RCTL , LEFT,DOWN,RGHT /* + KC_LCTL ,KC_LGUI ,KC_LALT , KC_SPACE ,KC_RALT , KC_FN1 ,KC_RCTL , KC_LEFT,KC_DOWN,KC_RGHT /* ┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛ ┗━━━━┻━━━━┻━━━━┛ */), -[_FN] = LAYOUT_kc( /* FN & CAPS layer +[_FN] = LAYOUT_68_ansi( /* FN & CAPS layer ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */ - GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, F11, F12, RSTP , PSCR,HOME, /* + KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12, KC_RSTP , KC_PSCR,KC_HOME, /* ┣Esc ┻ 1! ┻ 2@ ┻ 3# ┻ 4$ ┻ 5% ┻ 6^ ┻ 7& ┻ 8* ┻ 9( ┻ 0) ┻ -_ ┻ =+ ┻━┳━ ←─ ━┫ ┣Ins ╋PgUp┫ */ - ,PLY1,PLY2, , , , , , 7 , 8 , 9 ,BLDN,BLUP,BLTOG , ,END , /* + _______ ,KC_PLY1,KC_PLY2,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_7 , KC_8 , KC_9 ,KC_BLDN,KC_BLUP,KC_BLTOG ,KC_TRNS ,KC_END , /* ┣ Tab ━┻ Q ━┻ W ━┻ E ━┻ R ━┻ T ━┻ Y ━┻ U ━┻ I ━┻ O ━┻ P ━┻ [{ ┻ ]} ┻━ \| ━┫ ┗Del ┻PgDn┛ */ - , , , , , , , , 4 , 5 , 6 , , TERM , /* + _______ ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_4 , KC_5 , KC_6 ,KC_TRNS, KC_TERM , /* ┣━ Caps ━┻ A ━┻ S ━┻ D ━┻ F ━┻ G ━┻ H ━┻ J ━┻ K ━┻ L ━┻ ;: ┻ '" ┻━ Enter ━┫ ┏━━━━┓ */ - ,REC1,REC2, , ,MSTP, ,MUTE, 1 , 2 , 3 , , VOLU, /* + _______ ,KC_REC1,KC_REC2,KC_TRNS,KC_TRNS,KC_MSTP,KC_TRNS,KC_MUTE, KC_1 , KC_2 , KC_3 ,KC_TRNS , KC_VOLU, /* ┣━━ Shift ━┻ Z ━┻ X ━┻ C ━┻ V ━┻ B ━┻ N ━┻ M ━┻ ,< ┻ .> ╋ /? ┻┳━━ Shift ━━┻━╋ ↑ ━╋━━━━┓ */ - , , , MPLY , 0 , , , MPRV,VOLD,MNXT /* + _______,KC_TRNS ,KC_TRNS , KC_MPLY , KC_0 ,KC_TRNS ,KC_TRNS , KC_MPRV,KC_VOLD,KC_MNXT /* ┗Ctrl ┻ GUI ┻ Alt ┻━━━━━━━━━━━━ Space ━━━━━━━━━━━━┻ Alt ┻ Fn ━┻Ctrl ┛ ┗ ← ━┻ ↓ ━┻ → ━┛ */) }; // clang-format on diff --git a/keyboards/40percentclub/mf68/keymaps/factory/keymap.c b/keyboards/40percentclub/mf68/keymaps/factory/keymap.c deleted file mode 100644 index 12032350cd..0000000000 --- a/keyboards/40percentclub/mf68/keymaps/factory/keymap.c +++ /dev/null @@ -1,59 +0,0 @@ -#include QMK_KEYBOARD_H - -#define _QWERTY 0 -#define _FN1 1 -#define _FN2 2 -#define KC_ KC_TRNS -#define KC_X0 LT(_FN2, KC_CAPS) -#define KC_X1 MO(_FN1) -#define KC_X2 BL_STEP -#define KC_X3 BL_BRTG -#define KC_X4 BL_TOGG -#define KC_X5 BL_INC -#define KC_X6 BL_DEC - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( - /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , BSPC , INS ,PGUP, - /*|----`----`----`----`----`----`----`----`----`----`----`----`----`--------| |----`----| */ - TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN, - /*|------`----`----`----`----`----`----`----`----`----`----`----`----`------| `----`----' */ - X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , - /*|-------`----`----`----`----`----`----`----`----`----`----`----`----------| ,----. */ - LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , UP , - /*|---------`----`----`----`----`----`----`----`----`----`----`-------------.--|----|----. */ - LCTL ,LGUI ,LALT , SPACE , X1 ,RALT ,RCTL , LEFT,DOWN,RGHT - /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */ - ), - - [_FN1] = LAYOUT_kc( - /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , ,HOME, - /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ - , , UP , , , , , , ,PSCR,SLCK,PAUS, X2 , , ,END, - /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ - X0 ,LEFT,DOWN,RGHT, , X6 , X5 , X4 , X3 , X2 ,HOME, , , - /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ - , ,MPLY,MSTP,MPRV,MNXT,VOLD,VOLU,MUTE, ,END , , X5 , - /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ - , , , , , , , X3 , X6 , X4 - /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ - ), - - [_FN2] = LAYOUT_kc( - /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME, - /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ - , , , UP , , , , 7 , 8 , 9 , , , , , VOLD,END, - /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ - , ,LEFT,DOWN,RGHT, , , 4 , 5 , 6 , , , , - /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ - , , , , , , 0 , 1 , 2 , 3 , , , MUTE, - /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ - , , , , , , , MPRV,MPLY,MNXT - /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ - ) -}; diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/keymap.c b/keyboards/40percentclub/mf68/keymaps/mf68_ble/keymap.c index ae7e7297cb..0002263de5 100644 --- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/keymap.c +++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/keymap.c @@ -3,51 +3,50 @@ #define _QWERTY 0 #define _FN1 1 #define _FN2 2 -#define KC_ KC_TRNS #define KC_X0 LT(_FN2, KC_GRV) #define KC_X1 MO(_FN1) #define KC_X2 BL_STEP const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT_68_ansi( /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , BSPC , INS ,PGUP, + KC_ESC , KC_1 , KC_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, /*|----`----`----`----`----`----`----`----`----`----`----`----`----`--------| |----`----| */ - TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN, + KC_TAB , KC_Q , KC_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, /*|------`----`----`----`----`----`----`----`----`----`----`----`----`------| `----`----' */ - X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , + 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_ENTER , /*|-------`----`----`----`----`----`----`----`----`----`----`----`----------| ,----. */ - LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , 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 , /*|---------`----`----`----`----`----`----`----`----`----`----`-------------.--|----|----. */ - LCTL ,LGUI ,LALT , SPACE , X1 ,RALT ,RCTL , LEFT,DOWN,RGHT + KC_LCTL ,KC_LGUI ,KC_LALT , KC_SPACE , KC_X1 ,KC_RALT ,KC_RCTL , KC_LEFT,KC_DOWN,KC_RGHT /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */ ), - [_FN1] = LAYOUT_kc( + [_FN1] = LAYOUT_68_ansi( /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME, + KC_GRV , KC_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_VOLU,KC_HOME, /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ - , , , UP , , , , , , , , , X2 , , VOLD,END, + 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_X2 , KC_TRNS, KC_VOLD,KC_END, /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ - , ,LEFT,DOWN,RGHT, , , , , , , , , + 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, /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ - , , , , , , ,MUTE, , , , , MUTE, + 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_MUTE, /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ - , , , , , , , MPRV,MPLY,MNXT + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV,KC_MPLY,KC_MNXT /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ ), - [_FN2] = LAYOUT_kc( + [_FN2] = LAYOUT_68_ansi( /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ - GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME, + KC_GRV , KC_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_VOLU,KC_HOME, /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ - , , , UP , , , , 7 , 8 , 9 , , , , , VOLD,END, + KC_TRNS,KC_TRNS,KC_TRNS, KC_UP ,KC_TRNS,KC_TRNS,KC_TRNS, KC_7 , KC_8 , KC_9 ,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_VOLD,KC_END, /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ - , ,LEFT,DOWN,RGHT, , , 4 , 5 , 6 , , , , + KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS, KC_4 , KC_5 , KC_6 ,KC_TRNS,KC_TRNS, KC_TRNS, /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ - , , , , , , 0 , 1 , 2 , 3 , , , MUTE, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_0 , KC_1 , KC_2 , KC_3 ,KC_TRNS, KC_TRNS, KC_MUTE, /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ - , , , , , , , MPRV,MPLY,MNXT + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV,KC_MPLY,KC_MNXT /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ ) }; diff --git a/keyboards/40percentclub/mf68/mf68.h b/keyboards/40percentclub/mf68/mf68.h index 6844ed1b09..71ee4229de 100644 --- a/keyboards/40percentclub/mf68/mf68.h +++ b/keyboards/40percentclub/mf68/mf68.h @@ -18,20 +18,3 @@ { K60, K61, K62, K63, K64, K65, K66, K67, K68 }, \ { K70, K71, K72, K73, K74, KC_NO, KC_NO, KC_NO, KC_NO } \ } - -#define LAYOUT_kc( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, 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 \ -) LAYOUT_68_ansi( \ - KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, \ - KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, \ - KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, \ - KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, \ - KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_##K48, \ - KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, KC_##K58, \ - KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68, \ - KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74 \ -) diff --git a/keyboards/40percentclub/nano/info.json b/keyboards/40percentclub/nano/info.json index b135a2d097..1ae0512825 100644 --- a/keyboards/40percentclub/nano/info.json +++ b/keyboards/40percentclub/nano/info.json @@ -5,7 +5,7 @@ "width": 4, "height": 2, "layouts": { - "LAYOUT": { + "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/nori/nori.h b/keyboards/40percentclub/nori/nori.h index 802f0bfce6..ffcc396218 100644 --- a/keyboards/40percentclub/nori/nori.h +++ b/keyboards/40percentclub/nori/nori.h @@ -54,16 +54,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_kc_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 \ -) \ -{ \ - { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0a, KC_##K0b }, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1a, KC_##K1b }, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2a, KC_##K2b }, \ - { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3a, KC_##K3b } \ -} diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk index 312134b7c0..80b40c719c 100644 --- a/keyboards/40percentclub/tomato/rules.mk +++ b/keyboards/40percentclub/tomato/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk index 50868429ac..3c8a8f68f5 100644 --- a/keyboards/40percentclub/ut47/rules.mk +++ b/keyboards/40percentclub/ut47/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/40percentclub/ut47/ut47.h b/keyboards/40percentclub/ut47/ut47.h index f6456fe911..f595d3a458 100644 --- a/keyboards/40percentclub/ut47/ut47.h +++ b/keyboards/40percentclub/ut47/ut47.h @@ -29,18 +29,3 @@ { 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_kc( \ - 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 \ -) \ - LAYOUT( \ - KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0a, KC_##K0b, \ - KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1a, KC_##K1b, \ - KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2a, KC_##K2b, \ - KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K37, KC_##K38, KC_##K39, KC_##K3a, KC_##K3b \ - ) - -#define LAYOUT_kc_ut47 LAYOUT_kc diff --git a/keyboards/45_ats/keymaps/default/keymap.c b/keyboards/45_ats/keymaps/default/keymap.c index 28941b173f..de69c4b05e 100644 --- a/keyboards/45_ats/keymaps/default/keymap.c +++ b/keyboards/45_ats/keymaps/default/keymap.c @@ -1,20 +1,20 @@ - /* + /* Copyright 2020 Alec Penland Copyright 2020 Garret Gartner - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General 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 @@ -31,7 +31,7 @@ enum ats_layers{ #define RS_SLS RSFT_T(KC_SLSH) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Default QWERTY layer + /* Default QWERTY layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ @@ -96,7 +96,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -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_VOLU); @@ -104,4 +104,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/45_ats/keymaps/via/keymap.c b/keyboards/45_ats/keymaps/via/keymap.c index 28941b173f..de69c4b05e 100644 --- a/keyboards/45_ats/keymaps/via/keymap.c +++ b/keyboards/45_ats/keymaps/via/keymap.c @@ -1,20 +1,20 @@ - /* + /* Copyright 2020 Alec Penland Copyright 2020 Garret Gartner - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General 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 @@ -31,7 +31,7 @@ enum ats_layers{ #define RS_SLS RSFT_T(KC_SLSH) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Default QWERTY layer + /* Default QWERTY layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ @@ -96,7 +96,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -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_VOLU); @@ -104,4 +104,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json new file mode 100644 index 0000000000..8929314232 --- /dev/null +++ b/keyboards/4pplet/aekiso60/rev_a/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "AEKISO60 Rev A", + "url": "", + "maintainer": "4pplet", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0, "w":1.25}, + {"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":13.25, "y":0, "w":1.75}, + + {"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":11.75, "y":1}, + {"x":12.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}, + {"x":13, "y":2}, + {"x":14, "y":1, "h":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}, + {"x":12.5, "y":3, "w":1.5}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.25}, + {"x":2.75, "y":4, "w":1.5}, + {"x":4.25, "y":4, "w":2.75}, + {"x":7, "y":4}, + {"x":8, "y":4, "w":2.75}, + {"x":10.75, "y":4, "w":1.5}, + {"x":12.25, "y":4, "w":1.25}, + {"x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/4pplet/eagle_viper_rep/info.json b/keyboards/4pplet/eagle_viper_rep/info.json new file mode 100644 index 0000000000..dced671bca --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Eagle/Viper Rep", + "url": "https://github.com/4pplet/eagle_viper_rep", + "maintainer": "4pplet", + "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": "Backsp.", "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": "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 }, + { "label": "Space", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Menu", "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/4pplet/eagle_viper_rep/keymaps/default/keymap.c b/keyboards/4pplet/eagle_viper_rep/keymaps/default/keymap.c new file mode 100644 index 0000000000..addf690e4a --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/keymaps/default/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_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_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_NO, KC_RALT, KC_RGUI, MO(1)), + // 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, KC_TRNS) +}; diff --git a/keyboards/4pplet/eagle_viper_rep/keymaps/via/keymap.c b/keyboards/4pplet/eagle_viper_rep/keymaps/via/keymap.c new file mode 100644 index 0000000000..70e55ceb7e --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* +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_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_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_NO, KC_RALT, KC_RGUI, MO(1)), +// 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, 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, 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, KC_TRNS), +// extra layer for VIA +[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) +}; diff --git a/keyboards/4pplet/eagle_viper_rep/keymaps/via/rules.mk b/keyboards/4pplet/eagle_viper_rep/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/4pplet/eagle_viper_rep/readme.md b/keyboards/4pplet/eagle_viper_rep/readme.md new file mode 100644 index 0000000000..76415fd6c0 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/readme.md @@ -0,0 +1,19 @@ +# Viper/Eagle REP Rev A + +A alternative PCB for Viper and Eagle V2 and V3 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: Viper/Eagle REP Rev A + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/eagle_viper_rep/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). + +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, dissconnect the keyboard from your PC and reconnect it. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. Bootmagic lite is enabled by default. diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/chconf.h b/keyboards/4pplet/eagle_viper_rep/rev_a/chconf.h new file mode 100644 index 0000000000..9e81d8c4a0 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/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_RESOLUTION 16 + +#include_next diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h new file mode 100644 index 0000000000..4edb4754e9 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h @@ -0,0 +1,72 @@ +/* +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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4444 +#define PRODUCT_ID 0x0007 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 4pplet +#define PRODUCT Eagle Viper REP Rev A + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +#define MATRIX_COL_PINS { A0, B1, B0, A4, B5, B4, B3 } +#define MATRIX_ROW_PINS { A2, A1, B8, A10, C15, A15, B7, B6, C14, C13} +#define DIODE_DIRECTION COL2ROW + +/* In switch leds */ +#define BACKLIGHT_PIN A3 +#define BACKLIGHT_PWM_DRIVER PWMD2 +#define BACKLIGHT_PWM_CHANNEL 4 +#define BACKLIGHT_PAL_MODE 2 +#define BACKLIGHT_ON_STATE 1 +#define BACKLIGHT_LEVELS 10 +#define BACKLIGHT_BREATHING TRUE + +/* Underglow */ +#define RGB_DI_PIN A7 +#define WS2812_SPI SPID1 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN A5 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define RGBLED_NUM 16 +#define RGBLIGHT_ANIMATIONS + +/* 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 leds */ +#define LOCK_LIGHTS TRUE +#define DISPLAY_LAYERS TRUE +#define CAPS_PIN B2 +#define NUM_PIN B12 +#define SCROLL_PIN B13 +#define LAYER_1 B14 +#define LAYER_2 B15 +#define LAYER_3 A8 +#define LAYER_4 A9 +#define LAYER_5 B9 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Added extra layer for use of layer leds */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/halconf.h b/keyboards/4pplet/eagle_viper_rep/rev_a/halconf.h new file mode 100644 index 0000000000..b0dad8d4a4 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/halconf.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 HAL_USE_I2C FALSE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/mcuconf.h b/keyboards/4pplet/eagle_viper_rep/rev_a/mcuconf.h new file mode 100644 index 0000000000..ffa97b392c --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/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_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +/* Reallocate the SysTick timer from TIM2 to TIM3, TIM2 is used for in switch leds */ +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 3 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/readme.md b/keyboards/4pplet/eagle_viper_rep/rev_a/readme.md new file mode 100644 index 0000000000..76415fd6c0 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/readme.md @@ -0,0 +1,19 @@ +# Viper/Eagle REP Rev A + +A alternative PCB for Viper and Eagle V2 and V3 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: Viper/Eagle REP Rev A + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/eagle_viper_rep/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). + +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, dissconnect the keyboard from your PC and reconnect it. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. Bootmagic lite is enabled by default. diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.c b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.c new file mode 100644 index 0000000000..2971460bd2 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.c @@ -0,0 +1,108 @@ +/* +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" + +void board_init(void) { + setPinInputHigh(CAPS_PIN); + setPinInputHigh(SCROLL_PIN); + setPinInputHigh(NUM_PIN); +} + +/* Set indicator leds to indicate lock states */ +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res && LOCK_LIGHTS) { + if(led_state.caps_lock){ + setPinOutput(CAPS_PIN); + writePin(CAPS_PIN, 0); + } + else + setPinInputHigh(CAPS_PIN); + if(led_state.scroll_lock){ + setPinOutput(SCROLL_PIN); + writePin(SCROLL_PIN, 0); + } + else + setPinInputHigh(SCROLL_PIN); + if(led_state.num_lock){ + setPinOutput(NUM_PIN); + writePin(NUM_PIN, 0); + } + else + setPinInputHigh(NUM_PIN); + } + return res; +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + if(DISPLAY_LAYERS){ + setLayerLed(state); + } + return state; +} +/* Set indicator leds to indicate which layer is active */ +void setLayerLed(layer_state_t state){ + switch(get_highest_layer(state)){ + case 0 : + setPinOutput(LAYER_1); + writePin(LAYER_1, 0); + setPinInputHigh(LAYER_2); + setPinInputHigh(LAYER_3); + setPinInputHigh(LAYER_4); + setPinInputHigh(LAYER_5); + break; + case 1 : + setPinOutput(LAYER_2); + writePin(LAYER_2, 0); + setPinInputHigh(LAYER_1); + setPinInputHigh(LAYER_3); + setPinInputHigh(LAYER_4); + setPinInputHigh(LAYER_5); + break; + case 2 : + setPinOutput(LAYER_3); + writePin(LAYER_3, 0); + setPinInputHigh(LAYER_1); + setPinInputHigh(LAYER_2); + setPinInputHigh(LAYER_4); + setPinInputHigh(LAYER_5); + break; + case 3 : + writePin(LAYER_4, 0); + setPinInputHigh(LAYER_5); + setPinInputHigh(LAYER_1); + setPinInputHigh(LAYER_2); + setPinInputHigh(LAYER_3); + setPinOutput(LAYER_4); + break; + case 4 : + setPinOutput(LAYER_5); + writePin(LAYER_5, 0); + setPinInputHigh(LAYER_1); + setPinInputHigh(LAYER_2); + setPinInputHigh(LAYER_3); + setPinInputHigh(LAYER_4); + break; + default : + setPinInputHigh(LAYER_1); + setPinInputHigh(LAYER_2); + setPinInputHigh(LAYER_3); + setPinInputHigh(LAYER_4); + setPinInputHigh(LAYER_5); + } +} diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h new file mode 100644 index 0000000000..5dac41f921 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h @@ -0,0 +1,41 @@ +/* +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" + +void setLayerLed(layer_state_t state); + +#define LAYOUT_all( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\ + k80, k90, k91, k93, k94, k85, k95, k86 \ +) \ +{ \ + {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, KC_NO, KC_NO, KC_NO, KC_NO, k85, k86}, \ + {k90, k91, KC_NO, k93, k94, k95, k96} \ +} diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk new file mode 100644 index 0000000000..2a1539ed5d --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F072 + +# 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 = 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 +RGBLIGHT_ENABLE = yes +WS2812_DRIVER = spi + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/4pplet/steezy60/rev_a/info.json b/keyboards/4pplet/steezy60/rev_a/info.json new file mode 100644 index 0000000000..1944187139 --- /dev/null +++ b/keyboards/4pplet/steezy60/rev_a/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "Steezy60 Rev A", + "url": "", + "maintainer": "4pplet", + "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}, + {"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, "w":2.25}, + {"x":6.25, "y":4, "w":1.5}, + {"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/6ball/info.json b/keyboards/6ball/info.json new file mode 100644 index 0000000000..ec95560c6a --- /dev/null +++ b/keyboards/6ball/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "6-Ball", + "url": "", + "maintainer": "qmk", + "width": 3, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, + {"x":1, "y":0}, + {"x":2, "y":0.5}, + + {"x":0, "y":1.5}, + {"x":1, "y":2}, + {"x":2, "y":1.5} + ] + } + } +} diff --git a/keyboards/7c8/framework/info.json b/keyboards/7c8/framework/info.json new file mode 100644 index 0000000000..5be8d09374 --- /dev/null +++ b/keyboards/7c8/framework/info.json @@ -0,0 +1,210 @@ +{ + "keyboard_name": "Framework", + "url": "", + "maintainer": "stevennguyen", + "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} + ] + }, + "LAYOUT_ortho_5x12_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_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} + ] + } + } +} diff --git a/keyboards/7c8/framework/keymaps/default/keymap.c b/keyboards/7c8/framework/keymaps/default/keymap.c index 57dbbfee05..592cd02195 100644 --- a/keyboards/7c8/framework/keymaps/default/keymap.c +++ b/keyboards/7c8/framework/keymaps/default/keymap.c @@ -73,7 +73,7 @@ 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 (index == 0) { switch (get_highest_layer(layer_state)) { case _BASE: @@ -93,7 +93,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; case _RAISE: - if (clockwise) { + if (clockwise) { tap_code16(LCTL(KC_RGHT)); } else { tap_code16(LCTL(KC_LEFT)); @@ -120,6 +120,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; } } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/7c8/framework/keymaps/steven/keymap.c b/keyboards/7c8/framework/keymaps/steven/keymap.c index be279f107c..77134db5bc 100644 --- a/keyboards/7c8/framework/keymaps/steven/keymap.c +++ b/keyboards/7c8/framework/keymaps/steven/keymap.c @@ -115,9 +115,9 @@ void matrix_scan_user(void) { tap_code16(G(KC_D)); } } -} +} -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { uint8_t layer = get_highest_layer(layer_state); if (index == 0) { if (clockwise) { @@ -126,4 +126,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code16(dynamic_keymap_get_keycode(layer, 10, 0)); } } -} \ No newline at end of file + return true; +} diff --git a/keyboards/7c8/framework/keymaps/via/keymap.c b/keyboards/7c8/framework/keymaps/via/keymap.c index a2a353d85f..2fc572b4df 100644 --- a/keyboards/7c8/framework/keymaps/via/keymap.c +++ b/keyboards/7c8/framework/keymaps/via/keymap.c @@ -78,7 +78,7 @@ 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) { uint8_t layer = get_highest_layer(layer_state); if (index == 0) { if (clockwise) { @@ -87,4 +87,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code16(dynamic_keymap_get_keycode(layer, 10, 0)); } } + return true; } diff --git a/keyboards/7c8/framework/keymaps/via/rules.mk b/keyboards/7c8/framework/keymaps/via/rules.mk index 036bd6d1c3..9905283151 100644 --- a/keyboards/7c8/framework/keymaps/via/rules.mk +++ b/keyboards/7c8/framework/keymaps/via/rules.mk @@ -1 +1,2 @@ -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes +LEADER_ENABLE = no diff --git a/keyboards/abacus/keymaps/unicodemap/keymap.c b/keyboards/abacus/keymaps/unicodemap/keymap.c index c1d5bd8827..8a2a33889b 100644 --- a/keyboards/abacus/keymaps/unicodemap/keymap.c +++ b/keyboards/abacus/keymaps/unicodemap/keymap.c @@ -75,12 +75,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LOWER] = LAYOUT( NICKURL, 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_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_SNAKE, RGB_MODE_KNIGHT, RGB_MODE_GRADIENT, XXXXXXX, RGB_TOG, + _______, KC_F11, KC_F12, RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_SNAKE, RGB_MODE_KNIGHT, RGB_MODE_GRADIENT, XXXXXXX, RGB_TOG, _______, X(LOVEEYES), X(THINK), X(UPSIDEDOWN), X(NOMOUTH), X(PARTY), X(PEACH), X(HEART), X(EGGPLANT), X(EMOJI100), X(EMOJIB), RGB_HUI, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______ ) - - + + }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -93,7 +93,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; break; - + case ALTTAB: if (record->event.pressed) { tap_code16(A(KC_TAB)); @@ -108,7 +108,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } -void dip_switch_update_user(uint8_t index, bool active) { +void dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if(active) { @@ -132,7 +132,7 @@ void matrix_init_user(void) { set_unicode_input_mode(UC_WINC); } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { switch(get_highest_layer(layer_state)) { case _BASE: @@ -145,4 +145,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { clockwise ? tap_code(KC_MEDIA_NEXT_TRACK) : tap_code(KC_MEDIA_PREV_TRACK); break; } + return true; } diff --git a/keyboards/absinthe/keymaps/default/keymap.c b/keyboards/absinthe/keymaps/default/keymap.c index d6c4549c47..e5c74366c0 100644 --- a/keyboards/absinthe/keymaps/default/keymap.c +++ b/keyboards/absinthe/keymaps/default/keymap.c @@ -31,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_VOLD, KC_TRNS) }; -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_VOLU); @@ -39,4 +39,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c b/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c index 8d649419d1..224de55b37 100644 --- a/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c +++ b/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c @@ -43,7 +43,7 @@ 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 (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -63,4 +63,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { backlight_decrease(); } } -} \ No newline at end of file + return true; +} diff --git a/keyboards/abstract/ellipse/keymaps/default/keymap.c b/keyboards/abstract/ellipse/keymaps/default/keymap.c index ac1ec986b0..4fe1cf7cb2 100644 --- a/keyboards/abstract/ellipse/keymaps/default/keymap.c +++ b/keyboards/abstract/ellipse/keymaps/default/keymap.c @@ -43,7 +43,7 @@ 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 (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_O); @@ -63,4 +63,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_R); } } -} \ No newline at end of file + return true; +} diff --git a/keyboards/acekeyboard/titan60/config.h b/keyboards/acekeyboard/titan60/config.h index d34622b250..67d02c98ea 100644 --- a/keyboards/acekeyboard/titan60/config.h +++ b/keyboards/acekeyboard/titan60/config.h @@ -53,15 +53,15 @@ along with this program. If not, see . /* * 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 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 RGB_DI_PIN D0 #ifdef RGB_DI_PIN -# define RGBLED_NUM 14 +# define RGBLED_NUM 6 # define RGBLIGHT_HUE_STEP 8 # define RGBLIGHT_SAT_STEP 8 # define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/acekeyboard/titan60/info.json b/keyboards/acekeyboard/titan60/info.json index 0839c7fb36..f6e79f0ead 100644 --- a/keyboards/acekeyboard/titan60/info.json +++ b/keyboards/acekeyboard/titan60/info.json @@ -1,32 +1,36 @@ { - "keyboard_name": "Titan60", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, + "keyboard_name": "Titan60", + "url": "https://acekeyboard.co/", + "maintainer": "keebnewb", + "width": 14, + "height": 5, "layouts": { - "LAYOUT_all_ansi_std": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] - }, - - "LAYOUT_all_ansi_2u_lshift": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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.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}] - }, - - "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}, {"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_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_split_spacebar": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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.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}] - } + "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": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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_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": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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_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":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_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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.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_utilitarian": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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_60_utilitarian_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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.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}] + }, + "LAYOUT_60_utilitarian_iso_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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":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.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/acekeyboard/titan60/keymaps/default/keymap.c b/keyboards/acekeyboard/titan60/keymaps/default/keymap.c index be3ed10bbc..f631bff3f0 100644 --- a/keyboards/acekeyboard/titan60/keymaps/default/keymap.c +++ b/keyboards/acekeyboard/titan60/keymaps/default/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2020 MechMerlin +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 @@ -18,31 +18,31 @@ along with this program. If not, see . 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│ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ Esc │ 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_ESC, KC_1, KC_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_B, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL + KC_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 ), [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_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_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_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + 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, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), -}; \ No newline at end of file +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c b/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c new file mode 100644 index 0000000000..6f56d2d420 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c @@ -0,0 +1,35 @@ +/* +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_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_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_RCTRL + ), + + [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_DEL, + RGB_TOG, RGB_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + 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, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c b/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c new file mode 100644 index 0000000000..4c18f99f55 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c @@ -0,0 +1,35 @@ +/* +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_60_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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL + ), + + [1] = LAYOUT_60_tsangan( + KC_SLEP, KC_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_TOG, RGB_RMOD, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_MNXT, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_STOP, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c b/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c new file mode 100644 index 0000000000..c7358d7170 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c @@ -0,0 +1,35 @@ +/* +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_60_utilitarian( + KC_ESC, KC_1, KC_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, MO(1), KC_RCTRL,KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_60_utilitarian( + KC_GRV, KC_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_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + 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, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, 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/acekeyboard/titan60/keymaps/via/keymap.c b/keyboards/acekeyboard/titan60/keymaps/via/keymap.c index c78d8f0b17..f6296cc823 100644 --- a/keyboards/acekeyboard/titan60/keymaps/via/keymap.c +++ b/keyboards/acekeyboard/titan60/keymaps/via/keymap.c @@ -27,38 +27,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ + * │Ctrl│GUI │Alt │ │ 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, MO(1), KC_RALT, KC_RGUI, KC_RCTL - ), + [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_RCTRL + ), - [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_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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 + ), - [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 - ), + [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 + [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/acekeyboard/titan60/readme.md b/keyboards/acekeyboard/titan60/readme.md index f977b4b89f..810d9b5a10 100644 --- a/keyboards/acekeyboard/titan60/readme.md +++ b/keyboards/acekeyboard/titan60/readme.md @@ -1,8 +1,11 @@ # titan60 +![Front of the Titan60 PCB](https://i.imgur.com/LaPzdRl.png) +![Back of the Titan60 PCB](https://i.imgur.com/nbineBj.png) + 60% custom keyboard originally meant for the Saturn 60 -* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Keyboard Maintainer: [keebnewb](https://github.com/thompson-ele) * Hardware Supported: Titan 60 PCB * Hardware Availability: [Acekeyboard](https://acekeyboard.co/) diff --git a/keyboards/acekeyboard/titan60/titan60.h b/keyboards/acekeyboard/titan60/titan60.h index 219a28a8b4..99b42fe190 100644 --- a/keyboards/acekeyboard/titan60/titan60.h +++ b/keyboards/acekeyboard/titan60/titan60.h @@ -1,5 +1,5 @@ /* -Copyright 2020 MechMerlin +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 @@ -21,89 +21,134 @@ along with this program. If not, see . #define ___ KC_NO - -#define LAYOUT_all_ansi_std( \ - 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ - k40, k41, k42, k44, k46, k48, k4a, k4d, k4b, k4c, 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, ___, ___ }, \ - { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ -} - -#define LAYOUT_all_ansi_2u_lshift( \ - 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, k47, k3c, k43, \ - k40, k41, k42, k44, k46, k48, k4a, k4d, k4b, k4c, 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ - { k40, k41, k42, k43, k44, ___, k46, 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, 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, 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 }, \ { 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, ___, ___ }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ } -#define LAYOUT_60_ansi_tsangan( \ - 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, k43, \ - 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, k1d }, \ - { 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, ___, ___ }, \ - { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ -} - -#define LAYOUT_60_ansi_split_bs_rshift( \ +// ANSI with all split options +#define LAYOUT_60_ansi_split( \ 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, k43, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ } -#define LAYOUT_60_ansi_split_spacebar( \ - 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, k44, k46, k48, 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, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + 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, 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, ___, ___ }, \ - { 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 } \ } +// ISO with all split options +#define LAYOUT_60_iso_split( \ + 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, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + 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, ___ }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ +} +// Tsangan +#define LAYOUT_60_tsangan( \ + 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, k43, \ + 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, k1d }, \ + { 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, ___ }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ +} + +// Tsangan with split left shift +#define LAYOUT_60_tsangan_split( \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + 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, 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, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ +} + +#define LAYOUT_60_utilitarian( \ + 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, k3c, k43, \ + k40, k41, k42, k46, k4a, k4b, k49, 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, k3c, k3d }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d } \ +} + +// Utilitarian with split spacebar and split backspace +#define LAYOUT_60_utilitarian_split( \ + 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, k3d, k3c, k43, \ + k40, k41, k42, k44, k46, k48, k4a, k4b, k49, 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ +} + +// Utilitarian with ISO enter, split spacebar and split backspace +#define LAYOUT_60_utilitarian_iso_split( \ + 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, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, k43, \ + k40, k41, k42, k44, k46, k48, k4a, k4b, k49, 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ +} diff --git a/keyboards/acheron/arctic/rules.mk b/keyboards/acheron/arctic/rules.mk index 5edab2afe1..b38cf00017 100644 --- a/keyboards/acheron/arctic/rules.mk +++ b/keyboards/acheron/arctic/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/acheron/austin/rules.mk b/keyboards/acheron/austin/rules.mk index 6796ab1405..57fb9cbb37 100644 --- a/keyboards/acheron/austin/rules.mk +++ b/keyboards/acheron/austin/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk index b08ad400cd..7a166e84fa 100644 --- a/keyboards/acheron/keebspcb/rules.mk +++ b/keyboards/acheron/keebspcb/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/acheron/lasgweloth/rules.mk b/keyboards/acheron/lasgweloth/rules.mk index 6bfb44ee94..fb7e495154 100644 --- a/keyboards/acheron/lasgweloth/rules.mk +++ b/keyboards/acheron/lasgweloth/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/acheron/shark/rules.mk b/keyboards/acheron/shark/rules.mk index 04f2a7b944..455c98f7e6 100644 --- a/keyboards/acheron/shark/rules.mk +++ b/keyboards/acheron/shark/rules.mk @@ -2,10 +2,13 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/acr60/rules.mk b/keyboards/acr60/rules.mk index c1f1f22ba3..22fd091407 100644 --- a/keyboards/acr60/rules.mk +++ b/keyboards/acr60/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/adkb96/adkb96.c b/keyboards/adkb96/adkb96.c index 9a1c85a2ce..93230ee00c 100644 --- a/keyboards/adkb96/adkb96.c +++ b/keyboards/adkb96/adkb96.c @@ -2,7 +2,7 @@ #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{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, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}, {7, 8}}, diff --git a/keyboards/adkb96/adkb96.h b/keyboards/adkb96/adkb96.h index 4b28775006..5a47f16aad 100644 --- a/keyboards/adkb96/adkb96.h +++ b/keyboards/adkb96/adkb96.h @@ -5,24 +5,3 @@ #ifdef KEYBOARD_adkb96_rev1 #include "rev1.h" #endif - - -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc_ortho_6x16( \ - 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, R30, R31, R32, R33, R34, R35, R36, R37, \ - L40, L41, L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47, \ - L50, L51, L52, L53, L54, L55, L56, L57, R50, R51, R52, R53, R54, R55, R56, R57 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##L07, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, KC_##R07, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##L17, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, KC_##R17, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##L27, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, KC_##R27, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##L37, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, KC_##R37, \ - KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##L47, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, KC_##R46, KC_##R47, \ - KC_##L50, KC_##L51, KC_##L52, KC_##L53, KC_##L54, KC_##L55, KC_##L56, KC_##L57, KC_##R50, KC_##R51, KC_##R52, KC_##R53, KC_##R54, KC_##R55, KC_##R56 ,KC_##R57 \ - ) - -#define LAYOUT_kc LAYOUT_kc_ortho_6x16 diff --git a/keyboards/aeboards/constellation/constellation.c b/keyboards/aeboards/constellation/constellation.c index 75d3efe7ac..0b8354d071 100755 --- a/keyboards/aeboards/constellation/constellation.c +++ b/keyboards/aeboards/constellation/constellation.c @@ -1,4 +1,5 @@ /* Copyright 2018 Jason Williams (Wilba) + * 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 @@ -16,4 +17,4 @@ // Nothing to see here, move along... ;-) -#include "constellation.h" \ No newline at end of file +#include "constellation.h" diff --git a/keyboards/aeboards/constellation/constellation.h b/keyboards/aeboards/constellation/constellation.h index 53a95d5d85..a467327712 100755 --- a/keyboards/aeboards/constellation/constellation.h +++ b/keyboards/aeboards/constellation/constellation.h @@ -1,4 +1,5 @@ /* Copyright 2018 Jason Williams (Wilba) + * 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 @@ -18,18 +19,8 @@ #include "quantum.h" -#define ____ KC_NO - -#define LAYOUT_all( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, 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, K312, K313, K314, \ - K400, K401, K402, K408, 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, ____, K312, K313, K314 }, \ - { K400, K401, K402, ____, ____, ____, ____, ____, K408, K409, K410, ____, K412, K413, K414 } \ -} +#if defined(KEYBOARD_aeboards_constellation_rev1) + #include "rev1.h" +#elif defined(KEYBOARD_aeboards_constellation_rev2) + #include "rev2.h" +#endif diff --git a/keyboards/aeboards/constellation/config.h b/keyboards/aeboards/constellation/rev1/config.h similarity index 94% rename from keyboards/aeboards/constellation/config.h rename to keyboards/aeboards/constellation/rev1/config.h index f2e3f476b2..22dd96f663 100755 --- a/keyboards/aeboards/constellation/config.h +++ b/keyboards/aeboards/constellation/rev1/config.h @@ -1,4 +1,5 @@ /* Copyright 2018 Jason Williams (Wilba) + * 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 @@ -23,7 +24,7 @@ #define PRODUCT_ID 0x065C // 65 - Constellation #define DEVICE_VER 0x0001 #define MANUFACTURER AEBoards -#define PRODUCT AEBoards Constellation +#define PRODUCT AEBoards Constellation Rev1 /* key matrix size */ #define MATRIX_ROWS 5 diff --git a/keyboards/aeboards/constellation/rev1/info.json b/keyboards/aeboards/constellation/rev1/info.json new file mode 100644 index 0000000000..172ac4dfa2 --- /dev/null +++ b/keyboards/aeboards/constellation/rev1/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "Constellation", + "url": "", + "maintainer": "Xelus22", + "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}, + {"label":"\"", "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/aeboards/constellation/rev1/readme.md b/keyboards/aeboards/constellation/rev1/readme.md new file mode 100755 index 0000000000..1102d83d32 --- /dev/null +++ b/keyboards/aeboards/constellation/rev1/readme.md @@ -0,0 +1,20 @@ +# CONSTELLATION REV1 + +A gasket 65% keyboard by [aeboards](https://aeboards.com/) + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: CONSTELLATION +* Hardware Availability: Custom keyboard group buys + +Make example for this keyboard (after setting up your build environment): + + make aeboards/constellation/rev1: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: on the back of the PCB, there is a ISP header which you should short the 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/aeboards/constellation/rev1/rev1.c b/keyboards/aeboards/constellation/rev1/rev1.c new file mode 100755 index 0000000000..6e8f0a1192 --- /dev/null +++ b/keyboards/aeboards/constellation/rev1/rev1.c @@ -0,0 +1,18 @@ +/* Copyright 2018 Jason Williams (Wilba) + * 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" diff --git a/keyboards/aeboards/constellation/rev1/rev1.h b/keyboards/aeboards/constellation/rev1/rev1.h new file mode 100755 index 0000000000..a2c65e9427 --- /dev/null +++ b/keyboards/aeboards/constellation/rev1/rev1.h @@ -0,0 +1,36 @@ +/* Copyright 2018 Jason Williams (Wilba) + * 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, K010, K011, K012, K013, K213, 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, K312, K313, K314, \ + K400, K401, K402, K408, 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, ____, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, ____, ____, K408, K409, K410, ____, K412, K413, K414 } \ +} diff --git a/keyboards/aeboards/constellation/rev1/rules.mk b/keyboards/aeboards/constellation/rev1/rules.mk new file mode 100755 index 0000000000..2a82012de5 --- /dev/null +++ b/keyboards/aeboards/constellation/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 = 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 = 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 new file mode 100755 index 0000000000..bff51c07d5 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/config.h @@ -0,0 +1,61 @@ +/* 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 0x4145 // AE +#define PRODUCT_ID 0x065C // 65 - Constellation +#define DEVICE_VER 0x0001 +#define MANUFACTURER AEBoards +#define PRODUCT AEBoards Constellation Rev2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* 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 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 diff --git a/keyboards/aeboards/constellation/rev2/halconf.h b/keyboards/aeboards/constellation/rev2/halconf.h new file mode 100644 index 0000000000..35cb84d826 --- /dev/null +++ b/keyboards/aeboards/constellation/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/aeboards/ext65/rev2/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/aeboards/constellation/rev2/info.json b/keyboards/aeboards/constellation/rev2/info.json new file mode 100644 index 0000000000..172ac4dfa2 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "Constellation", + "url": "", + "maintainer": "Xelus22", + "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}, + {"label":"\"", "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/aeboards/constellation/rev2/mcuconf.h b/keyboards/aeboards/constellation/rev2/mcuconf.h new file mode 100644 index 0000000000..de8e38389e --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/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/aeboards/ext65/rev2/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/aeboards/constellation/rev2/readme.md b/keyboards/aeboards/constellation/rev2/readme.md new file mode 100755 index 0000000000..d0ae3a2157 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/readme.md @@ -0,0 +1,20 @@ +# CONSTELLATION REV2 + +A gasket 65% keyboard by [aeboards](https://aeboards.com/) + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: CONSTELLATION +* Hardware Availability: Custom keyboard group buys + +Make example for this keyboard (after setting up your build environment): + + make aeboards/constellation/rev2: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, there are 2 open pins which you can short, labelled RESET
  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/aeboards/constellation/rev2/rev2.c b/keyboards/aeboards/constellation/rev2/rev2.c new file mode 100755 index 0000000000..7429f2f5f0 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/rev2.c @@ -0,0 +1,21 @@ +/* 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" + +void matrix_io_delay(void) { + __asm__ volatile("nop\nnop\nnop\n"); +} diff --git a/keyboards/aeboards/constellation/rev2/rev2.h b/keyboards/aeboards/constellation/rev2/rev2.h new file mode 100755 index 0000000000..6a219f8359 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/rev2.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, K010, K011, K012, K013, K213, 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, K312, K313, K314, \ + K400, K401, K402, K408, 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, ____, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, ____, ____, K408, K409, K410, ____, K412, K413, K414 } \ +} diff --git a/keyboards/aeboards/constellation/rev2/rules.mk b/keyboards/aeboards/constellation/rev2/rules.mk new file mode 100755 index 0000000000..c79b49dbf9 --- /dev/null +++ b/keyboards/aeboards/constellation/rev2/rules.mk @@ -0,0 +1,20 @@ +# 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +EEPROM_DRIVER = i2c diff --git a/keyboards/aeboards/constellation/rules.mk b/keyboards/aeboards/constellation/rules.mk index 2a82012de5..bd2af5d22b 100755 --- a/keyboards/aeboards/constellation/rules.mk +++ b/keyboards/aeboards/constellation/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 = 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 +DEFAULT_FOLDER = aeboards/constellation/rev1 diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h index 541f07ee98..778fc3ea6c 100644 --- a/keyboards/aeboards/ext65/rev2/config.h +++ b/keyboards/aeboards/ext65/rev2/config.h @@ -51,6 +51,8 @@ along with this program. If not, see . //SPI #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 WS2812_EXTERNAL_PULLUP // I2C OLED defines @@ -74,3 +76,5 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 6 #define BACKLIGHT_BREATHING #define BREATHING_PERIOD 6 + +#define SLEEP_LED_GPT_DRIVER GPTD1 diff --git a/keyboards/aeboards/ext65/rev2/halconf.h b/keyboards/aeboards/ext65/rev2/halconf.h index 6e2f536400..9fa1eca60b 100644 --- a/keyboards/aeboards/ext65/rev2/halconf.h +++ b/keyboards/aeboards/ext65/rev2/halconf.h @@ -27,5 +27,7 @@ #define HAL_USE_SPI TRUE +#define HAL_USE_GPT TRUE + #include_next diff --git a/keyboards/aeboards/ext65/rev2/mcuconf.h b/keyboards/aeboards/ext65/rev2/mcuconf.h index 26ce806150..43d53d4f2d 100644 --- a/keyboards/aeboards/ext65/rev2/mcuconf.h +++ b/keyboards/aeboards/ext65/rev2/mcuconf.h @@ -32,3 +32,5 @@ #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/aeboards/ext65/rev2/rules.mk b/keyboards/aeboards/ext65/rev2/rules.mk index 78d1e586ad..8794d357cd 100644 --- a/keyboards/aeboards/ext65/rev2/rules.mk +++ b/keyboards/aeboards/ext65/rev2/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # diff --git a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c index 099d9b1ab3..61db52392e 100644 --- a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c +++ b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c @@ -70,4 +70,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ ) -}; \ No newline at end of file +}; diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..3ed084736f --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2021 eithanshavit + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = 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_MINS, KC_EQL, 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_DEL, 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_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_RIGHT, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + + +}; diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..d8eb3bb511 --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# Default Breeze Layout + VIA support + +![Breeze Layout Image](https://i.imgur.com/O8FJWD6.jpeg) + +This is the default suggested layout for Breeze Split Keyboard, with VIA support. diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/breeze/rev1/config.h b/keyboards/afternoonlabs/breeze/rev1/config.h index c3b9b9063f..383a16d455 100644 --- a/keyboards/afternoonlabs/breeze/rev1/config.h +++ b/keyboards/afternoonlabs/breeze/rev1/config.h @@ -1,4 +1,4 @@ -/* Copyright 2021 eithanshavit +/* Copyright 2021 Afternoon Labs * * This 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/afternoonlabs/breeze/rev1/readme.md b/keyboards/afternoonlabs/breeze/rev1/readme.md index 9d845f6f37..604d95f252 100644 --- a/keyboards/afternoonlabs/breeze/rev1/readme.md +++ b/keyboards/afternoonlabs/breeze/rev1/readme.md @@ -4,9 +4,9 @@ Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered. -* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs) * Hardware Supported: Breeze Rev1 PCB -* Hardware Availability: Coming soon +* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/afternoonlabs/breeze/rev1/rules.mk b/keyboards/afternoonlabs/breeze/rev1/rules.mk index d1847482f6..773650d128 100644 --- a/keyboards/afternoonlabs/breeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/breeze/rev1/rules.mk @@ -9,8 +9,8 @@ BOOTLOADER = caterina # SPLIT_KEYBOARD = yes BOOTMAGIC_ENABLE = lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control +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 diff --git a/keyboards/afternoonlabs/gust/keymaps/default/keymap.c b/keyboards/afternoonlabs/gust/keymaps/default/keymap.c index 33bd13f860..ae5fb39592 100644 --- a/keyboards/afternoonlabs/gust/keymaps/default/keymap.c +++ b/keyboards/afternoonlabs/gust/keymaps/default/keymap.c @@ -27,7 +27,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌─────────┬─────────┬─────────┐ KC_1, KC_2, KC_3, //├─────────┼─────────┼─────────┤ - KC_4, KC_5, KC_6 + KC_4, KC_5, KC_6, + //├─────────┼─────────┼─────────┤ + + //├─────────┼─────────┼─────────┤ + KC_7, KC_8, KC_9 //└─────────┴─────────┴─────────┘ ) diff --git a/keyboards/afternoonlabs/gust/keymaps/default/readme.md b/keyboards/afternoonlabs/gust/keymaps/default/readme.md index 290eae23e4..2a22d53a43 100644 --- a/keyboards/afternoonlabs/gust/keymaps/default/readme.md +++ b/keyboards/afternoonlabs/gust/keymaps/default/readme.md @@ -1,5 +1,5 @@ # Default Gust Layout -![Gust Layout Image](https://i.imgur.com/S94jViT.jpeg) +![Gust Layout Image](https://i.imgur.com/HfouVnS.png) This is the default layout for Gust Macro Board. diff --git a/keyboards/afternoonlabs/gust/rev1/config.h b/keyboards/afternoonlabs/gust/rev1/config.h index 646f21dcc5..650b98c1b8 100644 --- a/keyboards/afternoonlabs/gust/rev1/config.h +++ b/keyboards/afternoonlabs/gust/rev1/config.h @@ -25,11 +25,11 @@ /* key matrix size */ // Rows are doubled-up -#define MATRIX_ROWS 2 +#define MATRIX_ROWS 3 #define MATRIX_COLS 3 // wiring of each half -#define MATRIX_ROW_PINS { F5, F4 } +#define MATRIX_ROW_PINS { F5, F4, D0 } #define MATRIX_COL_PINS { D1, D2, D3 } /* Set 0 if debouncing isn't needed */ diff --git a/keyboards/afternoonlabs/gust/rev1/info.json b/keyboards/afternoonlabs/gust/rev1/info.json index 376cb265b6..ae742687ce 100644 --- a/keyboards/afternoonlabs/gust/rev1/info.json +++ b/keyboards/afternoonlabs/gust/rev1/info.json @@ -31,6 +31,18 @@ { "x": 2, "y": 1 + }, + { + "x": 0, + "y": 3 + }, + { + "x": 1, + "y": 3 + }, + { + "x": 2, + "y": 3 } ] } diff --git a/keyboards/afternoonlabs/gust/rev1/readme.md b/keyboards/afternoonlabs/gust/rev1/readme.md index f72e5cc6b9..9192d1a35b 100644 --- a/keyboards/afternoonlabs/gust/rev1/readme.md +++ b/keyboards/afternoonlabs/gust/rev1/readme.md @@ -2,11 +2,11 @@ ![Gust](https://i.imgur.com/S94jViT.jpeg) -Gust Macro Board is a simple 6 key cluster that comes as a free bonus with the [Breeze Split Keyboard](https://afternoonlabs.com/breeze). +Gust Macro Board is a simple 3x3 key macro board. The bottom row can be snapped off to get a 2x3 board. Gust comes as a free bonus with the [Breeze Split Keyboard](https://afternoonlabs.com/breeze). -* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Keyboard Maintainer: [Afternoon Labs](https://github.com/afternoonlabs) * Hardware Supported: Gust Rev1 PCB -* Hardware Availability: Coming soon +* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/afternoonlabs/gust/rev1/rev1.h b/keyboards/afternoonlabs/gust/rev1/rev1.h index 97f75cef80..22c1910a1f 100644 --- a/keyboards/afternoonlabs/gust/rev1/rev1.h +++ b/keyboards/afternoonlabs/gust/rev1/rev1.h @@ -22,9 +22,11 @@ #define LAYOUT( \ M00, M01, M02, \ - M10, M11, M12 \ + M10, M11, M12, \ + M20, M21, M22 \ ) \ { \ { M00, M01, M02 }, \ - { M10, M11, M12 } \ + { M10, M11, M12 }, \ + { M20, M21, M22 } \ } diff --git a/keyboards/afternoonlabs/gust/rev1/rules.mk b/keyboards/afternoonlabs/gust/rev1/rules.mk index eb0a77dced..b00cf4eff9 100644 --- a/keyboards/afternoonlabs/gust/rev1/rules.mk +++ b/keyboards/afternoonlabs/gust/rev1/rules.mk @@ -8,8 +8,8 @@ BOOTLOADER = caterina # 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 +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE @@ -19,4 +19,4 @@ 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 +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/afternoonlabs/oceanbreeze/config.h b/keyboards/afternoonlabs/oceanbreeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You 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 NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..73d0dda0f3 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = 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_MINS, KC_EQL, 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_DEL, 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_UP, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + 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, KC_LEFT, KC_DOWN, KC_RIGHT, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) +}; diff --git a/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md new file mode 100644 index 0000000000..109b0f5e77 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# Default Ocean Breeze Layout + +![Ocean Breeze Layout Image](https://i.imgur.com/cXGLDVQ.png) + +This is the default suggested layout for Ocean Breeze Split Keyboard. diff --git a/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c new file mode 100644 index 0000000000..35268ecf6f --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "oceanbreeze.h" diff --git a/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h new file mode 100644 index 0000000000..f51f55de13 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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_afternoonlabs_oceanbreeze_rev1 +# include "rev1.h" +#endif diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/config.h b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h new file mode 100644 index 0000000000..6afe6b54e8 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 0x616C +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT OceanBreeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1, B6 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json new file mode 100644 index 0000000000..db7d533d12 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "OceanBreeze", + "url": "afternoonlabs.com", + "productId": "0x0003", + "maintainer": "afternoonlabs", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"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":9.75, "y":0.25}, + {"x":10.75, "y":0.125}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0.125}, + {"x":13.75, "y":0.375}, + {"x":14.75, "y":0.375}, + {"x":16, "y":0.375}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + + {"x":0, "y":1.375}, + {"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":9.75, "y":1.25}, + {"x":10.75, "y":1.125}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1.125}, + {"x":13.75, "y":1.375}, + {"x":14.75, "y":1.375}, + {"x":16, "y":1.375}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + + {"x":0, "y":2.375}, + {"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":9.75, "y":2.25}, + {"x":10.75, "y":2.125}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2.125}, + {"x":13.75, "y":2.375}, + {"x":14.75, "y":2.375}, + {"x":17, "y":2.375}, + + {"x":0, "y":3.375}, + {"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.25, "y":3.75}, + {"x":8.5, "y":3.75}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.125}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3.125}, + {"x":13.75, "y":3.375}, + {"x":14.75, "y":3.375}, + {"x":16, "y":3.375}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + + {"x":2.5, "y":4.25}, + {"x":3.5, "y":4.25}, + {"x":4.5, "y":4.5}, + {"x":6.25, "y":4.75}, + {"x":8.5, "y":4.75}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md b/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md new file mode 100644 index 0000000000..0b82913c4b --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Breeze + +![Ocean Breeze Layout Image](https://i.imgur.com/cXGLDVQ.png) + +Special Edition of the [Breeze](https://afternoonlabs.com). This one has two 1Us instead of the larger 2U on the thumb cluster. + +* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs) +* Hardware Supported: Ocean Breeze Rev1 PCB +* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com) + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/oceanbreeze/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/afternoonlabs/oceanbreeze/rev1/rev1.c b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c new file mode 100644 index 0000000000..35268ecf6f --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "oceanbreeze.h" diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h new file mode 100644 index 0000000000..36de22ec18 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "oceanbreeze.h" + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \ + L30, L31, L32, L33, L34, L35, LT4, RT1, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \ + LT0, LT1, LT2, LT3, RT2, RT3, RT4, RT5 \ +) { \ + { L05, L04, L03, L02, L01, L00, XXX, XXX, XXX }, \ + { L15, L14, L13, L12, L11, L10, XXX, XXX, XXX }, \ + { L25, L24, L23, L22, L21, L20, XXX, XXX, XXX }, \ + { L35, L34, L33, L32, L31, L30, XXX, XXX, XXX }, \ + { LT3, LT2, LT1, LT0, XXX, XXX, XXX, XXX, XXX }, \ + { LT4, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \ + { R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \ + { R20, R21, R22, R23, R24, R25, XXX, AUP, XXX }, \ + { R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \ + { RT2, RT3, RT4, RT5, XXX, XXX, XXX, XXX, XXX }, \ + { RT1, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk new file mode 100644 index 0000000000..96875e4ffe --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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/config.h b/keyboards/afternoonlabs/southern_breeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You 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 NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..5dbc6139a5 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LBRC, KC_RBRC, 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_UP, 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_LEFT, KC_DOWN, KC_RIGHT, KC_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, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + +}; diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md b/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md new file mode 100644 index 0000000000..1a9ec11fdc --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Southern Breeze Layout + +This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half). diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk new file mode 100644 index 0000000000..51cdf0b040 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk @@ -0,0 +1,9 @@ +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..691d52315c --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LBRC, KC_RBRC, 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_UP, 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_LEFT, KC_DOWN, KC_RIGHT, KC_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, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..1a9ec11fdc --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Southern Breeze Layout + +This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half). diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/config.h b/keyboards/afternoonlabs/southern_breeze/rev1/config.h new file mode 100644 index 0000000000..e1533a6fa0 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 0x616C +#define PRODUCT_ID 0x0005 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT Southern Breeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/info.json b/keyboards/afternoonlabs/southern_breeze/rev1/info.json new file mode 100644 index 0000000000..2e88c27867 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Southern Breeze", + "url": "afternoonlabs.com/breeze", + "productId": "0x0005", + "maintainer": "eithanshavit", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"x":1, "y":0.375}, + {"x":2, "y":0.375}, + {"x":3.25, "y":0.375}, + {"x":4.25, "y":0.375}, + {"x":5.25, "y":0.125}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0.125}, + {"x":8.25, "y":0.25}, + {"x":13, "y":0.25}, + {"x":14, "y":0.125}, + {"x":15, "y":0}, + {"x":16, "y":0.125}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + + {"x":0, "y":1.375}, + {"x":1, "y":1.375}, + {"x":2, "y":1.375}, + {"x":3.25, "y":1.375}, + {"x":4.25, "y":1.375}, + {"x":5.25, "y":1.125}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1.125}, + {"x":8.25, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.125}, + {"x":15, "y":1}, + {"x":16, "y":1.125}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + + {"x":1, "y":2.375}, + {"x":3.25, "y":2.375}, + {"x":4.25, "y":2.375}, + {"x":5.25, "y":2.125}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2.125}, + {"x":8.25, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.125}, + {"x":15, "y":2}, + {"x":16, "y":2.125}, + {"x":17, "y":2.375}, + {"x":18, "y":2.375}, + + {"x":0, "y":3.375}, + {"x":1, "y":3.375}, + {"x":2, "y":3.375}, + {"x":3.25, "y":3.375}, + {"x":4.25, "y":3.375}, + {"x":5.25, "y":3.125}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3.125}, + {"x":8.25, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.125}, + {"x":15, "y":3}, + {"x":16, "y":3.125}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + + {"x":5.75, "y":4.25}, + {"x":6.75, "y":4.25}, + {"x":7.75, "y":4.5}, + {"x":9.5, "y":3.75, "h":2, "r":30}, + {"x":11.75, "y":3.75, "h":2, "r":-30}, + {"x":13.5, "y":4.5}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/readme.md b/keyboards/afternoonlabs/southern_breeze/rev1/readme.md new file mode 100644 index 0000000000..bb81a2a441 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Southern Breeze + +![Breeze](https://i.imgur.com/O8FJWD6.jpeg) + +Split ergonomics meets productivity. Southern Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered. + +* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Hardware Supported: Breeze Rev1 PCB +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/southern_breeze/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/afternoonlabs/southern_breeze/rev1/rev1.c b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.c new file mode 100644 index 0000000000..65597253e4 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/afternoonlabs/southern_breeze/rev1/rev1.h b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.h new file mode 100644 index 0000000000..eeecc06308 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "southern_breeze.h" + +#include "quantum.h" + +#define LAYOUT( \ + LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + LWUP, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + LWLT, LWDN, LWRT, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \ +) \ +{ \ + { L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \ + { L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \ + { L25, L24, L23, L22, L21, L20, KC_NO, LWUP, KC_NO }, \ + { L35, L34, L33, L32, L31, L30, LWRT, LWDN, LWLT }, \ + { LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, KC_NO, KC_NO, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, KC_NO, KC_NO, KC_NO }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, KC_NO, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, KC_NO, KC_NO, KC_NO }, \ + { RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +} diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk new file mode 100644 index 0000000000..f73350f589 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# 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 = 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/southern_breeze.c b/keyboards/afternoonlabs/southern_breeze/southern_breeze.c new file mode 100644 index 0000000000..cac867cafa --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/southern_breeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "southern_breeze.h" diff --git a/keyboards/afternoonlabs/southern_breeze/southern_breeze.h b/keyboards/afternoonlabs/southern_breeze/southern_breeze.h new file mode 100644 index 0000000000..a6923d6b1e --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/southern_breeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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_afternoonlabs_southern_breeze_rev1 +# include "rev1.h" +#endif diff --git a/keyboards/afternoonlabs/summer_breeze/config.h b/keyboards/afternoonlabs/summer_breeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You 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 NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..481c6c01d6 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, KC_WH_U, _______, 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_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_BTN1, KC_WH_D, KC_BTN2, 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_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_U, 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_UP, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_L, KC_MS_D, KC_MS_R, KC_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_RIGHT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), +}; diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md b/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md new file mode 100644 index 0000000000..88c49403de --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Summer Breeze Layout + +This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters). diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk new file mode 100644 index 0000000000..51cdf0b040 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk @@ -0,0 +1,9 @@ +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..3fe1a033fd --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, KC_WH_U, _______, 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_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_BTN1, KC_WH_D, KC_BTN2, 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_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_U, 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_UP, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_L, KC_MS_D, KC_MS_R, KC_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_RIGHT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..88c49403de --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Summer Breeze Layout + +This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters). diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/config.h b/keyboards/afternoonlabs/summer_breeze/rev1/config.h new file mode 100644 index 0000000000..86c40389aa --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 0x616C +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT Summer Breeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/info.json b/keyboards/afternoonlabs/summer_breeze/rev1/info.json new file mode 100644 index 0000000000..8a8c3de477 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Summer Breeze", + "url": "afternoonlabs.com/breeze", + "productId": "0x0004", + "maintainer": "eithanshavit", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"x":1, "y":0.375}, + {"x":2, "y":0.375}, + {"x":3.25, "y":0.375}, + {"x":4.25, "y":0.375}, + {"x":5.25, "y":0.125}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0.125}, + {"x":8.25, "y":0.25}, + {"x":13, "y":0.25}, + {"x":14, "y":0.125}, + {"x":15, "y":0}, + {"x":16, "y":0.125}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + {"x":19.25, "y":0.375}, + {"x":20.25, "y":0.375}, + {"x":21.25, "y":0.375}, + + {"x":0, "y":1.375}, + {"x":1, "y":1.375}, + {"x":2, "y":1.375}, + {"x":3.25, "y":1.375}, + {"x":4.25, "y":1.375}, + {"x":5.25, "y":1.125}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1.125}, + {"x":8.25, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.125}, + {"x":15, "y":1}, + {"x":16, "y":1.125}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + {"x":19.25, "y":1.375}, + {"x":20.25, "y":1.375}, + {"x":21.25, "y":1.375}, + + {"x":1, "y":2.375}, + {"x":3.25, "y":2.375}, + {"x":4.25, "y":2.375}, + {"x":5.25, "y":2.125}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2.125}, + {"x":8.25, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.125}, + {"x":15, "y":2}, + {"x":16, "y":2.125}, + {"x":17, "y":2.375}, + {"x":18, "y":2.375}, + {"x":20.25, "y":2.375}, + + {"x":0, "y":3.375}, + {"x":1, "y":3.375}, + {"x":2, "y":3.375}, + {"x":3.25, "y":3.375}, + {"x":4.25, "y":3.375}, + {"x":5.25, "y":3.125}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3.125}, + {"x":8.25, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.125}, + {"x":15, "y":3}, + {"x":16, "y":3.125}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + {"x":19.25, "y":3.375}, + {"x":20.25, "y":3.375}, + {"x":21.25, "y":3.375}, + + {"x":5.75, "y":4.25}, + {"x":6.75, "y":4.25}, + {"x":7.75, "y":4.5}, + {"x":9.5, "y":3.75, "h":2, "r":30}, + {"x":11.75, "y":3.75, "h":2, "r":-30}, + {"x":13.5, "y":4.5}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/readme.md b/keyboards/afternoonlabs/summer_breeze/rev1/readme.md new file mode 100644 index 0000000000..5eedb8dd46 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Summer Breeze + +![Breeze](https://i.imgur.com/O8FJWD6.jpeg) + +Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb clusters, arrow keys, and two 6 key macro clusters, with ortholinear column-staggered. + +* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Hardware Supported: Breeze Rev1 PCB +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/summer_breeze/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/afternoonlabs/summer_breeze/rev1/rev1.c b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.c new file mode 100644 index 0000000000..65597253e4 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/afternoonlabs/summer_breeze/rev1/rev1.h b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h new file mode 100644 index 0000000000..6ab28066c3 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "summer_breeze.h" + +#include "quantum.h" + +#define LAYOUT( \ + LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \ + LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \ + LW21, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \ + LW30, LW31, LW32, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \ + LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \ +) \ +{ \ + { L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \ + { L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \ + { L25, L24, L23, L22, L21, L20, KC_NO, LW21, KC_NO }, \ + { L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \ + { LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \ + { R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, AUP, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \ + { RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +} diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk new file mode 100644 index 0000000000..f73350f589 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# 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 = 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/summer_breeze.c b/keyboards/afternoonlabs/summer_breeze/summer_breeze.c new file mode 100644 index 0000000000..844b8c33a3 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/summer_breeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "summer_breeze.h" diff --git a/keyboards/afternoonlabs/summer_breeze/summer_breeze.h b/keyboards/afternoonlabs/summer_breeze/summer_breeze.h new file mode 100644 index 0000000000..0f3776b832 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/summer_breeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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_afternoonlabs_summer_breeze_rev1 +# include "rev1.h" +#endif diff --git a/keyboards/ai03/andromeda/andromeda.c b/keyboards/ai03/andromeda/andromeda.c new file mode 100644 index 0000000000..5dd580effd --- /dev/null +++ b/keyboards/ai03/andromeda/andromeda.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 "andromeda.h" diff --git a/keyboards/ai03/andromeda/andromeda.h b/keyboards/ai03/andromeda/andromeda.h new file mode 100644 index 0000000000..1fcae4d772 --- /dev/null +++ b/keyboards/ai03/andromeda/andromeda.h @@ -0,0 +1,35 @@ +/* +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_tkl_ansi_wkl( \ + 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, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \ + K500, K502, K507, K511, K513, K514, K515, K516 \ +) { \ + { K000, KC_NO, 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, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \ + { K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, KC_NO, K507, KC_NO, KC_NO, KC_NO, K511, KC_NO, K513, K514, K515, K516 } \ +} diff --git a/keyboards/ai03/andromeda/config.h b/keyboards/ai03/andromeda/config.h new file mode 100644 index 0000000000..e04fb8a56f --- /dev/null +++ b/keyboards/ai03/andromeda/config.h @@ -0,0 +1,43 @@ +/* +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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA103 +#define PRODUCT_ID 0x000A +#define DEVICE_VER 0x0001 +#define MANUFACTURER ai03 Design Studio +#define PRODUCT Andromeda + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, B5, B8, B9 } +#define MATRIX_ROW_PINS { B4, B3, A15, A3, A4, A5 } +#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 diff --git a/keyboards/ai03/andromeda/info.json b/keyboards/ai03/andromeda/info.json new file mode 100644 index 0000000000..200d3fbd78 --- /dev/null +++ b/keyboards/ai03/andromeda/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/ai03/andromeda/keymaps/default/keymap.c new file mode 100644 index 0000000000..41db12fc51 --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* +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 +enum layer_names { + _BASE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = 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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +) + +}; diff --git a/keyboards/ai03/andromeda/keymaps/via/keymap.c b/keyboards/ai03/andromeda/keymaps/via/keymap.c new file mode 100644 index 0000000000..967bfdf2bd --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* +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 +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = 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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_tkl_ansi_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ai03/andromeda/keymaps/via/rules.mk b/keyboards/ai03/andromeda/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ai03/andromeda/readme.md b/keyboards/ai03/andromeda/readme.md new file mode 100644 index 0000000000..2ac3b5c1c4 --- /dev/null +++ b/keyboards/ai03/andromeda/readme.md @@ -0,0 +1,12 @@ +# ai03 Andromeda + +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) +* Hardware Supported: Andromeda PCB + +Make example for this keyboard (after setting up your build environment): + + make ai03/andromeda: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 for at least 5 seconds before releasing to enter the bootloader mode. diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk new file mode 100644 index 0000000000..b47c996960 --- /dev/null +++ b/keyboards/ai03/andromeda/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = 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 = 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 +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/ai03/vega/rules.mk b/keyboards/ai03/vega/rules.mk index b5330c8e7e..b47c996960 100644 --- a/keyboards/ai03/vega/rules.mk +++ b/keyboards/ai03/vega/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/akegata_denki/device_one/rules.mk b/keyboards/akegata_denki/device_one/rules.mk index f8e76a5d39..3832696540 100644 --- a/keyboards/akegata_denki/device_one/rules.mk +++ b/keyboards/akegata_denki/device_one/rules.mk @@ -1,8 +1,10 @@ # MCU name MCU = STM32F042 - BOARD = ST_NUCLEO32_F042K6 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h new file mode 100644 index 0000000000..84795f024b --- /dev/null +++ b/keyboards/aleblazer/zodiark/config.h @@ -0,0 +1,75 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 0xF901 +#define PRODUCT_ID 0xF902 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Aleblazer +#define PRODUCT Zodiark + +#define NO_ACTION_MACRO + +#define SOFT_SERIAL_PIN D3 +#define SERIAL_USE_MULTI_TRANSACTION +#define SELECT_SOFT_SERIAL_SPEED 1 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D4 } +#define ENCODERS_PAD_A_RIGHT { D4 } +#define ENCODERS_PAD_B_RIGHT { D2 } +#define ENCODER_RESOLUTION 3 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, F4 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B5 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 68 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 34, 34 } +#define RGBLIGHT_LIMIT_VAL 170 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_LED_TOTAL 68 +#define RGB_MATRIX_SPLIT { 34, 34 } +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#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 diff --git a/keyboards/aleblazer/zodiark/info.json b/keyboards/aleblazer/zodiark/info.json new file mode 100644 index 0000000000..0d781f0c7c --- /dev/null +++ b/keyboards/aleblazer/zodiark/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "zodiark", + "url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark", + "maintainer": "Aleblazer", + "width": 18, + "height": 6.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.53}, + {"x":1, "y":0.53}, + {"x":2, "y":0.125}, + {"x":3, "y":0}, + {"x":4, "y":0.125}, + {"x":5, "y":0.25}, + {"x":12, "y":0.25}, + {"x":13, "y":0.125}, + {"x":14, "y":0}, + {"x":15, "y":0.125}, + {"x":16, "y":0.53}, + {"x":17, "y":0.53}, + + {"x":0, "y":1.53}, + {"x":1, "y":1.53}, + {"x":2, "y":1.125}, + {"x":3, "y":1}, + {"x":4, "y":1.125}, + {"x":5, "y":1.25}, + {"x":6, "y":1.7}, + {"x":11, "y":1.7}, + {"x":12, "y":1.25}, + {"x":13, "y":1.125}, + {"x":14, "y":1}, + {"x":15, "y":1.125}, + {"x":16, "y":1.53}, + {"x":17, "y":1.53}, + + {"x":0, "y":2.53}, + {"x":1, "y":2.53}, + {"x":2, "y":2.125}, + {"x":3, "y":2}, + {"x":4, "y":2.125}, + {"x":5, "y":2.25}, + {"x":6, "y":2.7}, + {"x":11, "y":2.7}, + {"x":12, "y":2.25}, + {"x":13, "y":2.125}, + {"x":14, "y":2}, + {"x":15, "y":2.125}, + {"x":16, "y":2.53}, + {"x":17, "y":2.53}, + + {"x":0, "y":3.53}, + {"x":1, "y":3.53}, + {"x":2, "y":3.125}, + {"x":3, "y":3}, + {"x":4, "y":3.125}, + {"x":5, "y":3.25}, + {"x":6.5, "y":4.25}, + {"x":7.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.125}, + {"x":14, "y":3}, + {"x":15, "y":3.125}, + {"x":16, "y":3.53}, + {"x":17, "y":3.53}, + + {"x":0, "y":4.53}, + {"x":1, "y":4.53}, + {"x":2, "y":4.125}, + {"x":3, "y":4}, + {"x":4, "y":4.125}, + {"x":6, "y":5.25, "w":1.5}, + {"x":7.5, "y":5.25}, + {"x":9.5, "y":5.25}, + {"x":10.5, "y":5.25, "w":1.5}, + {"x":13, "y":4.125}, + {"x":14, "y":4}, + {"x":15, "y":4.125}, + {"x":16, "y":4.53}, + {"x":17, "y":4.53} + ] + } + } +} diff --git a/keyboards/aleblazer/zodiark/keymaps/default/config.h b/keyboards/aleblazer/zodiark/keymaps/default/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 + +#ifdef OLED_DRIVER_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 new file mode 100644 index 0000000000..c09b483d94 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c @@ -0,0 +1,328 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can 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 sofle_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 +}; + +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_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ADJUST, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, 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_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KC_RAISE, KC_LEFT, KC_DOWN, KC_UP, 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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR(""), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC"), false); + } else { + oled_write_ln_P(PSTR("WIN"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Clmk"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#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_COPY: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + } + return true; +} + +#ifdef ENCODER_ENABLE + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + } + return true; +} + +#endif diff --git a/keyboards/keebio/dilly/keymaps/bakingpy/rules.mk b/keyboards/aleblazer/zodiark/keymaps/default/rules.mk similarity index 100% rename from keyboards/keebio/dilly/keymaps/bakingpy/rules.mk rename to keyboards/aleblazer/zodiark/keymaps/default/rules.mk diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h new file mode 100644 index 0000000000..36d9637e72 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 + +#ifdef OLED_DRIVER_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 new file mode 100644 index 0000000000..4f97953fd1 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c @@ -0,0 +1,331 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 sofle_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 +}; + +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_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ADJUST, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, 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_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KC_RAISE, KC_LEFT, KC_DOWN, KC_UP, 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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR(""), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC"), false); + } else { + oled_write_ln_P(PSTR("WIN"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Clmk"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#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_COPY: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + } + return true; +} + +#ifdef ENCODER_ENABLE + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + } + return true; +} + +#endif diff --git a/keyboards/keebio/dilly/keymaps/delmo/rules.mk b/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk similarity index 100% rename from keyboards/keebio/dilly/keymaps/delmo/rules.mk rename to keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk diff --git a/keyboards/aleblazer/zodiark/keymaps/via/config.h b/keyboards/aleblazer/zodiark/keymaps/via/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/encoder.c b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c new file mode 100644 index 0000000000..c08cfed5c1 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can 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 . +*/ + +//Setting up what encoder rotation does. If your encoder can be pressed as a button, that function can be set in Via. + +#ifdef ENCODER_ENABLE + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDOWN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/keymap.c b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c new file mode 100644 index 0000000000..1159afb434 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can 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 +#include "oled.c" +#include "encoder.c" + +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_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, 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_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, KC_APP, MO(1), KC_SPC, KC_ENT, KC_ENT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, 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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [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_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [3] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; diff --git a/keyboards/aleblazer/zodiark/keymaps/via/oled.c b/keyboards/aleblazer/zodiark/keymaps/via/oled.c new file mode 100644 index 0000000000..037fe2ff71 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/oled.c @@ -0,0 +1,78 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can 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 . +*/ + +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + 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; + case 3: + oled_write_P(PSTR("Adjust"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#endif diff --git a/keyboards/lets_split/keymaps/mtdjr/rules.mk b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk similarity index 56% rename from keyboards/lets_split/keymaps/mtdjr/rules.mk rename to keyboards/aleblazer/zodiark/keymaps/via/rules.mk index a81250cdf6..76d3c49ffd 100644 --- a/keyboards/lets_split/keymaps/mtdjr/rules.mk +++ b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk @@ -1,2 +1,2 @@ RGBLIGHT_ENABLE = yes - +VIA_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/readme.md b/keyboards/aleblazer/zodiark/readme.md new file mode 100644 index 0000000000..392744dede --- /dev/null +++ b/keyboards/aleblazer/zodiark/readme.md @@ -0,0 +1,23 @@ +# Zodiark Keyboard + +![Zodiark Split](https://i.imgur.com/49O8aowl.jpg) + +A split keyboard with 5x7 including a thumbcluster, encoders on each side, per key RGB, and 2x I2C headers per side, supporiting 1.3"/.96" 128x64 OLEDs (the 1.3" is an SSH1106 OLED, refer to QMK documentation for limitations), .91" 128x32 OLEDs. + +* Keyboard Maintainer: [Aleblazer](https://github.com/Aleblazer/), [Discord Link](https://discord.gg/BCSbXwskVt) +* Hardware Supported: Pro Micro and derivatives +* Hardware Availability: Pending Group Buy - [Discord Link](https://discord.gg/BCSbXwskVt) + +Make example for this keyboard (after setting up your build environment): + + make aleblazer/zodiark:default + +Flashing example for this keyboard: + + make aleblazer/zodiark:default:flash + +Remove TRRS cable from halves, plug into one side, press reset button when asked. Repeat process on the other side. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Credit to Sofle and Josef Adamcik for OLED and layer code. diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk new file mode 100644 index 0000000000..89e4850d83 --- /dev/null +++ b/keyboards/aleblazer/zodiark/rules.mk @@ -0,0 +1,27 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes +LTO_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/aleblazer/zodiark/zodiark.c b/keyboards/aleblazer/zodiark/zodiark.c new file mode 100644 index 0000000000..d3893ada03 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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 "zodiark.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { +// Key Matrix to LED Index + // Left Hand + { 5, 4, 3, 2, 1, 0, 12 }, + { 6, 7, 8, 9, 10, 11, 13 }, + { 19, 18, 17, 16, 15, 14, 26 }, + { 20, 21, 22, 23, 24, 25, NO_LED }, + { 33, 32, 31, 30, 29, 28, 27}, + // Right Hand + { 39, 38, 37, 36, 35, 34, 46 }, + { 40, 41, 42, 43, 44, 45, 47 }, + { 53, 52, 51, 50, 49, 48, 60 }, + { 54, 55, 56, 57, 58, 59, NO_LED }, + { 67, 66, 65, 64, 63, 62, 61 }, + + +}, { + // LED Index to Physical Position + // Left Hand + { 93, 0 }, { 74, 0 }, { 56, 0 }, { 37, 0 }, { 19, 0 }, { 0, 0 }, { 0, 16 }, + { 19, 16 }, { 37, 16 }, { 56, 16 }, { 74, 16 }, { 93, 16 }, { 112, 24 }, { 112, 40 }, + { 93, 32 }, { 74, 32 }, { 56, 32 }, { 37, 32 }, { 19, 32 }, { 0, 32 }, { 0, 48 }, + { 19, 48 }, { 37, 48 }, { 56, 48 }, { 74, 48 }, { 93, 48 }, { 112, 52 }, + { 112, 64 }, { 93, 64 }, { 74, 64 }, { 56, 64 }, { 37, 64 }, { 19, 64 }, { 0, 64 }, + // Right Hand + { 132, 0 }, { 150, 0 }, { 169, 0 }, { 187, 0 }, { 206, 0 }, { 224, 0 }, { 224, 16 }, + { 206, 16 }, { 187, 16 }, { 169, 16 }, { 150, 16 }, { 132, 16 }, { 113, 24 }, { 113, 40 }, + { 132, 32 }, { 150, 32 }, { 169, 32 }, { 187, 32 }, { 206, 32 }, { 224, 32 }, { 224, 48 }, + { 206, 48 }, { 187, 48 }, { 169, 48 }, { 150, 48 }, { 132, 48 }, { 113, 52 }, + { 113, 64 }, { 132, 64 }, { 150, 64 }, { 169, 64 }, { 187, 64 }, { 206, 64 }, { 224, 64 }, +}, { + // 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 +} }; +#endif diff --git a/keyboards/aleblazer/zodiark/zodiark.h b/keyboards/aleblazer/zodiark/zodiark.h new file mode 100644 index 0000000000..5c25cea547 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can 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( \ + L00, L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, R06, \ + L10, L11, L12, L13, L14, L15, L06, R00, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, L16, R10, R21, R22, R23, R24, R25, R26, \ + L30, L31, L32, L33, L34, L35, L26, L36, R30, R20, 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/aleth42/keymaps/default/keymap.c b/keyboards/aleth42/keymaps/default/keymap.c index 48214d1e22..707af7116a 100644 --- a/keyboards/aleth42/keymaps/default/keymap.c +++ b/keyboards/aleth42/keymaps/default/keymap.c @@ -105,7 +105,7 @@ 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 (index == 0) { /* Left encoder */ switch (get_highest_layer(layer_state)) { case _QWERTY: @@ -146,4 +146,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_PGUP); } } + return true; } diff --git a/keyboards/aleth42/keymaps/via/keymap.c b/keyboards/aleth42/keymaps/via/keymap.c index e747b0d64f..2801e65ec4 100644 --- a/keyboards/aleth42/keymaps/via/keymap.c +++ b/keyboards/aleth42/keymaps/via/keymap.c @@ -105,7 +105,7 @@ 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 (index == 0) { /* Left encoder */ switch (get_highest_layer(layer_state)) { case _QWERTY: @@ -146,4 +146,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_PGUP); } } -} \ No newline at end of file + return true; +} diff --git a/keyboards/alf/x2/rules.mk b/keyboards/alf/x2/rules.mk index c1f1f22ba3..22fd091407 100644 --- a/keyboards/alf/x2/rules.mk +++ b/keyboards/alf/x2/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/alfredslab/swift65/solder/config.h b/keyboards/alfredslab/swift65/solder/config.h new file mode 100644 index 0000000000..509aae6a89 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/config.h @@ -0,0 +1,68 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBBEB +#define PRODUCT_ID 0xD4C3 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlfredsLab +#define PRODUCT Swift65 + +/* 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 { B1, B2, B3, D4, D6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, C7, C6, B6, B5, B4, D7, D5, D3, D1, D0 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 14 + #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 +// /*== 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/alfredslab/swift65/solder/info.json b/keyboards/alfredslab/swift65/solder/info.json new file mode 100644 index 0000000000..a04de1cc14 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Swift65", + "url": "https://swiftcables.net/", + "maintainer": "Spooknik", + "width": 16.25, + "height": 5, + "layouts": { + "LAYOUT": { + "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.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} + ] + } + } + ,"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 new file mode 100644 index 0000000000..274809bb11 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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( + KC_GRV, KC_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 + ), + +}; \ No newline at end of file diff --git a/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md new file mode 100644 index 0000000000..74de146080 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# 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 new file mode 100644 index 0000000000..9936becce6 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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( + KC_GRV, KC_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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 + ), + +}; diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md new file mode 100644 index 0000000000..74de146080 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Swift65 Solder Layout + +![](https://i.imgur.com/7Capi8W.png) diff --git a/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk.txt b/keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk similarity index 100% rename from keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk.txt rename to keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk diff --git a/keyboards/alfredslab/swift65/solder/readme.md b/keyboards/alfredslab/swift65/solder/readme.md new file mode 100644 index 0000000000..b477438199 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/readme.md @@ -0,0 +1,20 @@ +# Swift65 + +A 65% Keyboard from Swiftcables + +* Keyboard Maintainer: [Steven Phillips (spoonik)](https://github.com/keyboardcollective) +* Hardware Supported: Swift65 Solder +* Hardware Availability: Soom from Swiftcables + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and Right Shift simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make alfredslab/swift65/solder:default + +Flashing example for this keyboard: + + make alfredslab/swift65/solder: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/alfredslab/swift65/solder/rules.mk b/keyboards/alfredslab/swift65/solder/rules.mk new file mode 100644 index 0000000000..2c2853b57f --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/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 = 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 = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/alfredslab/swift65/solder/solder.c b/keyboards/alfredslab/swift65/solder/solder.c new file mode 100644 index 0000000000..4dd021ba7c --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/solder.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/alfredslab/swift65/solder/solder.h b/keyboards/alfredslab/swift65/solder/solder.h new file mode 100644 index 0000000000..7629379f59 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/solder.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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 }, \ +} diff --git a/keyboards/alpha/rules.mk b/keyboards/alpha/rules.mk index 773655f2fb..dceb6e307b 100755 --- a/keyboards/alpha/rules.mk +++ b/keyboards/alpha/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/alpine65/info.json b/keyboards/alpine65/info.json new file mode 100644 index 0000000000..5ecf6762a0 --- /dev/null +++ b/keyboards/alpine65/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Alpine65", + "url": "", + "maintainer": "Gondolindrim", + "width": 16.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":7, "y":0}, + {"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.25, "y":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":15.25, "y":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.25, "y":3.25}, + {"x":15.25, "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}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/alpine65/rules.mk b/keyboards/alpine65/rules.mk index 56ee0e25b0..61f9253016 100644 --- a/keyboards/alpine65/rules.mk +++ b/keyboards/alpine65/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/alu84/rules.mk b/keyboards/alu84/rules.mk index 81dbad070b..8d1652171c 100755 --- a/keyboards/alu84/rules.mk +++ b/keyboards/alu84/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/amag23/amag23.c b/keyboards/amag23/amag23.c new file mode 100644 index 0000000000..5fda69e999 --- /dev/null +++ b/keyboards/amag23/amag23.c @@ -0,0 +1,17 @@ +/* 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 "amag23.h" + diff --git a/keyboards/amag23/amag23.h b/keyboards/amag23/amag23.h new file mode 100644 index 0000000000..a737dde63c --- /dev/null +++ b/keyboards/amag23/amag23.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" + +// clang-format off +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + K20, K21, K22, K23, K24, K25, \ + K30, K31, K32, K33, K34 \ +) { \ + { K00, K01, K02, K03, K04, K05 }, \ + { K10, K11, K12, K13, K14, K15 }, \ + { K20, K21, K22, K23, K24, K25 }, \ + { K30, K31, K32, K33, KC_NO, K34 } \ +} +// clang-format on diff --git a/keyboards/amag23/config.h b/keyboards/amag23/config.h new file mode 100644 index 0000000000..798fcf9d0f --- /dev/null +++ b/keyboards/amag23/config.h @@ -0,0 +1,50 @@ +/* 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 0x4B54 // "KT" +#define PRODUCT_ID 0x2323 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Koolertron +#define PRODUCT AMAG23 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 6 + +#define MATRIX_ROW_PINS { A0, A1, A2, A3 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define RGBLED_NUM 7 +#define RGBLIGHT_ANIMATIONS +#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 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/amag23/info.json b/keyboards/amag23/info.json new file mode 100644 index 0000000000..c573407725 --- /dev/null +++ b/keyboards/amag23/info.json @@ -0,0 +1,36 @@ +{ + "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": [ + {"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, "w":2} + ] + } + } +} diff --git a/keyboards/amag23/keymaps/default/keymap.c b/keyboards/amag23/keymaps/default/keymap.c new file mode 100644 index 0000000000..6d36198849 --- /dev/null +++ b/keyboards/amag23/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 + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + BASE, + FN1 +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_all( /* Base Layer */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, + MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_Z, KC_X, KC_C, KC_B, KC_SPC + ), + [FN1] = LAYOUT_all( /* Function Layer */ + KC_NO, KC_NO, KC_NO, RGB_MOD, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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/keyboards/amag23/keymaps/default/readme.md b/keyboards/amag23/keymaps/default/readme.md new file mode 100644 index 0000000000..a1a784cdfc --- /dev/null +++ b/keyboards/amag23/keymaps/default/readme.md @@ -0,0 +1,14 @@ +# Factory Keymap for Koolertron AMAG23 + +## Additional Notes +Default Keymap for AMAG23 as indicated on the original [product page](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-853.html). + +## Keymap + +![AMAG23 Factory Layout](https://i.imgur.com/c28RfwI.png) + +## Build + +To build the factory keymap, simply run: + + make amag23:default diff --git a/keyboards/amag23/keymaps/qwert/keymap.c b/keyboards/amag23/keymaps/qwert/keymap.c new file mode 100644 index 0000000000..4cb2e4736d --- /dev/null +++ b/keyboards/amag23/keymaps/qwert/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 + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + BASE, + FN1 +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_all( /* Base Layer */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC + ), + [FN1] = LAYOUT_all( /* Function Layer */ + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + _______, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, _______, + _______, _______, RGB_VAD, RGB_RMOD,RGB_HUD, _______, + _______, _______, _______, _______, _______ + ), +}; +// clang-format on + diff --git a/keyboards/amag23/keymaps/qwert/readme.md b/keyboards/amag23/keymaps/qwert/readme.md new file mode 100644 index 0000000000..c3a7df467d --- /dev/null +++ b/keyboards/amag23/keymaps/qwert/readme.md @@ -0,0 +1,14 @@ +# QWERT Keymap for Koolertron AMAG23 + +## Additional Notes +QWERT keymap, based on the left hand of an ortholinear layout. + +## Keymap + +![AMAG23 QWERT Layout](https://i.imgur.com/fiDUo77.png) + +## Build + +To build the factory keymap, simply run: + + make amag23:qwert diff --git a/keyboards/amag23/readme.md b/keyboards/amag23/readme.md new file mode 100644 index 0000000000..6ffd64f879 --- /dev/null +++ b/keyboards/amag23/readme.md @@ -0,0 +1,27 @@ +# AMAG23 (Koolertron) + +![Koolertron AMAG23](https://i.imgur.com/DakwCxk.jpg) + +One Handed Macro Mechanical Keyboard, 23 Key with optional RGB backlighting. + +- Keyboard Maintainer: [ianmclinden](https://github.com/ianmclinden) +- Hardware Supported: AMAG23 (ATmega32A) +- Hardware Availability: + - [Newegg](https://www.newegg.com/p/32K-00H1-00001) + - [Amazon](https://www.amazon.com/Koolertron-Mechanical-Keyboard-One-Handed-Programmable/dp/B07RM1TBR8) + +Make example for this keyboard (after setting up your build environment): + + make amag23:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make amag23:default:flash + +**Reset Key**: Hold down the *Escape* key while plugging in the keyboard. + +**Tips**: +- The keyboard comes with bootloadHID installed from factory. +- The RGB leds seem to be chained together in diagonal rows. The result is that only 7 individual colors are supported, and these are striped across the keypad. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/amag23/rules.mk b/keyboards/amag23/rules.mk new file mode 100644 index 0000000000..fa292d5cc8 --- /dev/null +++ b/keyboards/amag23/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Enable keyboard RGB underglow +WS2812_DRIVER = i2c diff --git a/keyboards/anavi/macropad2/keymaps/binary/keymap.c b/keyboards/anavi/macropad2/keymaps/binary/keymap.c new file mode 100644 index 0000000000..366fcb1868 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/binary/keymap.c @@ -0,0 +1,30 @@ +/* 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_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/binary/rules.mk b/keyboards/anavi/macropad2/keymaps/binary/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/binary/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/git/keymap.c b/keyboards/anavi/macropad2/keymaps/git/keymap.c new file mode 100644 index 0000000000..8580af195f --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/git/keymap.c @@ -0,0 +1,48 @@ +/* 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 new file mode 100644 index 0000000000..03bc388127 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c @@ -0,0 +1,37 @@ +/* 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/google-meet/rules.mk b/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/msteams/keymap.c b/keyboards/anavi/macropad2/keymaps/msteams/keymap.c new file mode 100644 index 0000000000..977b4e65fb --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/msteams/keymap.c @@ -0,0 +1,41 @@ +/* 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/msteams/rules.mk b/keyboards/anavi/macropad2/keymaps/msteams/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/msteams/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/skype/keymap.c b/keyboards/anavi/macropad2/keymaps/skype/keymap.c new file mode 100644 index 0000000000..b05137edef --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/skype/keymap.c @@ -0,0 +1,41 @@ +/* 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/skype/rules.mk b/keyboards/anavi/macropad2/keymaps/skype/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/skype/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/readme.md b/keyboards/anavi/macropad2/readme.md index 0ef2fede47..00d96cf8a7 100644 --- a/keyboards/anavi/macropad2/readme.md +++ b/keyboards/anavi/macropad2/readme.md @@ -1,10 +1,16 @@ -# ANAVI Macro Pad 8 +# ANAVI Macro Pad 2 -ANAVI Macro Pad 2 is an open source mini mechanical keyboard with 2 keys and backlit. Powered by ATtiny 85 microcontroller and with microUSB connector. Designed with KiCad. + +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. diff --git a/keyboards/anavi/macropad8/keymaps/git/config.h b/keyboards/anavi/macropad8/keymaps/git/config.h new file mode 100644 index 0000000000..3fe0304ffc --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/git/config.h @@ -0,0 +1,23 @@ +/* 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 + +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_SNAKE diff --git a/keyboards/anavi/macropad8/keymaps/git/keymap.c b/keyboards/anavi/macropad8/keymaps/git/keymap.c new file mode 100644 index 0000000000..0b0099fd52 --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/git/keymap.c @@ -0,0 +1,144 @@ +/* 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 + +#define _MAIN 0 +#define _FN 1 + +/* + * This keymap contains the following shortcuts for Git. On the + * first row from left to right: + * + * git status + * git log + * git pull + * git push + * + * On the second row from left to right: + * + * git diff + * git add + * git commit + * FN key to switch to the 2nd layout and control lights + * + */ + +enum custom_keycodes { + GITCOMMIT = SAFE_RANGE, + GITPUSH, + GITPULL, + GITSTATUS, + GITDIFF, + GITLOG, + GITADD +}; + +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"); + } + break; + case GITPULL: + if (record->event.pressed) { + SEND_STRING("git pull\n"); + } + break; + case GITSTATUS: + if (record->event.pressed) { + SEND_STRING("git status\n"); + } + break; + case GITDIFF: + if (record->event.pressed) { + SEND_STRING("git diff "); + } + break; + case GITLOG: + if (record->event.pressed) { + SEND_STRING("git log\n"); + } + break; + case GITADD: + if (record->event.pressed) { + SEND_STRING("git add "); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_2x4( + GITSTATUS, GITLOG, GITPULL, GITPUSH, + GITDIFF, GITADD, GITCOMMIT, MO(_FN) + ), + + [_FN] = LAYOUT_ortho_2x4( + RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN, + BL_TOGG, BL_STEP, BL_BRTG, _______ + ) +}; + +#ifdef OLED_DRIVER_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("Active layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _MAIN: + oled_write_ln_P(PSTR("Git"), 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/aplyard/aplx6/info.json b/keyboards/aplyard/aplx6/info.json new file mode 100644 index 0000000000..97a9ac8d41 --- /dev/null +++ b/keyboards/aplyard/aplx6/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Aplx6", + "url": "", + "maintainer": "Aplyard", + "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} + ] + } + } +} diff --git a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c index c773fb988c..91a76a828c 100644 --- a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c +++ b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c @@ -1,17 +1,17 @@ - /* Copyright 2020 Aplyard - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 Aplyard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include QMK_KEYBOARD_H @@ -22,15 +22,15 @@ enum layer_names { }; #define KC_COPY LCTL(KC_C) //Mac, change it to LGUI(KC_C) -#define KC_CUT LCTL(KC_X) // >> >> LGUI(KC_X) +#define KC_CUT LCTL(KC_X) // >> >> LGUI(KC_X) #define KC_PASTE LCTL(KC_V) // >> >> LGUI(KC_V) //#define KC_MY_COMPUTER LGUI(KC_SPC) //Uncomment this for Mac Spotlight Search const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap __MEDIA: Default Layer + /* Keymap __MEDIA: Default Layer * ,----------------------------------. * | .-------. / / / / / / | - * | | | |------|------|------| | + * | | | |------|------|------| | * | | Pro | | Mute | Play |Vol+/-| | * | | Micro | |------|------|------| | * | | | |----------------------| @@ -43,10 +43,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MUTE, KC_MPLY, TO(1), KC_MPRV, KC_MSTP, KC_MNXT ), - /* Keymap __DOC + /* Keymap __DOC * ,----------------------------------. * | .-------. / / / / / / | - * | | | |------|------|------| | + * | | | |------|------|------| | * | | Pro | | Home | PgUp | L/R | | * | | Micro | |------|------|------| | * | | | |----------------------| @@ -59,10 +59,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_PGUP, TO(2), KC_END, KC_PGDN, KC_INS ), - /* Keymap __DOC + /* Keymap __DOC * ,----------------------------------. * | .-------. / / / / / / | - * | | | |------|------|------| | + * | | | |------|------|------| | * | | Pro | | Calc | MyPc |Bright| | * | | Micro | |------|------|------| | * | | | |----------------------| @@ -82,22 +82,22 @@ static void render_logo(void) { //Logo for _MEDIA static const char PROGMEM logo1[] = { 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, 0, 32, 32,160,160,160,160, 32, 32, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,160,144, 8,252,129, 0, 60,126,255,255,255,255,255,255,255,255,126, 60, 0,129,252, 8,144,160, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 12,254,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, 14, 21, 42, 17, 96,135, 88,162, 64, 68,128,137,137,137,137,137,136,128, 68, 64,162, 88,199, 32, 17, 42, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 12, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 15, 15, 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, 0, 0,128, 64,160,144, 8,252,129, 0, 60,126,255,255,255,255,255,255,255,255,126, 60, 0,129,252, 8,144,160, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 12,254,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, 14, 21, 42, 17, 96,135, 88,162, 64, 68,128,137,137,137,137,137,136,128, 68, 64,162, 88,199, 32, 17, 42, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 12, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 15, 15, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 5, 4, 2, 2, 2, 2, 2, 2, 4, 5, 1, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; //Logo for _DOC static const char PROGMEM logo2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,224,160,224,128,224,160,224,128,224,160,224,128,224,160,224,128,224,160,224,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,254, 17, 16, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6,130,194,102, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,145,161,225, 32,224,160,224, 32,224,160,224, 32,224,160,224, 32,224,160,224, 32,224,160, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 12, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 14, 11, 9, 8, 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, 0, 0, 0,254, 17, 16, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6,130,194,102, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,145,161,225, 32,224,160,224, 32,224,160,224, 32,224,160,224, 32,224,160,224, 32,224,160, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 12, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 14, 11, 9, 8, 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, 0, 0, 0, 0, 0, 0, 3, 2, 3, 0, 3, 2, 3, 0, 3, 2, 3, 0, 3, 2, 3, 0, 3, 2, 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, 0, 0, 0, 0, 0, }; //Logo for _POWER static const char PROGMEM logo3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,120,254, 58, 30, 8, 4, 4, 4, 2, 2, 4, 4, 4, 8, 30, 58,254,120,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,248,145, 38, 68,136,144, 16, 32, 32, 32, 32, 16, 16,136, 68, 34,241,254,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 50, 58,110,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 35,231, 47,255, 62, 62, 61, 61, 61, 61, 61, 61, 62, 62, 63,239, 39,227, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 4, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 12, 6, 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,255,248,145, 38, 68,136,144, 16, 32, 32, 32, 32, 16, 16,136, 68, 34,241,254,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254, 0, 0, 0, 0, 0, 0,144,144,144,144,240, 0, 0, 48,224,128, 0, 0,224, 48, 0,192,224,176,144,144,240,192, 0, 0,240,240, 16, 16, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 50, 58,110,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 35,231, 47,255, 62, 62, 61, 61, 61, 61, 61, 61, 62, 62, 63,239, 39,227, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 8, 8, 0, 7, 15, 8, 8, 4, 15, 0, 0, 64, 65,111, 60, 15, 1, 0, 0, 3, 7, 12, 8, 8, 8, 0, 0, 0, 15, 15, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 12, 6, 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, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 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, 0, 0, 0, 0, 0, 0, }; //Switch between logos @@ -110,15 +110,15 @@ static void render_logo(void) { break; default: oled_write_raw_P(logo1, sizeof(logo1)); - } + } } -void oled_task_user(void) { +void oled_task_user(void) { render_logo(); } #endif -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { switch (get_highest_layer(layer_state)) { case 1: @@ -141,6 +141,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { } else { tap_code(KC_VOLD); //edit here your _MEDIA layer(1) encoder keycode } - } + } } -} + return true; +} diff --git a/keyboards/arch_36/config.h b/keyboards/arch_36/config.h index 3950c4b9a1..be4a0a9830 100644 --- a/keyboards/arch_36/config.h +++ b/keyboards/arch_36/config.h @@ -55,4 +55,6 @@ along with this program. If not, see . 11, 10, 9, 8, 7, 6 } #endif +#define OLED_DISPLAY_128X64 + #define EE_HANDS diff --git a/keyboards/arch_36/info.json b/keyboards/arch_36/info.json new file mode 100644 index 0000000000..aedc658165 --- /dev/null +++ b/keyboards/arch_36/info.json @@ -0,0 +1,52 @@ +{ + "keyboard_name": "Arch-36", + "url": "", + "maintainer": "obosob", + "width": 14, + "height": 5.1, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"x":0, "y":1}, + {"x":1, "y":0.25}, + {"x":2, "y":0}, + {"x":3, "y":0.375}, + {"x":4, "y":0.5}, + {"x":9, "y":0.5}, + {"x":10, "y":0.375}, + {"x":11, "y":0}, + {"x":12, "y":0.25}, + {"x":13, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":1.25}, + {"x":2, "y":1}, + {"x":3, "y":1.375}, + {"x":4, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.375}, + {"x":11, "y":1}, + {"x":12, "y":1.25}, + {"x":13, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":2.25}, + {"x":2, "y":2}, + {"x":3, "y":2.375}, + {"x":4, "y":2.5}, + {"x":9, "y":2.5}, + {"x":10, "y":2.375}, + {"x":11, "y":2}, + {"x":12, "y":2.25}, + {"x":13, "y":3}, + + {"x":3.5, "y":3.5}, + {"x":4.5, "y":3.7}, + {"x":5.5, "y":4.1}, + {"x":7.5, "y":4.1}, + {"x":8.5, "y":3.7}, + {"x":9.5, "y":3.5} + ] + } + } +} diff --git a/keyboards/ares/ares.c b/keyboards/ares/ares.c index 95d4b878f1..80d4455179 100644 --- a/keyboards/ares/ares.c +++ b/keyboards/ares/ares.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "ares.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h index ffbe456050..35e885d693 100644 --- a/keyboards/ares/config.h +++ b/keyboards/ares/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/arisu/info.json b/keyboards/arisu/info.json new file mode 100644 index 0000000000..213613d768 --- /dev/null +++ b/keyboards/arisu/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Arisu", + "url": "https://github.com/FateNozomi/arisu-pcb", + "maintainer": "FateNozomi", + "width": 18.3, + "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":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.3, "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.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}, + {"x":15.5, "y":1, "w":1.5}, + {"x":17.3, "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.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}, + {"x":14.75, "y":2, "w":2.25}, + {"x":17.3, "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":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, "w":1.75}, + {"x":16.3, "y":3.25}, + + {"x":0, "y":4, "w":1.5}, + {"x":3.25, "y":4, "w":1.5}, + {"x":4.75, "y":4, "w":2}, + {"x":6.75, "y":4, "w":1.25}, + {"x":8.75, "y":4, "w":2.75}, + {"x":11.5, "y":4, "w":1.5}, + {"x":15.3, "y":4.25}, + {"x":16.3, "y":4.25}, + {"x":17.3, "y":4.25} + ] + } + } +} diff --git a/keyboards/arisu/keymaps/stanrc85/keymap.c b/keyboards/arisu/keymaps/stanrc85/keymap.c new file mode 100644 index 0000000000..a8430b9a33 --- /dev/null +++ b/keyboards/arisu/keymaps/stanrc85/keymap.c @@ -0,0 +1,50 @@ +/* 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( + KC_GRV, KC_1, KC_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_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, MO(_FN2_60), + KC_LSFT, KC_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, LT_BPCF, KC_LGUI, LT_SPCF, TD_TWIN, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_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_BSLS, KC_GRV, 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_CAPS, 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(_FN2_60), + KC_LSFT, KC_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(_FN1_60), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1_60] = LAYOUT( + 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, 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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT) + ) +}; diff --git a/keyboards/arisu/keymaps/stanrc85/rules.mk b/keyboards/arisu/keymaps/stanrc85/rules.mk new file mode 100644 index 0000000000..9db643c8e6 --- /dev/null +++ b/keyboards/arisu/keymaps/stanrc85/rules.mk @@ -0,0 +1 @@ +USER_NAME := stanrc85 \ No newline at end of file diff --git a/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c b/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c index cf4433d8c8..6a48a3102f 100644 --- a/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c +++ b/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c @@ -17,7 +17,7 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -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_MS_WH_UP); @@ -25,6 +25,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MS_WH_DOWN); } } + return true; } // diff --git a/keyboards/arrayperipherals/1x4p1/keymaps/via/keymap.c b/keyboards/arrayperipherals/1x4p1/keymaps/via/keymap.c index d419050a3d..87739b377e 100644 --- a/keyboards/arrayperipherals/1x4p1/keymaps/via/keymap.c +++ b/keyboards/arrayperipherals/1x4p1/keymaps/via/keymap.c @@ -17,7 +17,7 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -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_MS_WH_UP); @@ -25,6 +25,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MS_WH_DOWN); } } + return true; } // diff --git a/keyboards/at101_bh/rules.mk b/keyboards/at101_bh/rules.mk index 1930d9f27f..af0606f6d3 100644 --- a/keyboards/at101_bh/rules.mk +++ b/keyboards/at101_bh/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/at_at/660m/bootloader_defs.h b/keyboards/at_at/660m/bootloader_defs.h deleted file mode 100644 index dccd0fa5d1..0000000000 --- a/keyboards/at_at/660m/bootloader_defs.h +++ /dev/null @@ -1,5 +0,0 @@ -/* Address for jumping to bootloader on STM32 chips. */ -/* It is chip dependent, the correct number can be looked up here (page 175): - * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800 diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk index a94604fb09..f0465ceb20 100644 --- a/keyboards/at_at/660m/rules.mk +++ b/keyboards/at_at/660m/rules.mk @@ -2,11 +2,14 @@ MCU = STM32F072 BOARD = GENERIC_STM32_F072XB +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/atreus/keymaps/ridingqwerty/rules.mk b/keyboards/atreus/keymaps/ridingqwerty/rules.mk index ebf83f02e8..a41ef5f10f 100644 --- a/keyboards/atreus/keymaps/ridingqwerty/rules.mk +++ b/keyboards/atreus/keymaps/ridingqwerty/rules.mk @@ -1,6 +1,10 @@ +# MCU name MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -16,4 +20,3 @@ RGBLIGHT_ENABLE = no TAP_DANCE_ENABLE = no UNICODE_ENABLE = no UNICODEMAP_ENABLE = yes - diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h index de6f64063b..6af5d8bf6e 100644 --- a/keyboards/atreus62/atreus62.h +++ b/keyboards/atreus62/atreus62.h @@ -1,5 +1,4 @@ -#ifndef ATREUS62_H -#define ATREUS62_H +#pragma once #include "quantum.h" @@ -20,21 +19,3 @@ { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ } - -// Used to create a keymap using only KC_ prefixed keys. -#define LAYOUT_kc( \ - 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, k4c, k4d \ -) \ -{ \ - { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \ - { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \ - { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \ - { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k47, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \ - { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k46, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \ -} - -#endif diff --git a/keyboards/atreus62/keymaps/atreus52/README.md b/keyboards/atreus62/keymaps/atreus52/README.md deleted file mode 100644 index 245df7deb4..0000000000 --- a/keyboards/atreus62/keymaps/atreus52/README.md +++ /dev/null @@ -1,10 +0,0 @@ - - -Atreus52 Modification -======================= - -Firmware for my custom keyboard based on the Atreus layout, but with 5 rows and only 5 columns per hand. -More documentation coming soon. - -# License - GPL-3+ diff --git a/keyboards/atreus62/keymaps/atreus52/config.h b/keyboards/atreus62/keymaps/atreus52/config.h deleted file mode 100644 index 91b626b560..0000000000 --- a/keyboards/atreus62/keymaps/atreus52/config.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "../../config.h" - -#undef MANUFACTURER -#undef PRODUCT -#undef MATRIX_ROW_PINS -#undef MATRIX_COL_PINS -#undef DIODE_DIRECTION - -/* USB Device descriptor parameter */ -#define MANUFACTURER Mesh Industries -#define PRODUCT Atreus52 Treeboard - -#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } -#define MATRIX_COL_PINS { B2, B1, F7, F6, F5, F4, B6, D3, D2, D1, D0, D4, B3 } - -#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus62/keymaps/atreus52/keymap.c b/keyboards/atreus62/keymaps/atreus52/keymap.c deleted file mode 100644 index 2abd49b116..0000000000 --- a/keyboards/atreus62/keymaps/atreus52/keymap.c +++ /dev/null @@ -1,88 +0,0 @@ -#include QMK_KEYBOARD_H - -// Layers -#define DVORAK 0 -#define QWERTY 1 -#define RAISE 2 -#define LOWER 3 -#define BDO 4 -#define RESETL 5 - -#define KC_RAIS MO(RAISE) -#define KC_LOWR MO(LOWER) -#define KC_TGBD TG(BDO) -#define KC_TGRS TG(RESETL) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [DVORAK] = LAYOUT_kc( - NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \ - NO, QUOT, COMM, DOT, P, Y, F, G, C, R, L, NO, \ - NO, A, O, E, U, I, D, H, T, N, S, NO, \ - NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, \ - NO, TGBD, LALT, LCTL, LOWR, LSFT, BSPC, ENT, SPC, RAIS, LGUI, LEFT, RGHT, NO - ), - - [QWERTY] = LAYOUT_kc( - NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \ - NO, Q, W, E, R, T, Y, U, I, O, P, NO, \ - NO, A, S, D, F, G, H, J, K, L, SCLN, NO, \ - NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, \ - NO, TGBD, LALT, LCTL, LOWR, LSFT, BSPC, ENT, SPC, RAIS, LGUI, LEFT, RGHT, NO - ), - - [RAISE] = LAYOUT_kc( - NO, MRWD, MPRV, MPLY, MNXT, MFFD, TRNS, MUTE, VOLD, VOLU, DEL, NO, \ - NO, TILD, GRV, LCBR, RCBR, DQUO, QUOT, EQL, PLUS, MINS, QUES, NO, \ - NO, ESC, TAB, LPRN, RPRN, BSLS, SLSH, LEFT, DOWN, UP, RGHT, NO, \ - NO, TRNS, TRNS, LBRC, RBRC, TRNS, INS, PIPE, UNDS, TRNS, TRNS, NO, \ - NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TGRS, NO - ), - - [LOWER] = LAYOUT_kc( - NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO, \ - NO, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, NO, \ - NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \ - NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, DOT, TRNS, TRNS, TRNS, NO, \ - NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO - ), - - [BDO] = LAYOUT_kc( - NO, ESC, 1, 2, 3, 4, 5, 0, SLSH, U, C, NO, \ - NO, TAB, Q, W, E, R, 6, Y, I, O, P, NO, \ - NO, LSFT, A, S, D, F, 7, G, H, J, K, NO, \ - NO, T, Z, X, C, V, 8, B, N, M, L, NO, \ - NO, LCTL, SPC, SPC, SPC, SPC, COMM, ENT, 9, NO, NO, NO, TGBD, NO - ), - - [RESETL] = LAYOUT( - 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, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(RESETL),KC_NO - ) -}; - -static uint8_t qw_dv_swap_state = 0; - -bool process_record_user (uint16_t keycode, keyrecord_t *record) { - if (keycode == KC_LGUI) { - if (record->event.pressed) { - qw_dv_swap_state |= 0b00000001; - } else { - qw_dv_swap_state &= ~(0b00000001); - } - } - if (keycode == KC_LCTL) { - if (record->event.pressed) { - qw_dv_swap_state |= 0b00000010; - } else { - qw_dv_swap_state &= ~(0b00000010); - } - } - - if (qw_dv_swap_state == 0b00000011) { - layer_invert(DVORAK); - } - return true; -} diff --git a/keyboards/atreus62/keymaps/atreus52/rules.mk b/keyboards/atreus62/keymaps/atreus52/rules.mk deleted file mode 100644 index efa309d201..0000000000 --- a/keyboards/atreus62/keymaps/atreus52/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -NKRO_ENABLE = true -MOUSEKEY_ENABLE = no -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no diff --git a/keyboards/aves65/aves65.c b/keyboards/aves65/aves65.c index 35b93f7aee..f495edf737 100644 --- a/keyboards/aves65/aves65.c +++ b/keyboards/aves65/aves65.c @@ -1 +1,18 @@ +/* +Copyright 2019 I/O 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 "aves65.h" diff --git a/keyboards/aves65/aves65.h b/keyboards/aves65/aves65.h index ee35909efa..701b3b3274 100644 --- a/keyboards/aves65/aves65.h +++ b/keyboards/aves65/aves65.h @@ -1,8 +1,71 @@ +/* +Copyright 2019 I/O 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" // readability #define ___ KC_NO + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, 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, k46, k4a, k4b, 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, ___, ___, ___, k46, ___, ___, k49, k4a, 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, k2c, k2d, k2e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k46, k4a, k4b, 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, ___, 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, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_65_iso_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, 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, k4a, k4b, 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, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e } \ +} + #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, \ @@ -17,3 +80,78 @@ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d, k4e } \ } + +#define LAYOUT_65_iso_blocker_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, 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, 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, ___, ___, ___, k46, ___, ___, ___, 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, k2c, 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, 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, ___, k1e }, \ + { 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, ___, ___, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_65_ansi_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, 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, 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, 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, k2c, 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, ___, k1e }, \ + { 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 } \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, 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, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/aves65/keymaps/default/keymap.c b/keyboards/aves65/keymaps/default/keymap.c index 3b093cad04..98d968b34f 100644 --- a/keyboards/aves65/keymaps/default/keymap.c +++ b/keyboards/aves65/keymaps/default/keymap.c @@ -1,18 +1,58 @@ +/* +Copyright 2019 I/O 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 -// 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 _MA 0 +// 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] = { -[_MA] = 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_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_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_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_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT) +[_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_NO, 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_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_RCTL, MO(_FN1), KC_LEFT, KC_DOWN, KC_RGHT), + +[_FN1] = 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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/aves65/keymaps/via/keymap.c b/keyboards/aves65/keymaps/via/keymap.c new file mode 100644 index 0000000000..98d968b34f --- /dev/null +++ b/keyboards/aves65/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2019 I/O 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 + +// 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_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_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_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_RCTL, MO(_FN1), KC_LEFT, KC_DOWN, KC_RGHT), + +[_FN1] = 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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + +}; diff --git a/keyboards/aves65/keymaps/via/rules.mk b/keyboards/aves65/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/aves65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/aves65/rules.mk b/keyboards/aves65/rules.mk index d4c28631d0..d88fb91dd3 100644 --- a/keyboards/aves65/rules.mk +++ b/keyboards/aves65/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 @@ -25,8 +18,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output -LAYOUTS = 65_iso_blocker +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/babyv/keymaps/melonbred/keymap.c b/keyboards/babyv/keymaps/melonbred/keymap.c new file mode 100644 index 0000000000..ea62241e9d --- /dev/null +++ b/keyboards/babyv/keymaps/melonbred/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2020 melonbred + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + LAYER0, + LAYER1, + LAYER2, +}; + + +// Tap Dance Declarations +enum { + TD_M_D = 0, + TD_P_M +}; + +// Tap Dance Definition +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for minus, tap twice for divide + [TD_M_D] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_PSLS), + //Tap once for plus, tap twice for multiply + [TD_P_M] = ACTION_TAP_DANCE_DOUBLE(KC_PPLS, KC_PAST) +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [LAYER0] = 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, + CTL_T(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, + MO(LAYER2), KC_LALT, LT(LAYER1, KC_SPC), KC_SPC, KC_RALT, KC_LGUI + ), + + [LAYER1] = LAYOUT_2u( + KC_GRV, KC_QUOT, _______, KC_UP, _______, _______, KC_7, KC_8, KC_9, KC_PMNS, KC_PSLS, KC_DEL, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST, KC_ENT, + KC_LSFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, _______, _______, KC_0, KC_PDOT, _______ + ), + + [LAYER2] = 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_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, XXXXXXX, + _______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk index d90f8155e8..e0fbf5a8c0 100644 --- a/keyboards/bantam44/rules.mk +++ b/keyboards/bantam44/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/barleycorn/readme.md b/keyboards/barleycorn/readme.md index 775d259681..dd96c69e9a 100644 --- a/keyboards/barleycorn/readme.md +++ b/keyboards/barleycorn/readme.md @@ -5,7 +5,7 @@ An f-row less compact 1800 kit with only through hole components. * Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) -* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/yiancar/gingham_pcb) +* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/yiancar/barleycorn_pcb) * Hardware Availability: https://mykeyboard.eu/, https://novelkeys.xyz Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/barleycorn_smd/barleycorn_smd.c b/keyboards/barleycorn_smd/barleycorn_smd.c new file mode 100644 index 0000000000..d70689d8fe --- /dev/null +++ b/keyboards/barleycorn_smd/barleycorn_smd.c @@ -0,0 +1,16 @@ +/* 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 "barleycorn_smd.h" diff --git a/keyboards/barleycorn_smd/barleycorn_smd.h b/keyboards/barleycorn_smd/barleycorn_smd.h new file mode 100644 index 0000000000..926b67b379 --- /dev/null +++ b/keyboards/barleycorn_smd/barleycorn_smd.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 + +#define XXX KC_NO + +#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, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, 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, K46, K4A, K4B, K4C, K4D, K4E, K4F, 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, 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, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} + +#define LAYOUT_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, K2F, K2G, K2H, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, 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, K1F, K1G, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} + +#define LAYOUT_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, 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, K46, K4A, K4B, K4C, K4D, K4E, K4F, 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, 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, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} diff --git a/keyboards/barleycorn_smd/config.h b/keyboards/barleycorn_smd/config.h new file mode 100644 index 0000000000..2ac86bf8a8 --- /dev/null +++ b/keyboards/barleycorn_smd/config.h @@ -0,0 +1,111 @@ +/* +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" + +#define VENDOR_ID 0x7033 +#define PRODUCT_ID 0x4749 +#define DEVICE_VER 0x0001 +#define MANUFACTURER P3D Store +#define PRODUCT Barleycorn SMD + +/* key matrix size */ +#define MATRIX_ROWS 5 +#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) + * + */ + +/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */ +#define MATRIX_ROW_PINS { F5, F4, F1, F0, F6 } +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D5, D5, D5, D5, D5, D5, D5, D5, D5, D5 } +#define UNUSED_PINS +#define PORT_EXPANDER_ADDRESS 0x20 + +#define RGB_DI_PIN E6 +#define RGBLED_NUM 15 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5 } + +#define LED_CAPS_LOCK_PIN B2 +#define LED_NUM_LOCK_PIN B3 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 400 + + +/* 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/barleycorn_smd/info.json b/keyboards/barleycorn_smd/info.json new file mode 100644 index 0000000000..c33f77a9b1 --- /dev/null +++ b/keyboards/barleycorn_smd/info.json @@ -0,0 +1,283 @@ +{ + "keyboard_name": "Barleycorn SMD", + "maintainer": "matthewdias", + "width": 19.5, + "height": 5, + "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": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "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": "2,12", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "1,14", "x": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "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,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "y": 2 }, + + { "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.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "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.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + }, + "LAYOUT_ansi": { + "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": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "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": "2,12", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "1,14", "x": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "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,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "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,13", "x": 14.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "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.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + }, + "LAYOUT_iso": { + "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": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "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": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "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": "2,13", "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "2,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "y": 2 }, + + { "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.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "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.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/barleycorn_smd/keymaps/default/keymap.c b/keyboards/barleycorn_smd/keymaps/default/keymap.c new file mode 100644 index 0000000000..8bfc60ad4b --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* 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 + +//This is the ANSI version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_ansi( /* 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_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_PEQL, + KC_CAPS, KC_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_BSPC, + 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_ansi( /* 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_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, RESET, 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_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/default/readme.md b/keyboards/barleycorn_smd/keymaps/default/readme.md new file mode 100644 index 0000000000..04903f8cc9 --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/default/readme.md @@ -0,0 +1,11 @@ +# The default keymap for Barleycorn + +![Layer 0](https://i.imgur.com/cU9lzz3.png) + +![Layer 1](https://i.imgur.com/0G3e1K3.png) + +Default layer is normal ANSI and Fn layer is used for Volume control and arrow cluster. + +Alternative ANSI layouts: + +![Alt Keymap](https://i.imgur.com/6uAx8jZ.png) diff --git a/keyboards/barleycorn_smd/keymaps/iso/keymap.c b/keyboards/barleycorn_smd/keymaps/iso/keymap.c new file mode 100644 index 0000000000..0f739c8831 --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/iso/keymap.c @@ -0,0 +1,34 @@ +/* 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 + +//This is the ISO version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_iso( /* 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_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_P7, KC_P8, KC_P9, KC_PEQL, + KC_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_BSPC, + 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_iso( /* 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_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, 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_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/iso/readme.md b/keyboards/barleycorn_smd/keymaps/iso/readme.md new file mode 100644 index 0000000000..492abfcecc --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/iso/readme.md @@ -0,0 +1,11 @@ +# The default keymap for ISO Barleycorn + +![Layer 0](https://i.imgur.com/llZlVHt.png) + +![Layer 1](https://i.imgur.com/hrYtMQk.png) + +Default layer is normal ISO and Fn layer is used for Volume control and arrow cluster + +Alternative ISO layouts: + +![Alt Keymap](https://i.imgur.com/2cL0IGQ.png) diff --git a/keyboards/barleycorn_smd/keymaps/via/keymap.c b/keyboards/barleycorn_smd/keymaps/via/keymap.c new file mode 100644 index 0000000000..4cc2f1a73f --- /dev/null +++ b/keyboards/barleycorn_smd/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 + +// This keymaps is used for VIA, it reflects the default keymap. + +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_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_PEQL, + KC_CAPS, KC_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_BSPC, + 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( /* 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_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, RESET, 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_VOLU, KC_VOLD, KC_MUTE, 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, 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, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/via/readme.md b/keyboards/barleycorn_smd/keymaps/via/readme.md new file mode 100644 index 0000000000..b82bc8e79f --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/via/readme.md @@ -0,0 +1 @@ +# Compile with this keymap to use VIA diff --git a/keyboards/barleycorn_smd/keymaps/via/rules.mk b/keyboards/barleycorn_smd/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/barleycorn_smd/matrix.c b/keyboards/barleycorn_smd/matrix.c new file mode 100644 index 0000000000..b717452f3d --- /dev/null +++ b/keyboards/barleycorn_smd/matrix.c @@ -0,0 +1,138 @@ +/* +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 +#include +#include "wait.h" +#include "quantum.h" +#include "i2c_master.h" + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static void unselect_rows(void) { + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +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 init_pins(void) { + unselect_rows(); + // Set I/O + uint8_t send_data[2] = { 0xFF, 0x03}; + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20); + // Set Pull-up + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20); + + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + if ( x < 8 ) { + setPinInputHigh(col_pins[x]); + } + } +} + +void matrix_init_custom(void) { + // TODO: initialize hardware here + // Initialize I2C + i2c_init(); + + // initialize key pins + init_pins(); + wait_ms(50); +} + +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); + matrix_io_delay(); + + uint8_t port_expander_col_buffer[2]; + i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20); + + // For each col... + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + uint8_t pin_state; + // Select the col pin to read (active low) + switch (col_index) { + case 8 : + pin_state = port_expander_col_buffer[0] & (1 << 0); + break; + case 9 : + pin_state = port_expander_col_buffer[0] & (1 << 1); + break; + case 10 : + pin_state = port_expander_col_buffer[0] & (1 << 2); + break; + case 11 : + pin_state = port_expander_col_buffer[0] & (1 << 3); + break; + case 12 : + pin_state = port_expander_col_buffer[0] & (1 << 4); + break; + case 13 : + pin_state = port_expander_col_buffer[0] & (1 << 5); + break; + case 14 : + pin_state = port_expander_col_buffer[0] & (1 << 6); + break; + case 15 : + pin_state = port_expander_col_buffer[0] & (1 << 7); + break; + case 16 : + pin_state = port_expander_col_buffer[1] & (1 << 0); + break; + case 17 : + pin_state = port_expander_col_buffer[1] & (1 << 1); + break; + default : + 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]); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool matrix_has_changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + matrix_has_changed |= read_cols_on_row(current_matrix, current_row); + } + + return matrix_has_changed; +} diff --git a/keyboards/barleycorn_smd/readme.md b/keyboards/barleycorn_smd/readme.md new file mode 100644 index 0000000000..897e1270fe --- /dev/null +++ b/keyboards/barleycorn_smd/readme.md @@ -0,0 +1,19 @@ +# Barleycorn SMD + +![image](https://user-images.githubusercontent.com/3302524/110901245-a5679b00-82c9-11eb-8f8f-17ed6bd97332.png) + +An f-row less compact 1800 keyboard with SMD components. Based on Barleycorn by Yiancar. + +- Keyboard Maintainer: matthewdias +- Hardware Supported: Barleycorn SMD +- Hardware Availability: https://p3dstore.com + +Make example for this keyboard (after setting up your build environment): + + make barleycorn_smd:default + +Flashing example for this keyboard: + + make barleycorn_smd: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/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk new file mode 100644 index 0000000000..fba31123d0 --- /dev/null +++ b/keyboards/barleycorn_smd/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 = 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 = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +CUSTOM_MATRIX = lite + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/basekeys/slice/rev1_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/rules.mk index 116492c6ef..8bf833d3e2 100644 --- a/keyboards/basekeys/slice/rev1_rgb/rules.mk +++ b/keyboards/basekeys/slice/rev1_rgb/rules.mk @@ -29,3 +29,5 @@ NKRO_ENABLE = no # USB Nkey Rollover RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow OLED_DRIVER_ENABLE = yes # Disable OLED driver. UNICODE_ENABLE = no # Unicode + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/basekeys/trifecta/keymaps/default/keymap.c b/keyboards/basekeys/trifecta/keymaps/default/keymap.c index 727ebf381a..6db61e4768 100644 --- a/keyboards/basekeys/trifecta/keymaps/default/keymap.c +++ b/keyboards/basekeys/trifecta/keymaps/default/keymap.c @@ -48,7 +48,7 @@ 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 (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -68,4 +68,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_LEFT); } } + return true; } diff --git a/keyboards/basekeys/trifecta/keymaps/via/keymap.c b/keyboards/basekeys/trifecta/keymaps/via/keymap.c index e1f401bc24..54e25ff370 100644 --- a/keyboards/basekeys/trifecta/keymaps/via/keymap.c +++ b/keyboards/basekeys/trifecta/keymaps/via/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_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_GRV, 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_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, @@ -48,7 +48,7 @@ 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 (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -68,4 +68,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { rgblight_step_reverse(); } } + return true; } diff --git a/keyboards/basketweave/keymaps/default/keymap.c b/keyboards/basketweave/keymaps/default/keymap.c index 40cf61eea6..16c082b61d 100644 --- a/keyboards/basketweave/keymaps/default/keymap.c +++ b/keyboards/basketweave/keymaps/default/keymap.c @@ -41,7 +41,7 @@ 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 (index == 0) { if (clockwise) { tap_code(KC_VOLU); @@ -49,4 +49,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h new file mode 100644 index 0000000000..b00e781df2 --- /dev/null +++ b/keyboards/bastardkb/scylla/config.h @@ -0,0 +1,39 @@ +/* + * 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 0x1829 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Bastard Keyboards +#define PRODUCT Scylla + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 +#define DIODE_DIRECTION ROW2COL +#define MATRIX_ROW_PINS { D7, B5, F7, F6, B6 } +#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 } + +#define RGB_DI_PIN D2 +#define RGBLED_NUM 58 +#define RGBLED_SPLIT { 29, 29 } +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_ANIMATIONS +#define DEBOUNCE 5 +#define SOFT_SERIAL_PIN D0 +#define MASTER_RIGHT diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json new file mode 100644 index 0000000000..a598b03999 --- /dev/null +++ b/keyboards/bastardkb/scylla/info.json @@ -0,0 +1,71 @@ +{ + "keyboard_name": "The Bastard Keyboard", + "url": "https://bastardkb.com/", + "maintainer": "Quentin Lebastard", + "width": 17, + "height": 8, + "layouts": { + "LAYOUT_split_4x6_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}, + {"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":"L43", "x":5, "y":4}, + {"label":"L44", "x":6, "y":4}, + {"label":"L45", "x":7, "y":4}, + {"label":"R40", "x":9, "y":4}, + {"label":"R41", "x":10, "y":4}, + {"label":"R40", "x":11, "y":4}, + {"label":"L52", "x":6, "y":5}, + {"label":"L53", "x":7, "y":5}, + {"label":"R52", "x":9, "y":5}, + {"label":"R53", "x":10, "y":5} + ] + } + } +} diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.c b/keyboards/bastardkb/scylla/keymaps/default/keymap.c new file mode 100644 index 0000000000..49be09b689 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* + * 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_4x6_5( + 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_BSLS, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI, + KC_HOME, KC_BSPC, KC_DEL, KC_RALT + ), + + [1] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, +//---------------------------------------------------------//-----------------------------------------------------------// + RESET, _______, _______, _______, _______, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), + + [2] = LAYOUT_split_4x6_5( + 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_RMOD, RGB_TOG, RGB_MOD, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, RESET, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), +}; diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c new file mode 100644 index 0000000000..94dd182c69 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c @@ -0,0 +1,90 @@ +/* + * Copyright 2021 Joschua Gandert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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" + + +enum layer_names { + _BASE, + _GAME, /* WASD shifted right once */ + _LOWER, + _RAISE, + _ADJUST /* when both LOWER and RAISE pressed */ +}; + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_4x6_5( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , DE_SS , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , DE_Z , KC_U , KC_I , KC_O , KC_P , DE_UDIA, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , DE_ODIA, DE_ADIA, + KC_LCTL, DE_Y , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT, DE_MINS, DE_PLUS, + + RAISE, KC_SPC, KC_LCTL, KC_RALT, KC_BSPC, LOWER, + KC_ENT, KC_LALT, KC_LGUI, KC_RSFT + ), + + [_GAME] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_T , KC_TAB , KC_Q , KC_W , KC_E , KC_R , _______, _______, KC_UP, _______, _______, _______, + KC_G , KC_LSFT, KC_A , KC_S , KC_D , KC_F , _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_B , KC_LCTL, DE_Y , KC_X , KC_C , KC_V , _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_LOWER] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL , + _______, DE_HASH, DE_CIRC, KC_PGUP, DE_LABK, _______, _______, KC_P7 , KC_P8 , KC_P9 , KC_PPLS, KC_BSPC , + _______, DE_ACUT, KC_HOME, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 , KC_PDOT, _______ , + _______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL, + + _______, KC_RGHT, _______, _______, _______, _______, + KC_LEFT, _______, RESET , _______ + ), + + [_RAISE] = LAYOUT_split_4x6_5( + 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_UP , _______, _______, KC_LALT, KC_INS , KC_NLCK , KC_CALC, KC_PSCREEN, KC_MUTE, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT , KC_MSEL, KC_MPRV , KC_MPLY , KC_MNXT, _______ , KC_VOLU, + _______, _______, _______, _______, _______, _______, DE_HASH, KC_MYCM , _______ , _______, KC_SLCK , KC_VOLD, + + _______, _______, _______, _______, KC_UP , _______, + _______, _______, _______, KC_DOWN + ), + + [_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), +}; + + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md new file mode 100644 index 0000000000..14de01ac41 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md @@ -0,0 +1,24 @@ +![German Gaming Layout Image](https://i.imgur.com/0y938rGh.png) + +Despite being less accurate, the columns in the image are shifted up and down to avoid the [Hermann grid illusion](https://en.wikipedia.org/wiki/Grid_illusion). +​ + +# German Gaming Layout +​ +This layout was build with gaming in mind for a german user. As a result I added a "game" layer that shifts the keys of the left side (below the number row) one to the right, so that WASD is on the ESDF keys. The reason this layer was added is that using WASD is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. ESDF also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so TGB, ends up in the leftmost position. + +Of course, one could just be forced to reconfigure every game, but that wouldn't be very user-friendly and likely reduce satisfaction with the layout. When in game mode, the right side of keys also features arrow keys on IJKL. + + +## Raise and Lower layer + +Additionally, via the RAISE layer, it's always possible to access the arrow keys, which are often used in game menues. On the exact same position one can access Home, End, Page Down and Page Up via the LOWER layer. The left side of the LOWER layer also contains the few characters that would usually have their own key in a traditional german keyboard. + +The right side features various media keys in the RAISE layer, and a numpad in the LOWER layer. + + +## Firmware + +The keyboard can be put into Reset mode (for flashing a keymap) by pressing **LOWER** + Super (also known as Windows key), or by pressing **LOWER** + **RAISE** + R. + +`MOUSEKEY_ENABLE` was set to `no` for this keymap, since it wasn't used and the size of the firmware ended up being too large. diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk new file mode 100644 index 0000000000..0a5b666e85 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = no diff --git a/keyboards/crkbd/keymaps/thefrey/config.h b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h similarity index 70% rename from keyboards/crkbd/keymaps/thefrey/config.h rename to keyboards/bastardkb/scylla/keymaps/xyverz/config.h index cee901fc81..d7baf99376 100644 --- a/keyboards/crkbd/keymaps/thefrey/config.h +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h @@ -20,26 +20,14 @@ along with this program. If not, see . #pragma once -//#define USE_MATRIX_I2C -#define FORCE_NKRO - /* Select hand configuration */ - -#define MASTER_LEFT +// #define MASTER_LEFT // #define MASTER_RIGHT -// #define EE_HANDS - -#define SSD1306OLED - -#define USE_SERIAL_PD2 +#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 +#define TAPPING_TERM 300 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 300 \ No newline at end of file diff --git a/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c new file mode 100644 index 0000000000..b8f70bdc9b --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c @@ -0,0 +1,100 @@ +/* + * Copyright 2021 Ian Sterling + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { _WINDOWS, _MAC, _LOWER, _RAISE, _ADJUST }; + +enum custom_keycodes { WINDOWS = SAFE_RANGE, MAC, ADJUST }; + +// Aliases to keep the keymap tidy +#define GUIBSPC GUI_T(KC_BSPC) // GUI when held, BSPC when tapped. +#define RGB_SWR RGB_M_SW // Swirl Animation alias +#define RGB_SNK RGB_M_SN // Snake Animation alias +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! +#define WINLOCK LGUI(KC_L) // Lock my PC! +#define DELGUI GUI_T(KC_DEL) +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_WINDOWS] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_GRV, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + LOWER, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_MAC] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_GRV, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + LOWER, KC_BSPC, DELGUI, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_LOWER] = LAYOUT_split_4x6_5( + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, + RESET, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_RAISE] = LAYOUT_split_4x6_5( + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, + _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +}; + +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) { + if (record->event.pressed) { + switch (keycode) { + case WINDOWS: + set_single_persistent_default_layer(_WINDOWS); + return false; + case MAC: + set_single_persistent_default_layer(_MAC); + return false; + } + } + return true; +} diff --git a/keyboards/bastardkb/scylla/readme.md b/keyboards/bastardkb/scylla/readme.md new file mode 100644 index 0000000000..70df5cfbb9 --- /dev/null +++ b/keyboards/bastardkb/scylla/readme.md @@ -0,0 +1,22 @@ +# Scylla + +A modern, low-profile split ergonomic keyboard + +* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) +* Hardware Supported: elite-C V4 +* Hardware Availability: [Bastard Keyboards](https://bastardkb.com/) + +Make example for this keyboard (after setting up your build environment): + + make bastardkb/scylla: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 the [keyboard build instructions](https://docs.bastardkb.com) + + +## Important information regarding the reset + +If you modify this firmware, make sure to always have a RESET key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up. + +Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button. diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk new file mode 100644 index 0000000000..cc88208e33 --- /dev/null +++ b/keyboards/bastardkb/scylla/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 = 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 = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/bastardkb/scylla/scylla.c b/keyboards/bastardkb/scylla/scylla.c new file mode 100644 index 0000000000..f9e7917085 --- /dev/null +++ b/keyboards/bastardkb/scylla/scylla.c @@ -0,0 +1,18 @@ +/* + * 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 "scylla.h" diff --git a/keyboards/bastardkb/scylla/scylla.h b/keyboards/bastardkb/scylla/scylla.h new file mode 100644 index 0000000000..196982952f --- /dev/null +++ b/keyboards/bastardkb/scylla/scylla.h @@ -0,0 +1,42 @@ +/* + * 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" + +// SWITCHED 91 and 95 - check on left ? +#define LAYOUT_split_4x6_5( \ + k00, k01, k02, k03, k04, k05, k55, k54, k53, k52, k51, k50, \ + k10, k11, k12, k13, k14, k15, k65, k64, k63, k62, k61, k60, \ + k20, k21, k22, k23, k24, k25, k75, k74, k73, k72, k71, k70, \ + k30, k31, k32, k33, k34, k35, k85, k84, k83, k82, k81, k80, \ + k43, k44, k41, k91, k94, k93, \ + k45, k42, k92, k95 \ +)\ +{\ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { KC_NO, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 }, \ + { k80, k81, k82, k83, k84, k85 }, \ + { KC_NO, k91, k92, k93, k94, k95 }, \ +} diff --git a/keyboards/bastardkb/tbk/info.json b/keyboards/bastardkb/tbk/info.json index fe521b5b89..a598b03999 100644 --- a/keyboards/bastardkb/tbk/info.json +++ b/keyboards/bastardkb/tbk/info.json @@ -5,7 +5,7 @@ "width": 17, "height": 8, "layouts": { - "LAYOUT": { + "LAYOUT_split_4x6_5": { "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, diff --git a/keyboards/beatervan/rules.mk b/keyboards/beatervan/rules.mk index 1ea4a84d52..fd23f3301d 100644 --- a/keyboards/beatervan/rules.mk +++ b/keyboards/beatervan/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/bfake/bfake.c b/keyboards/bfake/bfake.c index 6d0c927462..5eedcc1946 100644 --- a/keyboards/bfake/bfake.c +++ b/keyboards/bfake/bfake.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "bfake.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h index 6c4710a9ec..54e01ad3db 100644 --- a/keyboards/bfake/config.h +++ b/keyboards/bfake/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/bfake/rules.mk b/keyboards/bfake/rules.mk index 5846b173ba..c25b22249f 100644 --- a/keyboards/bfake/rules.mk +++ b/keyboards/bfake/rules.mk @@ -12,7 +12,7 @@ MCU = atmega32a BOOTLOADER = bootloadHID # build options -BOOTMAGIC_ENABLE = yes +BOOTMAGIC_ENABLE = full MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/blackplum/rules.mk b/keyboards/blackplum/rules.mk index 6465dec7f8..76aeee6ece 100644 --- a/keyboards/blackplum/rules.mk +++ b/keyboards/blackplum/rules.mk @@ -13,7 +13,7 @@ BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/bm40hsrgb/bm40hsrgb.c b/keyboards/bm40hsrgb/bm40hsrgb.c index a44263a8b8..a0ba84db3c 100755 --- a/keyboards/bm40hsrgb/bm40hsrgb.c +++ b/keyboards/bm40hsrgb/bm40hsrgb.c @@ -39,4 +39,15 @@ led_config_t g_led_config = { 2, 2, 2, 2, 2, 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 diff --git a/keyboards/bm40hsrgb/config.h b/keyboards/bm40hsrgb/config.h index 5c1ee06212..167a5667a4 100755 --- a/keyboards/bm40hsrgb/config.h +++ b/keyboards/bm40hsrgb/config.h @@ -50,3 +50,6 @@ #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/keymaps/signynt/config.h b/keyboards/bm40hsrgb/keymaps/signynt/config.h new file mode 100644 index 0000000000..9fcddca2cb --- /dev/null +++ b/keyboards/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 +#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/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt/keymap.c new file mode 100644 index 0000000000..b04f7ffb7c --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt/keymap.c @@ -0,0 +1,241 @@ +// 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 . + */ + +#include QMK_KEYBOARD_H + +// 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 + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + +//game indicators + +if(IS_LAYER_ON(GAME)) { + rgb_matrix_set_color(11, 0, 40, 50); +} + +if(IS_LAYER_ON(SECGAME)) { + rgb_matrix_set_color(11, 50, 0, 0); +} + +//layer indicators + +if(IS_LAYER_ON(NAVR)) { + rgb_matrix_set_color(40, 0, 40, 50); + + rgb_matrix_set_color(19, 0, 40, 50); + rgb_matrix_set_color(20, 0, 40, 50); + rgb_matrix_set_color(21, 0, 40, 50); + rgb_matrix_set_color(22, 0, 40, 50); +} + +if(IS_LAYER_ON(MEDR)) { + rgb_matrix_set_color(39, 50, 10, 20); + + rgb_matrix_set_color(19, 50, 10, 20); + + rgb_matrix_set_color(22, 50, 10, 20); + + rgb_matrix_set_color(42, 50, 10, 20); +} + +if(IS_LAYER_ON(FUNL)) { + rgb_matrix_set_color(43, 50, 0, 0); + + rgb_matrix_set_color(1, 50, 0, 0); + rgb_matrix_set_color(2, 50, 0, 0); + rgb_matrix_set_color(3, 50, 0, 0); + rgb_matrix_set_color(4, 50, 0, 0); + + rgb_matrix_set_color(13, 50, 0, 0); + rgb_matrix_set_color(14, 50, 0, 0); + rgb_matrix_set_color(15, 50, 0, 0); + rgb_matrix_set_color(16, 50, 0, 0); + + rgb_matrix_set_color(25, 50, 0, 0); + rgb_matrix_set_color(26, 50, 0, 0); + rgb_matrix_set_color(27, 50, 0, 0); + rgb_matrix_set_color(28, 50, 0, 0); +} + +if(IS_LAYER_ON(NSL)) { + rgb_matrix_set_color(42, 10, 0, 50); + + rgb_matrix_set_color(2, 10, 0, 50); + rgb_matrix_set_color(3, 10, 0, 50); + rgb_matrix_set_color(4, 10, 0, 50); + + rgb_matrix_set_color(14, 10, 0, 50); + rgb_matrix_set_color(15, 10, 0, 50); + rgb_matrix_set_color(16, 10, 0, 50); + + rgb_matrix_set_color(26, 10, 0, 50); + rgb_matrix_set_color(27, 10, 0, 50); + rgb_matrix_set_color(28, 10, 0, 50); + + rgb_matrix_set_color(38, 10, 0, 50); + rgb_matrix_set_color(39, 10, 0, 50); + rgb_matrix_set_color(40, 10, 0, 50); +} + +if(IS_LAYER_ON(NSSL)) { + rgb_matrix_set_color(41, 0, 50, 1.9); + + rgb_matrix_set_color(1, 0, 50, 1.9); + rgb_matrix_set_color(2, 0, 50, 1.9); + rgb_matrix_set_color(3, 0, 50, 1.9); + rgb_matrix_set_color(4, 0, 50, 1.9); + rgb_matrix_set_color(5, 0, 50, 1.9); + + rgb_matrix_set_color(13, 0, 50, 1.9); + rgb_matrix_set_color(14, 0, 50, 1.9); + rgb_matrix_set_color(15, 0, 50, 1.9); + rgb_matrix_set_color(16, 0, 50, 1.9); + rgb_matrix_set_color(17, 0, 50, 1.9); + + rgb_matrix_set_color(25, 0, 50, 1.9); + rgb_matrix_set_color(26, 0, 50, 1.9); + rgb_matrix_set_color(27, 0, 50, 1.9); + rgb_matrix_set_color(28, 0, 50, 1.9); + rgb_matrix_set_color(29, 0, 50, 1.9); + +} + +//capslock leds + +if (host_keyboard_leds() & (1<. + */ + +#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/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c new file mode 100644 index 0000000000..12539fe41c --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c @@ -0,0 +1,214 @@ +// 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 . + */ + +#include QMK_KEYBOARD_H + +// 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 + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_KEYLIGHT)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + + //capslock + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 255, 255); + } + } + } + + //nav layer + if (IS_LAYER_ON(NAVR)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //funl layer + if (IS_LAYER_ON(FUNL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + + //nsl layer + if (IS_LAYER_ON(NSL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 51, 0, 255); + } + } + } + + //nssl layer + if (IS_LAYER_ON(NSSL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 255, 0); + } + } + } + + //game layer + if (IS_LAYER_ON(GAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //secgame layer + if (IS_LAYER_ON(SECGAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + +} + +//tap dance declarations +enum { + TD_MEDIA, TD_SCREEN, +}; + +//tap dance definitions +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)) ), +}; + +#define KC_TD(TD_VARIABLE) TD(TD_VARIABLE) + +//-------------------------------------------------------------------------------------------------------- + +//base + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_planck_mit( + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LALT, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + G(KC_TAB), KC_TD(TD_SCREEN), KC_ESC, LT(MEDR, KC_TAB), LT(NAVR, KC_SPC), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_LGUI, KC_TD(TD_MEDIA), CMD_TAB + ), + +//layers + [NAVR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, C(S(KC_Z)), C(A(KC_LEFT)), C(KC_X), C(KC_C), C(A(KC_RGHT)), KC_LALT, + KC_LSFT, G(S(C(KC_F1))), G(S(C(KC_F3))), G(S(C(KC_F4))), G(S(C(KC_F2))), KC_NO, KC_CLCK, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT, + KC_LCTL, KC_NO, KC_ALGR, KC_NO, G(S(C(KC_F5))), KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LCTL, + TG(GAME), KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, C(G(KC_LEFT)), C(G(KC_RIGHT)) + ), + [MEDR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, KC_LALT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_LSFT, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, RGB_VAI, KC_LCTL, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO, KC_NO + ), + [FUNL] = LAYOUT_planck_mit( + KC_LALT, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_F15, KC_NO, KC_NO, KC_NO, KC_RST, KC_LALT, + KC_LSFT, KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_F14, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, + KC_LCTL, KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_F13, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, + KC_NO, KC_NO, KC_TAB, KC_APP, KC_SPC, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSL] = LAYOUT_planck_mit( + KC_LALT, KC_LPRN, KC_7, KC_8, KC_9, KC_RPRN, KC_LBRC, KC_AMPR, KC_ASTR, KC_LCBR, KC_RBRC, KC_BSPC, + KC_LSFT, KC_COLN, KC_4, KC_5, KC_6, KC_EQL, KC_LCBR, KC_DLR, KC_PERC, KC_CIRC, KC_RCBR, KC_LSFT, + KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS, KC_TILD, KC_EXLM, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + A(S(C(KC_N))), S(C(KC_5)), KC_NO, KC_UNDS, KC_0, KC_MINS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSSL] = LAYOUT_planck_mit( + KC_LALT, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_RST, KC_BSPC, + KC_LSFT, KC_SCLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_LSFT, + KC_LCTL, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_LCTL, + KC_NO, KC_NO, KC_UNDS, KC_GT, KC_RPRN, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + [GAME] = 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, TG(GAME), + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, 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_LCTL, + KC_LCTL, A(KC_TAB), MO(SECGAME), KC_TAB, KC_SPC, LT(SECGAME, KC_ENT), KC_BSPC, KC_DEL, KC_MPRV, KC_MPLY, KC_MNXT + ), + [SECGAME] = LAYOUT_planck_mit( + KC_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_F11, KC_F12, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0 + ) +}; diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md new file mode 100644 index 0000000000..938803c268 --- /dev/null +++ b/keyboards/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 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 new file mode 100644 index 0000000000..29b992b605 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk @@ -0,0 +1,7 @@ +#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 new file mode 100644 index 0000000000..4dd37189a9 --- /dev/null +++ b/keyboards/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 +#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/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c new file mode 100644 index 0000000000..999e6b18af --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c @@ -0,0 +1,178 @@ +// 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 . + */ + +#include QMK_KEYBOARD_H + +// 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 + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_KEYLIGHT)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + + //capslock + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 255, 255); + } + } + } + + //game layer + if (IS_LAYER_ON(GAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //secgame layer + if (IS_LAYER_ON(SECGAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + +} + +//tap dance declarations +enum { + TD_MEDIA, TD_SCREEN, +}; + +//tap dance definitions +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)) ), +}; + +#define KC_TD(TD_VARIABLE) TD(TD_VARIABLE) + +//-------------------------------------------------------------------------------------------------------- + +//base + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_planck_mit( + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LALT, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + G(KC_TAB), KC_TD(TD_SCREEN), KC_ESC, LT(MEDR, KC_TAB), LT(NAVR, KC_SPC), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_LGUI, KC_TD(TD_MEDIA), CMD_TAB + ), + +//layers + [NAVR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, C(S(KC_Z)), C(A(KC_LEFT)), C(KC_X), C(KC_C), C(A(KC_RGHT)), KC_LALT, + KC_LSFT, G(S(C(KC_F1))), G(S(C(KC_F3))), G(S(C(KC_F4))), G(S(C(KC_F2))), KC_NO, KC_CLCK, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT, + KC_LCTL, KC_NO, KC_ALGR, KC_NO, G(S(C(KC_F5))), KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LCTL, + TG(GAME), KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, C(G(KC_LEFT)), C(G(KC_RIGHT)) + ), + [MEDR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, KC_LALT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_LSFT, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, RGB_VAI, KC_LCTL, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO, KC_NO + ), + [FUNL] = LAYOUT_planck_mit( + KC_LALT, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_F15, KC_NO, KC_NO, KC_NO, KC_RST, KC_LALT, + KC_LSFT, KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_F14, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, + KC_LCTL, KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_F13, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, + KC_NO, KC_NO, KC_TAB, KC_APP, KC_SPC, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSL] = LAYOUT_planck_mit( + KC_LALT, KC_LPRN, KC_7, KC_8, KC_9, KC_RPRN, KC_LBRC, KC_AMPR, KC_ASTR, KC_LCBR, KC_RBRC, KC_BSPC, + KC_LSFT, KC_COLN, KC_4, KC_5, KC_6, KC_EQL, KC_LCBR, KC_DLR, KC_PERC, KC_CIRC, KC_RCBR, KC_LSFT, + KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS, KC_TILD, KC_EXLM, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + A(S(C(KC_N))), S(C(KC_5)), KC_NO, KC_UNDS, KC_0, KC_MINS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSSL] = LAYOUT_planck_mit( + KC_LALT, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_RST, KC_BSPC, + KC_LSFT, KC_SCLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_LSFT, + KC_LCTL, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_LCTL, + KC_NO, KC_NO, KC_UNDS, KC_GT, KC_RPRN, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + [GAME] = 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, TG(GAME), + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, 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_LCTL, + KC_LCTL, A(KC_TAB), MO(SECGAME), KC_TAB, KC_SPC, LT(SECGAME, KC_ENT), KC_BSPC, KC_DEL, KC_MPRV, KC_MPLY, KC_MNXT + ), + [SECGAME] = LAYOUT_planck_mit( + KC_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_F11, KC_F12, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0 + ) +}; diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md new file mode 100644 index 0000000000..938803c268 --- /dev/null +++ b/keyboards/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 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 new file mode 100644 index 0000000000..29b992b605 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk @@ -0,0 +1,7 @@ +#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/bm43a/keymaps/stevexyz/readme.md b/keyboards/bm43a/keymaps/stevexyz/readme.md index 9e4da10d2a..56d0823d19 100644 --- a/keyboards/bm43a/keymaps/stevexyz/readme.md +++ b/keyboards/bm43a/keymaps/stevexyz/readme.md @@ -21,5 +21,5 @@ And a view on the actual build: 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: 'bin/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) +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/bm60rgb/bm60rgb.h b/keyboards/bm60rgb/bm60rgb.h index 705539fc95..4a3dc2e83d 100644 --- a/keyboards/bm60rgb/bm60rgb.h +++ b/keyboards/bm60rgb/bm60rgb.h @@ -17,7 +17,7 @@ #include "quantum.h" -#define LAYOUT( \ +#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, \ diff --git a/keyboards/bm60rgb/info.json b/keyboards/bm60rgb/info.json index 30d55f9a03..d467a0405d 100644 --- a/keyboards/bm60rgb/info.json +++ b/keyboards/bm60rgb/info.json @@ -4,9 +4,11 @@ "maintainer": "qmk", "width": 15, "height": 5, + "layout_aliases": { + "LAYOUT": "LAYOUT_60_ansi_arrow" + }, "layouts": { - "LAYOUT": { - "key_count": 63, + "LAYOUT_60_ansi_arrow": { "layout": [ {"label":"K00 (B0,D0)", "x":0, "y":0}, {"label":"K01 (B0,D1)", "x":1, "y":0}, diff --git a/keyboards/bm60rgb/keymaps/default/keymap.c b/keyboards/bm60rgb/keymaps/default/keymap.c index 9099a04073..e8be1cccf6 100644 --- a/keyboards/bm60rgb/keymaps/default/keymap.c +++ b/keyboards/bm60rgb/keymaps/default/keymap.c @@ -16,14 +16,14 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_60_ansi_arrow( KC_ESC, KC_1, KC_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( + [1] = LAYOUT_60_ansi_arrow( 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/bm60rgb/keymaps/via/keymap.c b/keyboards/bm60rgb/keymaps/via/keymap.c index d84aaf5256..da2f6e8ced 100644 --- a/keyboards/bm60rgb/keymaps/via/keymap.c +++ b/keyboards/bm60rgb/keymaps/via/keymap.c @@ -16,28 +16,28 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_60_ansi_arrow( KC_ESC, KC_1, KC_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( + [1] = LAYOUT_60_ansi_arrow( 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( + [2] = LAYOUT_60_ansi_arrow( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT( + [3] = LAYOUT_60_ansi_arrow( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/bm60rgb/rules.mk b/keyboards/bm60rgb/rules.mk index bf1b1ffa4d..49f18fcbff 100644 --- a/keyboards/bm60rgb/rules.mk +++ b/keyboards/bm60rgb/rules.mk @@ -33,5 +33,7 @@ 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/info.json b/keyboards/bm60rgb_iso/info.json index 6644a65417..75984a958e 100644 --- a/keyboards/bm60rgb_iso/info.json +++ b/keyboards/bm60rgb_iso/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_60_iso_arrow": { "layout": [ {"label":"K00 (B0,D0)", "x":0, "y":0}, {"label":"K01 (B0,D1)", "x":1, "y":0}, diff --git a/keyboards/bm68rgb/bm68rgb.c b/keyboards/bm68rgb/bm68rgb.c new file mode 100644 index 0000000000..f3d2cc7b4f --- /dev/null +++ b/keyboards/bm68rgb/bm68rgb.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 "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/bm68rgb.h b/keyboards/bm68rgb/bm68rgb.h new file mode 100644 index 0000000000..3e18b914cc --- /dev/null +++ b/keyboards/bm68rgb/bm68rgb.h @@ -0,0 +1,41 @@ +/* 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_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, 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, 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, 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, k4B, k4C, k4D, k4E }, \ +} diff --git a/keyboards/bm68rgb/config.h b/keyboards/bm68rgb/config.h new file mode 100644 index 0000000000..1923192e5f --- /dev/null +++ b/keyboards/bm68rgb/config.h @@ -0,0 +1,122 @@ +/* +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 new file mode 100644 index 0000000000..a0b48ba90c --- /dev/null +++ b/keyboards/bm68rgb/info.json @@ -0,0 +1,81 @@ +{ + "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/default/keymap.c b/keyboards/bm68rgb/keymaps/default/keymap.c new file mode 100644 index 0000000000..b4bc5cb59d --- /dev/null +++ b/keyboards/bm68rgb/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* 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 + +// // Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN +// }; + + +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_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_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + +/* +Template + [ ] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ diff --git a/keyboards/bm68rgb/keymaps/default/readme.md b/keyboards/bm68rgb/keymaps/default/readme.md new file mode 100644 index 0000000000..0408ee9e98 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bm68rgb diff --git a/keyboards/bm68rgb/keymaps/peepeetee/config.h b/keyboards/bm68rgb/keymaps/peepeetee/config.h new file mode 100644 index 0000000000..53eebce7f2 --- /dev/null +++ b/keyboards/bm68rgb/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 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/keymaps/peepeetee/keymap.c b/keyboards/bm68rgb/keymaps/peepeetee/keymap.c new file mode 100644 index 0000000000..934463b11f --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/keymap.c @@ -0,0 +1,303 @@ +/* Copyright 2019 ash0x0 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 +#include "keymap.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] = { + [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_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_PGDOWN, + KC_LSFT, KC_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,LT(1, KC_LALT), KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DELETE, + RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, KC_KP_7, KC_KP_8, KC_KP_9, _______, _______, _______, _______, _______, KC_PGUP, + RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, KC_KP_4, KC_KP_5, KC_KP_6, _______, _______, _______, _______, KC_PGDOWN, + BL_TOGG, _______, _______, _______, _______, RESET, KC_KP_1, KC_KP_2, KC_KP_3, _______, _______, _______, KC_AUDIO_VOL_UP, KC_END, + _______, _______, _______, _______, _______, _______, _______, KC_BRIGHTNESS_DOWN, KC_AUDIO_VOL_DOWN, KC_BRIGHTNESS_UP + ), + +}; + +/* +Templete + [ ] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ + +#ifdef _______ +#undef _______ +#define _______ {0, 0, 0} + +const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { + [1] = { + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + GREEN, BLUE, {0, 0, 255}, PURPLE, AZURE, _______, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, _______, + RED, BLUE, {0, 0, 1}, PURPLE, AZURE, _______, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RED, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + } + +}; + +#undef _______ +#define _______ KC_TRNS +#endif + + + +void keyboard_post_init_user(void) { + // Call the post init code. + dfa_state = 0; // ENGLISH +} + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_DELETE: + if (record->event.pressed) { + dfa_state = 0; + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + case KC_SPC: + if (record->event.pressed) { + if ((get_mods() & MOD_BIT(KC_LGUI)) == MOD_BIT(KC_LGUI)){ + if(dfa_state == 3){ + dfa_state = 0; + } else { + dfa_state = dfa_state + 1; + } + } + } else { + // Do something else when release + } + return true; // Continue execution + + + case KC_HOME: + if (record->event.pressed) { + switch(dfa_state){ + case 0 :{ + return false; + } + case 1 :{ + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + case 2 :{ + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + case 3 :{ + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + } + + // Do something when pressed + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + // case KC_PGUP: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // case 1 :{ + // return false; + // } + // case 2 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // case 3 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + // case KC_PGDOWN: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // case 1 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // case 2 :{ + // return false; + // } + // case 3 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + // case KC_END: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 1 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 2 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 3 :{ + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + 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 set_layer_color(int layer) { + if (layer == 0) { return; } + 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 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); + } else if (layer != 1) { + // Only deactivate non-defined key LEDs at layers other than FN. Because at FN we have RGB adjustments and need to see them live. + // If the values are all false then it's a transparent key and deactivate LED at this layer + rgb_matrix_set_color(i, 0, 0, 0); + } + } +} + +void rgb_matrix_indicators_user(void) { + + led_t host_leds = host_keyboard_led_state(); + if (host_leds.caps_lock) { + //rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + rgb_matrix_set_color(30, 0x0, 0x0, 0x0); + + } else { + //rgb_matrix_set_color(30, 0x0, 0x0, 0x0); + } + set_layer_color(get_highest_layer(layer_state)); + +} diff --git a/keyboards/bm68rgb/keymaps/peepeetee/keymap.h b/keyboards/bm68rgb/keymaps/peepeetee/keymap.h new file mode 100644 index 0000000000..e8d0170d4d --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/keymap.h @@ -0,0 +1,63 @@ +/* Copyright 2019 ash0x0 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 + +#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 MAGENT {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/bm68rgb/keymaps/peepeetee/readme.md b/keyboards/bm68rgb/keymaps/peepeetee/readme.md new file mode 100644 index 0000000000..47899c27e1 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/readme.md @@ -0,0 +1 @@ +# peepeetee's keymap for the bm68rgb. Includes a DFA to set the windows system language back to English by pressing the top right button. Said DFA will only work with 4 languages(for now). \ No newline at end of file diff --git a/keyboards/bm68rgb/keymaps/via/keymap.c b/keyboards/bm68rgb/keymaps/via/keymap.c new file mode 100644 index 0000000000..46381c561c --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* 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 + +// Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN +// }; + + +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_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_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/bm68rgb/keymaps/via/readme.md b/keyboards/bm68rgb/keymaps/via/readme.md new file mode 100644 index 0000000000..c013ae25e2 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for bm68rgb \ No newline at end of file diff --git a/keyboards/bm68rgb/keymaps/via/rules.mk b/keyboards/bm68rgb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/bm68rgb/readme.md b/keyboards/bm68rgb/readme.md new file mode 100644 index 0000000000..4087fd8664 --- /dev/null +++ b/keyboards/bm68rgb/readme.md @@ -0,0 +1,24 @@ +# 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 new file mode 100644 index 0000000000..ce5ad84477 --- /dev/null +++ b/keyboards/bm68rgb/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 = 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/boardsource/5x12/info.json b/keyboards/boardsource/5x12/info.json index a4cfc398a2..a609f2a051 100644 --- a/keyboards/boardsource/5x12/info.json +++ b/keyboards/boardsource/5x12/info.json @@ -5,7 +5,7 @@ "width": 12, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_5x12": { "layout": [ { "label": "K01", "x": 0, "y": 0 }, { "label": "K02", "x": 1, "y": 0 }, diff --git a/keyboards/boardsource/microdox/keymaps/via/rules.mk b/keyboards/boardsource/microdox/keymaps/via/rules.mk index 667a6b254f..fc32a8b111 100644 --- a/keyboards/boardsource/microdox/keymaps/via/rules.mk +++ b/keyboards/boardsource/microdox/keymaps/via/rules.mk @@ -2,3 +2,4 @@ OLED_DRIVER_ENABLE = yes VIA_ENABLE = yes EXTRAKEY_ENABLE = yes RGBLIGHT_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h index cb64c3a690..5888452ce4 100644 --- a/keyboards/boardsource/the_mark/config.h +++ b/keyboards/boardsource/the_mark/config.h @@ -58,6 +58,9 @@ along with this program. If not, see . #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 #endif /* diff --git a/keyboards/boardsource/the_mark/the_mark.c b/keyboards/boardsource/the_mark/the_mark.c index bb37974f6e..59aff7f9ac 100644 --- a/keyboards/boardsource/the_mark/the_mark.c +++ b/keyboards/boardsource/the_mark/the_mark.c @@ -20,11 +20,11 @@ #ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { // Key Matrix to LED Index - { NO_LED, 10 , 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , 1 , NO_LED }, - { NO_LED, 11 , 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, 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 , NO_LED }, - { NO_LED, 13 , 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 22 , 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 }, + { 10 , NO_LED, 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , NO_LED, 1 }, + { 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 }, + { 12 , 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, 23 }, + { 13 , NO_LED, 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 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, 22 }, }, { // LED Index to Physical Position {224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42}, @@ -35,4 +35,15 @@ led_config_t g_led_config = { { 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 } }; + + +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/bop/bop.c b/keyboards/bop/bop.c new file mode 100644 index 0000000000..492d7cfe37 --- /dev/null +++ b/keyboards/bop/bop.c @@ -0,0 +1,17 @@ +/* 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 "bop.h" diff --git a/keyboards/bop/bop.h b/keyboards/bop/bop.h new file mode 100644 index 0000000000..e4ae82529b --- /dev/null +++ b/keyboards/bop/bop.h @@ -0,0 +1,35 @@ +/* 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, 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, K114, K115, K116, K117, K118, K119, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, K516, K517, K518, K519 \ +) { \ + { 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, K114, K115, K116, K117, K118, K119 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, K516, K517, K518, K519 } \ +} diff --git a/keyboards/bop/config.h b/keyboards/bop/config.h new file mode 100644 index 0000000000..fa646a582f --- /dev/null +++ b/keyboards/bop/config.h @@ -0,0 +1,52 @@ +/* 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 0x626F // bo +#define DEVICE_VER 0x0001 // rev 1 +#define MANUFACTURER fruitykeeb +#define PRODUCT bop + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 20 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, D4 } +#define MATRIX_COL_PINS { D5, C5, B0, B1, B2, B3, B4, B5, B6, E7, E6, F0, F7, F6, F5, F4, F3, F2, F1, C6 } +// If your board is spamming the end column, change C7 to C6 in the line above and short those pins on the controller + +#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 + +/* Unicode select mode */ +#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC diff --git a/keyboards/bop/info.json b/keyboards/bop/info.json new file mode 100644 index 0000000000..f638d84eb6 --- /dev/null +++ b/keyboards/bop/info.json @@ -0,0 +1,138 @@ +{ + "keyboard_name": "bop", + "url": "https://github.com/blewis308/BOP-Keyboard", + "maintainer": "Fruit", + "width": 20.0, + "height": 6.0, + "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":16, "y":0}, + {"x":17, "y":0}, + {"x":18, "y":0}, + {"x":19, "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":19, "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":16, "y":2}, + {"x":17, "y":2}, + {"x":18, "y":2}, + {"x":19, "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":16, "y":3}, + {"x":17, "y":3}, + {"x":18, "y":3}, + {"x":19, "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}, + {"x":16, "y":4}, + {"x":17, "y":4}, + {"x":18, "y":4}, + {"x":19, "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":15, "y":5}, + {"x":16, "y":5}, + {"x":17, "y":5}, + {"x":18, "y":5}, + {"x":19, "y":5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/bop/keymaps/default/keymap.c b/keyboards/bop/keymaps/default/keymap.c new file mode 100644 index 0000000000..bd97d092c0 --- /dev/null +++ b/keyboards/bop/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + /* For build guide: go to https://github.com/blewis308/BOP-Keyboard + * ,-----------------------------------------------------------------------------------------------------------------------. + * | F1 | F5 | F9 | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | del | { | } | | | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F2 | F6 | F10 | esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |bkspc| home| end |pg up| + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F3 | F7 | F11 | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | : | " |pg dn| + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F4 | F8 | F12 |caplk| a | s | d | f | g | h | j | k | l | ; | ' |enter| | 7 | 8 | 9 | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| 0 |-----+-----+-----| + * |ptscr|scrlk|psbrk|shift| z | x | c | v | b | n | m | < | > | ? |shift| up | | 4 | 5 | 6 | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | cut | copy|paste|Lctrl|L gui|L alt| space | n/a | space | , | . | / | left| down|right| 1 | 2 | 3 | + * `-----------------------------------------------------------------------------------------------------------------------' + * + * Notes: spaces and numpad 0 can be 1u instead of 2u also, this is already reflected in the keymap below + */ + + KC_F1, KC_F5, KC_F9, 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_DEL, KC_LCBR, KC_RCBR, KC_PIPE, + KC_F2, KC_F6, KC_F10, KC_ESC, KC_1, KC_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_END, KC_PGUP, + KC_F3, KC_F7, KC_F11, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_COLN, KC_DQUO, KC_PGDN, + KC_F4, KC_F8, KC_F12, KC_CAPS, KC_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_0, KC_KP_7, KC_KP_8, KC_KP_9, + KC_PSCR, KC_SLCK, KC_PAUS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_RSFT, KC_UP, KC_KP_0, KC_KP_4, KC_KP_5, KC_KP_6, + LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_NO, KC_SPC, KC_SPC, KC_COMM, KC_DOT, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_1, KC_KP_2, KC_KP_3 ) +}; diff --git a/keyboards/bop/keymaps/via/keymap.c b/keyboards/bop/keymaps/via/keymap.c new file mode 100644 index 0000000000..c554c4b19a --- /dev/null +++ b/keyboards/bop/keymaps/via/keymap.c @@ -0,0 +1,78 @@ +/* Copyright 2021 Nathan Blais + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* For build guide: go to https://github.com/blewis308/BOP-Keyboard + * ,-----------------------------------------------------------------------------------------------------------------------. + * | F1 | F5 | F9 | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | del | { | } | | | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F2 | F6 | F10 | esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |bkspc| home| end |pg up| + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F3 | F7 | F11 | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | : | " |pg dn| + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | F4 | F8 | F12 |caplk| a | s | d | f | g | h | j | k | l | ; | ' |enter| | 7 | 8 | 9 | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| 0 |-----+-----+-----| + * |ptscr|scrlk|psbrk|shift| z | x | c | v | b | n | m | < | > | ? |shift| up | | 4 | 5 | 6 | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | cut | copy|paste|Lctrl|L gui|L alt| space |MO(1)| space | , | . | / | left| down|right| 1 | 2 | 3 | + * `-----------------------------------------------------------------------------------------------------------------------' + * + * Notes: spaces and numpad 0 can be 1u instead of 2u also, this is already reflected in the keymap below + */ + /* SUDSACK KEYMAP + KC_PSCR, KC_SLCK, KC_PAUS, KC_INS , KC_CALC, KC_CUT , KC_ESC , KC_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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_COPY, KC_PSTE, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_UNDS, KC_BSLS, KC_PGUP, + KC_P7 , KC_P8 , KC_P9 , KC_PPLS, KC_LBRC, KC_RBRC, 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_PGDN, + KC_P4 , KC_P5 , KC_P6 , KC_PPLS, KC_VOLD, KC_VOLU, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , LCTL(KC_TAB), + KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_MUTE, KC_MPLY, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_RGUI , + KC_P0 , KC_P0 , KC_PDOT, KC_MPRV, KC_MNXT, KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) + */ + [0] = LAYOUT( + KC_F1, KC_F5, KC_F9, 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_DEL, KC_LCBR, KC_RCBR, KC_PIPE, + KC_F2, KC_F6, KC_F10, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PMNS, KC_PEQL, KC_BSPC, KC_HOME, KC_END, KC_PGUP, + KC_F3, KC_F7, KC_F11, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_COLN, KC_DQUO, KC_PGDN, + KC_F4, KC_F8, KC_F12, KC_CAPS, KC_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_0, KC_KP_7, KC_KP_8, KC_KP_9, + KC_PSCR, KC_SLCK, KC_PAUS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_RSFT, KC_UP, KC_KP_0, KC_KP_4, KC_KP_5, KC_KP_6, + KC_CUT, KC_COPY, KC_PSTE, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1) , KC_SPC, KC_SPC, KC_PCMM, KC_PDOT, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_1, KC_KP_2, KC_KP_3), + + [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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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/bop/keymaps/via/rules.mk b/keyboards/bop/keymaps/via/rules.mk new file mode 100644 index 0000000000..61e4c8383e --- /dev/null +++ b/keyboards/bop/keymaps/via/rules.mk @@ -0,0 +1,3 @@ + +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/bop/readme.md b/keyboards/bop/readme.md new file mode 100644 index 0000000000..8f86f06559 --- /dev/null +++ b/keyboards/bop/readme.md @@ -0,0 +1,16 @@ +# bop + +![Bop](https://i.imgur.com/mEWmMgvh.jpg) +![Bop-top](https://i.imgur.com/DbjVdvVh.jpg) + +A huge 6x20 ortholinear keyboard inspired by the BFO-9000 + +* Keyboard Maintainer: [Fruit](https://github.com/Blewis308) +* Hardware Supported: Bop v1.1 PCB, Teensy 2.0++ +* Hardware Availablility: Through Group Buy - Jan 2021 + +Make example for this keyboard (after setting up your build envionment): + + make bop: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/bop/rules.mk b/keyboards/bop/rules.mk new file mode 100644 index 0000000000..2ddb011e1a --- /dev/null +++ b/keyboards/bop/rules.mk @@ -0,0 +1,23 @@ +# 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 = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SWAP_HANDS_ENABLE = no diff --git a/keyboards/boston/boston.c b/keyboards/boston/boston.c new file mode 100644 index 0000000000..2bcac21cba --- /dev/null +++ b/keyboards/boston/boston.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can 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 "boston.h" + +void keyboard_post_init_kb(void) { + /* this is to set an LED color at startup so it's not some random color*/ + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(0, 0, 128); + keyboard_post_init_user(); +} diff --git a/keyboards/boston/boston.h b/keyboards/boston/boston.h new file mode 100644 index 0000000000..db245c5c29 --- /dev/null +++ b/keyboards/boston/boston.h @@ -0,0 +1,40 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can 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 ___ KC_NO + +#define LAYOUT_all( \ + 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, K5E, 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, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5F, K5G, K5H, K5I, \ + K60, K61, K62, K64, K65, K67, K69, K6A, K6B, K6C, K6D, K6E, K6F, K6G, K6H \ + ) \ + { \ + {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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I}, \ + {K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I}, \ + {K60, K61, K62, ___, K64, K65, ___, K67, ___, K69, K6A, K6B, K6C, K6D, K6E, K6F, K6G, K6H, ___ } \ + } diff --git a/keyboards/boston/chconf.h b/keyboards/boston/chconf.h new file mode 100644 index 0000000000..5430009c1a --- /dev/null +++ b/keyboards/boston/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/boston/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/boston/config.h b/keyboards/boston/config.h new file mode 100644 index 0000000000..7fa5d0ef5d --- /dev/null +++ b/keyboards/boston/config.h @@ -0,0 +1,92 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can 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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xAC11 +#define PRODUCT_ID 0x4175 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Pylon +#define PRODUCT Boston +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 19 + +#define MATRIX_COL_PINS \ + { B10, B11, B12, B13, B14, B15, A8, A9, A10, A15, B3, B4, B7, B8, B9, C14, C15, F0, A3 } +#define MATRIX_ROW_PINS \ + { B5, B6, A7, B0, B1, B2, A4 } +#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 RGBLED */ +#define RGB_DI_PIN A5 +#define RGBLED_NUM 1 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LAYERS + +//The 3D-printed version of Boston uses APA106 LEDs, which are reversed +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB + +/* Define encoder */ +#define ENCODERS_PAD_A \ + { C13 } +#define ENCODERS_PAD_B \ + { F1 } +#define ENCODER_RESOLUTION 2 +#define TAP_CODE_DELAY 15 + +/* Lock LEDs */ +#define LED_NUM_LOCK_PIN A0 +#define LED_CAPS_LOCK_PIN A1 +#define LED_SCROLL_LOCK_PIN A2 + +/* + * 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/boston/halconf.h b/keyboards/boston/halconf.h new file mode 100644 index 0000000000..410d968cd4 --- /dev/null +++ b/keyboards/boston/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/boston/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/boston/info.json b/keyboards/boston/info.json new file mode 100644 index 0000000000..f6b745f89d --- /dev/null +++ b/keyboards/boston/info.json @@ -0,0 +1,148 @@ +{ + "keyboard_name": "boston", + "url": "https://github.com/bluepylons/Boston", + "maintainer": "bluepylons", + "width": 20.5, + "height": 7.75, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Encoder", "x":0, "y":0}, + {"label":"P1", "x":1.5, "y":0}, + {"label":"P2", "x":2.5, "y":0}, + {"label":"P3", "x":3.5, "y":0}, + {"label":"P4", "x":4.5, "y":0}, + {"label":"P5", "x":5.75, "y":0}, + {"label":"P6", "x":6.75, "y":0}, + {"label":"P7", "x":7.75, "y":0}, + {"label":"P8", "x":8.75, "y":0}, + {"label":"P9", "x":10, "y":0}, + {"label":"P10", "x":11, "y":0}, + {"label":"P11", "x":12, "y":0}, + {"label":"P12", "x":13, "y":0}, + {"label":"P13", "x":14.25, "y":0}, + {"label":"P14", "x":15.25, "y":0}, + {"label":"P15", "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":"Esc", "x":0, "y":1}, + {"label":"F1", "x":1.5, "y":1}, + {"label":"F2", "x":2.5, "y":1}, + {"label":"F3", "x":3.5, "y":1}, + {"label":"F4", "x":4.5, "y":1}, + {"label":"F5", "x":5.75, "y":1}, + {"label":"F6", "x":6.75, "y":1}, + {"label":"F7", "x":7.75, "y":1}, + {"label":"F8", "x":8.75, "y":1}, + {"label":"F9", "x":10, "y":1}, + {"label":"F10", "x":11, "y":1}, + {"label":"F11", "x":12, "y":1}, + {"label":"F12", "x":13, "y":1}, + {"label":"Print Screen", "x":14.25, "y":1}, + {"label":"Scroll Lock", "x":15.25, "y":1}, + {"label":"Pause", "x":16.25, "y":1}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"~", "x":0, "y":2.5}, + {"label":"!", "x":1, "y":2.5}, + {"label":"@", "x":2, "y":2.5}, + {"label":"#", "x":3, "y":2.5}, + {"label":"$", "x":4, "y":2.5}, + {"label":"%", "x":5, "y":2.5}, + {"label":"^", "x":6, "y":2.5}, + {"label":"&", "x":7, "y":2.5}, + {"label":"*", "x":8, "y":2.5}, + {"label":"(", "x":9, "y":2.5}, + {"label":")", "x":10, "y":2.5}, + {"label":"_", "x":11, "y":2.5}, + {"label":"+", "x":12, "y":2.5}, + {"label":"Backspace", "x":13, "y":2.5}, + {"label":"Backspace", "x":14, "y":2.5}, + {"label":"P16", "x":15.25, "y":2.5}, + {"label":"Num Lock", "x":16.5, "y":2.5}, + {"label":"/", "x":17.5, "y":2.5}, + {"label":"*", "x":18.5, "y":2.5}, + {"label":"-", "x":19.5, "y":2.5}, + + {"label":"Tab", "x":0, "y":3.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":3.5}, + {"label":"W", "x":2.5, "y":3.5}, + {"label":"E", "x":3.5, "y":3.5}, + {"label":"R", "x":4.5, "y":3.5}, + {"label":"T", "x":5.5, "y":3.5}, + {"label":"Y", "x":6.5, "y":3.5}, + {"label":"U", "x":7.5, "y":3.5}, + {"label":"I", "x":8.5, "y":3.5}, + {"label":"O", "x":9.5, "y":3.5}, + {"label":"P", "x":10.5, "y":3.5}, + {"label":"{", "x":11.5, "y":3.5}, + {"label":"}", "x":12.5, "y":3.5}, + {"label":"|", "x":13.5, "y":3.5, "w":1.5}, + {"label":"P17", "x":15.25, "y":3.5}, + {"label":"7", "x":16.5, "y":3.5}, + {"label":"8", "x":17.5, "y":3.5}, + {"label":"9", "x":18.5, "y":3.5}, + {"label":"-", "x":19.5, "y":3.5}, + + {"label":"Caps Lock", "x":0, "y":4.5, "w":1.75}, + {"label":"A", "x":1.75, "y":4.5}, + {"label":"S", "x":2.75, "y":4.5}, + {"label":"D", "x":3.75, "y":4.5}, + {"label":"F", "x":4.75, "y":4.5}, + {"label":"G", "x":5.75, "y":4.5}, + {"label":"H", "x":6.75, "y":4.5}, + {"label":"J", "x":7.75, "y":4.5}, + {"label":"K", "x":8.75, "y":4.5}, + {"label":"L", "x":9.75, "y":4.5}, + {"label":"'", "x":10.75, "y":4.5}, + {"label":"'", "x":11.75, "y":4.5}, + {"label":"~", "x":12.75, "y":4.5}, + {"label":"Enter", "x":13.75, "y":4.5, "w":1.25}, + {"label":"P18", "x":15.25, "y":4.5}, + {"label":"4", "x":16.5, "y":4.5}, + {"label":"5", "x":17.5, "y":4.5}, + {"label":"6", "x":18.5, "y":4.5}, + {"label":"+", "x":19.5, "y":4.5}, + + {"label":"Left Shift", "x":0, "y":5.5, "w":1.25}, + {"label":"Left Shift", "x":1.25, "y":5.5}, + {"label":"Z", "x":2.25, "y":5.5}, + {"label":"X", "x":3.25, "y":5.5}, + {"label":"C", "x":4.25, "y":5.5}, + {"label":"V", "x":5.25, "y":5.5}, + {"label":"B", "x":6.25, "y":5.5}, + {"label":"N", "x":7.25, "y":5.5}, + {"label":"M", "x":8.25, "y":5.5}, + {"label":"<", "x":9.25, "y":5.5}, + {"label":">", "x":10.25, "y":5.5}, + {"label":"?", "x":11.25, "y":5.5}, + {"label":"Right Shift", "x":12.25, "y":5.5, "w":1.75}, + {"label":"Up", "x":14.25, "y":5.75}, + {"label":"1", "x":16.5, "y":5.5}, + {"label":"2", "x":17.5, "y":5.5}, + {"label":"3", "x":18.5, "y":5.5}, + {"label":"Enter", "x":19.5, "y":5.5, "h":2}, + + {"label":"Ctrl", "x":0, "y":6.5, "w":1.25}, + {"label":"OS", "x":1.25, "y":6.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":6.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":6.5, "w":2.25}, + {"label":"Space", "x":6, "y":6.5, "w":1.25}, + {"label":"Space", "x":7.25, "y":6.5, "w":2.75}, + {"label":"Alt", "x":10, "y":6.5}, + {"label":"Menu", "x":11, "y":6.5}, + {"label":"Ctrl", "x":12, "y":6.5}, + {"label":"Left", "x":13.25, "y":6.75}, + {"label":"Down", "x":14.25, "y":6.75}, + {"label":"Right", "x":15.25, "y":6.75}, + {"label":"0", "x":16.5, "y":6.5}, + {"label":"0", "x":17.5, "y":6.5}, + {"label":".", "x":18.5, "y":6.5} + ] + } + } +} diff --git a/keyboards/boston/keymaps/default/keymap.c b/keyboards/boston/keymaps/default/keymap.c new file mode 100644 index 0000000000..a1955216e6 --- /dev/null +++ b/keyboards/boston/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can 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 + + /* Due to how the matrix is setup - the right split backspace key is, for firmware purposes the key to the right of up arrow, which on the actual keyboard is a blocker*/ + +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_MPLY, KC_MNXT , KC_INS , KC_HOME, KC_PGUP, + KC_ESC , KC_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_PAUSE, KC_DEL , KC_END , 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_BSPC, KC_CALC, 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, RGB_TOG, KC_P7 , KC_P8 , KC_P9 , KC_PEQL, + KC_CAPS, KC_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_MSEL, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + 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_P1 , KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_P0 , KC_PDOT + ), + + [1] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + +}; + +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/boston/keymaps/rgb-light-layers/keymap.c b/keyboards/boston/keymaps/rgb-light-layers/keymap.c new file mode 100644 index 0000000000..6e55632517 --- /dev/null +++ b/keyboards/boston/keymaps/rgb-light-layers/keymap.c @@ -0,0 +1,223 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can 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 + + /* Due to how the matrix is setup - the right split backspace key is, for firmware purposes the key to the right of up arrow, which on the actual keyboard is a blocker*/ + +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_MPLY, KC_MNXT , KC_INS , KC_HOME, KC_PGUP, + KC_ESC , KC_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_PAUSE, KC_DEL , KC_END , 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_BSPC, KC_CALC, 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, RGB_TOG, KC_P7 , KC_P8 , KC_P9 , KC_PEQL, + KC_CAPS, KC_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_MSEL, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + 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_P1 , KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_P0 , KC_PDOT + ), + + [1] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [2] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [3] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [4] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [5] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [6] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [7] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), +}; + +uint8_t go_to_layer = 0; /* Used for the layer changing code for the encoder below */ + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (matrix_is_on(6, 10)) { /* Use the knob to change layers when holding down Menu key. Unfortunately using layers to initiate this behavior is not possible. */ + if (clockwise) { + + layer_off(go_to_layer); + + if(go_to_layer<7) { + go_to_layer++; + } + else { + go_to_layer=0; + } + + layer_on(go_to_layer); + + } + + else { + + layer_off(go_to_layer); + + /* update go_to_layer*/ + if(go_to_layer>0) { + go_to_layer--; + } + else { + go_to_layer=7; + } + + layer_on(go_to_layer); + + } + } + + else { /* normal operation as volume knob */ + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + } + return true; +} + +/*Default layer is white.*/ +/*Remember to also change the color in keyboard_post_init_kb in boston.c to make the startup color match the layer 0 color */ +const rgblight_segment_t PROGMEM layer_0[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 0, 0, 128} /*White*/ +); + +const rgblight_segment_t PROGMEM layer_1[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 0, 255, 128} /*Red*/ +); + +const rgblight_segment_t PROGMEM layer_2[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 21, 255, 128} /*Orange*/ +); + +const rgblight_segment_t PROGMEM layer_3[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 43, 255, 128} /*Yellow*/ +); + +const rgblight_segment_t PROGMEM layer_4[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 75, 255, 128} /*Green*/ +); + +const rgblight_segment_t PROGMEM layer_5[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 135, 255, 128} /*Teal*/ +); + +const rgblight_segment_t PROGMEM layer_6[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 160, 255, 128} /*Blue*/ +); + +const rgblight_segment_t PROGMEM layer_7[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 190, 255, 128} /*Magenta*/ +); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + layer_0, + layer_1, + layer_2, + layer_3, + layer_4, + layer_5, + layer_6, + layer_7 +); + +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) { + // 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(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + rgblight_set_layer_state(4, layer_state_cmp(state, 4)); + rgblight_set_layer_state(5, layer_state_cmp(state, 5)); + rgblight_set_layer_state(6, layer_state_cmp(state, 6)); + rgblight_set_layer_state(7, layer_state_cmp(state, 7)); + return state; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, true); + return true; +} diff --git a/keyboards/boston/mcuconf.h b/keyboards/boston/mcuconf.h new file mode 100644 index 0000000000..1685bd41d0 --- /dev/null +++ b/keyboards/boston/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/boston/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/boston/readme.md b/keyboards/boston/readme.md new file mode 100644 index 0000000000..41c6253fdb --- /dev/null +++ b/keyboards/boston/readme.md @@ -0,0 +1,23 @@ +# Boston + +![3D-printed/FR4 version](https://github.com/bluepylons/Boston/raw/master/graphics/3D-printed-prototype.JPG) + +A compact 120% keyboard. + +This keyboard is currently in IC - [Geekhack IC thread is here](https://geekhack.org/index.php?topic=106501.0). Group buy details will be posted once it is ready. + +* Keyboard Maintainer: [Bluepylons](https://github.com/bluepylons) +* Hardware Supported: Boston PCB (STM32F072) +* Hardware Availability: PCB and 3D-printing files are available on [Github](https://github.com/bluepylons/Boston). + +Make example for this keyboard (after setting up your build environment): + + make boston:default + +Flashing example for this keyboard: + + make boston:default:flash + +To reset the board, use a pin to press the reset button on the underside of the keyboard, above the numlock 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). diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk new file mode 100644 index 0000000000..24e1dbe3c5 --- /dev/null +++ b/keyboards/boston/rules.mk @@ -0,0 +1,29 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# RGB setting +WS2812_DRIVER = bitbang \ No newline at end of file diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c index 933c14dee4..fd283b087a 100644 --- a/keyboards/boston_meetup/2019/2019.c +++ b/keyboards/boston_meetup/2019/2019.c @@ -182,9 +182,10 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_user(keycode, record); } -void encoder_update_kb(uint8_t index, bool clockwise) { +bool encoder_update_kb(uint8_t index, bool clockwise) { encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64; queue_for_send = true; + return true; } #endif diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk index c79ce4b441..aa1920ae50 100644 --- a/keyboards/boston_meetup/2019/rules.mk +++ b/keyboards/boston_meetup/2019/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -21,4 +24,3 @@ RGB_MATRIX_DRIVER = WS2812 HAPTIC_ENABLE += DRV2605L QWIIC_ENABLE = yes QWIIC_DRIVERS += MICRO_OLED -# SERIAL_LINK_ENABLE = yes diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json new file mode 100644 index 0000000000..1fe97f296a --- /dev/null +++ b/keyboards/box75/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "BOX75", + "url": "", + "maintainer": "Gondolindrim", + "width": 16.25, + "height": 6.375, + "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":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, "w":2.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.125, "y":4.375}, + {"x":15.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.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.125, "y":5.375}, + {"x":14.125, "y":5.375}, + {"x":15.125, "y":5.375} + ] + } + } +} diff --git a/keyboards/box75/rules.mk b/keyboards/box75/rules.mk index 2d2f71e195..f444528f1e 100644 --- a/keyboards/box75/rules.mk +++ b/keyboards/box75/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk index 8254a83891..a605a865e9 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk index d6ebcd5d79..972b7fc719 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 = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk index 8254a83891..a605a865e9 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk index ffb642a9cf..ffc4fc0e80 100644 --- a/keyboards/bpiphany/pegasushoof/rules.mk +++ b/keyboards/bpiphany/pegasushoof/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h index cc619a5b8e..a86cffd16b 100644 --- a/keyboards/bpiphany/tiger_lily/config.h +++ b/keyboards/bpiphany/tiger_lily/config.h @@ -21,8 +21,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 +#define VENDOR_ID 0x4245 //BE +#define PRODUCT_ID 0x544C //TL #define DEVICE_VER 0x0001 #define MANUFACTURER Bathroom Epiphanies #define PRODUCT tiger_lily diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/config.h b/keyboards/bpiphany/tiger_lily/keymaps/via/config.h new file mode 100644 index 0000000000..356dc9fdb4 --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Fehmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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/bpiphany/tiger_lily/keymaps/via/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c new file mode 100644 index 0000000000..0765160522 --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Fehmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_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), +[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), +[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) +}; \ No newline at end of file diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk new file mode 100644 index 0000000000..d68fae9b2c --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk @@ -0,0 +1,14 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +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/unloved_bastard/info.json b/keyboards/bpiphany/unloved_bastard/info.json index ff8c52d9c2..782abf1303 100644 --- a/keyboards/bpiphany/unloved_bastard/info.json +++ b/keyboards/bpiphany/unloved_bastard/info.json @@ -4,7 +4,7 @@ "width": 18.25, "height": 6.5, "layouts": { - "LAYOUT": { + "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}] }, "LAYOUT_tkl_iso": { diff --git a/keyboards/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk index b211fa5e97..d6c3d6232a 100644 --- a/keyboards/bpiphany/unloved_bastard/rules.mk +++ b/keyboards/bpiphany/unloved_bastard/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/buildakb/potato65hs/config.h b/keyboards/buildakb/potato65hs/config.h new file mode 100644 index 0000000000..b3b2cfdcd4 --- /dev/null +++ b/keyboards/buildakb/potato65hs/config.h @@ -0,0 +1,63 @@ +/* +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 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Maelkk +#define PRODUCT Potato 65 Hotswap + +/* 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_ANIMATIONS +# 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/potato65hs/info.json b/keyboards/buildakb/potato65hs/info.json new file mode 100644 index 0000000000..264adbbb6b --- /dev/null +++ b/keyboards/buildakb/potato65hs/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Potato 65 Hotswap", + "url": "https://github.com/Aeonstrife/potato65hotswap", + "maintainer": "Maelkk", + "width": 16, + "height": 5, + "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/buildakb/potato65hs/keymaps/default/keymap.c b/keyboards/buildakb/potato65hs/keymaps/default/keymap.c new file mode 100644 index 0000000000..f7a5ff4246 --- /dev/null +++ b/keyboards/buildakb/potato65hs/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_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_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 + ), + [_FN] = 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, 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 + ) +}; \ No newline at end of file diff --git a/keyboards/buildakb/potato65hs/keymaps/default/readme.md b/keyboards/buildakb/potato65hs/keymaps/default/readme.md new file mode 100644 index 0000000000..bb34368c99 --- /dev/null +++ b/keyboards/buildakb/potato65hs/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/potato65hs/keymaps/via/keymap.c b/keyboards/buildakb/potato65hs/keymaps/via/keymap.c new file mode 100644 index 0000000000..269fca7374 --- /dev/null +++ b/keyboards/buildakb/potato65hs/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_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_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 + ), + [_FN1] = 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, 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_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/buildakb/potato65hs/keymaps/via/readme.md b/keyboards/buildakb/potato65hs/keymaps/via/readme.md new file mode 100644 index 0000000000..4e3ddd1228 --- /dev/null +++ b/keyboards/buildakb/potato65hs/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/buildakb/potato65hs/keymaps/via/rules.mk b/keyboards/buildakb/potato65hs/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/buildakb/potato65hs/potato65hs.c b/keyboards/buildakb/potato65hs/potato65hs.c new file mode 100644 index 0000000000..2b5ca899b3 --- /dev/null +++ b/keyboards/buildakb/potato65hs/potato65hs.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 "potato65hs.h" diff --git a/keyboards/buildakb/potato65hs/potato65hs.h b/keyboards/buildakb/potato65hs/potato65hs.h new file mode 100644 index 0000000000..5f7b9cbf19 --- /dev/null +++ b/keyboards/buildakb/potato65hs/potato65hs.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_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, K403, 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, KC_NO, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ + { K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K409, K410, KC_NO, K411, K413, K414 } \ +} diff --git a/keyboards/buildakb/potato65hs/readme.md b/keyboards/buildakb/potato65hs/readme.md new file mode 100644 index 0000000000..bf8abea839 --- /dev/null +++ b/keyboards/buildakb/potato65hs/readme.md @@ -0,0 +1,24 @@ +# Potato65 Hotswap Keyboard + +![Potato65 Hotswap](https://i.imgur.com/ysAGZCmh.jpg) + +A hot-swappable 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/potato65hs:default + +Flashing example for this keyboard: + + make buildakb/potato65hs: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/potato65hs/rules.mk b/keyboards/buildakb/potato65hs/rules.mk new file mode 100644 index 0000000000..c538b0c21d --- /dev/null +++ b/keyboards/buildakb/potato65hs/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 = 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/butterstick/info.json b/keyboards/butterstick/info.json new file mode 100644 index 0000000000..6e3f164794 --- /dev/null +++ b/keyboards/butterstick/info.json @@ -0,0 +1,34 @@ +{ + "keyboard_name": "Butter Stick", + "url": "", + "maintainer": "germ", + "width": 10, + "height": 2, + "layouts": { + "LAYOUT_butter": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":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/c39/keymaps/drashna/config.h b/keyboards/c39/keymaps/drashna/config.h index 73b0b8acfe..e48bc46ca8 100644 --- a/keyboards/c39/keymaps/drashna/config.h +++ b/keyboards/c39/keymaps/drashna/config.h @@ -28,3 +28,7 @@ #define RGBLED_NUM 15 #define SOLENOID_PIN B11 + +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE diff --git a/keyboards/c39/keymaps/drashna/keymap.c b/keyboards/c39/keymaps/drashna/keymap.c index b5d11104d3..88065263cf 100755 --- a/keyboards/c39/keymaps/drashna/keymap.c +++ b/keyboards/c39/keymaps/drashna/keymap.c @@ -87,12 +87,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ ), - [_MODS] = LAYOUT_wrapper( - _______, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______, - _______, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______, - KC_LSFT, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______ - ), - [_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 09c29f0e8f..a11acc240f 100644 --- a/keyboards/c39/keymaps/drashna/rules.mk +++ b/keyboards/c39/keymaps/drashna/rules.mk @@ -1,6 +1,9 @@ +# MCU name MCU = STM32F303 BOARD = QMK_PROTON_C -BOOTLOADER = + +# Bootloader selection +BOOTLOADER = stm32-dfu BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) diff --git a/keyboards/caffeinated/serpent65/chconf.h b/keyboards/caffeinated/serpent65/chconf.h new file mode 100644 index 0000000000..cbbae31079 --- /dev/null +++ b/keyboards/caffeinated/serpent65/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/caffeinated/serpent65/config.h b/keyboards/caffeinated/serpent65/config.h new file mode 100644 index 0000000000..f09a1c2b08 --- /dev/null +++ b/keyboards/caffeinated/serpent65/config.h @@ -0,0 +1,109 @@ +/* +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 "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4353 // "CS" = Caffeinated Studios +#define PRODUCT_ID 0x6501 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Caffeinated Studios +#define PRODUCT Serpent65 + +/* 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 {B11, B10, B2, B1, B0, A7, A6, A5, B13, B12} +#define MATRIX_COL_PINS {A1, A2, A3, A4, B14, B15, A8, A9} +//{C13, C14, C15, A0,A2,A3,A4,A5,A6, A1,B12,B1} +/* Unused pins, in the default layout, are: +EncA (B6) because it is not used in the default PCB +All Extra pins (A8, B15, B14, B13, B3, B5, B8, B9) , for the same reason; +B0, which is unconnected on the PCB +*/ +//#define UNUSED_PINS { B0, B6, B13, B14, B15, B8, B9, B5, B3 } + +/* 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 + +/* + * 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/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json new file mode 100644 index 0000000000..ebcf9345e5 --- /dev/null +++ b/keyboards/caffeinated/serpent65/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "Serpent65", + "keyboard_folder": "caffeinated/serpent65", + "url": "https", + "maintainer": "jrfhoutx", + "width": 16.25, + "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.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":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":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.25, "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.25, "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.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/caffeinated/serpent65/keymaps/default/keymap.c b/keyboards/caffeinated/serpent65/keymaps/default/keymap.c new file mode 100644 index 0000000000..cf0097f912 --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* 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 + + +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| -| =| ~ | \ | Ins | + * |---------------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | BkSpc | Del | + * |---------------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp| + * |---------------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | | + * |---------------------------------------------------------------------| + * | LCtrl | GUI | Alt | Space | Alt | MO(1) | L | Dn | R | + * `---------------------------------------------------------------------' + */ +[0] = LAYOUT_all( /* Serpent65 Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, KC_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_BSPC, 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_TRNS, KC_ENT, KC_PGUP, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + +[1] = LAYOUT_all( /* Serpent65 Base */ + 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 + ), +}; diff --git a/keyboards/caffeinated/serpent65/keymaps/default/readme.md b/keyboards/caffeinated/serpent65/keymaps/default/readme.md new file mode 100644 index 0000000000..fd995e9e2a --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for the Cafeinated Studios Serpent65 diff --git a/keyboards/caffeinated/serpent65/keymaps/via/keymap.c b/keyboards/caffeinated/serpent65/keymaps/via/keymap.c new file mode 100644 index 0000000000..d4f6d9e20b --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* 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 + + +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| -| =| ~ | \ | Ins | + * |---------------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | BkSpc | Del | + * |---------------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp| + * |---------------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | | + * |---------------------------------------------------------------------| + * | LCtrl | GUI | Alt | Space | Alt | MO(1) | L | Dn | R | + * `---------------------------------------------------------------------' + */ +[0] = LAYOUT_all( /* Serpent65 Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, KC_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_BSPC, 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_TRNS, KC_ENT, KC_PGUP, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + +[1] = LAYOUT_all( /* Serpent65 Base */ + 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 + ), + +[2] = LAYOUT_all( /* Serpent65 Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Serpent65 Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/caffeinated/serpent65/keymaps/via/readme.md b/keyboards/caffeinated/serpent65/keymaps/via/readme.md new file mode 100644 index 0000000000..156593344f --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for the Cafeinated Studios Serpent65 diff --git a/keyboards/caffeinated/serpent65/keymaps/via/rules.mk b/keyboards/caffeinated/serpent65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/caffeinated/serpent65/readme.md b/keyboards/caffeinated/serpent65/readme.md new file mode 100644 index 0000000000..58a90ec02c --- /dev/null +++ b/keyboards/caffeinated/serpent65/readme.md @@ -0,0 +1,23 @@ +# Caffeinated Studios' Serpent65 + +![Serpent65](https://i.imgur.com/rAsZsXk.png) + +The Serpent65 is a 65% created by Caffeinated Studios. The board supports ANSI and ISO modifiers as well as split backspace and stepped/non-stepped caps lock. + +The PCB is an ARM powered board utilizing the STM32F072CBT6 mcu, designed by BlindAssassin111. The PCB is designed to work with the universal daughterboard and a 4in (~100mm) 4 pin JST SR cable with reversed pinout (pin 1 of both connectors is the same wire etc.). + +On the PCB is a single button for a reset for flashing. As well, there is a [Segger J-Link 6-pin Needle Adapter](https://www.segger.com/products/debug-probes/j-link/accessories/adapters/6-pin-needle-adapter/) footprint for reflashing the mcu as a backup in case of a bootloader issue. + +* Keyboard Maintainer: [jrfhoutx](https://github.com/jrfhoutx) +* Hardware Supported: Serpent65 +* Hardware Availability: Coming Soon + +Make example for this keyboard (after setting up your build environment): + + make caffeinated/serpent65:default + +Flashing example for this keyboard: + + make caffeinated/serpent65: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/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk new file mode 100644 index 0000000000..612d7e4ccb --- /dev/null +++ b/keyboards/caffeinated/serpent65/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 = 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 diff --git a/keyboards/caffeinated/serpent65/serpent65.c b/keyboards/caffeinated/serpent65/serpent65.c new file mode 100644 index 0000000000..ad812ee44c --- /dev/null +++ b/keyboards/caffeinated/serpent65/serpent65.c @@ -0,0 +1,16 @@ +/* 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 "serpent65.h" diff --git a/keyboards/caffeinated/serpent65/serpent65.h b/keyboards/caffeinated/serpent65/serpent65.h new file mode 100644 index 0000000000..a218e32798 --- /dev/null +++ b/keyboards/caffeinated/serpent65/serpent65.h @@ -0,0 +1,52 @@ +/* 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 + +/* 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. + * + * + * Use LAYOUT_all for ISO and Tsangan builds + * + */ + +#define LAYOUT_all( \ + 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, K27, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K67, \ + K80, K90, K81, K83, K85, K95, 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, K27, }, \ + { K30, K31, K32, K33, K34, K35, ___, K37, }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, }, \ + { K50, K51, K52, K53, K54, K55, ___, K57, }, \ + { K60, K61, K62, K63, K64, K65, K66, K67, }, \ + { K70, K71, K72, K73, K74, K75, ___, ___, }, \ + { K80, K81, ___, K83, ___, K85, ___, K87, }, \ + { K90, ___, ___, ___, ___, K95, K96, K97 } \ +} diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h index 922ea37b2b..83e98c2e28 100644 --- a/keyboards/cannonkeys/an_c/config.h +++ b/keyboards/cannonkeys/an_c/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #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 /* * Feature disable options diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk index 8ed2d0ead7..55e03edeae 100644 --- a/keyboards/cannonkeys/an_c/rules.mk +++ b/keyboards/cannonkeys/an_c/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -11,7 +17,7 @@ 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 +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 @@ -20,8 +26,5 @@ WS2812_DRIVER = spi LAYOUTS = 60_ansi 60_tsangan_hhkb -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/atlas/config.h b/keyboards/cannonkeys/atlas/config.h index 72ee927e2f..1ba5c0fb0e 100644 --- a/keyboards/cannonkeys/atlas/config.h +++ b/keyboards/cannonkeys/atlas/config.h @@ -50,6 +50,8 @@ along with this program. If not, see . #define RGB_DI_PIN B15 #define RGBLED_NUM 22 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* * Feature disable options diff --git a/keyboards/cannonkeys/atlas/rules.mk b/keyboards/cannonkeys/atlas/rules.mk index 8037597b5a..0f13950c63 100644 --- a/keyboards/cannonkeys/atlas/rules.mk +++ b/keyboards/cannonkeys/atlas/rules.mk @@ -1,6 +1,9 @@ # MCU Name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration diff --git a/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk b/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk index 4d940da78d..7d2cc67f4d 100644 --- a/keyboards/cannonkeys/chimera65/rules.mk +++ b/keyboards/cannonkeys/chimera65/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -11,7 +14,7 @@ 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 +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 diff --git a/keyboards/cannonkeys/db60/config.h b/keyboards/cannonkeys/db60/config.h index 449aa14575..dc2007c17c 100644 --- a/keyboards/cannonkeys/db60/config.h +++ b/keyboards/cannonkeys/db60/config.h @@ -19,11 +19,9 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xCA04 -#define PRODUCT_ID 0xDB60 #define DEVICE_VER 0x0001 #define MANUFACTURER CannonKeys -#define PRODUCT DB60 #define MATRIX_ROWS 5 #define MATRIX_COLS 15 @@ -57,6 +55,8 @@ along with this program. If not, see . #define RGB_DI_PIN B15 #define RGBLED_NUM 20 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* * Feature disable options diff --git a/keyboards/cannonkeys/db60/db60.h b/keyboards/cannonkeys/db60/db60.h index 741ab7d0ed..b0d5105e9f 100644 --- a/keyboards/cannonkeys/db60/db60.h +++ b/keyboards/cannonkeys/db60/db60.h @@ -1,61 +1,23 @@ -#pragma once + /* 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 "quantum.h" - -#define KNO 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, K2E, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ - { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2E, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ - K40, K41, K42, K45, 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, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ - { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, KNO, K4B, K4C, KNO, 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, \ - 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, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2C, K2E, \ - 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, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ -} +#if defined(KEYBOARD_cannonkeys_db60_j02) + #include "j02.h" +#elif defined(KEYBOARD_cannonkeys_db60_hotswap) + #include "hotswap.h" +#else + #include "rev2.h" +#endif diff --git a/keyboards/crkbd/rev1/legacy/legacy.h b/keyboards/cannonkeys/db60/hotswap/config.h similarity index 85% rename from keyboards/crkbd/rev1/legacy/legacy.h rename to keyboards/cannonkeys/db60/hotswap/config.h index 08dfcefbc1..3ea9693404 100644 --- a/keyboards/crkbd/rev1/legacy/legacy.h +++ b/keyboards/cannonkeys/db60/hotswap/config.h @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +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 @@ -18,6 +17,5 @@ along with this program. If not, see . #pragma once -#include "rev1.h" - -extern uint8_t is_master; \ No newline at end of file +#define PRODUCT_ID 0xDB62 +#define PRODUCT DB60 Hotswap diff --git a/keyboards/cannonkeys/db60/hotswap/hotswap.h b/keyboards/cannonkeys/db60/hotswap/hotswap.h new file mode 100644 index 0000000000..84e3528fd0 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/hotswap.h @@ -0,0 +1,63 @@ + /* 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 KNO 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, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KNO, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, KNO, K4B, K4C, KNO, 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, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/hotswap/readme.md b/keyboards/cannonkeys/db60/hotswap/readme.md new file mode 100644 index 0000000000..818d02d060 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/j02: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/db60/hotswap/rules.mk b/keyboards/cannonkeys/db60/hotswap/rules.mk new file mode 100644 index 0000000000..b6e5c668f8 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb diff --git a/keyboards/cannonkeys/db60/j02/config.h b/keyboards/cannonkeys/db60/j02/config.h new file mode 100644 index 0000000000..392cec3a55 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/config.h @@ -0,0 +1,21 @@ +/* +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 + +#define PRODUCT_ID 0xDB60 +#define PRODUCT DB60 diff --git a/keyboards/cannonkeys/db60/j02/j02.h b/keyboards/cannonkeys/db60/j02/j02.h new file mode 100644 index 0000000000..0b85456086 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/j02.h @@ -0,0 +1,77 @@ + /* 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 KNO 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K45, 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, KNO, K4B, K4C, KNO, 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, \ + 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, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2C, K2E, \ + 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/j02/readme.md b/keyboards/cannonkeys/db60/j02/readme.md new file mode 100644 index 0000000000..818d02d060 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/j02: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/db60/j02/rules.mk b/keyboards/cannonkeys/db60/j02/rules.mk new file mode 100644 index 0000000000..f53da9b051 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso diff --git a/keyboards/cannonkeys/db60/keymaps/via/keymap.c b/keyboards/cannonkeys/db60/keymaps/via/keymap.c index 47af39164f..b25d36a9c2 100644 --- a/keyboards/cannonkeys/db60/keymaps/via/keymap.c +++ b/keyboards/cannonkeys/db60/keymaps/via/keymap.c @@ -30,7 +30,7 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = 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_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_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(_FN1), @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN1] = 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_GRV, KC_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, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cannonkeys/db60/readme.md b/keyboards/cannonkeys/db60/readme.md index c1000ae2ca..54f4a8b935 100644 --- a/keyboards/cannonkeys/db60/readme.md +++ b/keyboards/cannonkeys/db60/readme.md @@ -3,10 +3,23 @@ DB60 "Daughterboard 60" Keyboard * Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) -* Hardware Supported: STM32F072CBT6 +* Hardware Supported: STM32F072CBT6 (or equivalent) Make example for this keyboard (after setting up your build environment): - make cannonkeys/db60:default + make cannonkeys/db60/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). + +Some notes about the versions: +The original DB60 was shipped with the J-02. To build that, you will need to use the following command: + + make cannonkeys/db60/j02:default + +Solderable DB60s were shipped with keyboards after the J-02. This variant has cutouts along the top and bottom to support O-ring gasket mounting. To build these, you can use this command: + + make cannonkeys/db60/rev2:default + +Hotswap ANSI DB60s were shipped with the Bakeneko keyboards from CannonKeys. These also have the o-ring gasket mounting points. To build this: + + make cannonkeys/db60/hotswap:default diff --git a/keyboards/cannonkeys/db60/rev2/config.h b/keyboards/cannonkeys/db60/rev2/config.h new file mode 100644 index 0000000000..df3527b705 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/config.h @@ -0,0 +1,21 @@ +/* +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 + +#define PRODUCT_ID 0xDB61 +#define PRODUCT DB60v2 diff --git a/keyboards/cannonkeys/db60/rev2/readme.md b/keyboards/cannonkeys/db60/rev2/readme.md new file mode 100644 index 0000000000..b52f38f9a0 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/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/cannonkeys/db60/rev2/rev2.h b/keyboards/cannonkeys/db60/rev2/rev2.h new file mode 100644 index 0000000000..6740e70ee3 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/rev2.h @@ -0,0 +1,77 @@ + /* 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 KNO 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, KNO, K4B, K4C, KNO, 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, \ + 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, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, 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, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, 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, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/rev2/rules.mk b/keyboards/cannonkeys/db60/rev2/rules.mk new file mode 100644 index 0000000000..f53da9b051 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso diff --git a/keyboards/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk index 2338508167..d7157ce76e 100644 --- a/keyboards/cannonkeys/db60/rules.mk +++ b/keyboards/cannonkeys/db60/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -15,10 +21,7 @@ BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi -LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso - -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF +DEFAULT_FOLDER = cannonkeys/db60/rev2 # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/devastatingtkl/config.h b/keyboards/cannonkeys/devastatingtkl/config.h index 15c0d4e356..0a76a3466f 100644 --- a/keyboards/cannonkeys/devastatingtkl/config.h +++ b/keyboards/cannonkeys/devastatingtkl/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 20 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* * Feature disable options diff --git a/keyboards/cannonkeys/devastatingtkl/rules.mk b/keyboards/cannonkeys/devastatingtkl/rules.mk index 4ce69bf4ae..3a17bc4bd2 100644 --- a/keyboards/cannonkeys/devastatingtkl/rules.mk +++ b/keyboards/cannonkeys/devastatingtkl/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -16,8 +22,5 @@ BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/instant60/config.h b/keyboards/cannonkeys/instant60/config.h index bd0ae31602..d34bc0003e 100644 --- a/keyboards/cannonkeys/instant60/config.h +++ b/keyboards/cannonkeys/instant60/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #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 /* * Feature disable options diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk index 0973ad9547..81ee895940 100644 --- a/keyboards/cannonkeys/instant60/rules.mk +++ b/keyboards/cannonkeys/instant60/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -10,7 +16,7 @@ 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 +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 @@ -19,8 +25,5 @@ WS2812_DRIVER = spi LAYOUTS = 60_ansi 60_tsangan_hhkb -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/instant65/config.h b/keyboards/cannonkeys/instant65/config.h index ecfb55fe00..dc097494b2 100644 --- a/keyboards/cannonkeys/instant65/config.h +++ b/keyboards/cannonkeys/instant65/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 20 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* diff --git a/keyboards/cannonkeys/instant65/rules.mk b/keyboards/cannonkeys/instant65/rules.mk index eba941f89b..a930d7025f 100644 --- a/keyboards/cannonkeys/instant65/rules.mk +++ b/keyboards/cannonkeys/instant65/rules.mk @@ -1,6 +1,12 @@ # 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 # @@ -21,6 +27,3 @@ WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE - -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk index 3925458dda..f42acaafe3 100644 --- a/keyboards/cannonkeys/iron165/rules.mk +++ b/keyboards/cannonkeys/iron165/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -9,7 +12,7 @@ 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 +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 diff --git a/keyboards/cannonkeys/obliterated75/config.h b/keyboards/cannonkeys/obliterated75/config.h index b2edfecd3d..7a8a7ff28c 100644 --- a/keyboards/cannonkeys/obliterated75/config.h +++ b/keyboards/cannonkeys/obliterated75/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 20 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* diff --git a/keyboards/cannonkeys/obliterated75/rules.mk b/keyboards/cannonkeys/obliterated75/rules.mk index 3ff3bb9198..5dd12f03ca 100644 --- a/keyboards/cannonkeys/obliterated75/rules.mk +++ b/keyboards/cannonkeys/obliterated75/rules.mk @@ -1,6 +1,12 @@ # 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 # @@ -18,8 +24,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 WS2812_DRIVER = spi -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/onyx/rules.mk b/keyboards/cannonkeys/onyx/rules.mk index 50235c6e11..f48fd0fa15 100644 --- a/keyboards/cannonkeys/onyx/rules.mk +++ b/keyboards/cannonkeys/onyx/rules.mk @@ -1,6 +1,12 @@ # 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 # @@ -18,8 +24,5 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/ortho48/ortho48.h b/keyboards/cannonkeys/ortho48/ortho48.h index 1e51c37af7..b0197c3cf7 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, k35 , k37, k38, k39, k3a, k3b \ + 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, k35, KC_NO, k37, k38, k39, k3a, k3b } \ + { k30, k31, k32, k33, k34, KC_NO, k36, k37, k38, k39, k3a, k3b } \ } #define LAYOUT_ortho_4x12( \ diff --git a/keyboards/cannonkeys/ortho48/rules.mk b/keyboards/cannonkeys/ortho48/rules.mk index 6e468c49a3..ac927481f2 100644 --- a/keyboards/cannonkeys/ortho48/rules.mk +++ b/keyboards/cannonkeys/ortho48/rules.mk @@ -8,7 +8,7 @@ BOOTLOADER = stm32duino VPATH += keyboards/cannonkeys/bluepill SRC = keyboard.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/cannonkeys/ortho60/ortho60.h b/keyboards/cannonkeys/ortho60/ortho60.h index 0f3ae127aa..2dcc00ddb9 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, k45 , k47, k48, k49, k4a, k4b \ + k40, k41, k42, k43, k44, k46 , 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, k45, KC_NO, k47, k48, k49, k4a, k4b }, \ + { k40, k41, k42, k43, k44, KC_NO, k46, k47, k48, k49, k4a, k4b }, \ } #define LAYOUT_ortho_5x12( \ diff --git a/keyboards/cannonkeys/ortho60/rules.mk b/keyboards/cannonkeys/ortho60/rules.mk index ea9bd6b2df..ec91d3b81d 100644 --- a/keyboards/cannonkeys/ortho60/rules.mk +++ b/keyboards/cannonkeys/ortho60/rules.mk @@ -8,7 +8,7 @@ BOOTLOADER = stm32duino VPATH += keyboards/cannonkeys/bluepill SRC = keyboard.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/cannonkeys/ortho75/info.json b/keyboards/cannonkeys/ortho75/info.json index b6aaa8e7e8..a57f184218 100644 --- a/keyboards/cannonkeys/ortho75/info.json +++ b/keyboards/cannonkeys/ortho75/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT_ortho_5x12": { + "LAYOUT_ortho_5x15": { "layout": [ {"label":"`", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, diff --git a/keyboards/cannonkeys/ortho75/ortho75.c b/keyboards/cannonkeys/ortho75/ortho75.c index c3ceee28c0..7c722d7156 100644 --- a/keyboards/cannonkeys/ortho75/ortho75.c +++ b/keyboards/cannonkeys/ortho75/ortho75.c @@ -11,7 +11,8 @@ uint32_t layer_state_set_kb(uint32_t state) { return state; } -void encoder_update_kb(uint8_t index, bool clockwise) { +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) return false; uint16_t mapped_code = 0; if (index == 0) { if (clockwise) { @@ -46,4 +47,5 @@ void encoder_update_kb(uint8_t index, bool clockwise) { while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ } unregister_code(mapped_code); } + return true; } diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk index e132ccaf18..9d6004656f 100644 --- a/keyboards/cannonkeys/ortho75/rules.mk +++ b/keyboards/cannonkeys/ortho75/rules.mk @@ -8,7 +8,7 @@ BOOTLOADER = stm32duino VPATH += keyboards/cannonkeys/bluepill SRC = keyboard.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/cannonkeys/practice60/rules.mk b/keyboards/cannonkeys/practice60/rules.mk index 3f9ca1448f..80bde01cf4 100644 --- a/keyboards/cannonkeys/practice60/rules.mk +++ b/keyboards/cannonkeys/practice60/rules.mk @@ -8,7 +8,7 @@ BOOTLOADER = stm32duino VPATH += keyboards/cannonkeys/bluepill SRC = keyboard.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk index 344844b0ef..130f9b98e3 100644 --- a/keyboards/cannonkeys/practice65/rules.mk +++ b/keyboards/cannonkeys/practice65/rules.mk @@ -8,7 +8,7 @@ BOOTLOADER = stm32duino VPATH += keyboards/cannonkeys/bluepill SRC = keyboard.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/cannonkeys/rekt1800/rules.mk b/keyboards/cannonkeys/rekt1800/rules.mk index c4f07f5445..0f3d34ea5a 100644 --- a/keyboards/cannonkeys/rekt1800/rules.mk +++ b/keyboards/cannonkeys/rekt1800/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -15,8 +21,5 @@ CUSTOM_MATRIX = no # Custom matrix file BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = no -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/sagittarius/config.h b/keyboards/cannonkeys/sagittarius/config.h index 6c1648713e..a263ebc713 100644 --- a/keyboards/cannonkeys/sagittarius/config.h +++ b/keyboards/cannonkeys/sagittarius/config.h @@ -60,6 +60,8 @@ along with this program. If not, see . #define RGBLED_NUM 8 #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 DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/cannonkeys/sagittarius/rules.mk b/keyboards/cannonkeys/sagittarius/rules.mk index 62d0ab63d4..968520203d 100644 --- a/keyboards/cannonkeys/sagittarius/rules.mk +++ b/keyboards/cannonkeys/sagittarius/rules.mk @@ -1,8 +1,11 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF +DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h index dfb624a0d7..e100cc99b1 100644 --- a/keyboards/cannonkeys/satisfaction75/config.h +++ b/keyboards/cannonkeys/satisfaction75/config.h @@ -51,6 +51,18 @@ along with this program. If not, see . /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST +// I2C config +#define I2C_DRIVER I2CD1 +#define I2C1_SCL_BANK GPIOB +#define I2C1_SCL 6 +#define I2C1_SDA 7 +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 +#define I2C1_TIMINGR_PRESC 0x00U +#define I2C1_TIMINGR_SCLDEL 0x03U +#define I2C1_TIMINGR_SDADEL 0x01U +#define I2C1_TIMINGR_SCLH 0x03U +#define I2C1_TIMINGR_SCLL 0x09U /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/cannonkeys/satisfaction75/i2c_master.c b/keyboards/cannonkeys/satisfaction75/i2c_master.c deleted file mode 100644 index d87f7668d5..0000000000 --- a/keyboards/cannonkeys/satisfaction75/i2c_master.c +++ /dev/null @@ -1,124 +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 "i2c_master.h" -#include "quantum.h" -#include -#include - -static uint8_t i2c_address; - -// This configures the I2C clock to 400khz assuming a 48Mhz clock -// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html -static const I2CConfig i2cconfig = { - STM32_TIMINGR_PRESC(0x00U) | - STM32_TIMINGR_SCLDEL(0x03U) | STM32_TIMINGR_SDADEL(0x01U) | - STM32_TIMINGR_SCLH(0x03U) | STM32_TIMINGR_SCLL(0x09U), - 0, - 0 -}; - -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) -{ - // Try releasing special pins for a short time - palSetPadMode(GPIOB, 6, PAL_MODE_INPUT); - palSetPadMode(GPIOB, 7, PAL_MODE_INPUT); - - chThdSleepMilliseconds(10); - - palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN); - palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN); - - //i2cInit(); //This is invoked by halInit() so no need to redo it. -} - -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); - i2cAcquireBus(&I2C_DRIVER); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); - i2cReleaseBus(&I2C_DRIVER); - 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/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk index e3abea5463..174f20c0e6 100644 --- a/keyboards/cannonkeys/satisfaction75/rules.mk +++ b/keyboards/cannonkeys/satisfaction75/rules.mk @@ -2,6 +2,12 @@ MCU = STM32F072 BOARD = GENERIC_STM32_F072XB +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -15,7 +21,7 @@ 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 +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 @@ -25,8 +31,5 @@ QWIIC_DRIVERS += MICRO_OLED DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1 -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c index fd85b8230b..d3853c2292 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c @@ -300,7 +300,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } -void encoder_update_kb(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; if (index == 0) { @@ -325,6 +326,7 @@ void encoder_update_kb(uint8_t index, bool clockwise) { } } } + return true; } void custom_config_reset(void){ @@ -380,7 +382,7 @@ void matrix_init_kb(void) } -void matrix_scan_kb(void) { +void housekeeping_task_kb(void) { rtcGetTime(&RTCD1, &last_timespec); uint16_t minutes_since_midnight = last_timespec.millisecond / 1000 / 60; @@ -451,4 +453,4 @@ void via_eeprom_reset(void) eeconfig_disable(); } -#endif // VIA_ENABLE \ No newline at end of file +#endif // VIA_ENABLE diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h index 07672643ed..3c3166c919 100644 --- a/keyboards/cannonkeys/savage65/config.h +++ b/keyboards/cannonkeys/savage65/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 20 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk index 8e1b984fd4..094dcf3ce2 100644 --- a/keyboards/cannonkeys/savage65/rules.mk +++ b/keyboards/cannonkeys/savage65/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -11,7 +17,7 @@ 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 +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 @@ -21,7 +27,4 @@ WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_iso_blocker diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h index 5f44584e0d..cddff4ce7e 100644 --- a/keyboards/cannonkeys/tmov2/config.h +++ b/keyboards/cannonkeys/tmov2/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 22 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* * Feature disable options diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk index 9b29e8fd17..f1e48a6b7a 100644 --- a/keyboards/cannonkeys/tmov2/rules.mk +++ b/keyboards/cannonkeys/tmov2/rules.mk @@ -1,6 +1,12 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + # Build Options # comment out to disable the options. # @@ -11,7 +17,7 @@ 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 +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 @@ -20,6 +26,3 @@ WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE - -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF diff --git a/keyboards/cannonkeys/tsukuyomi/config.h b/keyboards/cannonkeys/tsukuyomi/config.h index 00cd0eee99..d3e955450f 100644 --- a/keyboards/cannonkeys/tsukuyomi/config.h +++ b/keyboards/cannonkeys/tsukuyomi/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #define RGBLED_NUM 20 #define WS2812_SPI SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 /* diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk index ce881f1986..a930d7025f 100644 --- a/keyboards/cannonkeys/tsukuyomi/rules.mk +++ b/keyboards/cannonkeys/tsukuyomi/rules.mk @@ -1,6 +1,12 @@ # 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 # @@ -10,7 +16,7 @@ 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 +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this 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 @@ -19,8 +25,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi -# Wildcard to allow APM32 MCU -DFU_SUFFIX_ARGS = -p FFFF -v FFFF - # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/capsunlocked/cu65/keymaps/default/keymap.c b/keyboards/capsunlocked/cu65/keymaps/default/keymap.c index 4f185d8cf2..05f4bdb995 100644 --- a/keyboards/capsunlocked/cu65/keymaps/default/keymap.c +++ b/keyboards/capsunlocked/cu65/keymaps/default/keymap.c @@ -21,16 +21,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_ansi_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │Del│ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │Pg+│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │Pg+│ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│LGUI│LAlt│      Space      │RAlt│ L1 │ │ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * │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_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, @@ -41,16 +41,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_65_ansi_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │ + * │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/keymap.c b/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c index a11eb3f3ab..c84317270c 100644 --- a/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c +++ b/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c @@ -21,16 +21,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_iso_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │Del│ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │Del│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │  │Pg+│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │Pg+│ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ - * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│LGUI│LAlt│      Space      │RAlt│ L1 │ │ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * │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_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, @@ -41,16 +41,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_65_iso_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │ + * │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/cu80/v2_ansi/config.h b/keyboards/capsunlocked/cu80/v2_ansi/config.h index a32d2e9439..4ff0af5c27 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/config.h +++ b/keyboards/capsunlocked/cu80/v2_ansi/config.h @@ -19,37 +19,10 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0081 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ANSI - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#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 LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define RGB_DI_PIN E6 -#ifdef RGB_DI_PIN - #define RGBLIGHT_ANIMATIONS - #define RGBLED_NUM 87 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 50 -#endif +/* Define RGB */ +#define DRIVER_LED_TOTAL 87 +#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json index 168b1bfae2..f4b8a1f709 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/info.json +++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json @@ -1,100 +1,142 @@ { - "keyboard_name": "CapsUnlocked CU80 v2 ANSI", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "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":"\u00ac", "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":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "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} - ] - } + "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", + "features": { + "audio": false, + "backlight": false, + "bluetooth": false, + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true, + "sleep_led": false, + "unicode": false + }, + "matrix_pins": { + "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"], + "rows": ["D3", "D2", "B7", "F1", "C7", "D5"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "all": false + }, + "brightness_steps": 8, + "hue_steps": 8, + "led_count": 87, + "max_brightness": 50, + "pin": "E6", + "saturation_steps": 8 + }, + "url": "https://caps-unlocked.com/cu80-round-2/", + "usb": { + "device_ver": "0x0001", + "pid": "0x0081", + "vid": "0x4355" + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "c_macro": true, + "filename": "keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.h", + "layout": [ + { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 }, + { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 }, + { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 }, + { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 }, + { "label": "@", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 }, + { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 }, + { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 }, + { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 }, + { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 }, + { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 }, + { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 }, + { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 }, + { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 }, + { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 }, + { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 }, + { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 }, + { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 }, + { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 }, + { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 }, + { "label": "|", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 }, + { "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 }, + { "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 }, + { "label": "\"", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 }, + { "label": "Enter", "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "label": "Shift", "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 }, + { "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 }, + { "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 }, + { "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 }, + { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 }, + { "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 }, + { "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 } + ] } + } } diff --git a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c index 0e17b349a8..e8480605b7 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c @@ -24,7 +24,7 @@ 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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD ), }; diff --git a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c index 1a1de7230c..fb487aa833 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c @@ -23,7 +23,7 @@ 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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD ), [2] = LAYOUT_tkl_ansi( diff --git a/keyboards/capsunlocked/cu80/v2_ansi/readme.md b/keyboards/capsunlocked/cu80/v2_ansi/readme.md index 4ade5be088..4768917fc8 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/readme.md +++ b/keyboards/capsunlocked/cu80/v2_ansi/readme.md @@ -4,12 +4,13 @@ The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with fixed lay To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. -* Keyboard maintainer: [rys](https://github.com/rys) +* Keyboard maintainer: [rys](https://github.com/rys) & [maz0r](https://github.com/maz0r) * Hardware supported: [CU80 v2 ANSI](https://imgur.com/gOWpJqe) * Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) Make and flash example for this keyboard (after setting up your build environment): make capsunlocked/cu80/v2_ansi:default:flash + make capsunlocked/cu80/v2_ansi/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/ergotravel/keymaps/viet/config.h b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h similarity index 58% rename from keyboards/ergotravel/keymaps/viet/config.h rename to keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h index 1c6c400b45..7e0f0bfccd 100644 --- a/keyboards/ergotravel/keymaps/viet/config.h +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h @@ -1,5 +1,5 @@ /* -Copyright 2017 Pierre Constantineau +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 @@ -14,25 +14,22 @@ GNU General Public License 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 */ +/* enable RGB matrix */ +#define CU80_RGB -#define USE_SERIAL -// #define USE_I2C +/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */ +#undef PRODUCT +#define PRODUCT CU80 v2 ANSI RGB -/* Select hand configuration */ - -//#define MASTER_LEFT -#define MASTER_RIGHT -// #define EE_HANDS - -#undef RGBLED_NUM -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 26 -#define RGBLIGHT_HUE_STEP 20 -#define RGBLIGHT_SAT_STEP 20 -#define RGBLIGHT_VAL_STEP 20 -#define RGBLIGHT_LIMIT_VAL 220 +/* moved to RGB specific */ +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +/* RGB firmware override */ +#undef RGBLIGHT_ANIMATIONS +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_LIMIT_VAL diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json b/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json new file mode 100644 index 0000000000..f97e203645 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json @@ -0,0 +1,8 @@ +{ + "features": { + "rgblight": false + }, + "usb": { + "pid": "0x0082" + } +} diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md b/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md new file mode 100644 index 0000000000..0919483592 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md @@ -0,0 +1,3 @@ +# CU80 v2 ANSI RGB + +Overrides \ No newline at end of file diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk new file mode 100644 index 0000000000..d213c84de3 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk @@ -0,0 +1,4 @@ +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 + +LTO_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk index da23ce1866..7c5554a087 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk +++ b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk @@ -7,19 +7,4 @@ 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 = 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 - -LAYOUTS = tkl_ansi +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue diff --git a/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c b/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c index f0c108ecc8..ef920474bb 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c @@ -16,3 +16,33 @@ along with this program. If not, see . */ #include "v2_ansi.h" + +#ifdef CU80_RGB + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = {{{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}, {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50}, {63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75}, {86, 85, 84, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 82, 81, 80, 79, 78, NO_LED, 77, 76} + + }, + /*board layout accounting for led directions */ + {{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 13}, {212, 13}, {198, 13}, {184, 13}, {169, 13}, {155, 13}, {141, 13}, {127, 13}, {113, 13}, {99, 13}, {85, 13}, {71, 13}, {56, 13}, {42, 13}, {28, 13}, {14, 13}, {0, 13}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, + {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64} + + }, + /* marks scroll and caps as function modifiers for led effects */ + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1}}; +#endif diff --git a/keyboards/capsunlocked/cu80/v2_iso/config.h b/keyboards/capsunlocked/cu80/v2_iso/config.h index d757fd33a3..7980837acf 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/config.h +++ b/keyboards/capsunlocked/cu80/v2_iso/config.h @@ -19,37 +19,11 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0080 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ISO - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#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 LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define RGB_DI_PIN E6 -#ifdef RGB_DI_PIN - #define RGBLIGHT_ANIMATIONS - #define RGBLED_NUM 88 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 50 -#endif +/* Define RGB */ +#define DRIVER_LED_TOTAL 88 +#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json index 746e3ae7c8..fd572704d9 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/info.json +++ b/keyboards/capsunlocked/cu80/v2_iso/info.json @@ -1,101 +1,143 @@ { - "keyboard_name": "CapsUnlocked CU80 v2 ISO", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "width": 18.25, - "height": 6.5, - "layouts": { - "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":"£", "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":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "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} - ] - } + "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", + "features": { + "audio": false, + "backlight": false, + "bluetooth": false, + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true, + "sleep_led": false, + "unicode": false + }, + "matrix_pins": { + "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"], + "rows": ["D3", "D2", "B7", "F1", "C7", "D5"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "all": false + }, + "brightness_steps": 8, + "hue_steps": 8, + "led_count": 88, + "max_brightness": 50, + "pin": "E6", + "saturation_steps": 8 + }, + "url": "https://caps-unlocked.com/cu80-round-2/", + "usb": { + "device_ver": "0x0001", + "pid": "0x0080", + "vid": "0x4355" + }, + "community_layouts": ["tkl_iso"], + "layouts": { + "LAYOUT_tkl_iso": { + "c_macro": true, + "filename": "keyboards/capsunlocked/cu80/v2_iso/v2_iso.h", + "layout": [ + { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 }, + { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 }, + { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 }, + { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 }, + { "label": "\"", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 }, + { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 }, + { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 }, + { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 }, + { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 }, + { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 }, + { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 }, + { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 }, + { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 }, + { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 }, + { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 }, + { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 }, + { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 }, + { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 }, + { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 }, + { "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 }, + { "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 }, + { "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 }, + { "label": "@", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 }, + { "label": "~", "matrix": [3, 12], "w": 1, "x": 12.75, "y": 3.5 }, + { "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2.5 }, + { "label": "Shift", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "label": "|", "matrix": [4, 1], "w": 1, "x": 1.25, "y": 4.5 }, + { "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 }, + { "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 }, + { "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 }, + { "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 }, + { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 }, + { "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 }, + { "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 } + ] } + } } diff --git a/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c index 2438a9ebc9..1b1caa8776 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c @@ -24,7 +24,7 @@ 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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + 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_iso( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, diff --git a/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c index 3f6c28abb2..f63ab5a53c 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c @@ -23,7 +23,7 @@ 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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + 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_iso( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, diff --git a/keyboards/capsunlocked/cu80/v2_iso/readme.md b/keyboards/capsunlocked/cu80/v2_iso/readme.md index bcdbfaa627..cf8c5fc6fa 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/readme.md +++ b/keyboards/capsunlocked/cu80/v2_iso/readme.md @@ -4,12 +4,13 @@ The CU80 v2 ISO is the PCB for round 2 of the CU80 TKL keyboard, with fixed layo To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. -* Keyboard maintainer: [rys](https://github.com/rys) +* Keyboard maintainer: [rys](https://github.com/rys) & [maz0r](https://github.com/maz0r) * Hardware supported: [CU80 v2 ISO](https://imgur.com/yMZMt6j) * Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) Make and flash example for this keyboard (after setting up your build environment): make capsunlocked/cu80/v2_iso:default:flash + make capsunlocked/cu80/v2_iso/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/capsunlocked/cu80/v2_iso/rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h new file mode 100644 index 0000000000..3f784e2e06 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h @@ -0,0 +1,34 @@ +/* +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 . +*/ + +/* enable RGB matrix */ +#define CU80_RGB + +/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */ +#undef PRODUCT +#define PRODUCT CU80 v2 ISO RGB + +/* moved to RGB specific */ +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 + +/* RGB firmware override */ +#undef RGBLIGHT_ANIMATIONS +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_LIMIT_VAL diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json b/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json new file mode 100644 index 0000000000..36748237c5 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json @@ -0,0 +1,8 @@ +{ + "features": { + "rgblight": false + }, + "usb": { + "pid": "0x0083" + } +} diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md b/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md new file mode 100644 index 0000000000..c53bf74078 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md @@ -0,0 +1,3 @@ +# CU80 v2 ISO RGB + +Overrides \ No newline at end of file diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk new file mode 100644 index 0000000000..d213c84de3 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk @@ -0,0 +1,4 @@ +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 + +LTO_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_iso/rules.mk b/keyboards/capsunlocked/cu80/v2_iso/rules.mk index 5650414182..7c5554a087 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/rules.mk +++ b/keyboards/capsunlocked/cu80/v2_iso/rules.mk @@ -7,19 +7,4 @@ 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 = 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 - -LAYOUTS = tkl_iso +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue diff --git a/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c b/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c index 748deb1086..2caef36bc7 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c +++ b/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c @@ -16,3 +16,27 @@ along with this program. If not, see . */ #include "v2_iso.h" +#ifdef CU80_RGB + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = {{{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}, {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50}, {63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76}, {87, 86, 85, NO_LED, NO_LED, 84, NO_LED, NO_LED, NO_LED, 83, 82, 81, 80, 79, NO_LED, 78, 77}}, + /*board layout accounting for led directions */ + {{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 26}, {212, 26}, {198, 26}, {184, 26}, {169, 26}, {155, 26}, {141, 26}, {127, 26}, {113, 26}, {99, 26}, {85, 26}, {71, 26}, {56, 26}, {42, 26}, {28, 26}, {14, 26}, {0, 26}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {14, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64}}, + /* marks scroll and caps as function modifiers for led effects */ + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1}}; +#endif diff --git a/keyboards/carbo65/carbo65.c b/keyboards/carbo65/carbo65.c new file mode 100644 index 0000000000..1d04b48221 --- /dev/null +++ b/keyboards/carbo65/carbo65.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 "carbo65.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/carbo65/carbo65.h b/keyboards/carbo65/carbo65.h new file mode 100644 index 0000000000..7613c8aa57 --- /dev/null +++ b/keyboards/carbo65/carbo65.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, \ + 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, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/carbo65/config.h b/keyboards/carbo65/config.h new file mode 100644 index 0000000000..8475b3b1bb --- /dev/null +++ b/keyboards/carbo65/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 0x4336 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Carbo65 + +/* 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/carbo65/info.json b/keyboards/carbo65/info.json new file mode 100644 index 0000000000..27b44b9529 --- /dev/null +++ b/keyboards/carbo65/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/carbo65/keymaps/default/keymap.c new file mode 100644 index 0000000000..d8a7cb5504 --- /dev/null +++ b/keyboards/carbo65/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_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_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_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/carbo65/keymaps/default/readme.md b/keyboards/carbo65/keymaps/default/readme.md new file mode 100644 index 0000000000..93da5395f2 --- /dev/null +++ b/keyboards/carbo65/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Carbo 65. VIA support disabled. + +![Layer 0](https://i.imgur.com/3UZuHOl.png) + +![Layer 1](https://i.imgur.com/SmFQQ4c.png) diff --git a/keyboards/carbo65/keymaps/via/keymap.c b/keyboards/carbo65/keymaps/via/keymap.c new file mode 100644 index 0000000000..74005be77b --- /dev/null +++ b/keyboards/carbo65/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_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_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_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), + +[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) +}; diff --git a/keyboards/carbo65/keymaps/via/readme.md b/keyboards/carbo65/keymaps/via/readme.md new file mode 100644 index 0000000000..2cac263648 --- /dev/null +++ b/keyboards/carbo65/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Carbo 65. VIA support enabled. + +![Layer 0](https://i.imgur.com/3UZuHOl.png) + +![Layer 1](https://i.imgur.com/SmFQQ4c.png) diff --git a/keyboards/carbo65/keymaps/via/rules.mk b/keyboards/carbo65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/carbo65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/carbo65/readme.md b/keyboards/carbo65/readme.md new file mode 100644 index 0000000000..039976b3e8 --- /dev/null +++ b/keyboards/carbo65/readme.md @@ -0,0 +1,32 @@ +# Carbo 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 TKL keyboard with STM32F072CB +* Hardware Availability: https://www.tantsim.com + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make carbo65: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 carbo65::flash`) diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk new file mode 100644 index 0000000000..6a7c2ca63b --- /dev/null +++ b/keyboards/carbo65/rules.mk @@ -0,0 +1,27 @@ +# 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 = 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 diff --git a/keyboards/cassette42/cassette42.c b/keyboards/cassette42/cassette42.c new file mode 100644 index 0000000000..f5ca2b8a98 --- /dev/null +++ b/keyboards/cassette42/cassette42.c @@ -0,0 +1,16 @@ +/* Copyright 2019 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 . + */ +#include "cassette42.h" diff --git a/keyboards/dumbpad/dumbpad.h b/keyboards/cassette42/cassette42.h similarity index 77% rename from keyboards/dumbpad/dumbpad.h rename to keyboards/cassette42/cassette42.h index b7c7694e30..32a686f3de 100644 --- a/keyboards/dumbpad/dumbpad.h +++ b/keyboards/cassette42/cassette42.h @@ -1,4 +1,4 @@ -/* Copyright 2019 Chip +/* Copyright 2019 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 @@ -26,14 +26,9 @@ * represents the switch matrix. */ #define LAYOUT( \ - k01, k02, k03, k04, \ - k11, k12, k13, k14, \ - k21, k22, k23, k24, \ - k30, k31, k32, k33, k34 \ + k10, k11, \ + k00, k01, k02, k03\ ) \ { \ - { KC_NO, k01, k02, k03, k04 }, \ - { KC_NO, k11, k12, k13, k14 }, \ - { KC_NO, k21, k22, k23, k24 }, \ - { k30, k31, k32, k33, k34 }, \ + { k00, k01, k02, k03, k10, k11 }, \ } diff --git a/keyboards/cassette42/common/glcdfont.c b/keyboards/cassette42/common/glcdfont.c new file mode 100644 index 0000000000..dcffc71958 --- /dev/null +++ b/keyboards/cassette42/common/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 + +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, 0x38, 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, 0xFE, 0x01, 0x19, +0x05, 0xC1, 0x21, 0x31, 0xD1, 0x11, +0x11, 0x11, 0x11, 0x11, 0x11, 0xD1, +0x31, 0x21, 0xC1, 0x01, 0x01, 0x01, +0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3E, 0x3E, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x3E, 0x3E, 0x3E, +0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, +0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x3E, 0xBE, 0xBE, +0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, +0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, +0xF8, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, +0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, +0xC0, 0xF0, 0xFE, 0x7E, 0x1E, 0xFE, +0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xF0, +0xFC, 0xFC, 0xFE, 0x1E, 0x9E, 0xFE, +0xFC, 0xFC, 0xF0, 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, 0x3F, 0x40, 0x60, +0x50, 0x48, 0x69, 0x4B, 0x4A, 0x4A, +0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, +0x4B, 0x69, 0x48, 0x50, 0x60, 0x40, +0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x7C, 0x7C, 0x7F, 0x7F, +0x7F, 0x3F, 0x1F, 0x00, 0x7C, 0x7C, +0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x07, +0x00, 0x00, 0x00, 0x0F, 0x3F, 0x7F, +0x7F, 0x7F, 0x7F, 0x7C, 0x7D, 0x7D, +0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7C, +0x00, 0x00, 0x7B, 0x7B, 0x7B, 0x78, +0x7B, 0x7B, 0x7B, 0x78, 0x7F, 0x7F, +0x7F, 0x3F, 0x00, 0x00, 0x00, 0x7F, +0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x03, +0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0x03, 0x03, 0x03, 0x00, 0x00, 0x06, +0x07, 0x07, 0x07, 0x07, 0x00, 0x7F, +0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, +0x41, 0x73, 0x78, 0x7E, 0x7F, 0x7F, +0x7F, 0x7B, 0x78, 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, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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/cassette42/common/oled_helper.c b/keyboards/cassette42/common/oled_helper.c new file mode 100644 index 0000000000..de908f128a --- /dev/null +++ b/keyboards/cassette42/common/oled_helper.c @@ -0,0 +1,25 @@ +#ifdef OLED_DRIVER_ENABLE +# include QMK_KEYBOARD_H +# include +# include + +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, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}; + oled_write_P(logo, false); +} + +# ifdef RGBLIGHT_ENABLE +extern rgblight_config_t rgblight_config; +static char led_buf[24] = "LED state ready.\n"; +rgblight_config_t rgblight_config_bak; + +void update_led_status(void) { + if (rgblight_config_bak.enable != rgblight_config.enable || rgblight_config_bak.mode != rgblight_config.mode || rgblight_config_bak.hue != rgblight_config.hue || rgblight_config_bak.sat != rgblight_config.sat || rgblight_config_bak.val != rgblight_config.val) { + snprintf(led_buf, sizeof(led_buf) - 1, "%c H%2d S%2d V%2d MODE%2d", rgblight_config.enable ? '*' : '.', (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP), (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP), (uint8_t)rgblight_config.mode); + rgblight_config_bak = rgblight_config; + } +} + +void render_led_status(void) { oled_write(led_buf, false); } +# endif +#endif diff --git a/keyboards/cassette42/common/oled_helper.h b/keyboards/cassette42/common/oled_helper.h new file mode 100644 index 0000000000..6c2680664c --- /dev/null +++ b/keyboards/cassette42/common/oled_helper.h @@ -0,0 +1,22 @@ +#ifdef OLED_DRIVER_ENABLE + +void render_logo(void); + +# define RENDER_LOGO(a) render_logo(a) + +# ifdef RGBLIGHT_ENABLE +void update_led_status(void); +void render_led_status(void); +# define UPDATE_LED_STATUS() update_led_status() +# define RENDER_LED_STATUS(a) render_led_status(a) +# else +# define UPDATE_LED_STATUS() +# define RENDER_LED_STATUS(a) +# endif + +#else +# define RENDER_LOGO(a) +# define UPDATE_LED_STATUS() +# define RENDER_LED_STATUS(a) + +#endif \ No newline at end of file diff --git a/keyboards/cassette42/config.h b/keyboards/cassette42/config.h new file mode 100644 index 0000000000..1729c31fbd --- /dev/null +++ b/keyboards/cassette42/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2019 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 . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xCA42 +#define DEVICE_VER 0x0001 +#define MANUFACTURER monksoffunk +#define PRODUCT cassette42 + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 6 + +#define DIRECT_PINS {{ B4, F6, F5, F4, B5, F7 }} +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B6, B3 } +#define ENCODERS_PAD_B { B2, B1 } +#define ENCODER_RESOLUTION 4 + +#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_ANIMATIONS +#endif + +#define OLED_FONT_H "keyboards/cassette42/common/glcdfont.c" diff --git a/keyboards/cassette42/info.json b/keyboards/cassette42/info.json new file mode 100644 index 0000000000..f792797ec8 --- /dev/null +++ b/keyboards/cassette42/info.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000000..4dc46d74e9 --- /dev/null +++ b/keyboards/cassette42/keymaps/default/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2019 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 . + */ +#include QMK_KEYBOARD_H + +#include "common/oled_helper.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + RGBRST = SAFE_RANGE, + WRTROM, +}; + +enum layer_number { + _AUDIO = 0, + _HUE, + _SAT, + _VAL, + _MODE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // LAYOUT(LeftEncoder, RightEncoder, LeftSwitch, CenterLeftSwitch, CenterRightSwitch, RightSwitch) + [_AUDIO] = LAYOUT(KC_MUTE, KC_ENT, LT(_HUE, KC_MPRV), LT(_SAT, KC_MPLY), LT(_VAL, KC_MNXT), LT(_MODE, KC_SPC)), + [_HUE] = LAYOUT(RGB_TOG, RGBRST, _______, _______, RGB_HUD, RGB_HUI), + [_SAT] = LAYOUT(_______, _______, _______, _______, RGB_SAD, RGB_SAI), + [_VAL] = LAYOUT(_______, _______, RGB_VAD, RGB_VAI, _______, RGB_VAI), + [_MODE] = LAYOUT(_______, WRTROM, RGB_RMOD, RGB_MOD, RGB_MOD, _______), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WRTROM: +#ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_current(); + } +#endif + return false; + break; + + case RGBRST: +#ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_default(); + rgblight_enable(); + } +#endif + return false; + break; + } + return true; +} + +#ifdef OLED_DRIVER_ENABLE +# include +# include + +// assign the right code to your layers for OLED display +# define L_AUDIO 0 +# define L_HUE (1 << _HUE) +# define L_SAT (1 << _SAT) +# define L_VAL (1 << _VAL) +# define L_MODE (1 << _MODE) + +void render_status(void) { + render_logo(); + // 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 + switch (layer_state) { + case L_AUDIO: + oled_write_P(PSTR("audio control\n"), false); + break; + case L_HUE: + oled_write_P(PSTR("rgb HUE control\n"), false); + break; + case L_SAT: + oled_write_P(PSTR("rgb SAT control\n"), false); + break; + case L_VAL: + oled_write_P(PSTR("rgb VAL control\n"), false); + break; + case L_MODE: + oled_write_P(PSTR("rgb MODE control\n"), false); + break; + default: + break; + } + UPDATE_LED_STATUS(); + RENDER_LED_STATUS(); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + render_logo(); + } +} +#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 */ + switch (layer_state) { + case L_AUDIO: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case L_HUE: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_hue_noeeprom(); + } else { + rgblight_decrease_hue_noeeprom(); + } +#endif + break; + + case L_SAT: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_sat_noeeprom(); + } else { + rgblight_decrease_sat_noeeprom(); + } +#endif + break; + + case L_VAL: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val_noeeprom(); + } else { + rgblight_decrease_val_noeeprom(); + } +#endif + break; + + case L_MODE: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_step_noeeprom(); + } else { + rgblight_step_reverse_noeeprom(); + } +#endif + break; + } + } else if (index == 1) { /* right encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} diff --git a/keyboards/cassette42/keymaps/default/readme.md b/keyboards/cassette42/keymaps/default/readme.md new file mode 100644 index 0000000000..cf1a7bc433 --- /dev/null +++ b/keyboards/cassette42/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for cassette42 \ No newline at end of file diff --git a/keyboards/cassette42/readme.md b/keyboards/cassette42/readme.md new file mode 100644 index 0000000000..2ba9a661bb --- /dev/null +++ b/keyboards/cassette42/readme.md @@ -0,0 +1,15 @@ +# Cassette42 + +![cassette42](https://pbs.twimg.com/media/D63q5S0UcAE9Rfj?format=jpg&name=large) + +An audio control pad with 4 switches and 2 rotary encoders. + +* Keyboard Maintainer: [monksoffunk](https://github.com/monksoffunk) [@monksoffunkJP](https://twitter.com/monksoffunkJP) +* Hardware Supported: Cassette 42 PCB +* Hardware Availability: [Yushakobo Shop](https://yushakobo.jp/shop/cassette42/) + +Make example for this keyboard (after setting up your build environment): + + make cassette42: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/cassette42/rules.mk b/keyboards/cassette42/rules.mk new file mode 100644 index 0000000000..4fd8e384b3 --- /dev/null +++ b/keyboards/cassette42/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 # 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 = 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 + +SRC += ./common/oled_helper.c diff --git a/keyboards/centromere/centromere.c b/keyboards/centromere/centromere.c index 269c60fd75..8d46520e38 100644 --- a/keyboards/centromere/centromere.c +++ b/keyboards/centromere/centromere.c @@ -5,21 +5,21 @@ void led_init(void) { setPinOutput(C4); // Set red LED pin as output setPinOutput(C5); // Set blue LED pin as output setPinOutput(D1); // Set green LED pin as output - + writePinHigh(C4); // Turn off red LED pin writePinHigh(C5); // Turn off blue LED pin writePinHigh(D1); // Turn off green LED pin - + #else setPinOutput(F4); // Set red LED pin as output setPinOutput(F5); // Set blue LED pin as output setPinOutput(D1); // Set green LED pin as output - + writePinHigh(F4); // Turn off red LED pin writePinHigh(F5); // Turn off blue LED pin writePinHigh(D1); // Turn off green LED pin - + #endif } @@ -33,7 +33,7 @@ void matrix_init_kb(void) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, {{9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, {{9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, diff --git a/keyboards/function96/chconf.h b/keyboards/charue/sunsetter/chconf.h similarity index 88% rename from keyboards/function96/chconf.h rename to keyboards/charue/sunsetter/chconf.h index c8e4b98ad2..c0f309c8dc 100644 --- a/keyboards/function96/chconf.h +++ b/keyboards/charue/sunsetter/chconf.h @@ -16,7 +16,7 @@ /* * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/function96/chconf.h -r platforms/chibios/common/configs/chconf.h` + * `qmk chibios-confmigrate -i keyboards/charue/sunsetter/chconf.h -r platforms/chibios/common/configs/chconf.h` */ #pragma once diff --git a/keyboards/charue/sunsetter/config.h b/keyboards/charue/sunsetter/config.h new file mode 100644 index 0000000000..ac7746fa72 --- /dev/null +++ b/keyboards/charue/sunsetter/config.h @@ -0,0 +1,38 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 0x4344 // CD for CharueDesign +#define PRODUCT_ID 0x5353 // SS for Sunsetter +#define DEVICE_VER 0x0001 // Revision prototype +#define MANUFACTURER CharueDesign +#define PRODUCT Sunsetter + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +#define MATRIX_COL_PINS { B13, B12, B1, B0, A7, A6, A5, A4, A3, B9, B8, B7, B6, B5, B4, F0, B3, A15 } +#define MATRIX_ROW_PINS { A8, B14, B11, B10, B2 } +#define DIODE_DIRECTION COL2ROW +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN F1 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/charue/sunsetter/info.json b/keyboards/charue/sunsetter/info.json new file mode 100644 index 0000000000..cd9c2a01db --- /dev/null +++ b/keyboards/charue/sunsetter/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Sunsetter", + "url": "https://charue-design.com/products/sunsetter", + "maintainer": "coarse", + "width": 18.25, + "height": 5, + "layouts": { + "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}] + } + } +} diff --git a/keyboards/charue/sunsetter/keymaps/default/keymap.c b/keyboards/charue/sunsetter/keymaps/default/keymap.c new file mode 100755 index 0000000000..1af121ea2e --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/default/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_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), +}; diff --git a/keyboards/charue/sunsetter/keymaps/via/keymap.c b/keyboards/charue/sunsetter/keymaps/via/keymap.c new file mode 100644 index 0000000000..53d5ced2d6 --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* +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_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), + [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), + [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), + [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), +}; diff --git a/keyboards/charue/sunsetter/keymaps/via/rules.mk b/keyboards/charue/sunsetter/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/charue/sunsetter/mcuconf.h b/keyboards/charue/sunsetter/mcuconf.h new file mode 100644 index 0000000000..ba981e4c05 --- /dev/null +++ b/keyboards/charue/sunsetter/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/charue/sunsetter/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_DMA +#define STM32_I2C_USE_DMA FALSE + diff --git a/keyboards/charue/sunsetter/readme.md b/keyboards/charue/sunsetter/readme.md new file mode 100644 index 0000000000..84c0f3ed79 --- /dev/null +++ b/keyboards/charue/sunsetter/readme.md @@ -0,0 +1,19 @@ +# Sunsetter + +![Sunsetter](https://i.imgur.com/tJRg8zt.png) + +A 65 + 10% F-Key Column Keyboard kit made and sold by Charue Design. [More info on charue-design.com](https://charue-design.com/) + +* Keyboard Maintainer: [Coarse](https://github.com/coarse) +* Hardware Supported: [Sunsetter PCB](https://charue-design.com/collections/sunsetter/products/sunsetter-pcb-extra) +* Hardware Availability: [Charue Design](https://charue-design.com/) + +#### Jumping to Bootloader + +To enter the bootloader, you may use bootmagic by holding `Space+B` or by holding the reset button located at the back of the PCB, right beside the left shift key, for a few seconds. + +Make example for this keyboard (after setting up your build environment): + + make charue/sunsetter: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/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk new file mode 100644 index 0000000000..dde961d7a5 --- /dev/null +++ b/keyboards/charue/sunsetter/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = 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 = 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 +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/charue/sunsetter/sunsetter.c b/keyboards/charue/sunsetter/sunsetter.c new file mode 100644 index 0000000000..4d1cdf4e80 --- /dev/null +++ b/keyboards/charue/sunsetter/sunsetter.c @@ -0,0 +1,18 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "sunsetter.h" diff --git a/keyboards/charue/sunsetter/sunsetter.h b/keyboards/charue/sunsetter/sunsetter.h new file mode 100644 index 0000000000..47089ad261 --- /dev/null +++ b/keyboards/charue/sunsetter/sunsetter.h @@ -0,0 +1,36 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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_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, 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 } \ +} diff --git a/keyboards/chavdai40/rev1/rules.mk b/keyboards/chavdai40/rev1/rules.mk index 64c6f662af..379bdb6c65 100644 --- a/keyboards/chavdai40/rev1/rules.mk +++ b/keyboards/chavdai40/rev1/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F042 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration @@ -15,4 +18,4 @@ 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 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/chavdai40/rev2/rules.mk b/keyboards/chavdai40/rev2/rules.mk index 64c6f662af..379bdb6c65 100644 --- a/keyboards/chavdai40/rev2/rules.mk +++ b/keyboards/chavdai40/rev2/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F042 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration @@ -15,4 +18,4 @@ 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 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/checkerboards/candybar_ortho/candybar_ortho.c b/keyboards/checkerboards/candybar_ortho/candybar_ortho.c new file mode 100644 index 0000000000..8f127cd36e --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/candybar_ortho.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 "candybar_ortho.h" diff --git a/keyboards/checkerboards/candybar_ortho/candybar_ortho.h b/keyboards/checkerboards/candybar_ortho/candybar_ortho.h new file mode 100644 index 0000000000..692024ff20 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/candybar_ortho.h @@ -0,0 +1,67 @@ +/* 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_grid( \ + k00, k10, 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, k66, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, XXX }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k68 } \ +} +#define LAYOUT_2x3u( \ + k00, k10, 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, k72, k73, k64, k74, k75, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, XXX, XXX, k64, XXX, XXX, k67, XXX }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k68 } \ +} +#define LAYOUT_7u( \ + k00, k10, 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, k64, k66, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, k62, XXX, k64, XXX, k66, k67, XXX }, \ + { k70, k71, XXX, XXX, XXX, XXX, k76, k77, k68 } \ +} diff --git a/keyboards/checkerboards/candybar_ortho/config.h b/keyboards/checkerboards/candybar_ortho/config.h new file mode 100644 index 0000000000..df83da61df --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/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 0x3215 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT CandyBar Ortho + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 9 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B4, D4, D7, D6, B5, B6, C7, C6 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D0, D1, D2 } + +#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 B7 +#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/checkerboards/candybar_ortho/info.json b/keyboards/checkerboards/candybar_ortho/info.json new file mode 100644 index 0000000000..2ec898cbb0 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/info.json @@ -0,0 +1,18 @@ +{ + "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}] + }, + "LAYOUT_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}, {"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}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3, "w":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "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}, {"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}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":7}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}] + } + } +} diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/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/candybar_ortho/keymaps/2x3u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c new file mode 100644 index 0000000000..615257c882 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/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.s + * + * 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 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Home | Tab | Q | W | E | R | T | N7 | N8 | N9 | NLCK | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | PgUp |C(ESC)| A | S | D | F | G | N4 | N5 | N6 | + | H | J | K | L | '" | ;: | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | PgDn |Shift | Z | X | C | V | B | N1 | N2 | N3 | - | N | M | , | . | ? | Ent | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Grv | L-OS | LAlt | RGB | Lay1-TT | NO | Dot | / | Spac(Lay2) | RALT |RCTRL |C.A.D.| Caps | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[0] = LAYOUT_2x3u( + KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_NLCK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_PGUP, CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, RGB_TOG, TT(1), KC_P0, KC_PDOT, KC_BSLS, LT(2, KC_SPC), KC_RALT, KC_RCTRL, CALTDEL, KC_CAPS +), + +/* 1 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | | ! | @ | # | $ | % | | | | | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | \ | | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + | = | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |C.A.D.| TMGR | | | | | | | | | SPC | | | ` | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[1] = LAYOUT_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, _______, _______, _______, + CALTDEL, TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, KC_SPC, KC_NUBS, KC_GRV +), + +/* 2 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | F1 | F2 | F3 | F4 | F5 | | | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |RESET | RTOG | | | | | | | | | | RMOD |RRMOD | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[2] = LAYOUT_2x3u( + 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/candybar_ortho/keymaps/7u/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/7u/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/7u/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/candybar_ortho/keymaps/7u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c new file mode 100644 index 0000000000..e76ffa1c3c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/7u/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 + + +// 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 | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | LCTRL| LOS | LALT | / | ` | Spac(Lay2) | = | RALT |RCTRL | Caps |RESET | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_7u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, 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, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, LT(2, KC_SPC), KC_EQL, KC_RALT, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + | = | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |C.A.D.|TSMGR | | | | | | | SPC | | | ` | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[1] = LAYOUT_7u( + 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_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_7u( + 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/candybar_ortho/keymaps/default/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/default/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/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/candybar_ortho/keymaps/default/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/default/keymap.c new file mode 100644 index 0000000000..ff3d6afe6c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/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 + + +// 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 | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | LCTRL| LOS | LALT | / | ` | - | = | [ |TT(1) |LT(SPC)| ] | MENU | RALT | ROS |RCTRL | CAPS |RESET | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, 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, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, TT(1), LT(2, KC_SPC), KC_RBRC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | | | | | | | | | | | | | | | + | = | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C.A.D.|TSKMGR| | | | | | | | | | | | | SPC | | | ` | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[1] = LAYOUT_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_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_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_grid( + 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/candybar_ortho/keymaps/default/readme.md b/keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md new file mode 100644 index 0000000000..9ee103b709 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The Default Candybar_Ortho Layout + diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/via/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/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/candybar_ortho/keymaps/via/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/via/keymap.c new file mode 100644 index 0000000000..ff3d6afe6c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/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 + + +// 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 | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | LCTRL| LOS | LALT | / | ` | - | = | [ |TT(1) |LT(SPC)| ] | MENU | RALT | ROS |RCTRL | CAPS |RESET | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, 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, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, TT(1), LT(2, KC_SPC), KC_RBRC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | | | | | | | | | | | | | | | + | = | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C.A.D.|TSKMGR| | | | | | | | | | | | | SPC | | | ` | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[1] = LAYOUT_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_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_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_grid( + 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/candybar_ortho/keymaps/via/readme.md b/keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md new file mode 100644 index 0000000000..16ffb72e72 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md @@ -0,0 +1,2 @@ +# Keymap for VIA + diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk b/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk new file mode 100644 index 0000000000..16d33cd89f --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes + diff --git a/keyboards/checkerboards/candybar_ortho/readme.md b/keyboards/checkerboards/candybar_ortho/readme.md new file mode 100644 index 0000000000..c92db47055 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/readme.md @@ -0,0 +1,13 @@ +# CandyBar_Ortho + +The CandyBar Ortho PCB is a drop-in replacement PCB with an ortho layout for the CandyBar by TheKey.Company. + +* Keyboard Maintainer: Nasp +* Hardware Supported: CandyBar +* Hardware Availability: https://www.checkerboards.xyz/candybar-ortho-prototype-pcb-and-fr4-plate.html + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/candybar_ortho: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/candybar_ortho/rules.mk b/keyboards/checkerboards/candybar_ortho/rules.mk new file mode 100644 index 0000000000..8f0f91d057 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/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 = 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 = 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/nop60/config.h b/keyboards/checkerboards/nop60/config.h new file mode 100644 index 0000000000..784594df7c --- /dev/null +++ b/keyboards/checkerboards/nop60/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 0x1416 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT NOP60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F0, F1, E6, B7, C6 } +#define MATRIX_COL_PINS { F6, F5, F4, D0, D7, D3, D4, D5, D6, F7, C7, B4, B6, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Switch LED Backlighting */ +#define BACKLIGHT_PIN D1 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +// ws2812 options +#define RGB_DI_PIN D2 // 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) + + +/* 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/nop60/info.json b/keyboards/checkerboards/nop60/info.json new file mode 100644 index 0000000000..82ff7229fa --- /dev/null +++ b/keyboards/checkerboards/nop60/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "nop60", + "url": "", + "maintainer": "nasp", + "width": 15, + "height": 5, + "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": { + "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}] + } + } +} diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/config.h b/keyboards/checkerboards/nop60/keymaps/2x3u/config.h new file mode 100644 index 0000000000..598074ad2c --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/2x3u/config.h @@ -0,0 +1,23 @@ + /* + Copyright 2020 Alec Penland + Copyright 2020 Garret Gartner + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License 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/nop60/keymaps/2x3u/keymap.c b/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c new file mode 100644 index 0000000000..eb05ab1364 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/2x3u/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_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/config.h b/keyboards/checkerboards/nop60/keymaps/7u/config.h new file mode 100644 index 0000000000..faba80d278 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/7u/config.h @@ -0,0 +1,25 @@ + /* + Copyright 2020 Alec Penland + Copyright 2020 Garret Gartner + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License 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/nop60/keymaps/7u/keymap.c b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c new file mode 100644 index 0000000000..1d230c3632 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/7u/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_7u( + 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_7u( + KC_GRV, KC_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 + ), + + /* 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_7u( + KC_GRV, KC_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/config.h b/keyboards/checkerboards/nop60/keymaps/via/config.h new file mode 100644 index 0000000000..e862c25483 --- /dev/null +++ b/keyboards/checkerboards/nop60/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/nop60/keymaps/via/keymap.c b/keyboards/checkerboards/nop60/keymaps/via/keymap.c new file mode 100644 index 0000000000..06714115f5 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/via/keymap.c @@ -0,0 +1,100 @@ + /* + 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 + +// Layer names +enum nop60_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN1, + // - Alternate Function layer: + _FN2, + // - VIA Layer: + _VIA +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│ + * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘ + * │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┐ + * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │ + * └───┴───┴───┘ + */ + [_BASE] = 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) + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┐ │ │ + * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘ + * │ │ │ │ │ │ │ │ ┌───┼───┼───┐ + * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │ + * └───┴───┴───┘ + */ + [_FN1] = 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) + * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│ + * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│ + * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┐ │ │ + * ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘ + * │RSET│ │ │ │ │ │ │ ┌───┼───┼───┐ + * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │ + * └───┴───┴───┘ + */ + [_FN2] = 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 + ), + + [_VIA] = 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/via/rules.mk b/keyboards/checkerboards/nop60/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/nop60/nop60.c b/keyboards/checkerboards/nop60/nop60.c new file mode 100644 index 0000000000..b8a67e87df --- /dev/null +++ b/keyboards/checkerboards/nop60/nop60.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 "nop60.h" diff --git a/keyboards/checkerboards/nop60/nop60.h b/keyboards/checkerboards/nop60/nop60.h new file mode 100644 index 0000000000..57da9d51ed --- /dev/null +++ b/keyboards/checkerboards/nop60/nop60.h @@ -0,0 +1,49 @@ + /* + 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_2x3u( \ + 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k41, k42, k44, k46, k48, 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, xxx }, \ + { 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( \ + 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k41, k42, k46, 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, xxx }, \ + { 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 } \ +} diff --git a/keyboards/checkerboards/nop60/readme.md b/keyboards/checkerboards/nop60/readme.md new file mode 100644 index 0000000000..fc5fecbfa0 --- /dev/null +++ b/keyboards/checkerboards/nop60/readme.md @@ -0,0 +1,13 @@ +# NOP60 + +60% Universal PCB feauturing Tsangan bottom row, 2x3u bar support, backlighting, and RGB underglow. + +- Keyboard Maintainer: [Nasp](https://github.com/npspears) +- Hardware Supported: NOP60 PCB +- Hardware Availability: www.checkerboards.xyz + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/nop60: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/nop60/rules.mk b/keyboards/checkerboards/nop60/rules.mk new file mode 100644 index 0000000000..b78caef5e1 --- /dev/null +++ b/keyboards/checkerboards/nop60/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 = 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 = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this 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/cherrybstudio/cb87/cb87.c b/keyboards/cherrybstudio/cb87/cb87.c new file mode 100644 index 0000000000..4dcdd898eb --- /dev/null +++ b/keyboards/cherrybstudio/cb87/cb87.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 "cb87.h" \ No newline at end of file diff --git a/keyboards/cherrybstudio/cb87/cb87.h b/keyboards/cherrybstudio/cb87/cb87.h new file mode 100644 index 0000000000..b3106894bd --- /dev/null +++ b/keyboards/cherrybstudio/cb87/cb87.h @@ -0,0 +1,73 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +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, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \ + K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} + +#define LAYOUT_tkl_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K603, \ + K604, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, KC_NO, K603, K604, KC_NO, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} + +#define LAYOUT_tkl_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \ + K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, KC_NO, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} diff --git a/keyboards/cherrybstudio/cb87/config.h b/keyboards/cherrybstudio/cb87/config.h new file mode 100644 index 0000000000..41a153081d --- /dev/null +++ b/keyboards/cherrybstudio/cb87/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 0x8787 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CherryB Studio +#define PRODUCT CB87 + +/* key matrix size */ +#define MATRIX_ROWS 9 +#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 +*/ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW +#define BACKLIGHT_PIN B6 +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +#define LED_CAPS_LOCK_PIN F0 + +/* 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 22 /* 16 Bottom 6 top*/ +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/cherrybstudio/cb87/info.json b/keyboards/cherrybstudio/cb87/info.json new file mode 100644 index 0000000000..cd02a58166 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/info.json @@ -0,0 +1,295 @@ +{ + "keyboard_name": "CB87", + "url": "https://discord.gg/qVwv3gcq83", + "maintainer": "duongaanh", + "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":"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":"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":"ISO", "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":"ISO", "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":"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":"Win", "x":11.25, "y":5.5, "w":1.25}, + {"label":"App", "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} + ] + }, + "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_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/cherrybstudio/cb87/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87/keymaps/default/keymap.c new file mode 100644 index 0000000000..d95c56dc8d --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General 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_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 + ), + [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/cherrybstudio/cb87/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md new file mode 100644 index 0000000000..75b731fa17 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for CB87 diff --git a/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c new file mode 100644 index 0000000000..3cd72b6670 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +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, 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_RGUI, KC_APP, 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/cherrybstudio/cb87/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87/keymaps/via/rules.mk new file mode 100644 index 0000000000..ca9fed0e6b --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/cherrybstudio/cb87/readme.md b/keyboards/cherrybstudio/cb87/readme.md new file mode 100644 index 0000000000..72bd8c32fa --- /dev/null +++ b/keyboards/cherrybstudio/cb87/readme.md @@ -0,0 +1,26 @@ +# CherryB Studio CB87 + +![CB87](https://i.imgur.com/balJ20Xl.png) + +A TKL PCB for CherryB Studio Freyr and replacement for some TKL keyboards. + +* Keyboard Maintainer: duongaanh +* Hardware Supported: CB87, atmega32u4 +* Hardware Availability: [CherryB Studio](https://www.reddit.com/r/mechmarket/comments/kkgs6p/gb_freyr_tkl_cb_edition_holiday_preorder/) + +Make example for this keyboard (after setting up your build environment): + + make cherrybstudio/cb87:default + +Flashing example for this keyboard: + + make cherrybstudio/cb87: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/cb87/rules.mk b/keyboards/cherrybstudio/cb87/rules.mk new file mode 100644 index 0000000000..43a7e336c4 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/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 = 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 +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/rules.mk b/keyboards/cheshire/curiosity/rules.mk index d9a7d86ab3..b0bca5a89c 100644 --- a/keyboards/cheshire/curiosity/rules.mk +++ b/keyboards/cheshire/curiosity/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/chili/chili.c b/keyboards/chili/chili.c index 40d3528b08..f629a6d60a 100644 --- a/keyboards/chili/chili.c +++ b/keyboards/chili/chili.c @@ -14,29 +14,3 @@ * along with this program. If not, see . */ #include "chili.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B1); - writePinHigh(B1); - setPinOutput(B2); - writePinHigh(B2); - setPinOutput(B3); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(B1, !led_state.num_lock); - writePin(B2, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/chili/config.h b/keyboards/chili/config.h index 4b6a632cd4..08c2475875 100644 --- a/keyboards/chili/config.h +++ b/keyboards/chili/config.h @@ -42,6 +42,11 @@ along with this program. If not, see . /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/chimera_ergo/chimera_ergo.h b/keyboards/chimera_ergo/chimera_ergo.h index 78e5c0dac5..32d02886c4 100644 --- a/keyboards/chimera_ergo/chimera_ergo.h +++ b/keyboards/chimera_ergo/chimera_ergo.h @@ -46,21 +46,6 @@ // 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_kc( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \ - k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \ - k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \ - k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, \ - k48, k49, k50, k51 \ -) \ -{ \ - { KC_NO, KC_NO, KC_##k26, KC_##k15, KC_##k28, KC_##k01, KC_##k42, KC_##k31, KC_##k20, KC_##k33, KC_NO, KC_NO }, \ - { KC_##k00, KC_NO, KC_##k14, KC_##k27, KC_##k16, KC_##k36, KC_##k47, KC_##k19, KC_##k32, KC_##k21, KC_NO, KC_##k11 }, \ - { KC_##k12, KC_##k25, KC_##k02, KC_##k39, KC_##k17, KC_##k49, KC_##k50, KC_##k18, KC_##k44, KC_##k09, KC_##k34, KC_##k23 }, \ - { KC_##k24, KC_##k13, KC_##k38, KC_##k04, KC_##k05, KC_##k48, KC_##k51, KC_##k06, KC_##k07, KC_##k45, KC_##k22, KC_##k35 }, \ - { KC_##k29, KC_##k41, KC_##k03, KC_##k40, KC_##k37, KC_NO, KC_##k30, KC_##k43, KC_##k08, KC_##k10, KC_##k46, 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, \ diff --git a/keyboards/chimera_ergo/rules.mk b/keyboards/chimera_ergo/rules.mk index 01d5c3c70c..b7084b4a1a 100644 --- a/keyboards/chimera_ergo/rules.mk +++ b/keyboards/chimera_ergo/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/chimera_ls/chimera_ls.h b/keyboards/chimera_ls/chimera_ls.h index 8ca8534eb9..45c91acc3d 100644 --- a/keyboards/chimera_ls/chimera_ls.h +++ b/keyboards/chimera_ls/chimera_ls.h @@ -60,18 +60,5 @@ { k06, k07, k08, k10, KC_NO, k05, k04, k03, k01, KC_NO } \ } -#define LAYOUT_kc_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 \ - ) { \ - { KC_##k43, KC_##k45, KC_##k34, KC_##k11, KC_##k23, KC_##k40, KC_##k38, KC_##k25, KC_##k00, KC_##k12 }, \ - { KC_##k31, KC_##k44, KC_##k46, KC_##k35, KC_##k22, KC_##k28, KC_##k39, KC_##k37, KC_##k24, KC_##k13 }, \ - { KC_##k30, KC_##k32, KC_##k33, KC_##k47, KC_##k09, KC_##k29, KC_##k27, KC_##k26, KC_##k36, KC_##k02 }, \ - { KC_##k19, KC_##k20, KC_##k21, KC_##k42, KC_##k18, KC_##k16, KC_##k15, KC_##k14, KC_##k41, KC_##k17 }, \ - { KC_##k06, KC_##k07, KC_##k08, KC_##k10, KC_NO, KC_##k05, KC_##k04, KC_##k03, KC_##k01, KC_NO } \ -} - #endif diff --git a/keyboards/chimera_ls/rules.mk b/keyboards/chimera_ls/rules.mk index 536e6053a1..2f414ba81b 100644 --- a/keyboards/chimera_ls/rules.mk +++ b/keyboards/chimera_ls/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h index fc2eba86bd..ec893990a3 100644 --- a/keyboards/chimera_ortho/chimera_ortho.h +++ b/keyboards/chimera_ortho/chimera_ortho.h @@ -60,18 +60,4 @@ { KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO } \ } -#define LAYOUT_kc( \ - 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 \ -) \ -{ \ - { KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \ - { KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \ - { KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \ - { KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \ - { KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO } \ -} - #endif diff --git a/keyboards/chimera_ortho/keymaps/dcompact/config.h b/keyboards/chimera_ortho/keymaps/dcompact/config.h deleted file mode 100644 index d1e5c3aabf..0000000000 --- a/keyboards/chimera_ortho/keymaps/dcompact/config.h +++ /dev/null @@ -1,9 +0,0 @@ -#define TAPPING_TERM 150 -#define TAPPING_TOGGLE 2 - -#define MOUSEKEY_DELAY 200 -#define MOUSEKEY_INTERVAL 60 -#define MOUSEKEY_MAX_SPEED 50 -#define MOUSEKEY_TIME_TO_MAX 80 -#define MOUSEKEY_WHEEL_MAX_SPEED 8 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 15 diff --git a/keyboards/chimera_ortho/keymaps/dcompact/keymap.c b/keyboards/chimera_ortho/keymaps/dcompact/keymap.c deleted file mode 100644 index 1c6ef7d6f9..0000000000 --- a/keyboards/chimera_ortho/keymaps/dcompact/keymap.c +++ /dev/null @@ -1,119 +0,0 @@ -#include QMK_KEYBOARD_H - -enum chimera_ortho_layers -{ - _BASE, - _NAV, - _SYM, - _FUNC, - _MOUSE -}; - -#define KC_NAV MO(_NAV) -#define KC_SYM MO(_SYM) -#define KC_FUNC MO(_FUNC) -#define KC_MOUSE TT(_MOUSE) - -#define KC_DELSHFT SFT_T(KC_DEL) -#define KC_CTLENT CTL_T(KC_ENT) -#define KC_SYMSPC LT(_SYM, KC_SPC) - -#define KC_WK_LEFT LCA(KC_LEFT) -#define KC_WK_DOWN LCA(KC_DOWN) -#define KC_WK_UP LCA(KC_UP) -#define KC_WK_RGHT LCA(KC_RGHT) - -#define KC_QUAKE LCTL(KC_GRAVE) - -#define LONGPRESS_DELAY 150 - -// These are needed because of the 'KC_'-adding macro -// This macro can be found in ../../chimera_ortho.h -#define KC_RESET RESET -#define KC_ KC_TRNS - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_BASE] = LAYOUT_kc( - //,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------. - LALT ,TAB ,QUOT ,COMM ,DOT ,P ,Y ,F ,G ,C ,R ,L ,SLSH ,FUNC - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - ,LGUI ,ESC ,A ,O ,E ,U ,I ,D ,H ,T ,N ,S ,MINS ,MOUSE - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - ,LCTL ,DELSHFT,SCLN ,Q ,J ,K ,X ,B ,M ,W ,V ,Z ,BSPC ,ENTER - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - ,LSHIFT ,NAV ,SYMSPC ,CTLENT - //\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/ - ), - - [_NAV] = LAYOUT_kc( - //,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------. - , , , , , , , ,HOME ,PGDOWN ,PGUP ,END , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , ,PSCR ,MENU , , , , , ,LEFT ,DOWN ,UP ,RIGHT , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , ,CAPS ,NLCK ,INS , , , , ,WK_LEFT,WK_DOWN,WK_UP ,WK_RGHT, , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , , - //\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/ - ), - - [_SYM] = LAYOUT_kc( - //,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------. - ,QUAKE ,GRAVE ,TILDE ,BSLASH ,PIPE ,LPRN ,RPRN ,7 ,8 ,9 ,SLSH ,EQUAL , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , ,EXLM ,AT ,HASH ,DLR ,LCBR ,RCBR ,4 ,5 ,6 ,ASTR ,PLUS , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , ,PERC ,CIRC ,AMPR ,ASTR ,LBRC ,RBRC ,1 ,2 ,3 ,MINUS , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , ,0 - //\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/ - ), - - [_FUNC] = LAYOUT_kc( - //,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------. - ,RESET ,SLEP ,MRWD ,MPLY ,MFFD , , ,F9 ,F10 ,F11 ,F12 , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , ,PWR ,MUTE ,VOLD ,VOLU , , ,F5 ,F6 ,F7 ,F8 , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , ,WAKE ,MPRV ,MPLY ,MNXT , , ,F1 ,F2 ,F3 ,F4 , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , , - //\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/ - ), - - [_MOUSE] = LAYOUT_kc( - //,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------. - , , , , , , , , , , , , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , ,BTN1 ,BTN3 ,BTN2 , , ,MS_L ,MS_D ,MS_U ,MS_R , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , ,ACL0 ,ACL1 ,ACL2 , , ,WH_L ,WH_D ,WH_U ,WH_R , , - //|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------| - , , , , - //\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/ - ), -}; - -// These control the color of the LED on the receiver -// For color reference, see ../../chimera_ortho.h -void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - - switch (layer) { - case _BASE: - set_led_cyan; - break; - case _NAV: - set_led_blue; - break; - case _SYM: - set_led_magenta; - break; - case _FUNC: - set_led_yellow; - default: - set_led_white; - break; - } -}; diff --git a/keyboards/chimera_ortho/keymaps/dcompact/readme.md b/keyboards/chimera_ortho/keymaps/dcompact/readme.md deleted file mode 100644 index bf72567ef1..0000000000 --- a/keyboards/chimera_ortho/keymaps/dcompact/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# DCompact Layout - -**Dvorak, Layered, Mouse-Enabled, Compact -- Plover coming soon!?!~** - -_See [the layout source](keymap.c) for the actual layout_ - -## Goals - -The following are the goals kept in mind when designing the DCompact -layout: - -- Provide minimal travel distance when typing English or coding -- Consistent muscle memory translation from standard QWERTY -- Stateless typing experience -- OS-agnostic features, macros, and key placement -- Minimize dependence on mouse usage - -These are generally all met or balanced within reason. This layout is -not intended at all to be a familiar layout for much of anyone (except -maybe those who already type in Dvorak) -- this is meant to amplify the -best parts of having limited, ortholinear keys with layering. - -## As Reference Material - -If you're reading this hoping to find reference material to implement -your own layout, then please feel free to copy over this layout and -make edits where you see fit. I removed a lot of the features I felt -extraneous to my usage and simplified style where I felt needed. This -would hopefully mean that my code should feel like a good base to -develop from for those new to QMK. - -_Remember that settings defined in the layout directory override and -merge with those in the keyboard folder_ - -## Relevant Links - -- [Online Dvorak Layout Trainer](https://learn.dvorak.nl/) -- [Dvorak Wikipedia Page](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard) -- [QMK Docs](https://docs.qmk.fm/#/) -- [QMK KeyCode Reference](https://docs.qmk.fm/#/keycodes) - -## Contact - -Maintainer: [Dan](https://github.com/loksonarius) - diff --git a/keyboards/chimera_ortho/keymaps/dcompact/rules.mk b/keyboards/chimera_ortho/keymaps/dcompact/rules.mk deleted file mode 100644 index 6c605daecf..0000000000 --- a/keyboards/chimera_ortho/keymaps/dcompact/rules.mk +++ /dev/null @@ -1 +0,0 @@ -MOUSEKEY_ENABLE = yes diff --git a/keyboards/chimera_ortho/keymaps/gordon/keymap.c b/keyboards/chimera_ortho/keymaps/gordon/keymap.c deleted file mode 100644 index 5bd2019c26..0000000000 --- a/keyboards/chimera_ortho/keymaps/gordon/keymap.c +++ /dev/null @@ -1,363 +0,0 @@ -// 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 -#include "version.h" -#include "gordon.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 CALTDEL LCTL(LALT(KC_DEL)) -#define TSKMGR LCTL(LSFT(KC_ESC)) - -#define KC_SNAPLEFT LGUI(KC_LEFT) -#define KC_SNAPRIGHT LGUI(KC_RIGHT) -#define KC_SNAPUP LGUI(KC_UP) -#define KC_SNAPDOWN LGUI(KC_DOWN) -#define KC_PREVTAB LCTL(LSFT(KC_TAB)) -#define KC_NEXTTAB LCTL(KC_TAB) -#define KC_WORKRIGHT LCTL(LGUI(KC_RIGHT)) -#define KC_WORKLEFT LCTL(LGUI(KC_LEFT)) - -#define KC_NMPD TG(_NUMPAD) -#define KC_SYMB TG(_SYMBOLS) - -#define KC_SCTL MT(MOD_LCTL, KC_LBRC) -#define KC_SCTR MT(MOD_LCTL, KC_RBRC) -#define KC_SPLT MT(MOD_LALT, KC_MINS) -#define KC_SPRT MT(MOD_LALT, KC_1) -#define KC_GBRC MT(MOD_RGUI, KC_8) -#define KC_GQOT MT(MOD_LGUI, KC_QUOT) -#define KC_CSHW MT(MOD_LCTL|MOD_LSFT,KC_W) - -#define KC_CDEL LCTL(KC_DEL) -#define KC_AUDUP KC_AUDIO_VOL_UP -#define KC_AUDOWN KC_AUDIO_VOL_DOWN - - -#define KC_MEHS MEH_T(KC_S) -#define KC_MEHL MEH_T(KC_L) -#define KC_GWIN GUI_T(KC_G) -#define KC_FCTL CTL_T(KC_F) -#define KC_JCTL CTL_T(KC_J) -#define KC_ZCTL CTL_T(KC_Z) -#define KC_ALTV ALT_T(KC_V) -#define KC_ALTN ALT_T(KC_N) -#define KC_MEHX ALL_T(KC_X) -#define KC_RESET RESET - -//LTs -#define KC_MESC LT(_MACROS, KC_ESC) -#define KC_DNUM LT(_NUMPAD, KC_D) -#define KC_SPFN LT(_NAV,KC_EQL) -#define KC_EMAUS LT(_MOUSE,KC_E) -#define KC_ENAV LT(_NAV,KC_E) -#define KC_INAV LT(_TEXTNAV,KC_I) -#define KC_BSPSYM LT(_SYMBOLS,KC_BSPACE) -#define KC_ENTSYM LT(_SYMBOLS,KC_ENTER) -#define KC_CLNMAUS LT(_MOUSE,KC_SCOLON) - -#define KC_FUNC TT(_FUNCTION) - -//TAP DANCE -#define KC_F6F7 TD(F6F7) -#define KC_ALF4 TD(ALTF4) -#define KC_TTT TD(TTT) -#define KC_ENHM TD(HOME_END) -#define KC_CLPS TD(CALC_PRINTSCREEN) - - -#define KC_INCL M(0) -#define KC_PULL M(1) -#define KC_PUSH M(2) -#define KC_SCAP M(3) -#define KC_SCOF M(4) -#define KC_CAD LALT(LCTL(KC_DEL)) - -#define LONGPRESS_DELAY 150 -//#define LAYER_TOGGLE_DELAY 300 - -// Fillers to make layering more clear -#define KC_ KC_TRNS - -/* TODO: - * - * DONE: RESET and CAD into macro layer. - * DONE: WINUP AND WINDOWN in NAV layer - * DONE: Get rid of caps layer. not sure what it is even for. - * DONE: LMEH - * DONE: plus, divide, multiply on left hand for num layer - * DONE: F1 - F12 on a layer toggle (not a temp toggle but a one shot or something) - * DONE: Volume, page up and down for mouse layer. - * DONE: Add full user files - without using anything. - * DONE: Insert, ctrl delete - * DONE: Home and End - * DONE: Printscreen - - * Easier way to open new terminal (instead of alt + F2) - * Intellij/text navigation layer (ctrl delete could be here). - * Macro for "System.exit(0)" probably macro layer and "c" - * Some sort of tap dance for comma, H, right pinky, and possibly other corners. - * Something more with the right hand. not sure what. - * Mouse: Left scroll, right scroll - * Passwords and any other macros. - * LED for control - * All modifiers reset - * Russain layer - * Hebrew layer - * Get rid of stupid git pull and push macros. - * -*/ - -enum { - TTT = 4, - HOME_END, - CALC_PRINTSCREEN -}; - -static xtap ttt_state = { - .is_press_action = true, - .state = 0 -}; - - -//Already exists in gordon.c, shouldn't need this anymore -/*// To activate SINGLE_HOLD, you will need to hold for 200ms first. -// This tap dance favors keys that are used frequently in typing like 'f' -int cur_dance (qk_tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted) { - return SINGLE_TAP; - } - else { - if (!state->pressed) return SINGLE_TAP; - else return SINGLE_HOLD; - } - } - //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated - //with single tap. - else if (state->count == 2) { - if (state->interrupted) return DOUBLE_SINGLE_TAP; - else if (state->pressed) return DOUBLE_HOLD; - else return DOUBLE_TAP; - } - else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) return TRIPLE_TAP; - else if (state->count == 3) return TRIPLE_HOLD; - else return 8; //magic number. At some point this method will expand to work for more presses -}*/ - -/* "Super tap toggle" - * Basically, TT but for two or more layers for a single key. - * This particular dance: - * Single tap/hold - TT for Function layer - * Double tap/hold - TT for Numpad layer - * Triple tap/hold - TT for Mouse layer - * -*/ -void TTT_finished (qk_tap_dance_state_t *state, void *user_data) { - ttt_state.state = cur_dance(state); - switch (ttt_state.state) { - case SINGLE_TAP: layer_invert(_FUNCTION); break; - case SINGLE_HOLD: layer_on(_FUNCTION); break; - case DOUBLE_TAP: layer_invert(_NUMPAD); break; - case DOUBLE_HOLD: layer_on(_NUMPAD); break; - case DOUBLE_SINGLE_TAP: layer_invert(_NUMPAD); break; - case TRIPLE_TAP: layer_invert(_MOUSE); break; - case TRIPLE_HOLD: layer_on(_MOUSE); break; - } -} - -void TTT_reset (qk_tap_dance_state_t *state, void *user_data) { - switch (ttt_state.state) { - case SINGLE_TAP: break; - case SINGLE_HOLD: layer_off(_FUNCTION); break; - case DOUBLE_TAP: break; - case DOUBLE_HOLD: layer_off(_NUMPAD); break; - case DOUBLE_SINGLE_TAP: break; - case TRIPLE_TAP: break; - case TRIPLE_HOLD: layer_off(_MOUSE); break; - } - ttt_state.state = 0; -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - MESC, Q ,CSHW,ENAV, R , T ,SPC , CLPS, Y , U ,INAV, O , P ,TTT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , A , MEHS,DNUM,FCTL,GWIN,GRAVE, TILD, H ,JCTL, K ,MEHL,CLNMAUS,ENHM, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - MINUS,ZCTL,MEHX, C ,ALTV, B ,DELETE, INS ,ALTN, M ,COMM,DOT ,SLSH,UNDS, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSHIFT,BSPSYM, SPC ,ENTSYM - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_NUMPAD] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , , ,ASTR, , , , , 7 , 8 , 9 ,ASTR,/**/, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,MINS,PLUS,/**/,EQUAL, , , , , 4 , 5 , 6 ,PLUS, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , ,SLSH, , , , , 1 , 2 , 3 ,SLSH, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , 0 - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_SYMBOLS] = LAYOUT_kc( - //,----+----+-----+----+----+----+----. ,----+----+----+----+----+----+----. - ,EXLM, AT ,LCBR,RCBR,HASH, , ,CIRC,AMPR,ASTR,LPRN,RPRN,/**/, - //|----+----+-----+----+----+----+----| |----+----+----+----+----+----+----| - ,EXLM,EXLM,LPRN,RPRN , , , , ,DQUO,EQUAL,QUOTE,RCBR, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,DOLLAR, PERC,LBRACKET,RBRACKET, , , ,PIPE,BSLASH,PLUS, , , , - //|----+----+-----+----+----+----+----| |----+----+----+----+----+----+----| - UNDS,/**/, ,/**/ - // \-------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_FUNCTION] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - F6F7 ,F1 ,F2 ,F3 ,ALF4,F5 ,F6 , F7 ,F8 ,F9 ,F10 ,F11 ,F12 ,/**/, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_NAV] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , ,SNAPLEFT,/**/,SNAPRIGHT,, , , , , UP , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,SNAPUP,PREVTAB, ,NEXTTAB,SNAPDOWN,, , ,LEFT,DOWN,RGHT, , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , ,WORKLEFT, ,WORKRIGHT,, , , ,PGUP,PGDN, , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - CDEL ,DEL, , - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_TEXTNAV] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , , , , , , , , ,/**/, , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - [_MOUSE] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , ,MS_UP, , , , , , , UP , , , ,/**/ - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , ,MS_LEFT,MS_DOWN,MS_RIGHT, , , , ,LEFT,DOWN,RGHT,/**/, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,MS_BTN1 ,MS_BTN2 , - // \------------------+----+----+---/ \---+----+----+-------------------/ - ), - - - [_MACROS] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - /**/,RESET,SECRET_2,SECRET_3, , , ,SYSTEM_SLEEP, , ,INCL, , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - CAD ,SECRET_1, , , , , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - SCAP, , , , , , , , , , , , ,SCAP, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , - // \------------------+----+----+---/ \---+----+----+-------------------/ - ) - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - /* include some kind of library or header */ - case 0: - if (record->event.pressed) { - SEND_STRING("#include <>"); - return MACRO( T(LEFT), END); - } - break; - case 1: - if (record->event.pressed) { - SEND_STRING("git pull"); - return MACRO( T(ENT), END ); - } - break; - case 2: - if (record->event.pressed){ - SEND_STRING("git push"); - return MACRO( T(ENT), END ); - } - break; - case 3: - if (record->event.pressed){ - // layer_on(_CAPS); - // register_code(KC_CAPSLOCK); - // unregister_code(KC_CAPSLOCK); - } - break; - case 4: - if (record->event.pressed){ - // layer_off(_CAPS); - // register_code(KC_CAPSLOCK); - // unregister_code(KC_CAPSLOCK); - } - break; - } - return MACRO_NONE; -}; - - -void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - - switch (layer) { - case _QWERTY: - set_led_green; - break; - case _MOUSE: - set_led_yellow; - break; - case _NUMPAD: - set_led_blue; - break; - case _SYMBOLS: - set_led_red; - break; - case _NAV: - set_led_magenta; - break; - case _MACROS: - set_led_green; - _delay_ms(45); - set_led_red; - _delay_ms(45); - break; - case _FUNCTION: - set_led_green; - _delay_ms(45); - set_led_blue; - _delay_ms(45); - break; - default: - set_led_green; - break; - } -}; diff --git a/keyboards/chimera_ortho/rules.mk b/keyboards/chimera_ortho/rules.mk index e3bbaa39d4..d97cff59f3 100644 --- a/keyboards/chimera_ortho/rules.mk +++ b/keyboards/chimera_ortho/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/chlx/merro60/config.h b/keyboards/chlx/merro60/config.h new file mode 100644 index 0000000000..526433ef8f --- /dev/null +++ b/keyboards/chlx/merro60/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 0x4358 // "CX" - chlx +#define PRODUCT_ID 0x0601 +#define DEVICE_VER 0x0100 +#define MANUFACTURER chlx +#define PRODUCT chlx merro60 + +/* 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 { D4, D5, D3, B5, F4 } +#define MATRIX_COL_PINS { B7, D1, D0, B0, B1, E6, B2, B3, D2, D7, B4, B6, C6, C7, D6 } +#define UNUSED_PINS +// #define UNUSED_PINS { F0, F1, F5, F6, F7 } + +/* 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 + +/* VIA related config */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/chlx/merro60/info.json b/keyboards/chlx/merro60/info.json new file mode 100644 index 0000000000..8205d4d24c --- /dev/null +++ b/keyboards/chlx/merro60/info.json @@ -0,0 +1,365 @@ +{ + "keyboard_name": "merro60", + "url": "www.github.com/gaclee3b", + "maintainer": "gaclee3b", + "width": 15, + "height": 5, + "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": 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} + ] + }, + "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": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.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_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_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": 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_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": 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/chlx/merro60/keymaps/ansi/keymap.c b/keyboards/chlx/merro60/keymaps/ansi/keymap.c new file mode 100644 index 0000000000..307f98866e --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/ansi/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + +[1] = LAYOUT_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_UP, _______, RESET, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/default/keymap.c b/keyboards/chlx/merro60/keymaps/default/keymap.c new file mode 100644 index 0000000000..98046d0649 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General 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_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( + KC_GRV, KC_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, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c new file mode 100644 index 0000000000..3ea2901bd1 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_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( + KC_GRV, KC_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, _______, _______, + _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/iso/keymap.c b/keyboards/chlx/merro60/keymaps/iso/keymap.c new file mode 100644 index 0000000000..f96ad9adee --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/iso/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General 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_1, KC_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( + KC_GRV, KC_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 new file mode 100644 index 0000000000..2083bf9be1 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/tsangan/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_tsangan( + 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( + KC_GRV, KC_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 new file mode 100644 index 0000000000..8f756aefbd --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_via( + KC_ESC, KC_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( + KC_GRV, KC_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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT_via( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) + +}; + diff --git a/keyboards/chlx/merro60/keymaps/via/rules.mk b/keyboards/chlx/merro60/keymaps/via/rules.mk new file mode 100644 index 0000000000..5f615ff62b --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes + diff --git a/keyboards/chlx/merro60/merro60.c b/keyboards/chlx/merro60/merro60.c new file mode 100644 index 0000000000..4182c65c76 --- /dev/null +++ b/keyboards/chlx/merro60/merro60.c @@ -0,0 +1,19 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "merro60.h" + diff --git a/keyboards/chlx/merro60/merro60.h b/keyboards/chlx/merro60/merro60.h new file mode 100644 index 0000000000..2281129996 --- /dev/null +++ b/keyboards/chlx/merro60/merro60.h @@ -0,0 +1,189 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// Corresponding changes to the layout names and/or definitions must also be made to info.json + +#define XXX KC_NO + +/* //////////////////// LAYOUT_default //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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_default( \ + k00, k01, k02, k03, k04, 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 } \ +} + +/* //////////////////// LAYOUT_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 │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │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 │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 │4a │4b │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#define LAYOUT_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, 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, XXX, 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 } \ +} + +/* //////////////////// LAYOUT_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 │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │▓▓▓▓▓│41 │42 │45 (7u) │4b │4c │▓▓▓▓▓│ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_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, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k41, k42, k45, 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 }, \ + { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, XXX, XXX } \ +} + +/* //////////////////// LAYOUT_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 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐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 │3d │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#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, 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, 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, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_tsangan //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │40 │41 │42 │45 (7u) │4b │4c │4d │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_tsangan( \ + k00, k01, k02, k03, k04, 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, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, 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 }, \ + { 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/readme.md b/keyboards/chlx/merro60/readme.md new file mode 100644 index 0000000000..f783c0e438 --- /dev/null +++ b/keyboards/chlx/merro60/readme.md @@ -0,0 +1,20 @@ +# merro60 + +merro60 PCB + +A standard 60% format keyboard pcb with USB-C and unified daughterboard compatibility. +Has modified cutouts to allow usage of certain tray mount cases into gummy gasket o-ring mount. + +Keyboard Maintainer: [Alexander Lee](https://github.com/gaclee3b) +Hardware Supported: chlx PCB merro60.1, merro60.1.1, merro60.1.2 + +Enter bootloader mode by any of the following options - +- When unplugged, holding the top-left key (typically ESC) while plugging in the keyboard +- When plugged in, pressing and releasing the reset button on the pcb bottom behind the CAPSLOCK / A-key region +- When plugged in, shorting out the two reset metal contacts near the spacebar switch location (NOT the spacebar switch pin holes) + +Make example for this keyboard (after setting up your build environment): + + make chlx/merro60: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/chlx/merro60/rules.mk b/keyboards/chlx/merro60/rules.mk new file mode 100644 index 0000000000..32981133b2 --- /dev/null +++ b/keyboards/chlx/merro60/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 = 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 diff --git a/keyboards/choco60/rev2/config.h b/keyboards/choco60/rev2/config.h index 3783234971..46aef108d8 100644 --- a/keyboards/choco60/rev2/config.h +++ b/keyboards/choco60/rev2/config.h @@ -29,7 +29,8 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { C5, C4, B6, B7, C7 } #define MATRIX_ROW_PINS_RIGHT { D3, D2, D5, D6, B0 } -#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0 } +/* The last three NO_PIN are dummies to make the same size as MATRIX_ROW_PINS_RIGHT. */ +#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0, NO_PIN, NO_PIN, NO_PIN } #define MATRIX_COL_PINS_RIGHT { C7, B7, B6, B5, B4, B3, B2, C6, D4 } #define UNUSED_PINS diff --git a/keyboards/ck60i/ck60i.c b/keyboards/ck60i/ck60i.c index 2516e636de..7e5cd33218 100644 --- a/keyboards/ck60i/ck60i.c +++ b/keyboards/ck60i/ck60i.c @@ -17,12 +17,14 @@ along with this program. If not, see . #include "ck60i.h" -__attribute__((weak)) void 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; if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } - } + } + return true; } diff --git a/keyboards/ck60i/info.json b/keyboards/ck60i/info.json new file mode 100644 index 0000000000..f7bec1378d --- /dev/null +++ b/keyboards/ck60i/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "CK60i", + "url": "", + "maintainer": "qmk", + "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, "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}, + {"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}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/ck60i/rules.mk b/keyboards/ck60i/rules.mk index 10f86791e9..1138f462e0 100644 --- a/keyboards/ck60i/rules.mk +++ b/keyboards/ck60i/rules.mk @@ -1,10 +1,13 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c index c407fbe264..783475eb0a 100755 --- a/keyboards/ckeys/thedora/keymaps/default/keymap.c +++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c @@ -144,7 +144,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -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); @@ -152,4 +152,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_PGUP); } } + return true; } diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md index 273811d0fa..991b5df02d 100755 --- a/keyboards/ckeys/thedora/readme.md +++ b/keyboards/ckeys/thedora/readme.md @@ -51,7 +51,7 @@ You can find the default layout in `thedora/keymaps/default/keymap.c` This is the bit of code at the end of `keymap.c` that needs to changed if you want to change the behavior of the rotary encoder. ``` -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); // What the rotary encoder repeatedly does when turned right. @@ -59,6 +59,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_PGUP); // What it does when turned to the left. } } + return true; } ``` diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk index aa378710c0..265e6b3479 100755 --- a/keyboards/ckeys/thedora/rules.mk +++ b/keyboards/ckeys/thedora/rules.mk @@ -2,11 +2,14 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 @@ -17,4 +20,3 @@ AUDIO_ENABLE = yes MIDI_ENABLE = yes # MIDI controls RGBLIGHT_ENABLE = no ENCODER_ENABLE = yes -# SERIAL_LINK_ENABLE = yes diff --git a/keyboards/ckeys/washington/keymaps/default/keymap.c b/keyboards/ckeys/washington/keymaps/default/keymap.c index bfe2963831..7adac3c433 100644 --- a/keyboards/ckeys/washington/keymaps/default/keymap.c +++ b/keyboards/ckeys/washington/keymaps/default/keymap.c @@ -39,7 +39,7 @@ 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) { switch (biton32(layer_state)) { case _BASE: if (clockwise) { @@ -55,6 +55,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MPRV); } } + return true; } #ifdef OLED_DRIVER_ENABLE @@ -79,4 +80,4 @@ void oled_task_user(void) { 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); } -#endif \ No newline at end of file +#endif diff --git a/keyboards/claw44/rev1/rev1.h b/keyboards/claw44/rev1/rev1.h index 79ae9586db..9a05977153 100644 --- a/keyboards/claw44/rev1/rev1.h +++ b/keyboards/claw44/rev1/rev1.h @@ -18,16 +18,3 @@ { R25, R24, R23, R22, R21, R20 }, \ { KC_NO, KC_NO, R33, R32, R31, R30 } \ } - -#define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, R30, R31, R32, R33 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##R30, KC_##R31, KC_##R32, KC_##R33 \ - ) diff --git a/keyboards/clawsome/doodle/config.h b/keyboards/clawsome/doodle/config.h new file mode 100644 index 0000000000..df33e6d84c --- /dev/null +++ b/keyboards/clawsome/doodle/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 doodle + +/* 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 { D4, C6 } +#define MATRIX_COL_PINS { D7, F4, E6 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/doodle/doodle.c b/keyboards/clawsome/doodle/doodle.c new file mode 100644 index 0000000000..4f1b773512 --- /dev/null +++ b/keyboards/clawsome/doodle/doodle.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 "doodle.h" \ No newline at end of file diff --git a/keyboards/clawsome/doodle/doodle.h b/keyboards/clawsome/doodle/doodle.h new file mode 100644 index 0000000000..131d50ad26 --- /dev/null +++ b/keyboards/clawsome/doodle/doodle.h @@ -0,0 +1,27 @@ +/* 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, \ + K10, K11, K12 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 } \ +} diff --git a/keyboards/clawsome/doodle/info.json b/keyboards/clawsome/doodle/info.json new file mode 100644 index 0000000000..aa1b657d7a --- /dev/null +++ b/keyboards/clawsome/doodle/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "doodle", + "url": "www.clawboards.xyz", + "maintainer": "AAClawson (AlisGraveNil)", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D4,D7)", "x":0, "y":0}, + {"label":"K01 (D4,F4)", "x":1, "y":0}, + {"label":"K02 (D4,E6)", "x":2, "y":0}, + {"label":"K10 (C6,D7)", "x":0, "y":1}, + {"label":"K11 (C6,F4)", "x":1, "y":1}, + {"label":"K12 (C6,E6)", "x":2, "y":1} + ] + } + } +} + diff --git a/keyboards/clawsome/doodle/keymaps/default/keymap.c b/keyboards/clawsome/doodle/keymaps/default/keymap.c new file mode 100644 index 0000000000..e3bcc955bc --- /dev/null +++ b/keyboards/clawsome/doodle/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +/* 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_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ), + +}; diff --git a/keyboards/clawsome/doodle/rules.mk b/keyboards/clawsome/doodle/rules.mk new file mode 100644 index 0000000000..64d67049f9 --- /dev/null +++ b/keyboards/clawsome/doodle/rules.mk @@ -0,0 +1,22 @@ +# 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/clawsome/hatchback/config.h b/keyboards/clawsome/hatchback/config.h new file mode 100644 index 0000000000..6560ad154f --- /dev/null +++ b/keyboards/clawsome/hatchback/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 hatchbackTKL + +/* key matrix size */ +#define MATRIX_ROWS 12 +#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 { B0, B6, D4, B4, D0, B5, D1, E6, D2, D7, D3, C6 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D5, C7, F1 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/hatchback/hatcback.h b/keyboards/clawsome/hatchback/hatcback.h new file mode 100644 index 0000000000..b30eda09f4 --- /dev/null +++ b/keyboards/clawsome/hatchback/hatcback.h @@ -0,0 +1,41 @@ +/* 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.c b/keyboards/clawsome/hatchback/hatchback.c new file mode 100644 index 0000000000..117593a688 --- /dev/null +++ b/keyboards/clawsome/hatchback/hatchback.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 "hatchback.h" diff --git a/keyboards/clawsome/hatchback/info.json b/keyboards/clawsome/hatchback/info.json new file mode 100644 index 0000000000..f3d750607d --- /dev/null +++ b/keyboards/clawsome/hatchback/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "hatchbackTKL", + "url": "www.clawboards.xyz", + "maintainer": "AAClawson (AlisGraveNil)", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B0,F4)", "x":0, "y":0}, + {"label":"K01 (B0,F5)", "x":2, "y":0}, + {"label":"K11 (B6,F5)", "x":3, "y":0}, + {"label":"K02 (B0,F6)", "x":4, "y":0}, + {"label":"K12 (B6,F6)", "x":5, "y":0}, + {"label":"K03 (B0,F7)", "x":6.5, "y":0}, + {"label":"K13 (B6,F7)", "x":7.5, "y":0}, + {"label":"K04 (B0,B1)", "x":8.5, "y":0}, + {"label":"K14 (B6,B1)", "x":9.5, "y":0}, + {"label":"K05 (B0,B3)", "x":11, "y":0}, + {"label":"K15 (B6,B3)", "x":12, "y":0}, + {"label":"K06 (B0,B2)", "x":13, "y":0}, + {"label":"K16 (B6,B2)", "x":14, "y":0}, + {"label":"K07 (B0,D5)", "x":15.25, "y":0}, + {"label":"K18 (B6,C7)", "x":16.25, "y":0}, + {"label":"K09 (B0,F1)", "x":17.25, "y":0}, + {"label":"K20 (D4,F4)", "x":0, "y":1.5}, + {"label":"K30 (B4,F4)", "x":1, "y":1.5}, + {"label":"K21 (D4,F5)", "x":2, "y":1.5}, + {"label":"K31 (B4,F5)", "x":3, "y":1.5}, + {"label":"K22 (D4,F6)", "x":4, "y":1.5}, + {"label":"K32 (B4,F6)", "x":5, "y":1.5}, + {"label":"K23 (D4,F7)", "x":6, "y":1.5}, + {"label":"K33 (B4,F7)", "x":7, "y":1.5}, + {"label":"K24 (D4,B1)", "x":8, "y":1.5}, + {"label":"K34 (B4,B1)", "x":9, "y":1.5}, + {"label":"K25 (D4,B3)", "x":10, "y":1.5}, + {"label":"K35 (B4,B3)", "x":11, "y":1.5}, + {"label":"K26 (D4,B2)", "x":12, "y":1.5}, + {"label":"K36 (B4,B2)", "x":13, "y":1.5, "w":2}, + {"label":"K27 (D4,D5)", "x":15.25, "y":1.5}, + {"label":"K38 (B4,C7)", "x":16.25, "y":1.5}, + {"label":"K29 (D4,F1)", "x":17.25, "y":1.5}, + {"label":"K40 (D0,F4)", "x":0, "y":2.5, "w":1.5}, + {"label":"K50 (B5,F4)", "x":1.5, "y":2.5}, + {"label":"K41 (D0,F5)", "x":2.5, "y":2.5}, + {"label":"K51 (B5,F5)", "x":3.5, "y":2.5}, + {"label":"K42 (D0,F6)", "x":4.5, "y":2.5}, + {"label":"K52 (B5,F6)", "x":5.5, "y":2.5}, + {"label":"K43 (D0,F7)", "x":6.5, "y":2.5}, + {"label":"K53 (B5,F7)", "x":7.5, "y":2.5}, + {"label":"K44 (D0,B1)", "x":8.5, "y":2.5}, + {"label":"K54 (B5,B1)", "x":9.5, "y":2.5}, + {"label":"K45 (D0,B3)", "x":10.5, "y":2.5}, + {"label":"K55 (B5,B3)", "x":11.5, "y":2.5}, + {"label":"K46 (D0,B2)", "x":12.5, "y":2.5}, + {"label":"K56 (B5,B2)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K47 (D0,D5)", "x":15.25, "y":2.5}, + {"label":"K58 (B5,C7)", "x":16.25, "y":2.5}, + {"label":"K49 (D0,F1)", "x":17.25, "y":2.5}, + {"label":"K60 (D1,F4)", "x":0, "y":3.5, "w":1.75}, + {"label":"K70 (E6,F4)", "x":1.75, "y":3.5}, + {"label":"K61 (D1,F5)", "x":2.75, "y":3.5}, + {"label":"K71 (E6,F5)", "x":3.75, "y":3.5}, + {"label":"K62 (D1,F6)", "x":4.75, "y":3.5}, + {"label":"K72 (E6,F6)", "x":5.75, "y":3.5}, + {"label":"K63 (D1,F7)", "x":6.75, "y":3.5}, + {"label":"K73 (E6,F7)", "x":7.75, "y":3.5}, + {"label":"K64 (D1,B1)", "x":8.75, "y":3.5}, + {"label":"K74 (E6,B1)", "x":9.75, "y":3.5}, + {"label":"K65 (D1,B3)", "x":10.75, "y":3.5}, + {"label":"K75 (E6,B3)", "x":11.75, "y":3.5}, + {"label":"K76 (E6,B2)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K80 (D2,F4)", "x":0, "y":4.5, "w":2.25}, + {"label":"K90 (D7,F4)", "x":2.25, "y":4.5}, + {"label":"K81 (D2,F5)", "x":3.25, "y":4.5}, + {"label":"K91 (D7,F5)", "x":4.25, "y":4.5}, + {"label":"K82 (D2,F6)", "x":5.25, "y":4.5}, + {"label":"K92 (D7,F6)", "x":6.25, "y":4.5}, + {"label":"K83 (D2,F7)", "x":7.25, "y":4.5}, + {"label":"K93 (D7,F7)", "x":8.25, "y":4.5}, + {"label":"K84 (D2,B1)", "x":9.25, "y":4.5}, + {"label":"K94 (D7,B1)", "x":10.25, "y":4.5}, + {"label":"K85 (D2,B3)", "x":11.25, "y":4.5}, + {"label":"K96 (D7,B2)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K98 (D7,C7)", "x":16.25, "y":4.5}, + {"label":"KA0 (D3,F4)", "x":0, "y":5.5, "w":1.25}, + {"label":"KB0 (C6,F4)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"KA1 (D3,F5)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"KA2 (D3,F6)", "x":3.75, "y":5.5, "w":2.25}, + {"label":"KA3 (D3,F7)", "x":6, "y":5.5, "w":1.75}, + {"label":"KA4 (D3,B1)", "x":7.75, "y":5.5, "w":2.25}, + {"label":"KA5 (D3,B3)", "x":10, "y":5.5, "w":1.25}, + {"label":"KB5 (C6,B3)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"KA6 (D3,B2)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"KB6 (C6,B2)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"KA7 (D3,D5)", "x":15.25, "y":5.5}, + {"label":"KB8 (C6,C7)", "x":16.25, "y":5.5}, + {"label":"KA9 (D3,F1)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/clawsome/hatchback/keymap/default/keymap.c b/keyboards/clawsome/hatchback/keymap/default/keymap.c new file mode 100644 index 0000000000..279666e06c --- /dev/null +++ b/keyboards/clawsome/hatchback/keymap/default/keymap.c @@ -0,0 +1,30 @@ +/* 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_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_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; + diff --git a/keyboards/clawsome/hatchback/readme.md b/keyboards/clawsome/hatchback/readme.md new file mode 100644 index 0000000000..2a680288bf --- /dev/null +++ b/keyboards/clawsome/hatchback/readme.md @@ -0,0 +1,14 @@ +# SUV + +This is TKL keyboard that can be converted down into a 75% keyboard and a 13key macropad (see "luggage rack") + +- Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil) +- Hardware Supported: Hatchback, Elite-C (as TKL); Pro-Micro and nice!nano (as 75%) +- Hardware Availability: In stock within the next month + +Make example for this keyboard (after setting up your build environment): + + make clawsome/hatchback:default + Connect your board to your computer; connect the "GND" and "RST" pins on your controller using a wire or a pair of tweezers and hold it for 3 seconds to force the controller into bootloader mode. Then use QMK Toolbox to flash the .hex you downloaded from the QMK website. If using an Elite-C, there's a small black reset button on the PCB you can press instead of trying to connect the two pins. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_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/hatchback/rules.mk b/keyboards/clawsome/hatchback/rules.mk new file mode 100644 index 0000000000..6b8d1b5f07 --- /dev/null +++ b/keyboards/clawsome/hatchback/rules.mk @@ -0,0 +1,22 @@ +# 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/sedan/config.h b/keyboards/clawsome/sedan/config.h index f93132eb74..2a02a9a1e7 100644 --- a/keyboards/clawsome/sedan/config.h +++ b/keyboards/clawsome/sedan/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 { B0, B1, B2, B3, B4 } -#define MATRIX_COL_PINS { B5, B6, B7, C0, C1, C2, C3, C4, C5, C6, C7, D0, D1, D2, D3 } +#define MATRIX_ROW_PINS { C6, D4, D0, D1, D3 } +#define MATRIX_COL_PINS { B0, F4, F7, B1, B3, B2, B6, F0, F1, C7, D5, B7, B5, B4, E6 } #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/sedan/keymaps/default/keymap.c b/keyboards/clawsome/sedan/keymaps/default/keymap.c index 0992965789..9007fb9ab6 100644 --- a/keyboards/clawsome/sedan/keymaps/default/keymap.c +++ b/keyboards/clawsome/sedan/keymaps/default/keymap.c @@ -33,7 +33,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_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_LSFT, KC_UP, 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_PGDN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), diff --git a/keyboards/clawsome/suv/config.h b/keyboards/clawsome/suv/config.h new file mode 100644 index 0000000000..8ea2ed5bdc --- /dev/null +++ b/keyboards/clawsome/suv/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 suv1.1 + +/* key matrix size */ +#define MATRIX_ROWS 12 +#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 { F0, B6, D0, F6, D4, F7, B3, B1, B0, C6, B2, D7 } +#define MATRIX_COL_PINS { D3, D2, D1, B4, B5, B7, D5, C7, F1, F5, F4 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/suv/info.json b/keyboards/clawsome/suv/info.json new file mode 100644 index 0000000000..f44f6aa444 --- /dev/null +++ b/keyboards/clawsome/suv/info.json @@ -0,0 +1,120 @@ +{ + "keyboard_name": "suv1.1", + "url": "www.clawboards.xyz", + "maintainer": "AAClawson (AlisGraveNil)", + "width": 22.5, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (F0,D3)", "x":0, "y":0}, + {"label":"K01 (F0,D2)", "x":2, "y":0}, + {"label":"K11 (B6,D2)", "x":3, "y":0}, + {"label":"K02 (F0,D1)", "x":4, "y":0}, + {"label":"K12 (B6,D1)", "x":5, "y":0}, + {"label":"K03 (F0,B4)", "x":6.5, "y":0}, + {"label":"K13 (B6,B4)", "x":7.5, "y":0}, + {"label":"K04 (F0,B5)", "x":8.5, "y":0}, + {"label":"K14 (B6,B5)", "x":9.5, "y":0}, + {"label":"K05 (F0,B7)", "x":11, "y":0}, + {"label":"K15 (B6,B7)", "x":12, "y":0}, + {"label":"K06 (F0,D5)", "x":13, "y":0}, + {"label":"K16 (B6,D5)", "x":14, "y":0}, + {"label":"K07 (F0,C7)", "x":15.25, "y":0}, + {"label":"K17 (B6,C7)", "x":16.25, "y":0}, + {"label":"K08 (F0,F1)", "x":17.25, "y":0}, + {"label":"K20 (D0,D3)", "x":0, "y":1.5}, + {"label":"K30 (F6,D3)", "x":1, "y":1.5}, + {"label":"K21 (D0,D2)", "x":2, "y":1.5}, + {"label":"K31 (F6,D2)", "x":3, "y":1.5}, + {"label":"K22 (D0,D1)", "x":4, "y":1.5}, + {"label":"K32 (F6,D1)", "x":5, "y":1.5}, + {"label":"K23 (D0,B4)", "x":6, "y":1.5}, + {"label":"K33 (F6,B4)", "x":7, "y":1.5}, + {"label":"K24 (D0,B5)", "x":8, "y":1.5}, + {"label":"K34 (F6,B5)", "x":9, "y":1.5}, + {"label":"K25 (D0,B7)", "x":10, "y":1.5}, + {"label":"K35 (F6,B7)", "x":11, "y":1.5}, + {"label":"K26 (D0,D5)", "x":12, "y":1.5}, + {"label":"K36 (F6,D5)", "x":13, "y":1.5, "w":2}, + {"label":"K27 (D0,C7)", "x":15.25, "y":1.5}, + {"label":"K37 (F6,C7)", "x":16.25, "y":1.5}, + {"label":"K28 (D0,F1)", "x":17.25, "y":1.5}, + {"label":"K38 (F6,F1)", "x":18.5, "y":1.5}, + {"label":"K29 (D0,F5)", "x":19.5, "y":1.5}, + {"label":"K39 (F6,F5)", "x":20.5, "y":1.5}, + {"label":"K2A (D0,F4)", "x":21.5, "y":1.5}, + {"label":"K40 (D4,D3)", "x":0, "y":2.5, "w":1.5}, + {"label":"K50 (F7,D3)", "x":1.5, "y":2.5}, + {"label":"K41 (D4,D2)", "x":2.5, "y":2.5}, + {"label":"K51 (F7,D2)", "x":3.5, "y":2.5}, + {"label":"K42 (D4,D1)", "x":4.5, "y":2.5}, + {"label":"K52 (F7,D1)", "x":5.5, "y":2.5}, + {"label":"K43 (D4,B4)", "x":6.5, "y":2.5}, + {"label":"K53 (F7,B4)", "x":7.5, "y":2.5}, + {"label":"K44 (D4,B5)", "x":8.5, "y":2.5}, + {"label":"K54 (F7,B5)", "x":9.5, "y":2.5}, + {"label":"K45 (D4,B7)", "x":10.5, "y":2.5}, + {"label":"K55 (F7,B7)", "x":11.5, "y":2.5}, + {"label":"K46 (D4,D5)", "x":12.5, "y":2.5}, + {"label":"K56 (F7,D5)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K47 (D4,C7)", "x":15.25, "y":2.5}, + {"label":"K57 (F7,C7)", "x":16.25, "y":2.5}, + {"label":"K48 (D4,F1)", "x":17.25, "y":2.5}, + {"label":"K58 (F7,F1)", "x":18.5, "y":2.5}, + {"label":"K49 (D4,F5)", "x":19.5, "y":2.5}, + {"label":"K59 (F7,F5)", "x":20.5, "y":2.5}, + {"label":"K4A (D4,F4)", "x":21.5, "y":2.5, "h":2}, + {"label":"K60 (B3,D3)", "x":0, "y":3.5, "w":1.75}, + {"label":"K70 (B1,D3)", "x":1.75, "y":3.5}, + {"label":"K61 (B3,D2)", "x":2.75, "y":3.5}, + {"label":"K71 (B1,D2)", "x":3.75, "y":3.5}, + {"label":"K62 (B3,D1)", "x":4.75, "y":3.5}, + {"label":"K72 (B1,D1)", "x":5.75, "y":3.5}, + {"label":"K63 (B3,B4)", "x":6.75, "y":3.5}, + {"label":"K73 (B1,B4)", "x":7.75, "y":3.5}, + {"label":"K64 (B3,B5)", "x":8.75, "y":3.5}, + {"label":"K74 (B1,B5)", "x":9.75, "y":3.5}, + {"label":"K65 (B3,B7)", "x":10.75, "y":3.5}, + {"label":"K75 (B1,B7)", "x":11.75, "y":3.5}, + {"label":"K76 (B1,D5)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K78 (B1,F1)", "x":18.5, "y":3.5}, + {"label":"K69 (B3,F5)", "x":19.5, "y":3.5}, + {"label":"K79 (B1,F5)", "x":20.5, "y":3.5}, + {"label":"K80 (B0,D3)", "x":0, "y":4.5, "w":2.25}, + {"label":"K90 (C6,D3)", "x":2.25, "y":4.5}, + {"label":"K81 (B0,D2)", "x":3.25, "y":4.5}, + {"label":"K91 (C6,D2)", "x":4.25, "y":4.5}, + {"label":"K82 (B0,D1)", "x":5.25, "y":4.5}, + {"label":"K92 (C6,D1)", "x":6.25, "y":4.5}, + {"label":"K83 (B0,B4)", "x":7.25, "y":4.5}, + {"label":"K93 (C6,B4)", "x":8.25, "y":4.5}, + {"label":"K84 (B0,B5)", "x":9.25, "y":4.5}, + {"label":"K94 (C6,B5)", "x":10.25, "y":4.5}, + {"label":"K85 (B0,B7)", "x":11.25, "y":4.5}, + {"label":"K96 (C6,D5)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K97 (C6,C7)", "x":16.25, "y":4.5}, + {"label":"K98 (C6,F1)", "x":18.5, "y":4.5}, + {"label":"K89 (B0,F5)", "x":19.5, "y":4.5}, + {"label":"K99 (C6,F5)", "x":20.5, "y":4.5}, + {"label":"K8A (B0,F4)", "x":21.5, "y":4.5, "h":2}, + {"label":"KA0 (B2,D3)", "x":0, "y":5.5, "w":1.25}, + {"label":"KB0 (D7,D3)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"KA1 (B2,D2)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"KA2 (B2,D1)", "x":3.75, "y":5.5, "w":2.25}, + {"label":"KA3 (B2,B4)", "x":6, "y":5.5, "w":1.75}, + {"label":"KA4 (B2,B5)", "x":7.75, "y":5.5, "w":2.25}, + {"label":"KA5 (B2,B7)", "x":10, "y":5.5, "w":1.25}, + {"label":"KB5 (D7,B7)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"KA6 (B2,D5)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"KB6 (D7,D5)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"KA7 (B2,C7)", "x":15.25, "y":5.5}, + {"label":"KB7 (D7,C7)", "x":16.25, "y":5.5}, + {"label":"KA8 (B2,F1)", "x":17.25, "y":5.5}, + {"label":"KB8 (D7,F1)", "x":18.5, "y":5.5, "w":2}, + {"label":"KB9 (D7,F5)", "x":20.5, "y":5.5} + ] + } + } +} + diff --git a/keyboards/clawsome/suv/keymap/default/keymap.c b/keyboards/clawsome/suv/keymap/default/keymap.c new file mode 100644 index 0000000000..b09cf08ddc --- /dev/null +++ b/keyboards/clawsome/suv/keymap/default/keymap.c @@ -0,0 +1,30 @@ +/* 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_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_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + +}; + diff --git a/keyboards/clawsome/suv/readme.md b/keyboards/clawsome/suv/readme.md new file mode 100644 index 0000000000..1676a8dc78 --- /dev/null +++ b/keyboards/clawsome/suv/readme.md @@ -0,0 +1,13 @@ +# SUV + +This is 100% keyboard with the standard layout of a 104-key setup. + +- Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil) +- Hardware Supported: SUV, Elite-C +- Hardware Availability: In stock within the next month + +Make example for this keyboard (after setting up your build environment): + + make clawsome/suv: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/suv/rules.mk b/keyboards/clawsome/suv/rules.mk new file mode 100644 index 0000000000..64d67049f9 --- /dev/null +++ b/keyboards/clawsome/suv/rules.mk @@ -0,0 +1,22 @@ +# 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/clawsome/suv/suv.c b/keyboards/clawsome/suv/suv.c new file mode 100644 index 0000000000..d456be8850 --- /dev/null +++ b/keyboards/clawsome/suv/suv.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 "suv.h" \ No newline at end of file diff --git a/keyboards/clawsome/suv/suv.h b/keyboards/clawsome/suv/suv.h new file mode 100644 index 0000000000..64ed0e7d0f --- /dev/null +++ b/keyboards/clawsome/suv/suv.h @@ -0,0 +1,41 @@ +/* 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, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, K38, K29, K39, K2A, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, K49, K59, K4A, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, K78, K69, K79, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K96, K97, K98, K89, K99, K8A, \ + KA0, KB0, KA1, KA2, KA3, KA4, KA5, KB5, KA6, KB6, KA7, KB7, KA8, KB8, KB9 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, KC_NO, KC_NO }, \ + { KC_NO, K11, K12, K13, K14, K15, K16, K17, KC_NO, KC_NO, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, KC_NO }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO, K69, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO, K78, K79, KC_NO }, \ + { K80, K81, K82, K83, K84, K85, KC_NO, KC_NO, KC_NO, K89, K8A }, \ + { K90, K91, K92, K93, K94, KC_NO, K96, K97, K98, K99, KC_NO }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KA8, KC_NO, KC_NO }, \ + { KB0, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KB6, KB7, KB8, KB9, KC_NO }, \ +} diff --git a/keyboards/clueboard/2x1800/2019/2019.c b/keyboards/clueboard/2x1800/2019/2019.c index 29f7a4901c..40032cd669 100644 --- a/keyboards/clueboard/2x1800/2019/2019.c +++ b/keyboards/clueboard/2x1800/2019/2019.c @@ -144,13 +144,11 @@ bool led_update_kb(led_t led_state) { return res; } -__attribute__ ((weak)) -bool encoder_update_keymap(int8_t index, bool clockwise) { - return false; -} +__attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } +__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return encoder_update_keymap(index, clockwise); } -void encoder_update_kb(int8_t index, bool clockwise) { - if (!encoder_update_keymap(index, clockwise)) { +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { // Encoder 1, outside left if (index == 0 && clockwise) { tap_code(KC_MS_U); // turned right @@ -179,4 +177,5 @@ void encoder_update_kb(int8_t index, bool clockwise) { tap_code(KC_MS_L); // turned left } } + return true; } diff --git a/keyboards/clueboard/2x1800/2019/2019.h b/keyboards/clueboard/2x1800/2019/2019.h index e4738a4b90..5debfacc5d 100644 --- a/keyboards/clueboard/2x1800/2019/2019.h +++ b/keyboards/clueboard/2x1800/2019/2019.h @@ -29,8 +29,7 @@ enum TWOx1800_keycodes { #define SAFE_RANGE NEW_SAFE_RANGE // Encoder update function that returns true/false -__attribute__ ((weak)) -bool encoder_update_keymap(int8_t index, bool clockwise); +bool encoder_update_keymap(uint8_t index, bool clockwise); // Encoder button combo check void check_encoder_buttons(void); diff --git a/keyboards/clueboard/60/config.h b/keyboards/clueboard/60/config.h index 1ca9d9844e..9263a8f657 100644 --- a/keyboards/clueboard/60/config.h +++ b/keyboards/clueboard/60/config.h @@ -19,12 +19,6 @@ #include "config_common.h" -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* Backlight configuration */ #define BACKLIGHT_LEVELS 1 diff --git a/keyboards/clueboard/66/rev4/config.h b/keyboards/clueboard/66/rev4/config.h index 2c11cf1ec0..bc5a9bf336 100644 --- a/keyboards/clueboard/66/rev4/config.h +++ b/keyboards/clueboard/66/rev4/config.h @@ -2,12 +2,6 @@ #include "config_common.h" -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* Backlight configuration */ #define BACKLIGHT_LEVELS 1 diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h index 5ed3c5b272..e0e69a2baf 100644 --- a/keyboards/clueboard/66_hotswap/gen1/config.h +++ b/keyboards/clueboard/66_hotswap/gen1/config.h @@ -18,12 +18,6 @@ #pragma once #include "config_common.h" -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ // #define DEBOUNCE 6 diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c index dd399317c1..339bd78d5a 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.c +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -16,8 +16,6 @@ #include "gen1.h" #ifdef LED_MATRIX_ENABLE - #include "is31fl3731-simple.h" - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver diff --git a/keyboards/coarse/cordillera/config.h b/keyboards/coarse/cordillera/config.h index ac636d5d5e..1d8c9e294c 100644 --- a/keyboards/coarse/cordillera/config.h +++ b/keyboards/coarse/cordillera/config.h @@ -32,6 +32,11 @@ along with this program. If not, see . #define MATRIX_COL_PINS { B15, B14, B13, B12, B11, B10, B2, B1, B8, B7, B6, B5, B4, B3, A15, A14 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN A1 +#define LED_SCROLL_LOCK_PIN A0 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN A8 #define BACKLIGHT_PWM_DRIVER PWMD1 #define BACKLIGHT_PWM_CHANNEL 1 diff --git a/keyboards/coarse/cordillera/cordillera.c b/keyboards/coarse/cordillera/cordillera.c index 5bf07740b5..437547ff28 100644 --- a/keyboards/coarse/cordillera/cordillera.c +++ b/keyboards/coarse/cordillera/cordillera.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "cordillera.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B0); - setPinOutput(A1); - setPinOutput(A0); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B0, led_state.num_lock); - writePin(A1, led_state.caps_lock); - writePin(A0, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/coarse/cordillera/rules.mk b/keyboards/coarse/cordillera/rules.mk index d35a6a6592..70d00be2f7 100644 --- a/keyboards/coarse/cordillera/rules.mk +++ b/keyboards/coarse/cordillera/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/comet46/comet46.h b/keyboards/comet46/comet46.h index b6598f0178..c108d4193b 100644 --- a/keyboards/comet46/comet46.h +++ b/keyboards/comet46/comet46.h @@ -6,20 +6,6 @@ // 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_kc( \ - 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 \ -) \ -{ \ - { KC_##k13, KC_##k01, KC_##k26, KC_##k12, KC_##k00, KC_##k11, KC_##k25, KC_##k42, KC_##k10, KC_##k24}, \ - { KC_##k03, KC_##k28, KC_##k14, KC_##k02, KC_##k27, KC_##k41, KC_##k09, KC_##k23, KC_##k38, KC_##k08}, \ - { KC_##k31, KC_##k16, KC_##k04, KC_##k29, KC_##k15, KC_##k22, KC_##k37, KC_##k07, KC_##k21, KC_##k36}, \ - { KC_NO, KC_##k32, KC_##k17, KC_##k05, KC_##k43, KC_##k48, KC_##k06, KC_##k20, KC_##k35, KC_NO }, \ - { KC_NO, KC_##k45, KC_##k33, KC_##k18, KC_##k44, KC_##k47, KC_##k19, KC_##k34, KC_##k46, 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,\ diff --git a/keyboards/comet46/keymaps/satt/keymap.c b/keyboards/comet46/keymaps/satt/keymap.c index eec40eff49..98c3c175be 100644 --- a/keyboards/comet46/keymaps/satt/keymap.c +++ b/keyboards/comet46/keymaps/satt/keymap.c @@ -75,94 +75,90 @@ enum custom_keycodes { #define KC_CAD LCA(KC_DEL) #define KC_RST RESET -// Fillers to make layering more clear -#define KC_ KC_TRNS -#define KC_XXXX KC_NO - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL , + KC_CAEC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_DEL , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - CSTB, A , S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC, + KC_CSTB, 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_BSPC, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,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_QUOT, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - IMOF,LWR ,SPCT, ENSF,RSE ,IMON + KC_IMOF,KC_LWR ,KC_SPCT, KC_ENSF,KC_RSE ,KC_IMON // +----+----+---/ \---+----+----+ ), - [_LOWER] = LAYOUT_kc( + [_LOWER] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , + _______,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______, //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , F1 , F2 , F3 , F4 , F5 , F6 , GRV ,BSLS,MINS,EQL ,LBRC,RBRC, , + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_GRV ,KC_BSLS,KC_MINS,KC_EQL ,KC_LBRC,KC_RBRC,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, , + _______, KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12, KC_TILD,KC_PIPE,KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + _______,_______,_______, _______,_______,_______ // +----+----+---/ \---+----+----+ ), - [_RAISE] = LAYOUT_kc( + [_RAISE] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - , 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 ,_______, //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , , + _______,_______,_______,_______,_______,_______,_______, XXXXXXX,KC_LEFT,KC_DOWN, KC_UP ,KC_RGHT,KC_END ,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, , + _______,_______,_______,_______,_______,_______,_______, KC_HOME,XXXXXXX,KC_PGDN,KC_PGUP,XXXXXXX,XXXXXXX,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + _______,_______,_______, _______,_______,_______ // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US] = LAYOUT_kc( + [_PSEUDO_US] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL , + KC_CAEC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_DEL , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - CSTB, A , S , D , F , G ,JLPR, JRPR, H , J , K , L ,J2US,BSPC, + KC_CSTB, KC_A , KC_S , KC_D , KC_F , KC_G ,KC_JLPR, KC_JRPR, KC_H , KC_J , KC_K , KC_L ,KC_J2US,KC_BSPC, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B ,J2US, J2US, N , M ,COMM,DOT ,SLSH,J2US, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_J2US, KC_J2US, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_J2US, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - IMOF,P_LW,SPCT, ENSF,P_RS,IMON + KC_IMOF,KC_P_LW,KC_SPCT, KC_ENSF,KC_P_RS,KC_IMON // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US_LOWER] = LAYOUT_kc( + [_PSEUDO_US_LOWER] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - ,EXLM,JAT ,HASH,DLR ,PERC, JCIR,JAMP,JAST,JLPR,JRPR, , + _______,KC_EXLM,KC_JAT ,KC_HASH,KC_DLR ,KC_PERC, KC_JCIR,KC_JAMP,KC_JAST,KC_JLPR,KC_JRPR,_______, //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , F1 , F2 , F3 , F4 , F5 , F6 , JGRV,JBSL,MINS,JEQL,JLBR,JRBR, , + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_JGRV,KC_JBSL,KC_MINS,KC_JEQL,KC_JLBR,KC_JRBR,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , F7 , F8 , F9 , F10, F11, F12, JTIL,JPIP,JUND,JPLU,JLCB,JRCB, , + _______, KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12, KC_JTIL,KC_JPIP,KC_JUND,KC_JPLU,KC_JLCB,KC_JRCB,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + _______,_______,_______, _______,_______,_______ // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US_RAISE] = LAYOUT_kc( + [_PSEUDO_US_RAISE] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - , 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 ,_______, //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , , , , , ,JZHT, XXXX,LEFT,DOWN, UP ,RGHT,END , , + _______,_______,_______,_______,_______,_______,KC_JZHT, XXXXXXX,KC_LEFT,KC_DOWN, KC_UP ,KC_RGHT,KC_END ,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, , + _______,_______,_______,_______,_______,_______,_______, KC_HOME,XXXXXXX,KC_PGDN,KC_PGUP,XXXXXXX,XXXXXXX,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + _______,_______,_______, _______,_______,_______ // +----+----+---/ \---+----+----+ ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - , , , , , , , , , , , , + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , , , , , ,CAD , QWRT, , , , , , , + _______,_______,_______,_______,_______,_______,KC_CAD , KC_QWRT,_______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , ,RST , P_US, , , , , , , + _______,_______,_______,_______,_______,_______,KC_RST , KC_P_US,_______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + _______,_______,_______, _______,_______,_______ // +----+----+---/ \---+----+----+ ) diff --git a/keyboards/contra/contra.h b/keyboards/contra/contra.h index 1ff481097a..74aad77d0b 100755 --- a/keyboards/contra/contra.h +++ b/keyboards/contra/contra.h @@ -27,17 +27,4 @@ { K300, K301, K302, K303, K304, K305, K305, K307, K308, K309, K310, K311 } \ } -#define LAYOUT_kc_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 \ -) \ - LAYOUT_ortho_4x12( \ - KC_##K000, KC_##K001, KC_##K002, KC_##K003, KC_##K004, KC_##K005, KC_##K006, KC_##K007, KC_##K008, KC_##K009, KC_##K010, KC_##K011, \ - KC_##K100, KC_##K101, KC_##K102, KC_##K103, KC_##K104, KC_##K105, KC_##K106, KC_##K107, KC_##K108, KC_##K109, KC_##K110, KC_##K111, \ - KC_##K200, KC_##K201, KC_##K202, KC_##K203, KC_##K204, KC_##K205, KC_##K206, KC_##K207, KC_##K208, KC_##K209, KC_##K210, KC_##K211, \ - KC_##K300, KC_##K301, KC_##K302, KC_##K303, KC_##K304, KC_##K305, KC_##K306, KC_##K307, KC_##K308, KC_##K309, KC_##K310, KC_##K311 \ - ) - #endif diff --git a/keyboards/contra/rules.mk b/keyboards/contra/rules.mk index 5894ca1326..9bd4c08513 100755 --- a/keyboards/contra/rules.mk +++ b/keyboards/contra/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/converter/ibm_5291/info.json b/keyboards/converter/ibm_5291/info.json index b4b1293096..dca1ca6f0d 100644 --- a/keyboards/converter/ibm_5291/info.json +++ b/keyboards/converter/ibm_5291/info.json @@ -5,7 +5,7 @@ "width": 21, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_5291": { "layout": [ {"label":"Sys Req", "x":0, "y":0}, {"label":"Cmd", "x":1, "y":0}, diff --git a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c new file mode 100644 index 0000000000..3828f09f5d --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 dsanchezseco +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 { + DVO, // dvorak + QWE, // qwerty + SYS, // system +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* dvorak */ + [DVO] = LAYOUT( + KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_PSCR, KC_PAUS, MO(SYS), + 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(KC_A), LCTL(KC_Z), 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, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_BSPC, KC_PEQL, KC_PSLS, KC_PAST, + LCTL(KC_B), LCTL(KC_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, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + LCTL(KC_D), LCTL(KC_C), KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + LCTL(KC_F), LCTL(KC_V), KC_LSFT, KC_BSLS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, XXXXXXX, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + LCTL(KC_G), LCTL(KC_W), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LGUI, XXXXXXX, KC_P0, KC_PDOT, XXXXXXX + ), + /* qwerty */ + [QWE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX + ), + + /* system */ + [SYS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, KC_NLCK, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TO(DVO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(QWE), _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX + ), +}; diff --git a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk new file mode 100644 index 0000000000..0a5b666e85 --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = no diff --git a/keyboards/converter/periboard_512/config.h b/keyboards/converter/periboard_512/config.h new file mode 100644 index 0000000000..e2fdc74358 --- /dev/null +++ b/keyboards/converter/periboard_512/config.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the 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 Sife +#define PRODUCT Periboard 512 + +/* matrix properties */ +#define MATRIX_COLS 19 +#define MATRIX_ROWS 8 +#define DEBOUNCE 5 +#define MATRIX_HAS_GHOST diff --git a/keyboards/converter/periboard_512/info.json b/keyboards/converter/periboard_512/info.json new file mode 100644 index 0000000000..89e8d75bc4 --- /dev/null +++ b/keyboards/converter/periboard_512/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Perixx Periboard-512", + "url": "https://github.com/Sife-ops/qmk_firmware/tree/periboard_512/keyboards/converter/periboard_512", + "maintainer": "Sife-ops", + "diode_direction": "ROW2COL", + "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"] + } +} diff --git a/keyboards/converter/periboard_512/keymaps/default/keymap.c b/keyboards/converter/periboard_512/keymaps/default/keymap.c new file mode 100644 index 0000000000..5d528416f3 --- /dev/null +++ b/keyboards/converter/periboard_512/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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 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, + LALT_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, RALT_T(KC_BSLS), KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + 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, RCTL_T(KC_BSPC), 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, + MO(1), KC_LALT, LGUI_T(KC_F13), KC_SPC, RGUI_T(KC_F13), RALT_T(KC_ENT), KC_HENK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_DOWN, KC_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* [<++>] = LAYOUT( */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ */ + /* ), */ + +}; diff --git a/keyboards/converter/periboard_512/periboard_512.c b/keyboards/converter/periboard_512/periboard_512.c new file mode 100644 index 0000000000..11c65e923a --- /dev/null +++ b/keyboards/converter/periboard_512/periboard_512.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "periboard_512.h" diff --git a/keyboards/converter/periboard_512/periboard_512.h b/keyboards/converter/periboard_512/periboard_512.h new file mode 100644 index 0000000000..d792642339 --- /dev/null +++ b/keyboards/converter/periboard_512/periboard_512.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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( \ + 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, K4R, K4S, K4T, K4U, \ + K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, K3R, K3S, K3T, K3U, \ + K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, K2O, K2P, \ + K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, K1O, K1P, K1Q, \ + K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, K0L, K0M \ +) \ +{ \ + { KC_NO, K4L, K5I, K4M, KC_NO, K5C, K5B, K4A, K0A, KC_NO, K4F, KC_NO, K4P, K4Q, K3O, K4O, K5J, KC_NO, K4G }, \ + { KC_NO, K4K, K4J, K4I, KC_NO, K4D, K4C, K4B, KC_NO, KC_NO, K4E, K5N, K3P, K3Q, K5L, K5M, K5K, KC_NO, K4H }, \ + { KC_NO, K3K, K3J, K3I, K3H, K3D, K3C, K3B, KC_NO, KC_NO, K3E, K5O, K3U, K3T, K3R, K3S, KC_NO, K0G, KC_NO }, \ + { KC_NO, K2K, K2J, K2I, K2H, K2D, K2C, K2B, KC_NO, KC_NO, K2E, KC_NO, K1Q, K1P, K1N, K1O, K3N, K0B, KC_NO }, \ + { KC_NO, K3L, K5H, K3M, K3G, K5D, K2A, K3A, KC_NO, K1A, K3F, KC_NO, KC_NO, K2P, K2N, K2O, K4N, KC_NO, KC_NO }, \ + { KC_NO, K2L, KC_NO, K5G, K2G, K5E, KC_NO, K5A, KC_NO, KC_NO, K2F, K0C, K1M, K0M, KC_NO, K0L, K5F, KC_NO, KC_NO }, \ + { K0F, KC_NO, K1J, K1I, K1H, K1D, K1C, K1B, K0H, K1L, K1E, KC_NO, K5P, K4T, K4R, K4S, K2M, KC_NO, KC_NO }, \ + { KC_NO, K1K, KC_NO, KC_NO, K1G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1F, K0E, K0I, K4U, K0J, K0K, K0D, KC_NO, KC_NO }, \ +} diff --git a/keyboards/converter/periboard_512/readme.md b/keyboards/converter/periboard_512/readme.md new file mode 100644 index 0000000000..026a90154b --- /dev/null +++ b/keyboards/converter/periboard_512/readme.md @@ -0,0 +1,21 @@ +# Periboard-512 + +![Periboard-512](https://i.imgur.com/ohd61TK.jpeg) + +For this project I converted low-cost consumer keyboard to QMK using a Perixx Periboard-512 and a Teensy++ 2.0. + +* Keyboard Maintainer: [Sife-ops](https://github.com/Sife-ops) +* Hardware Supported: Periboard-512, Teensy++ 2.0 +* Hardware Availability: [Periboard-512](https://www.amazon.com/Perixx-PERIBOARD-512-Ergonomic-Split-Keyboard/dp/B075GZVD4T), [Teensy++ 2.0](https://www.pjrc.com/store/teensypp.html) + +Make example for this keyboard (after setting up your build environment): + + make converter/periboard_512:default + +Flashing example for this keyboard: + + make converter/periboard_512: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). + +[Build guide](https://gist.github.com/Sife-ops/af1916136d641ffee86e8f0f62afc5a4) diff --git a/keyboards/converter/periboard_512/rules.mk b/keyboards/converter/periboard_512/rules.mk new file mode 100644 index 0000000000..c1cb4919a7 --- /dev/null +++ b/keyboards/converter/periboard_512/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/converter/siemens_tastatur/rules.mk b/keyboards/converter/siemens_tastatur/rules.mk index 451d07e676..ff54cf24e8 100644 --- a/keyboards/converter/siemens_tastatur/rules.mk +++ b/keyboards/converter/siemens_tastatur/rules.mk @@ -6,7 +6,7 @@ BOOTLOADER = stm32duino SRC = matrix.c -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/converter/usb_usb/rules.mk b/keyboards/converter/usb_usb/rules.mk index d277853cfd..d2b9918371 100644 --- a/keyboards/converter/usb_usb/rules.mk +++ b/keyboards/converter/usb_usb/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 diff --git a/keyboards/converter/xt_usb/config.h b/keyboards/converter/xt_usb/config.h index e5624d843d..5f93fbfc6d 100644 --- a/keyboards/converter/xt_usb/config.h +++ b/keyboards/converter/xt_usb/config.h @@ -19,14 +19,14 @@ along with this program. If not, see . #include "config_common.h" -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6512 -#define DEVICE_VER 0x0001 -#define MANUFACTURER QMK -#define PRODUCT XT keyboard converter +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6512 +#define DEVICE_VER 0x0001 +#define MANUFACTURER QMK +#define PRODUCT XT keyboard converter - -/* matrix size */ +/* key matrix size */ #define MATRIX_ROWS 16 // keycode bit: 3-0 #define MATRIX_COLS 8 // keycode bit: 6-4 @@ -36,44 +36,31 @@ along with this program. If not, see . get_mods() == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \ ) - -//#define NO_SUSPEND_POWER_DOWN - -/* - * XT Pin interrupt - */ -#define XT_CLOCK_PORT PORTD -#define XT_CLOCK_PIN PIND -#define XT_CLOCK_DDR DDRD -#define XT_CLOCK_BIT 1 -#define XT_DATA_PORT PORTD -#define XT_DATA_PIN PIND -#define XT_DATA_DDR DDRD -#define XT_DATA_BIT 0 -#define XT_RST_PORT PORTB -#define XT_RST_PIN PINB -#define XT_RST_DDR DDRB -#define XT_RST_BIT 7 +#define XT_CLOCK_PIN D1 +#define XT_DATA_PIN D0 +#define XT_RST_PIN B7 /* hard reset: low pulse for 500ms and after that HiZ for safety */ #define XT_RESET() do { \ - XT_RST_PORT &= ~(1<. #include "xt.h" #include "matrix.h" - static void matrix_make(uint8_t code); static void matrix_break(uint8_t code); static uint8_t matrix[MATRIX_ROWS]; -#define ROW(code) (code>>3) -#define COL(code) (code&0x07) + +#define ROW(code) (code >> 3) +#define COL(code) (code & 0x07) __attribute__ ((weak)) void matrix_init_kb(void) { @@ -48,16 +48,16 @@ void matrix_init_user(void) { } __attribute__ ((weak)) -void matrix_scan_user(void) { -} +void matrix_scan_user(void) { } -void matrix_init(void) -{ +void matrix_init(void) { debug_enable = true; xt_host_init(); // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0x00; + } matrix_init_quantum(); } @@ -71,7 +71,7 @@ static uint8_t move_e0code(uint8_t code) { case 0x1C: return 0x6F; // Keypad Enter case 0x35: return 0x7F; // Keypad / - // Any XT keyobard with these keys? + // Any XT keyboard with these keys? // http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf // https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc case 0x5B: return 0x5A; // Left GUI @@ -96,8 +96,7 @@ static uint8_t move_e0code(uint8_t code) { return 0x00; } -uint8_t matrix_scan(void) -{ +uint8_t matrix_scan(void) { static enum { XT_STATE_INIT, XT_STATE_E0, @@ -108,8 +107,13 @@ uint8_t matrix_scan(void) } state = XT_STATE_INIT; uint8_t code = xt_host_recv(); - if (!code) return 0; + + if (!code) { + return 0; + } + xprintf("%02X ", code); + switch (state) { case XT_STATE_INIT: switch (code) { @@ -120,10 +124,11 @@ uint8_t matrix_scan(void) state = XT_STATE_E1; break; default: - if (code < 0x80) + if (code < 0x80) { matrix_make(code); - else + } else { matrix_break(code & 0x7F); + } break; } break; @@ -137,10 +142,11 @@ uint8_t matrix_scan(void) state = XT_STATE_INIT; break; default: - if (code < 0x80) + if (code < 0x80) { matrix_make(move_e0code(code)); - else + } else { matrix_break(move_e0code(code & 0x7F)); + } state = XT_STATE_INIT; break; } @@ -181,59 +187,54 @@ uint8_t matrix_scan(void) default: state = XT_STATE_INIT; } + matrix_scan_quantum(); + return 1; } inline -uint8_t matrix_get_row(uint8_t row) -{ +uint8_t matrix_get_row(uint8_t row) { return matrix[row]; } -inline -static void matrix_make(uint8_t code) -{ +inline static void matrix_make(uint8_t code) { if (!matrix_is_on(ROW(code), COL(code))) { - matrix[ROW(code)] |= 1<. #include "quantum.h" +#define XXX KC_NO + /* IBM XT keyboard layout * ,-------. ,--------------------------------------------------------------------------. * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | @@ -44,28 +46,28 @@ along with this program. If not, see . * `-------' `--------------------------------------------------------------------------' */ #define LAYOUT_xt( \ - K3B,K3C, K01,K02,K03,K04,K05,K06,K07,K08,K09,K0A,K0B,K0C,K0D,K0E, K45, K46, \ - K3D,K3E, K0F,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K1A,K1B, K47,K48,K49,K4A, \ - K3F,K40, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K1C,K4B,K4C,K4D, \ - K41,K42, K2A,K2B,K2C,K2D,K2E,K2F,K30,K31,K32,K33,K34,K35,K36,K37,K4F,K50,K51,K4E, \ - K43,K44, K38, K39, K3A, K52, K53 \ + k3B, k3C, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k45, k46, \ + k3D, k3E, k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k47, k48, k49, k4A, \ + k3F, k40, k1D, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k1C, k4B, k4C, k4D, \ + k41, k42, k2A, k2B, k2C, k2D, k2E, k2F, k30, k31, k32, k33, k34, k35, k36, k37, k4F, k50, k51, k4E, \ + k43, k44, k38, k39, k3A, k52, k53 \ ) { \ - { 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, K4B, K4C, K4D, K4E, K4F }, \ - { K50, K51, K52, K53, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, k4B, k4C, k4D, k4E, k4F }, \ + { k50, k51, k52, k53, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ } /* Extended keyboard layout @@ -105,28 +107,28 @@ along with this program. If not, see . * *: special handling codes */ #define LAYOUT( \ - K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,K6E,K76, \ - K01, K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K57,K58, K54,K46,K55, K5D,K5E,K5F, \ - K29,K02,K03,K04,K05,K06,K07,K08,K09,K0A,K0B,K0C,K0D,K7D,K0E, K71,K74,K77, K45,K7F,K37,K4A, \ - K0F,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K1A,K1B, K2B, K72,K75,K78, K47,K48,K49,K4E, \ - K3A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28, K00,K1C, K4B,K4C,K4D,K7E, \ - K2A,K56,K2C,K2D,K2E,K2F,K30,K31,K32,K33,K34,K35, K73,K36, K60, K4F,K50,K51,K6F, \ - K1D,K5A,K38,K7B, K39, K79,K70,K7C,K5B,K5C,K7A, K61,K62,K63, K52,K53,K59 \ + k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k76, \ + k01, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k57, k58, k54, k46, k55, k5D, k5E, k5F, \ + k29, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k7D, k0E, k71, k74, k77, k45, k7F, k37, k4A, \ + k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k2B, k72, k75, k78, k47, k48, k49, k4E, \ + k3A, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k00, k1C, k4B, k4C, k4D, k7E, \ + k2A, k56, k2C, k2D, k2E, k2F, k30, k31, k32, k33, k34, k35, k73, k36, k60, k4F, k50, k51, k6F, \ + k1D, k5A, k38, k7B, k39, k79, k70, k7C, k5B, k5C, k7A, k61, k62, k63, k52, k53, k59 \ ) { \ - { 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 }, \ - { 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 } \ + { 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 }, \ + { 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 } \ } diff --git a/keyboards/coseyfannitutti/discipline/info.json b/keyboards/coseyfannitutti/discipline/info.json index 8082898241..9583665c57 100644 --- a/keyboards/coseyfannitutti/discipline/info.json +++ b/keyboards/coseyfannitutti/discipline/info.json @@ -5,25 +5,19 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT_65_ansi": { + "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_65_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.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.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_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_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_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_65_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.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_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_wkl_iso_3_right_mods": { diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h new file mode 100644 index 0000000000..1c1f66c89f --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h @@ -0,0 +1,20 @@ +/* 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 . + */ + +#pragma once + +#define ANSI_NUBS_ROW 3 +#define ANSI_NUBS_COL 2 diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c new file mode 100644 index 0000000000..b948c9fb1d --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c @@ -0,0 +1,72 @@ +/* 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 "noroadsleft.h" + +enum layer_names { + _DV, + _QW, + _NP, + _FN, + _SY +}; + +#define FN_CAPS LT(_FN, KC_CAPS) +#define CTL_GRV MT(MOD_LCTL, KC_GRV) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_DV] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP, + FN_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_PGDN, + 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_UP, KC_END, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_QW] = 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, + FN_CAPS, KC_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, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_NP] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, + _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, _______, + _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_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_DEL, DM_REC1, + _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, DM_REC2, + _______, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1, + _______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TO(_SY), _______, _______, DM_PLY2, + _______, _______, _______, TG(_NP), _______, _______, _______, _______, _______, _______ + ), + + [_SY] = LAYOUT_65_ansi( + TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, + 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 + ) + +}; diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk new file mode 100644 index 0000000000..9e6797ed30 --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk @@ -0,0 +1 @@ +DYNAMIC_MACRO_ENABLE = yes diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c index 35487eee55..71f357681e 100644 --- a/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c +++ b/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_tkl_ansi_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_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_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, diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/default/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/default/keymap.c index b9df25f347..e8091abbbc 100644 --- a/keyboards/coseyfannitutti/mysterium/keymaps/default/keymap.c +++ b/keyboards/coseyfannitutti/mysterium/keymaps/default/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_tkl_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_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_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, diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/iso/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/iso/keymap.c index bad4dc2f42..9467b63c3f 100644 --- a/keyboards/coseyfannitutti/mysterium/keymaps/iso/keymap.c +++ b/keyboards/coseyfannitutti/mysterium/keymaps/iso/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_tkl_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_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_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, diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c index f7baaea8fc..a44b0158df 100644 --- a/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c +++ b/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_tkl_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_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_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_ENT, KC_BSLS, diff --git a/keyboards/coseyfannitutti/mysterium/mysterium.h b/keyboards/coseyfannitutti/mysterium/mysterium.h index b705f04c0d..aa2e2b18da 100644 --- a/keyboards/coseyfannitutti/mysterium/mysterium.h +++ b/keyboards/coseyfannitutti/mysterium/mysterium.h @@ -58,16 +58,16 @@ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0B, K0C, K0D, K0E, K0F, K0G, K0H, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, K1G, K1H, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, K2G, K2H, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3D, \ K40, K01, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4D, K4G, \ K50, K51, K52, K56, K59, K5A, K5C, K5E, K5F, K5G, K5H \ ) \ { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K00, _x_, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, _x_, K1F, K1G, K1H }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, _x_, K2F, K2G, K2H }, \ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_, _x_, _x_, _x_ }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, _x_, _x_, K4D, _x_, _x_, K4G, _x_ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K01, _x_, K4D, _x_, _x_, K4G, _x_ }, \ { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, K59, K5A, _x_, K5C, _x_, K5E, K5F, K5G, K5H } \ } @@ -80,10 +80,10 @@ K50, K51, K52, K56, K5A, K5C, K5E, K5F, K5G, K5H \ ) \ { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K00, _x_, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, _x_, K1F, K1G, K1H }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, _x_, K2F, K2G, K2H }, \ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_, _x_, _x_, _x_ }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, _x_, _x_, K4D, _x_, _x_, K4G, _x_ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K01, _x_, K4D, _x_, _x_, K4G, _x_ }, \ { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, _x_, K5C, _x_, K5E, K5F, K5G, K5H } \ } diff --git a/keyboards/cozykeys/bloomer/bloomer.c b/keyboards/cozykeys/bloomer/bloomer.c new file mode 100644 index 0000000000..b8612504b1 --- /dev/null +++ b/keyboards/cozykeys/bloomer/bloomer.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "bloomer.h" diff --git a/keyboards/crkbd/rev1/common/common.h b/keyboards/cozykeys/bloomer/bloomer.h similarity index 79% rename from keyboards/crkbd/rev1/common/common.h rename to keyboards/cozykeys/bloomer/bloomer.h index 71779e2e0f..f85b80889f 100644 --- a/keyboards/crkbd/rev1/common/common.h +++ b/keyboards/cozykeys/bloomer/bloomer.h @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Paul Ewing This 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,10 +14,10 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once -#include "rev1.h" - -#define has_usb() is_keyboard_master() -#define is_master is_keyboard_master() +#if defined(KEYBOARD_cozykeys_bloomer_v2) + #include "v2.h" +#elif defined(KEYBOARD_cozykeys_bloomer_v3) + #include "v3.h" +#endif diff --git a/keyboards/keebio/iris/keymaps/lewisridden/config.h b/keyboards/cozykeys/bloomer/config.h similarity index 50% rename from keyboards/keebio/iris/keymaps/lewisridden/config.h rename to keyboards/cozykeys/bloomer/config.h index 6d96b31bd9..0f285b4d0e 100644 --- a/keyboards/keebio/iris/keymaps/lewisridden/config.h +++ b/keyboards/cozykeys/bloomer/config.h @@ -1,5 +1,5 @@ /* -Copyright 2017 Danny Nguyen +Copyright 2021 Paul Ewing This 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,28 +14,40 @@ GNU General 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 +#pragma once #include "config_common.h" -/* Use I2C or Serial, not both */ +// USB Device descriptor parameter +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1191 +#define MANUFACTURER CozyKeys +#define PRODUCT Bloomer -//#define USE_SERIAL -#define USE_I2C +// Key matrix size +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#undef RGBLED_NUM -#define RGBLIGHT_ANIMATIONS +// Enable RGB backlight +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN D7 #define RGBLED_NUM 12 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 - +#define RGBLIGHT_LIMIT_VAL 255 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_BREATHE_TABLE_SIZE 256 +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 +#define RGBLIGHT_EFFECT_BREATHE_MAX 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 + diff --git a/keyboards/cozykeys/bloomer/readme.md b/keyboards/cozykeys/bloomer/readme.md new file mode 100644 index 0000000000..0232dff1a5 --- /dev/null +++ b/keyboards/cozykeys/bloomer/readme.md @@ -0,0 +1,23 @@ +# Bloomer + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg) + +- Keyboard Maintainer: [Paul Ewing](https://github.com/pcewing) +- Hardware Supported: ItsyBitsy 32u4 5V 16MHz +- Hardware Availability: [Bloomer Repository](https://github.com/cozykeys/bloomer) + +Make example for this keyboard (after setting up your build environment): + + make cozykeys/bloomer/v2:default # for Bloomer v2 + make cozykeys/bloomer/v3:default # for Bloomer v3 + +Flashing example for this keyboard: + + make cozykeys/bloomer/v2:default:flash # for Bloomer v2 + make cozykeys/bloomer/v3:default:flash # for Bloomer v3 + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.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 + +See the QMK docs for handwiring a keyboard; there is a section with instructions on how to flash the *.hex* file to the Teensy 2.0 controller. diff --git a/keyboards/cozykeys/bloomer/v2/config.h b/keyboards/cozykeys/bloomer/v2/config.h new file mode 100644 index 0000000000..49fac4d254 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define DEVICE_VER 0x0002 + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/cozykeys/bloomer/v2/info.json b/keyboards/cozykeys/bloomer/v2/info.json new file mode 100644 index 0000000000..1135158117 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/info.json @@ -0,0 +1,100 @@ +{ + "keyboard_name": "Bloomer", + "url": "https://github.com/cozykeys/bloomer", + "maintainer": "pcewing", + "width": 15, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0.868, "y": 0.0, "r": 10 }, + { "label": "k01", "x": 1.853, "y": 0.174, "r": 10 }, + { "label": "k02", "x": 2.856, "y": 0.244, "r": 10 }, + { "label": "k03", "x": 3.896, "y": 0.107, "r": 10 }, + { "label": "k04", "x": 4.826, "y": 0.591, "r": 10 }, + { "label": "k05", "x": 5.765, "y": 1.023, "r": 10 }, + { "label": "k06", "x": 7.031, "y": 0.724, "r": 0 }, + { "label": "k07", "x": 8.031, "y": 0.46, "r": 0 }, + { "label": "k08", "x": 9.031, "y": 0.724, "r": 0 }, + { "label": "k09", "x": 10.297, "y": 1.023, "r": -10 }, + { "label": "k10", "x": 11.236, "y": 0.591, "r": -10 }, + { "label": "k11", "x": 12.166, "y": 0.107, "r": -10 }, + { "label": "k12", "x": 13.196, "y": 0.192, "r": -10 }, + { "label": "k13", "x": 14.208, "y": 0.174, "r": -10 }, + { "label": "k14", "x": 15.193, "y": 0.0, "r": -10 }, + { "label": "k15", "x": 0.695, "y": 0.985, "r": 10 }, + { "label": "k16", "x": 1.679, "y": 1.158, "r": 10 }, + { "label": "k17", "x": 2.682, "y": 1.229, "r": 10 }, + { "label": "k18", "x": 3.722, "y": 1.092, "r": 10 }, + { "label": "k19", "x": 4.652, "y": 1.576, "r": 10 }, + { "label": "k20", "x": 5.591, "y": 2.008, "r": 10 }, + { "label": "k21", "x": 7.031, "y": 2.249, "r": 0 }, + { "label": "k22", "x": 8.031, "y": 1.985, "r": 0 }, + { "label": "k23", "x": 9.031, "y": 2.249, "r": 0 }, + { "label": "k24", "x": 10.47, "y": 2.008, "r": -10 }, + { "label": "k25", "x": 11.409, "y": 1.576, "r": -10 }, + { "label": "k26", "x": 12.34, "y": 1.092, "r": -10 }, + { "label": "k27", "x": 13.37, "y": 1.177, "r": -10 }, + { "label": "k28", "x": 14.382, "y": 1.158, "r": -10 }, + { "label": "k29", "x": 15.367, "y": 0.985, "r": -10 }, + { "label": "k30", "x": 0.521, "y": 1.97, "r": 10 }, + { "label": "k31", "x": 1.506, "y": 2.143, "r": 10 }, + { "label": "k32", "x": 2.509, "y": 2.214, "r": 10 }, + { "label": "k33", "x": 3.548, "y": 2.077, "r": 10 }, + { "label": "k34", "x": 4.478, "y": 2.561, "r": 10 }, + { "label": "k35", "x": 5.418, "y": 2.993, "r": 10 }, + { "label": "k36", "x": 7.031, "y": 3.249, "r": 0 }, + { "label": "k37", "x": 8.031, "y": 2.985, "r": 0 }, + { "label": "k38", "x": 9.031, "y": 3.249, "r": 0 }, + { "label": "k39", "x": 10.644, "y": 2.993, "r": -10 }, + { "label": "k40", "x": 11.583, "y": 2.561, "r": -10 }, + { "label": "k41", "x": 12.513, "y": 2.077, "r": -10 }, + { "label": "k42", "x": 13.544, "y": 2.162, "r": -10 }, + { "label": "k43", "x": 14.556, "y": 2.143, "r": -10 }, + { "label": "k44", "x": 15.541, "y": 1.97, "r": -10 }, + { "label": "k45", "x": 0.347, "y": 2.954, "r": 10 }, + { "label": "k46", "x": 1.332, "y": 3.128, "r": 10 }, + { "label": "k47", "x": 2.335, "y": 3.198, "r": 10 }, + { "label": "k48", "x": 3.375, "y": 3.062, "r": 10 }, + { "label": "k49", "x": 4.305, "y": 3.546, "r": 10 }, + { "label": "k50", "x": 5.244, "y": 3.978, "r": 10 }, + { "label": "k51", "x": 10.818, "y": 3.978, "r": -10 }, + { "label": "k52", "x": 11.757, "y": 3.546, "r": -10 }, + { "label": "k53", "x": 12.687, "y": 3.062, "r": -10 }, + { "label": "k54", "x": 13.717, "y": 3.147, "r": -10 }, + { "label": "k55", "x": 14.729, "y": 3.128, "r": -10 }, + { "label": "k56", "x": 15.714, "y": 2.954, "r": -10 }, + { "label": "k57", "x": 0.174, "y": 3.939, "r": 10 }, + { "label": "k58", "x": 1.158, "y": 4.113, "r": 10 }, + { "label": "k59", "x": 2.161, "y": 4.183, "r": 10 }, + { "label": "k60", "x": 3.201, "y": 4.047, "r": 10 }, + { "label": "k61", "x": 4.131, "y": 4.53, "r": 10 }, + { "label": "k62", "x": 5.07, "y": 4.963, "r": 10 }, + { "label": "k63", "x": 7.031, "y": 4.984, "r": 0 }, + { "label": "k64", "x": 8.031, "y": 4.51, "r": 0 }, + { "label": "k65", "x": 9.031, "y": 4.984, "r": 0 }, + { "label": "k66", "x": 10.991, "y": 4.963, "r": -10 }, + { "label": "k67", "x": 11.93, "y": 4.53, "r": -10 }, + { "label": "k68", "x": 12.861, "y": 4.047, "r": -10 }, + { "label": "k69", "x": 13.891, "y": 4.131, "r": -10 }, + { "label": "k70", "x": 14.903, "y": 4.113, "r": -10 }, + { "label": "k71", "x": 15.888, "y": 3.939, "r": -10 }, + { "label": "k72", "x": 0.0, "y": 4.924, "r": 10 }, + { "label": "k73", "x": 0.985, "y": 5.098, "r": 10 }, + { "label": "k74", "x": 1.988, "y": 5.168, "r": 10 }, + { "label": "k75", "x": 3.027, "y": 5.031, "r": 10 }, + { "label": "k76", "x": 3.957, "y": 5.515, "r": 10 }, + { "label": "k77", "x": 4.897, "y": 5.947, "r": 10 }, + { "label": "k78", "x": 5.883, "y": 6.115, "r": 10 }, + { "label": "k79", "x": 8.031, "y": 5.51, "r": 0 }, + { "label": "k80", "x": 10.179, "y": 6.115, "r": -10 }, + { "label": "k81", "x": 11.165, "y": 5.947, "r": -10 }, + { "label": "k82", "x": 12.104, "y": 5.515, "r": -10 }, + { "label": "k83", "x": 13.034, "y": 5.031, "r": -10 }, + { "label": "k84", "x": 14.065, "y": 5.116, "r": -10 }, + { "label": "k85", "x": 15.077, "y": 5.098, "r": -10 }, + { "label": "k86", "x": 16.062, "y": 4.924, "r": -10 } + ] + } + } +} diff --git a/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c b/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c new file mode 100644 index 0000000000..e5eeaa8530 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 bloomer_layers { + DEFAULT, + FN +}; + +#define RGB_N RGB_MOD // Rotate to next RGB mode +#define RGB_P RGB_RMOD // Rotate to next RGB mode + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[DEFAULT] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PSCR, KC_SLCK, KC_PAUS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS, KC_HOME, KC_PGUP, 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_CAPS, KC_END, KC_PGDN, 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_LEFT, KC_UP, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_DOWN, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL +), + +[FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, RGB_P, RGB_TOG, RGB_N, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_M_P, _______, _______, _______, _______, _______, _______, _______ +) + +}; + diff --git a/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md b/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md new file mode 100644 index 0000000000..7595b5aa35 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# CozyKeys Bloomer v2 Default Keymap + +## Default Layer + +![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_default.svg) + +## Function Layer + +![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_fn.svg) + diff --git a/keyboards/cozykeys/bloomer/v2/readme.md b/keyboards/cozykeys/bloomer/v2/readme.md new file mode 100644 index 0000000000..ac4ab9c93e --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/readme.md @@ -0,0 +1,5 @@ +# CozyKeys Bloomer v2 + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg) + +For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory. diff --git a/keyboards/cozykeys/bloomer/v2/rules.mk b/keyboards/cozykeys/bloomer/v2/rules.mk new file mode 100644 index 0000000000..d23e955126 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.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/v2/v2.c b/keyboards/cozykeys/bloomer/v2/v2.c new file mode 100644 index 0000000000..47dd093734 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/v2.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public 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/cozykeys/bloomer/v2/v2.h b/keyboards/cozykeys/bloomer/v2/v2.h new file mode 100644 index 0000000000..c6575cd4e6 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/v2.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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( \ + 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 \ +) \ +{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \ +/* r0 */ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14 }, \ +/* r1 */ { k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ +/* r2 */ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44 }, \ +/* r3 */ { k45, k46, k47, k48, k49, k50, ___, ___, ___, k51, k52, k53, k54, k55, k56 }, \ +/* r4 */ { k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71 }, \ +/* r5 */ { k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86 }, \ +} diff --git a/keyboards/cozykeys/bloomer/v3/config.h b/keyboards/cozykeys/bloomer/v3/config.h new file mode 100644 index 0000000000..4bb291be56 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define DEVICE_VER 0x0003 + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/cozykeys/bloomer/v3/info.json b/keyboards/cozykeys/bloomer/v3/info.json new file mode 100644 index 0000000000..6d547acf1f --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Bloomer", + "url": "https://github.com/cozykeys/bloomer", + "maintainer": "pcewing", + "width": 15, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0.868, "y": 0.0, "r": 10 }, + { "label": "k01", "x": 1.853, "y": 0.174, "r": 10 }, + { "label": "k02", "x": 2.856, "y": 0.244, "r": 10 }, + { "label": "k03", "x": 3.896, "y": 0.107, "r": 10 }, + { "label": "k04", "x": 4.826, "y": 0.591, "r": 10 }, + { "label": "k05", "x": 5.765, "y": 1.023, "r": 10 }, + { "label": "k06", "x": 10.507, "y": 1.023, "r": -10 }, + { "label": "k07", "x": 11.446, "y": 0.591, "r": -10 }, + { "label": "k08", "x": 12.376, "y": 0.107, "r": -10 }, + { "label": "k09", "x": 13.406, "y": 0.192, "r": -10 }, + { "label": "k10", "x": 14.418, "y": 0.174, "r": -10 }, + { "label": "k11", "x": 15.403, "y": 0.0, "r": -10 }, + { "label": "k12", "x": 0.695, "y": 0.985, "r": 10 }, + { "label": "k13", "x": 1.679, "y": 1.158, "r": 10 }, + { "label": "k14", "x": 2.682, "y": 1.229, "r": 10 }, + { "label": "k15", "x": 3.722, "y": 1.092, "r": 10 }, + { "label": "k16", "x": 4.652, "y": 1.576, "r": 10 }, + { "label": "k17", "x": 5.591, "y": 2.008, "r": 10 }, + { "label": "k18", "x": 10.68, "y": 2.008, "r": -10 }, + { "label": "k19", "x": 11.619, "y": 1.576, "r": -10 }, + { "label": "k20", "x": 12.55, "y": 1.092, "r": -10 }, + { "label": "k21", "x": 13.58, "y": 1.177, "r": -10 }, + { "label": "k22", "x": 14.592, "y": 1.158, "r": -10 }, + { "label": "k23", "x": 15.577, "y": 0.985, "r": -10 }, + { "label": "k24", "x": 0.521, "y": 1.97, "r": 10 }, + { "label": "k25", "x": 1.506, "y": 2.143, "r": 10 }, + { "label": "k26", "x": 2.509, "y": 2.214, "r": 10 }, + { "label": "k27", "x": 3.548, "y": 2.077, "r": 10 }, + { "label": "k28", "x": 4.478, "y": 2.561, "r": 10 }, + { "label": "k29", "x": 5.418, "y": 2.993, "r": 10 }, + { "label": "k30", "x": 6.402, "y": 3.167, "r": 10 }, + { "label": "k31", "x": 7.636, "y": 3.217, "r": 0 }, + { "label": "k32", "x": 8.636, "y": 3.217, "r": 0 }, + { "label": "k33", "x": 9.869, "y": 3.167, "r": -10 }, + { "label": "k34", "x": 10.854, "y": 2.993, "r": -10 }, + { "label": "k35", "x": 11.793, "y": 2.561, "r": -10 }, + { "label": "k36", "x": 12.723, "y": 2.077, "r": -10 }, + { "label": "k37", "x": 13.754, "y": 2.162, "r": -10 }, + { "label": "k38", "x": 14.766, "y": 2.143, "r": -10 }, + { "label": "k39", "x": 15.75, "y": 1.97, "r": -10 }, + { "label": "k40", "x": 0.347, "y": 2.954, "r": 10 }, + { "label": "k41", "x": 1.332, "y": 3.128, "r": 10 }, + { "label": "k42", "x": 2.335, "y": 3.198, "r": 10 }, + { "label": "k43", "x": 3.375, "y": 3.062, "r": 10 }, + { "label": "k44", "x": 4.305, "y": 3.546, "r": 10 }, + { "label": "k45", "x": 5.244, "y": 3.978, "r": 10 }, + { "label": "k46", "x": 6.229, "y": 4.151, "r": 10 }, + { "label": "k47", "x": 7.636, "y": 4.217, "r": 0 }, + { "label": "k48", "x": 8.636, "y": 4.217, "r": 0 }, + { "label": "k49", "x": 10.043, "y": 4.151, "r": -10 }, + { "label": "k50", "x": 11.027, "y": 3.978, "r": -10 }, + { "label": "k51", "x": 11.967, "y": 3.546, "r": -10 }, + { "label": "k52", "x": 12.897, "y": 3.062, "r": -10 }, + { "label": "k53", "x": 13.927, "y": 3.147, "r": -10 }, + { "label": "k54", "x": 14.939, "y": 3.128, "r": -10 }, + { "label": "k55", "x": 15.924, "y": 2.954, "r": -10 }, + { "label": "k56", "x": 0.174, "y": 3.939, "r": 10 }, + { "label": "k57", "x": 1.158, "y": 4.113, "r": 10 }, + { "label": "k58", "x": 2.161, "y": 4.183, "r": 10 }, + { "label": "k59", "x": 3.201, "y": 4.047, "r": 10 }, + { "label": "k60", "x": 4.131, "y": 4.53, "r": 10 }, + { "label": "k61", "x": 5.07, "y": 4.963, "r": 10 }, + { "label": "k62", "x": 6.055, "y": 5.136, "r": 10 }, + { "label": "k63", "x": 7.136, "y": 5.217, "r": 0 }, + { "label": "k64", "x": 8.136, "y": 5.217, "r": 0 }, + { "label": "k65", "x": 9.136, "y": 5.217, "r": 0 }, + { "label": "k66", "x": 10.216, "y": 5.136, "r": -10 }, + { "label": "k67", "x": 11.201, "y": 4.963, "r": -10 }, + { "label": "k68", "x": 12.14, "y": 4.53, "r": -10 }, + { "label": "k69", "x": 13.07, "y": 4.047, "r": -10 }, + { "label": "k70", "x": 14.101, "y": 4.131, "r": -10 }, + { "label": "k71", "x": 15.113, "y": 4.113, "r": -10 }, + { "label": "k72", "x": 16.098, "y": 3.939, "r": -10 }, + { "label": "k73", "x": 0.0, "y": 4.924, "r": 10 }, + { "label": "k74", "x": 0.985, "y": 5.098, "r": 10 }, + { "label": "k75", "x": 1.988, "y": 5.168, "r": 10 }, + { "label": "k76", "x": 3.027, "y": 5.031, "r": 10 }, + { "label": "k77", "x": 3.957, "y": 5.515, "r": 10 }, + { "label": "k78", "x": 4.897, "y": 5.947, "r": 10 }, + { "label": "k79", "x": 5.881, "y": 6.121, "r": 10 }, + { "label": "k80", "x": 7.136, "y": 6.217, "r": 0 }, + { "label": "k81", "x": 8.136, "y": 6.217, "r": 0 }, + { "label": "k82", "x": 9.136, "y": 6.217, "r": 0 }, + { "label": "k83", "x": 10.39, "y": 6.121, "r": -10 }, + { "label": "k84", "x": 11.375, "y": 5.947, "r": -10 }, + { "label": "k85", "x": 12.314, "y": 5.515, "r": -10 }, + { "label": "k86", "x": 13.244, "y": 5.031, "r": -10 }, + { "label": "k87", "x": 14.274, "y": 5.116, "r": -10 }, + { "label": "k88", "x": 15.287, "y": 5.098, "r": -10 }, + { "label": "k89", "x": 16.271, "y": 4.924, "r": -10 } + ] + } + } +} diff --git a/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c b/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c new file mode 100644 index 0000000000..7aad9cec61 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 bloomer_layers { + DEFAULT, + FN, +}; + +#define RGB_N RGB_MOD // Rotate to next RGB mode +#define RGB_P RGB_RMOD // Rotate to next RGB mode + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[DEFAULT] = 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_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_LBRC, KC_PSCR, KC_PAUS, 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_PGUP, KC_SLCK, KC_NLCK, KC_HOME, 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_CAPS, KC_UP, KC_INS, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL +), + +[FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, RGB_M_P, _______, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, RGB_P, RGB_N, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______ +), + +}; + diff --git a/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md b/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md new file mode 100644 index 0000000000..b8a37f24c5 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# CozyKeys Bloomer v3 Default Keymap + +## Default Layer + +![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_default.svg) + +## Function Layer + +![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_fn.svg) + diff --git a/keyboards/cozykeys/bloomer/v3/readme.md b/keyboards/cozykeys/bloomer/v3/readme.md new file mode 100644 index 0000000000..b056b321d2 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/readme.md @@ -0,0 +1,5 @@ +# CozyKeys Bloomer v3 + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer-v3/bloomer-v3-angle_800x800.jpg) + +For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory. diff --git a/keyboards/cozykeys/bloomer/v3/rules.mk b/keyboards/cozykeys/bloomer/v3/rules.mk new file mode 100644 index 0000000000..806a19af38 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/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 # 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 = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cozykeys/bloomer/v3/v3.c b/keyboards/cozykeys/bloomer/v3/v3.c new file mode 100644 index 0000000000..080cacd791 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/v3.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public 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" diff --git a/keyboards/cozykeys/bloomer/v3/v3.h b/keyboards/cozykeys/bloomer/v3/v3.h new file mode 100644 index 0000000000..3515ef84ce --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/v3.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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, \ + 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 \ +) \ +{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \ +/* r0 */ { k00, k01, k02, k03, k04, k05, k31, k63, k32, k06, k07, k08, k09, k10, k11 }, \ +/* r1 */ { k12, k13, k14, k15, k16, k17, k47, k80, k48, k18, k19, k20, k21, k22, k23 }, \ +/* r2 */ { k24, k25, k26, k27, k28, k29, k30, k64, k33, k34, k35, k36, k37, k38, k39 }, \ +/* r3 */ { k40, k41, k42, k43, k44, k45, k46, k81, k49, k50, k51, k52, k53, k54, k55 }, \ +/* r4 */ { k56, k57, k58, k59, k60, k61, k62, k65, k66, k67, k68, k69, k70, k71, k72 }, \ +/* r5 */ { k73, k74, k75, k76, k77, k78, k79, k82, k83, k84, k85, k86, k87, k88, k89 } \ +} diff --git a/keyboards/crazy_keyboard_68/config.h b/keyboards/crazy_keyboard_68/config.h index 2558e75791..e1304e18ed 100644 --- a/keyboards/crazy_keyboard_68/config.h +++ b/keyboards/crazy_keyboard_68/config.h @@ -52,6 +52,9 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + //#define BACKLIGHT_PIN B7 //#define BACKLIGHT_LEVELS 3 //#define BACKLIGHT_BREATHING diff --git a/keyboards/crazy_keyboard_68/crazy_keyboard_68.c b/keyboards/crazy_keyboard_68/crazy_keyboard_68.c index f4f8515b7c..cbea93fb85 100644 --- a/keyboards/crazy_keyboard_68/crazy_keyboard_68.c +++ b/keyboards/crazy_keyboard_68/crazy_keyboard_68.c @@ -15,22 +15,3 @@ */ #include "crazy_keyboard_68.h" - -void matrix_init_kb(void) { - led_init_ports(); - - matrix_init_user(); -} - -void led_init_ports(void) { - // Caps lock pin - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B0, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/crbn/crbn.c b/keyboards/crbn/crbn.c index 1da726b9c7..866f2d4265 100644 --- a/keyboards/crbn/crbn.c +++ b/keyboards/crbn/crbn.c @@ -15,10 +15,12 @@ */ #include "crbn.h" /* Encoder setting. only one encoder despite 4 possible spots */ -__attribute__((weak)) void 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; if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } + return true; } diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c index ab1381a39b..6220c9822a 100644 --- a/keyboards/crkbd/crkbd.c +++ b/keyboards/crkbd/crkbd.c @@ -20,7 +20,7 @@ along with this program. If not, see . #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { // Left {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}}, {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}}, @@ -33,4 +33,3 @@ const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}} }; #endif - diff --git a/keyboards/crkbd/keymaps/like_jis/config.h b/keyboards/crkbd/keymaps/armand1m/config.h similarity index 60% rename from keyboards/crkbd/keymaps/like_jis/config.h rename to keyboards/crkbd/keymaps/armand1m/config.h index a061b4fb09..405d329640 100644 --- a/keyboards/crkbd/keymaps/like_jis/config.h +++ b/keyboards/crkbd/keymaps/armand1m/config.h @@ -28,18 +28,24 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED - #define USE_SERIAL_PD2 -#define PREVENT_STUCK_MODIFIERS -#define TAPPING_FORCE_HOLD -#define TAPPING_TERM 250 +// #define TAPPING_FORCE_HOLD +// #define PERMISSIVE_HOLD +#define TAPPING_TERM 300 +#define IGNORE_MOD_TAP_INTERRUPT -#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 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define ONESHOT_TAP_TOGGLE 3 /* 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 OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/armand1m/keymap.c b/keyboards/crkbd/keymaps/armand1m/keymap.c new file mode 100644 index 0000000000..190cb4cf37 --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/keymap.c @@ -0,0 +1,136 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Armando Magalhaes <@armand1m> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 { + ARROW_FUNCTION = SAFE_RANGE +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ARROW_FUNCTION: + if (record->event.pressed) { + SEND_STRING("() => {}"); + } else { + SEND_STRING(SS_TAP(X_LEFT) SS_TAP(X_ENTER)); + } + return false; + } + + return true; +}; + +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, + LT(1, KC_ESC), LT(2, KC_A), LT(3, KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + OSM(MOD_LSFT), MT(MOD_LCTL, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RCTL, KC_SLSH), OSM(MOD_RSFT), + KC_LALT, LGUI(KC_SPACE), LGUI_T(KC_SPC), MT(MOD_RSFT, KC_ENT), MO(2), KC_RALT + ), + + [1] = LAYOUT_split_3x6_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, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [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, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, ARROW_FUNCTION, KC_LT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GT, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_split_3x6_3( + _______, XXXXXXX, XXXXXXX, XXXXXXX, LALT(LSFT(KC_0)), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LGUI(LSFT(KC_4)), XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LGUI(KC_MINS), LGUI(KC_PLUS), XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______ + ), +}; + +#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; +} + +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_amsterdam_flag(void) { + // 'Flag_of_Amsterdam', 128x32px + static const char PROGMEM amsterdam_flag[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf8, 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, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 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, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, + 0x3f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xfc, 0xf8, 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, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x0f, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(amsterdam_flag, sizeof(amsterdam_flag)); +} + +void oled_task_user(void) { + oled_render_amsterdam_flag(); +} +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/armand1m/readme.md b/keyboards/crkbd/keymaps/armand1m/readme.md new file mode 100644 index 0000000000..0d10ae17d0 --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/readme.md @@ -0,0 +1,64 @@ +# armand1m crkbd layout + +This is the personal layout for [@armand1m](https://go.d1m.dev/github) + +This layout is heavily inspired in my personal Moonlander layout, optimized for my own personal usage. + +As of the date of this writing, my environment runs OS X Big Sur with yabai and skhd to provide an window tiling management experience similar to what i3wm offers to Linux, which means that I often use the `alt` keys. + +I am a huge fan of ModTaps, so this layout will contain some of those to allow for a better experience in such a small keyboard like the crkbd. + +## Layout + +You can find `json` files for http://www.keyboard-layout-editor.com/ in the keymap folder. + +Here are some screenshots for convenience: + +Base Layer:
+Base Layer + +Numbers Layer:
+Numbers Layer + +Symbols Layer:
+Symbols Layer + +## Choices + +Every keymap is pretty unique and tailored to suit it's main creators needs. Here are some of my choices for the keys and their explanations: + + - Left thumb acts as Space when tapping but as Command when holding: this makes my life so much easier in OS X. Having command reachable all the time just feels right to me and Mod Taps help me a lot on this. + + - Right thumb acts as Enter when tapping but as Right Shift when holding: this is more of an experiment. I usually use shift on my pinkies. It is an interesting feature but I often forget about it. + + - Esc lives in the home row, before A. It also acts as a layer toggle to the numbers layer when held. Having the LT to the numbers layer here allows me to actually reach the number 1 pretty nicely and other numbers on the left hand pretty easily. + + - Keys on the home row are used to switch to layers, so "A" goes to layer 2 when held. I started making this in the Moonlander and migrated the practice, but still sometimes I use the MO 2 on the right thumb. + + - One Shot Keys are enabled for the shifts on the pinkies. If you press it twice: it will lock on shift until pressed again (pretty much like caps lock). These are handy when you're typing and just don't want to hold shift to have a capitalized word. + +## Usage + +In case you have `qmk` installed: + +```sh +qmk compile -kb crkbd -km armand1m +``` + +The compiled .hex file should be available in `qmk_firmware/.build` + +You can also trigger a build and flash automatically by running the following command: + +```sh +qmk flash -kb crkbd -km armand1m +``` + +If you built your crkbd with an Elite-C microcontroller, you probably want to use a DFU bootloader: + +```sh +qmk flash -kb crkbd -km armand1m -bl dfu +``` + +## Credits + + - Armando Magalhaes [(github)](https://go.d1m.dev/github) diff --git a/keyboards/crkbd/keymaps/armand1m/rules.mk b/keyboards/crkbd/keymaps/armand1m/rules.mk new file mode 100644 index 0000000000..9444b88d51 --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/rules.mk @@ -0,0 +1 @@ +OLED_DRIVER_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c index 27e3c84061..0bc4591263 100644 --- a/keyboards/crkbd/keymaps/default/keymap.c +++ b/keyboards/crkbd/keymaps/default/keymap.c @@ -17,6 +17,7 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_split_3x6_3( @@ -71,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef OLED_DRIVER_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_master) { + if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } return rotation; @@ -157,7 +158,7 @@ void oled_render_logo(void) { } void oled_task_user(void) { - if (is_master) { + if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { diff --git a/keyboards/crkbd/keymaps/devdev/config.h b/keyboards/crkbd/keymaps/devdev/config.h new file mode 100644 index 0000000000..793c7b020b --- /dev/null +++ b/keyboards/crkbd/keymaps/devdev/config.h @@ -0,0 +1,117 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +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 . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define CUSTOM_FONT + +#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 200 + +#define RGBLIGHT_SLEEP +// +#define RGBLIGHT_LAYERS + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + + //#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 RGBLED_NUM 54 + //#define RGBLED_SPLIT 27 + //#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 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#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 true // 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 + +/* 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 diff --git a/keyboards/crkbd/keymaps/devdev/keymap.c b/keyboards/crkbd/keymaps/devdev/keymap.c new file mode 100644 index 0000000000..4da3fcaa64 --- /dev/null +++ b/keyboards/crkbd/keymaps/devdev/keymap.c @@ -0,0 +1,410 @@ +/* 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 . + */ + +// CRKBD + +#include QMK_KEYBOARD_H + + +char layer_state_str[24]; + + + enum userspace_layers { + _DEFAULTS = 0, + _COLEMAK = 0, + _COLEMAKDH, + _QWERTY, + _NUM, + _SYM, + _COMMAND, + _NUMPAD, + _SWITCH, + _MOVE, + +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 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 + //`--------------------------' `--------------------------' + ), + + // qwerty + [_QWERTY] = LAYOUT( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SWITCH,KC_Y), KC_U, KC_I, KC_O, KC_P, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_NUMPAD,KC_SCLN), KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + 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 + //`--------------------------' `--------------------------' + ), + + + + // 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, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_COMMAND), KC_TRNS + //`--------------------------' `--------------------------' + ), + + // 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, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, MO(_COMMAND), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' + ), + + // 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, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, DF(1), DF(0), C(G(KC_LEFT)), KC_NO, KC_NO, C(G(KC_RGHT)), KC_NO, KC_NO, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + 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 + //`--------------------------' `--------------------------' + ), + + // 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 + [_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, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + 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 + [_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 + //`--------------------------' `--------------------------' + ) + +}; + + +// 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 +const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 10, HSV_AZURE} +); + +// _COLEMAKDH, +// 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 +const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 10, HSV_TEAL} +); +// _SYMBOL, +// 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 +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 +const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS( +{0, 10, HSV_ORANGE} +); +const rgblight_segment_t PROGMEM layer_numpad_rh_lights[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 10, HSV_ORANGE}, + {10, 5, HSV_BLUE}, + {15, 3, HSV_BLUE}, + {18, 3, HSV_BLUE} +); + +// _MOVE, +// 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( + {0, 6, HSV_GREEN}, + {9, 2, HSV_GREEN}, + {17, 2, HSV_GREEN}, + {23, 2, HSV_GREEN} +); + + +// 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_colemakdh_lights, + layer_num_lights,// overrides layer 1 + layer_symbol_lights, + layer_command_lights, + layer_numpad_lights, + layer_numpad_rh_lights, + layer_move_lights, + layer_switcher_lights // Overrides other layers +); + +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 + +} + + +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)); + rgblight_set_layer_state(5, layer_state_cmp(state, _NUMPAD)); + if (!is_keyboard_master()) + rgblight_set_layer_state(6, layer_state_cmp(state, _NUMPAD)); + rgblight_set_layer_state(7, layer_state_cmp(state, _MOVE)); + rgblight_set_layer_state(8, layer_state_cmp(state, _SWITCH)); + return state; +} + +/* +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} +*/ + + + +//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h +#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; +} +// When add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +const char *read_keylog(void); +const char *read_keylogs(void); + + +const char *read_mode_icon(bool swap); +// const char *read_host_led_state(void); +// void set_timelog(void); +// const char *read_timelog(void); + + +void oled_render_layer_state(void) { + char string [24]; + switch (get_highest_layer(default_layer_state|layer_state)) + { + case _QWERTY: + oled_write_ln_P(PSTR("Layer: QWERTY"),false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Layer: COLEMAK"),false); + break; + case _COLEMAKDH: + oled_write_ln_P(PSTR("Layer: COLEMAKDH"),false); + break; + case _NUM: + oled_write_ln_P(PSTR("Layer: Numbers"),false); + break; + case _SYM: + oled_write_ln_P(PSTR("Layer: Symbols"),false); + break; + case _COMMAND: + oled_write_ln_P(PSTR("Layer: Command"),false); + break; + case _NUMPAD: + oled_write_ln_P(PSTR("Layer: Numpad"),false); + break; + case _MOVE: + oled_write_ln_P(PSTR("Layer: Movement"),false); + break; + case _SWITCH: + oled_write_ln_P(PSTR("Layer: Layer Switch"),false); + break; + default: + snprintf(string, sizeof(string), "%ld",layer_state); + oled_write_P(PSTR("Layer: Undef-"),false); + oled_write_ln(string, false); + } + } + +/* +void matrix_render_user(struct CharacterMatrix *matrix) { + if (has_usb()) { + // If you want to change the display of OLED, you need to change here + matrix_write_ln(matrix, read_layer_state()); + matrix_write_ln(matrix, read_keylog()); + //matrix_write_ln(matrix, read_keylogs()); + //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); + //matrix_write_ln(matrix, read_host_led_state()); + //matrix_write_ln(matrix, read_timelog()); + } else { + matrix_write(matrix, read_logo()); + } +} +*/ + +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); +} + +void oled_task_user(void) { + if (is_master) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} +#endif // OLED_DRIVER_ENABLE \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/devdev/rules.mk b/keyboards/crkbd/keymaps/devdev/rules.mk new file mode 100644 index 0000000000..58e90c8116 --- /dev/null +++ b/keyboards/crkbd/keymaps/devdev/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +RGBLIGHT_ENABLE = yes +OLED_DRIVER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c index a2e799e198..9a48ee2595 100644 --- a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c +++ b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c @@ -1,15 +1,10 @@ #include QMK_KEYBOARD_H -#include "split_util.h" - -extern keymap_config_t keymap_config; #ifdef RGBLIGHT_ENABLE //Following line allows macro to read current RGB settings extern rgblight_config_t rgblight_config; #endif -extern uint8_t is_master; - #define LOWER MO(_LOWER) #define RAISE MO(_RAISE) #define ESC_CTL LCTL_T(KC_ESC) @@ -26,7 +21,7 @@ enum crkbd_layers { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DVORAK] = LAYOUT( \ + [_DVORAK] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------. ,-----------------------------------------------. KC_TAB, KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,\ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| @@ -39,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), - [_LOWER] = LAYOUT( \ + [_LOWER] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------. ,-----------------------------------------------. KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RIGHT,KC_RPRN,\ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| @@ -51,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`-----------------------' `----------------------' ), - [_RAISE] = LAYOUT( \ + [_RAISE] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------. ,-----------------------------------------------. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,KC_RIGHT, KC_0, \ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| @@ -63,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`-----------------------' `----------------------' ), - [_ADJUST] = LAYOUT( \ + [_ADJUST] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------. ,-----------------------------------------------. RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,_______,RGB_M_T, _______,_______,_______,_______,KC_RIGHT,_______,\ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| @@ -82,7 +77,7 @@ uint32_t layer_state_set_user(uint32_t state) { #ifdef OLED_DRIVER_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!isLeftHand) + if (!is_keyboard_left()) return OLED_ROTATION_180; // flips the display 180 to see it from my side return rotation; } diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h index b8662aca09..8787ba88d3 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/config.h +++ b/keyboards/crkbd/keymaps/edvorakjp/config.h @@ -1,25 +1,25 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once /* Select hand configuration */ -// #define MASTER_LEFT -#define MASTER_RIGHT +#define MASTER_LEFT +// #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED #define SWAP_SCLN // #define TAPPING_FORCE_HOLD #define TAPPING_TERM 300 #define IGNORE_MOD_TAP_INTERRUPT -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 100 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#ifdef RGBLIGHT_ENABLE +# undef RGBLED_NUM +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLED_NUM 27 +# define RGBLIGHT_LIMIT_VAL 100 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +#endif // RGBLIGHT_ENABLE -#endif // CONFIG_USER_H +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c index 32001f22da..5e56da61a9 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c +++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c @@ -1,9 +1,6 @@ #include QMK_KEYBOARD_H #ifdef PROTOCOL_LUFA - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "oled.h" +# include "split_util.h" #endif #include "edvorakjp.h" @@ -14,85 +11,63 @@ * }; */ -#define KC_ KC_TRNS - -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) +#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT + //`--------------------------' `--------------------------' ), - [_LOWER] = LAYOUT_kc( - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //`----+----+------+------+------+----+----| |----+----+------+------+-------+----+----' - , , NO , MAC ,TMB7, - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS + //`--------------------------' `--------------------------' ), - [_RAISE] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - , ,WIN , NO , , - // `-----+----+----' `----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' ) }; - -#ifdef SSD1306OLED -void matrix_init_keymap(void) { - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h -#ifdef MASTER_RIGHT - iota_gfx_init(has_usb()); // turns on the display -#else - iota_gfx_init(!has_usb()); -#endif // MASTER_RIGHT -} - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} -#endif +// clang-format on #ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT uint32_t layer_state_set_keymap(uint32_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_green(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c index cbb43d0615..2e0fed47ee 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.c +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c @@ -1,76 +1,55 @@ +#include #include #include "oled.h" -// NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big. -const char *read_mode_icon(bool windows_mode) { - static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; - static char mode_icon[10]; +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { oled_write(read_host_led_state(), false); } - int mode_number = windows_mode ? 1 : 0; - strcpy(mode_icon, logo[mode_number][0]); +void render_layer_state(void) { + char layer_name[17]; + oled_write_P(PSTR("Layer: "), false); - strcat(mode_icon, "\n"); - strcat(mode_icon, logo[mode_number][1]); - - return mode_icon; + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); + oled_write_ln(layer_name, false); + } } -const char *read_layer_state(void) { - static char layer_state_str[24]; - char layer_name[17]; +void render_logo(void) { oled_write(read_logo(), false); } - switch (biton32(layer_state)) { - case L_BASE: - strcpy(layer_name, "Default"); - break; - case _RAISE: - strcpy(layer_name, "Raise"); - break; - case _LOWER: - strcpy(layer_name, "Lower"); - break; - default: - snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); - } +void render_mode_icon(bool is_windows) { + static const char logo[][2][3] = { + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + }; + static char mode_icon[10]; - strcpy(layer_state_str, "Layer: "); - - strcat(layer_state_str, layer_name); - strcat(layer_state_str, "\n"); - return layer_state_str; + snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]); + oled_write(mode_icon, false); } -const char *read_host_led_state(void) { - static char led_str[24]; - strcpy(led_str, (host_keyboard_leds() & (1<display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - struct CharacterMatrix matrix; - - matrix_clear(&matrix); -#ifdef MASTER_RIGHT - if (!is_master) { -#else - if (is_master) { -#endif // MASTER_RIGHT - matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang())); - matrix_write(&matrix, " "); - matrix_write(&matrix, read_layer_state()); - matrix_write(&matrix, read_host_led_state()); - } else { - matrix_write(&matrix, read_logo()); - } - matrix_update(&display, &matrix); +void oled_task_user(void) { + if (is_keyboard_left()) { + render_mode_icon(!get_enable_kc_lang()); + render_layer_state(); + render_host_led_state(); + } else { + render_logo(); + } } +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h index 896347aea9..d9939c83a0 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.h +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.h @@ -1,24 +1,17 @@ -#ifndef OLED_USER_H -#define OLED_USER_H +#pragma once -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#include "ssd1306.h" #include "edvorakjp.h" -//assign the right code to your layers for OLED display -#define L_BASE 0 - -extern uint8_t is_master; extern bool japanese_mode; // method prototypes defined in crkbd/lib +extern const char *read_host_led_state(void); extern const char *read_logo(void); +extern const char *read_mode_icon(bool swap); -const char *read_mode_icon(bool swap); -const char *read_layer_state(void); -const char *read_host_led_state(void); -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source); -void iota_gfx_task_user(void); - -#endif // OLED_CONFIG_USER_H +void render_host_led_state(void); +void render_layer_state(void); +void render_logo(void); +void render_mode_icon(bool is_windows); +oled_rotation_t oled_init_user(oled_rotation_t rotation); +void oled_task_user(void); diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk index b4f6d2f1f1..111f6de27d 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/rules.mk +++ b/keyboards/crkbd/keymaps/edvorakjp/rules.mk @@ -16,17 +16,13 @@ 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 # Do 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 \ +SRC += ./lib/host_led_state_reader.c \ ./lib/logo_reader.c \ - oled.c \ - # ./lib/rgb_state_reader.c \ - # ./lib/layer_state_reader.c \ - # ./lib/keylogger.c \ - # ./lib/mode_icon_reader.c \ - # ./lib/host_led_state_reader.c \ - # ./lib/timelogger.c \ + ./lib/mode_icon_reader.c \ + oled.c diff --git a/keyboards/crkbd/keymaps/gotham/keymap.c b/keyboards/crkbd/keymaps/gotham/keymap.c index 6657f21ee9..8b864277c8 100644 --- a/keyboards/crkbd/keymaps/gotham/keymap.c +++ b/keyboards/crkbd/keymaps/gotham/keymap.c @@ -11,7 +11,7 @@ // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( + [_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_BSLS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), - [_LOWER] = LAYOUT( + [_LOWER] = 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, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------------------------| |--------------------------| ), - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_split_3x6_3( //|-----------------------------------------------------| |-----------------------------------------------------| KC_ESC, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, KC_AMPR, KC_PIPE, KC_EXLM, KC_ASTR, XXXXXXX, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------------------------| |--------------------------| ), - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_split_3x6_3( //|-----------------------------------------------------| |-----------------------------------------------------| XXXXXXX, CK_RST, CK_DOWN, CK_UP, CK_TOGG, RGB_TOG, MU_TOG, KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| diff --git a/keyboards/crkbd/keymaps/gotham/oled.c b/keyboards/crkbd/keymaps/gotham/oled.c index ac6f236fc6..4d2c10b60a 100644 --- a/keyboards/crkbd/keymaps/gotham/oled.c +++ b/keyboards/crkbd/keymaps/gotham/oled.c @@ -257,7 +257,7 @@ void oled_task_user(void) { } #endif - if (is_master) { + if (is_keyboard_master()) { render_status_main(); } else { render_status_secondary(); diff --git a/keyboards/crkbd/keymaps/hvp/config.h b/keyboards/crkbd/keymaps/hvp/config.h index c5c6d1cba8..f32ec8cfbe 100644 --- a/keyboards/crkbd/keymaps/hvp/config.h +++ b/keyboards/crkbd/keymaps/hvp/config.h @@ -29,6 +29,8 @@ along with this program. If not, see . // #define EE_HANDS #define SSD1306OLED +#define USE_SSD_I2C + #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/hvp/keymap.c b/keyboards/crkbd/keymaps/hvp/keymap.c index 9e1cd5f01c..9e72504653 100644 --- a/keyboards/crkbd/keymaps/hvp/keymap.c +++ b/keyboards/crkbd/keymaps/hvp/keymap.c @@ -1,13 +1,15 @@ #include QMK_KEYBOARD_H #include "hvp.c" +#ifdef SSD1306OLED +# include "ssd1306.h" +# include +#endif #ifdef RGBLIGHT_ENABLE //Following line allows macro to read current RGB settings extern rgblight_config_t rgblight_config; #endif -extern uint8_t is_master; - // 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 @@ -25,7 +27,7 @@ enum custom_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( + [_QWERTY] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. LT(_ADJUST,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC, //|------+------+------+------+------+------| |------+------+------+------+------+------| @@ -33,35 +35,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|------+------+------+------+------+------| |------+------+------+------+------+------| KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,TD(TD3),KC_SFTENT, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - KC_LGUI, LT(1,KC_SPC),MT(MOD_LSFT, KC_SPC), MT(MOD_LSFT,KC_ENT), LT(2,KC_SPC),KC_LALT + KC_LGUI, LT(1,KC_SPC),MT(MOD_LSFT, KC_SPC), MT(MOD_LSFT,KC_ENT), LT(2,KC_SPC),KC_LALT //`--------------------' `--------------------' ), - - [_RAISE] = LAYOUT( + + [_RAISE] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. 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_LBRC, KC_RBRC, KC_BSLS, //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_LCTL, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______ //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT( + [_LOWER] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. 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_DEL, _______, _______, _______, _______, _______, _______,KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TILD, + KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TILD, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______ //`--------------------' `--------------------' ), - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. _______,KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, //|------+------+------+------+------+------| |------+------+------+------+------+------| @@ -69,12 +71,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|------+------+------+------+------+------| |------+------+------+------+------+------| RESET,KC_PSCR,_______,_______,_______,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, KC_VOLD,KC_MPLY, KC_MNXT, KC_VOLU,_______ + _______, KC_VOLD,KC_MPLY, KC_MNXT, KC_VOLU,_______ //`--------------------' `--------------------' ) }; -int RGB_current_mode; +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) { @@ -91,7 +93,7 @@ void matrix_init_user(void) { #endif //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display + iota_gfx_init(); // turns on the display #endif } @@ -115,10 +117,10 @@ void matrix_scan_user(void) { } void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { + if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); + matrix_write(matrix, read_layer_state()); + matrix_write(matrix, read_keylog()); //matrix_write_ln(matrix, read_keylogs()); //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); //matrix_write_ln(matrix, read_host_led_state()); @@ -180,4 +182,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; } return true; -} \ No newline at end of file +} diff --git a/keyboards/crkbd/keymaps/hvp/rules.mk b/keyboards/crkbd/keymaps/hvp/rules.mk index 03859ab633..640a07b305 100644 --- a/keyboards/crkbd/keymaps/hvp/rules.mk +++ b/keyboards/crkbd/keymaps/hvp/rules.mk @@ -1,4 +1,7 @@ +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c + # If you want to change the display of OLED, you need to change here SRC += ./lib/glcdfont.c \ ./lib/rgb_state_reader.c \ @@ -11,4 +14,4 @@ SRC += ./lib/glcdfont.c \ TAP_DANCE_ENABLE = yes EXTRAKEY_ENABLE = yes # Audio control and System control -# LOCAL_GLCDFONT = yes \ No newline at end of file +# LOCAL_GLCDFONT = yes diff --git a/keyboards/crkbd/keymaps/jarred/config.h b/keyboards/crkbd/keymaps/jarred/config.h index ac4c1cc88f..012356241d 100644 --- a/keyboards/crkbd/keymaps/jarred/config.h +++ b/keyboards/crkbd/keymaps/jarred/config.h @@ -29,6 +29,7 @@ along with this program. If not, see . // #define EE_HANDS #define SSD1306OLED +#define USE_SSD_I2C #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/jarred/keymap.c b/keyboards/crkbd/keymaps/jarred/keymap.c index f00a735bfc..b938636c2a 100644 --- a/keyboards/crkbd/keymaps/jarred/keymap.c +++ b/keyboards/crkbd/keymaps/jarred/keymap.c @@ -9,8 +9,6 @@ #include "ssd1306.h" #endif -extern keymap_config_t keymap_config; -extern uint8_t is_master; #ifdef RGBLIGHT_ENABLE //Following line allows macro to read current RGB settings @@ -24,7 +22,7 @@ extern rgblight_config_t rgblight_config; K31, K32, K33, K34, K35, K36 \ ) -#define LAYOUT_crkbd_wrapper(...) LAYOUT(__VA_ARGS__) +#define LAYOUT_crkbd_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) #define QWERTY_4_CRKBD KC_LCTL, MO(_LW), KC_SPC, KC_ENT, MO(_LW), KC_RALT @@ -37,28 +35,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QWERTY_3_12, QWERTY_4_DOX ), - + [_LW] = LAYOUT_crkbd_wrapper( LOWER_1_12, LOWER_2_12, LOWER_3_12, LOWER_4_DOX ), - + [_NV] = LAYOUT_crkbd_wrapper( NAV_1_12, NAV_2_12, NAV_3_12, NAV_4_DOX ), - + [_NP] = LAYOUT_crkbd_wrapper( NUMPAD_1_12, NUMPAD_2_12, NUMPAD_3_12, NUMPAD_4_DOX ), - + [_MS] = LAYOUT_crkbd_wrapper( MOUSE_1_12, MOUSE_2_12, @@ -70,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void matrix_init_user(void) { //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display + iota_gfx_init(); // turns on the display #endif } @@ -87,9 +85,9 @@ char matrix_line_str[24]; const char *read_layer_state(void) { uint8_t layer = biton32(layer_state); - + strcpy(matrix_line_str, "Layer: "); - + switch (layer) { case _QW: @@ -115,9 +113,9 @@ const char *read_layer_state(void) { } const char *read_usb_state(void) { - + strcpy(matrix_line_str, "USB : "); - + switch (USB_DeviceState) { case DEVICE_STATE_Unattached: strcat(matrix_line_str, "Unattached"); @@ -149,10 +147,13 @@ void matrix_scan_user(void) { } void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_usb_state()); - matrix_write_ln(matrix, read_keylogs()); + if (is_keyboard_master()) { + matrix_write(matrix, read_layer_state()); + matrix_write(matrix, "\n"); + matrix_write(matrix, read_usb_state()); + matrix_write(matrix, "\n"); + matrix_write(matrix, read_keylogs()); + matrix_write(matrix, "\n"); } else { matrix_write(matrix, read_logo()); } diff --git a/keyboards/crkbd/keymaps/jarred/rules.mk b/keyboards/crkbd/keymaps/jarred/rules.mk index ab6329f0eb..5806ce0930 100644 --- a/keyboards/crkbd/keymaps/jarred/rules.mk +++ b/keyboards/crkbd/keymaps/jarred/rules.mk @@ -14,7 +14,7 @@ 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. +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 @@ -29,3 +29,6 @@ SRC += ./lib/glcdfont.c \ # ./lib/mode_icon_reader.c \ # ./lib/host_led_state_reader.c \ # ./lib/timelogger.c \ + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h index 6dc468c590..be1777e575 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/config.h +++ b/keyboards/crkbd/keymaps/kidbrazil/config.h @@ -29,7 +29,8 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -//#define SSD1306OLED +#define SSD1306OLED +#define USE_SSD_I2C #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c index 9c950e5373..3ef5998c07 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/keymap.c +++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c @@ -1,9 +1,9 @@ #include QMK_KEYBOARD_H #include "enums.h" #include "layer.h" +#include "lufa.h" // [Init Variables] ----------------------------------------------------------// -extern uint8_t is_master; // Oled timer similar to Drashna's static uint32_t oled_timer = 0; // Boolean to store LED state @@ -13,35 +13,35 @@ bool master_oled_cleared = false; // [Keymaps] -----------------------------------------------------------------// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( + [_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_BSPC, LSFT_T(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, LGUI_T(KC_PGUP), MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), LALT_T(KC_PGDN) ), - [_NUM] = LAYOUT( + [_NUM] = 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, LSFT_T(KC_TAB), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F12, KC_NO, KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_F11, KC_NO, LGUI_T(KC_PGUP), KC_TRNS, KC_SPC, KC_ENT, KC_TRNS, LALT_T(KC_PGDN) ), - [_SYM] = LAYOUT( + [_SYM] = LAYOUT_split_3x6_3( KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, LSFT_T(KC_TAB), RGB_TOG, KC_MPLY, KC_MUTE, KC_VOLU, KC_VOLD, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_LCTL, KC_CALC, KC_MYCM, KC_MPRV, KC_MNXT, TG(_GAME), KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, LGUI_T(KC_PGUP), KC_TRNS, KC_SPC, KC_ENT, KC_TRNS, LALT_T(KC_PGDN) ), - [_GAME] = LAYOUT( + [_GAME] = LAYOUT_split_3x6_3( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, KC_NO, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, KC_PGUP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, MO(_WEAPON), KC_SPC, KC_ENT, KC_TRNS, KC_NO ), - [_WEAPON] = LAYOUT( + [_WEAPON] = LAYOUT_split_3x6_3( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_7, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, @@ -128,7 +128,7 @@ void matrix_scan_user(void) { #ifdef OLED_DRIVER_ENABLE // Init Oled and Rotate.... oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!has_usb()) + if (!is_keyboard_master()) return OLED_ROTATION_180; // flips the display 180 to see it from my side return rotation; } @@ -176,7 +176,7 @@ void 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 - if (is_master && !master_oled_cleared) { + if (is_keyboard_master() && !master_oled_cleared) { // Clear master OLED once so the logo renders properly oled_clear(); master_oled_cleared = true; @@ -202,7 +202,7 @@ void oled_task_user(void) { render_logo(); break; default: - if (is_master) { + if (is_keyboard_master()) { render_master_oled(); } else { render_slave_oled(); diff --git a/keyboards/crkbd/keymaps/kidbrazil/layer.c b/keyboards/crkbd/keymaps/kidbrazil/layer.c index bd04f3b883..fbcebd66ff 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/layer.c +++ b/keyboards/crkbd/keymaps/kidbrazil/layer.c @@ -1,5 +1,6 @@ #include QMK_KEYBOARD_H #include "enums.h" +#include "lufa.h" // Render Blank Space void render_space(void) { diff --git a/keyboards/crkbd/keymaps/kidbrazil/rules.mk b/keyboards/crkbd/keymaps/kidbrazil/rules.mk index a6057a7316..c58f43c2b4 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/rules.mk +++ b/keyboards/crkbd/keymaps/kidbrazil/rules.mk @@ -10,3 +10,6 @@ OLED_DRIVER_ENABLE = yes # If you want to change the display of OLED, you need to change here SRC += logo_reader.c \ layer.c + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/keymaps/like_jis/keymap.c b/keyboards/crkbd/keymaps/like_jis/keymap.c deleted file mode 100644 index 41df6330f5..0000000000 --- a/keyboards/crkbd/keymaps/like_jis/keymap.c +++ /dev/null @@ -1,291 +0,0 @@ -#include QMK_KEYBOARD_H -#include "bootloader.h" -#ifdef PROTOCOL_LUFA - #include "lufa.h" - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "ssd1306.h" -#endif -#include "oled_helper.h" - -extern keymap_config_t keymap_config; - -extern uint8_t is_master; - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layer_number { - _BASE = 0, - _LOWER, - _RAISE, - _ADJUST, -}; - -enum custom_keycodes { - LOWER = SAFE_RANGE, - RAISE, - ADJUST, - KANJI, - RGBRST -}; - -enum tapdances{ - TD_CODO = 0, - // TD_MNUB, -}; - -// Layer Mode aliases -#define KC_LOWER LOWER -#define KC_RAISE RAISE - -#define KC______ KC_TRNS -#define KC_XXXXX KC_NO -#define KC_KANJI KANJI - -#define KC_RST RESET -#define KC_LRST RGBRST -#define KC_LTOG RGB_TOG -#define KC_LHUI RGB_HUI -#define KC_LHUD RGB_HUD -#define KC_LSAI RGB_SAI -#define KC_LSAD RGB_SAD -#define KC_LVAI RGB_VAI -#define KC_LVAD RGB_VAD -#define KC_LMOD RGB_MOD -#define KC_KNRM AG_NORM -#define KC_KSWP AG_SWAP - -#define KC_TBSF LSFT_T(KC_TAB) -// #define KC_SPSF LSFT_T(KC_SPC) -#define KC_ALAP LALT_T(KC_APP) - -#define KC_CODO TD(TD_CODO) -// #define KC_MNUB TD(TD_MNUB) - -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT), - // [TD_MNUB] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, LSFT(KC_RO)), -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, MINS,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - TBSF, A, S, D, F, G, H, J, K, L, UP, ENT,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LCTRL, Z, X, C, V, B, N, M, CODO, LEFT, DOWN, RGHT,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LGUI, LOWER, BSPC, SPC, RAISE, ALAP \ - //`--------------------' `--------------------' - ), - - [_LOWER] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - _____, F1, F2, F3, F4, F5, XXXXX, MINS, EQL, JYEN, LBRC, RBRC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - _____, F6, F7, F8, F9, F10, XXXXX, XXXXX, XXXXX, SCLN, QUOT, BSLS,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - _____, F11, F12, TAB, KANJI, ENT, XXXXX, XXXXX, COMM, DOT, SLSH, RO,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _____, _____, DEL, _____, _____, APP \ - //`--------------------' `--------------------' - ), - - [_RAISE] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - _____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, PSLS,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, QUOT, 4, 5, 6, PPLS, PAST,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, 0, 1, 2, 3, DOT, PMNS,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _____, _____, BSPC, _____, _____, LALT \ - //`--------------------' `--------------------' - ), - - [_ADJUST] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - _____, RST, LRST, KNRM, KSWP, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ - //|------+-------+------+------+------+-----| |------+------+------+------+------+------| - _____, LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, PGUP, XXXXX,\ - //|------+-------+------+------+------+-----| |------+------+------+------+------+------| - _____, LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, HOME, PGDN, END,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _____, _____, XXXXX, _____, _____, XXXXX \ - //`--------------------' `--------------------' - ) -}; - -#define L_BASE _BASE -#define L_LOWER (1<<_LOWER) -#define L_RAISE (1<<_RAISE) -#define L_ADJUST (1<<_ADJUST) -#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) - -#ifdef SSD1306OLED -typedef struct { - uint8_t state; - char name[8]; -}LAYER_DISPLAY_NAME; - -#define LAYER_DISPLAY_MAX 5 -const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = { - {L_BASE, "Base"}, - {L_BASE + 1, "Base"}, - {L_LOWER, "Lower"}, - {L_RAISE, "Raise"}, - {L_ADJUST_TRI, "Adjust"} -}; - -static inline const char* get_leyer_status(void) { - - for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) { - if (layer_state == 0 && layer_display_name[i].state == default_layer_state) { - - return layer_display_name[i].name; - } else if (layer_state != 0 && layer_display_name[i].state == layer_state) { - - return layer_display_name[i].name; - } - } - - return "?"; -} - -static char layer_status_buf[24] = "Layer state ready.\n"; -static inline void update_keymap_status(void) { - - snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n", - keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status()); -} - -static inline void render_keymap_status(struct CharacterMatrix *matrix) { - - matrix_write(matrix, layer_status_buf); -} - -#define UPDATE_KEYMAP_STATUS() update_keymap_status() -#define RENDER_KEYMAP_STATUS(a) render_keymap_status(a) - -#else - -#define UPDATE_KEYMAP_STATUS() -#define RENDER_KEYMAP_STATUS(a) - -#endif - -static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { - - pressed ? layer_on(layer1) : layer_off(layer1); - IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); -} - -int RGB_current_mode; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - UPDATE_KEY_STATUS(keycode, record); - - bool result = false; - switch (keycode) { - case LOWER: - update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); - break; - case RAISE: - update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); - break; - case KANJI: - if (record->event.pressed) { - if (keymap_config.swap_lalt_lgui == false) { - register_code(KC_LANG2); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LANG2); - } - break; - #ifdef RGBLIGHT_ENABLE - case RGB_MOD: - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_config.mode; - } - break; - case RGBRST: - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_config.mode; - } - break; - #endif - default: - result = true; - break; - } - - UPDATE_KEYMAP_STATUS(); - return result; -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_config.mode; - UPDATE_KEYMAP_STATUS(); - #endif - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h - #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display - #endif -} - -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#ifdef SSD1306OLED - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} - -static inline 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; - } -} - -static inline void render_status(struct CharacterMatrix *matrix) { - - UPDATE_LED_STATUS(); - RENDER_LED_STATUS(matrix); - RENDER_KEYMAP_STATUS(matrix); - UPDATE_LOCK_STATUS(); - RENDER_LOCK_STATUS(matrix); - RENDER_KEY_STATUS(matrix); -} - -void iota_gfx_task_user(void) { - struct CharacterMatrix matrix; - - #if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } - #endif - - matrix_clear(&matrix); - if (is_master) { - render_status(&matrix); - } else { - RENDER_LOGO(&matrix); - } - - matrix_update(&display, &matrix); -} - -#endif diff --git a/keyboards/crkbd/keymaps/like_jis/oled_helper.c b/keyboards/crkbd/keymaps/like_jis/oled_helper.c deleted file mode 100644 index 500d3c0dc1..0000000000 --- a/keyboards/crkbd/keymaps/like_jis/oled_helper.c +++ /dev/null @@ -1,83 +0,0 @@ -#ifdef SSD1306OLED -#include QMK_KEYBOARD_H -#include "ssd1306.h" - -void render_logo(struct CharacterMatrix *matrix) { - - const char logo_buf[]={ - 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}; - - matrix_write(matrix, logo_buf); -} - -static char keylog_buf[24] = "Key state ready."; -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 update_key_status(uint16_t keycode, keyrecord_t *record) { - - if (!record->event.pressed) return; - - char name = (keycode < 60) ? code_to_name[keycode] : ' '; - snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c", - record->event.key.row, record->event.key.col, - (uint16_t)keycode, name); -} - -void render_key_status(struct CharacterMatrix *matrix) { - - matrix_write(matrix, keylog_buf); -} - -static char lock_buf[24] = "Lock state ready.\n"; -void update_lock_status(void) { - - uint8_t leds = host_keyboard_leds(); - char *num_lock = (leds & (1<. // #define EE_HANDS #define SSD1306OLED +#define USE_SSD_I2C #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/madhatter/keymap.c b/keyboards/crkbd/keymaps/madhatter/keymap.c index 57a522deb4..c228a7b573 100644 --- a/keyboards/crkbd/keymaps/madhatter/keymap.c +++ b/keyboards/crkbd/keymaps/madhatter/keymap.c @@ -17,8 +17,10 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H - -extern uint8_t is_master; +#ifdef SSD1306OLED +# include "ssd1306.h" +# include +#endif enum corny_layers { _QWERTY, @@ -108,7 +110,7 @@ void matrix_init_user(void) { #endif //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display + iota_gfx_init(); // turns on the display #endif } @@ -132,10 +134,10 @@ void matrix_scan_user(void) { } void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { + if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); + matrix_write(matrix, read_layer_state()); + matrix_write(matrix, read_keylog()); //matrix_write_ln(matrix, read_keylogs()); //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); //matrix_write_ln(matrix, read_host_led_state()); diff --git a/keyboards/crkbd/keymaps/madhatter/rules.mk b/keyboards/crkbd/keymaps/madhatter/rules.mk index f84e5b2af8..489b16ef1c 100644 --- a/keyboards/crkbd/keymaps/madhatter/rules.mk +++ b/keyboards/crkbd/keymaps/madhatter/rules.mk @@ -8,3 +8,6 @@ SRC += ./lib/glcdfont.c \ # ./lib/mode_icon_reader.c \ # ./lib/host_led_state_reader.c \ # ./lib/timelogger.c \ + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h index a3d430b1e8..3f28d1323f 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h @@ -8,7 +8,7 @@ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ ) \ -LAYOUT( \ +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, \ diff --git a/keyboards/crkbd/keymaps/mcrown/config.h b/keyboards/crkbd/keymaps/mcrown/config.h new file mode 100644 index 0000000000..e40bd639f3 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/config.h @@ -0,0 +1,86 @@ +/** @file config.h + * @brief config header that includes function prototypes and external variables. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#pragma once + +/* Select hand configuration */ +#define MASTER_LEFT + +/* Comment this definition out if you want the main display to be output in horizontal mode */ +#define OLED_VERTICAL + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 + #define RGB_MATRIX_HUE_STEP 10 + #define RGB_MATRIX_SAT_STEP 10 + #define RGB_MATRIX_VAL_STEP 10 + #define RGB_MATRIX_SPD_STEP 10 +// #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: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ +// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP +// #define DISABLE_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 */ +#endif + +/* To tell the compiler to use custom font */ +#define OLED_FONT_H "keyboards/crkbd/keymaps/mcrown/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/mcrown/glcdfont.c b/keyboards/crkbd/keymaps/mcrown/glcdfont.c new file mode 100644 index 0000000000..17aa1dde39 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/glcdfont.c @@ -0,0 +1,35 @@ +/** @file glcfont.c + * @brief mcrown glcfont module. This module includes the font for mcrown keymap. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include "progmem.h" + +/* Standard ASCII 5x7 font */ +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, 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, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E, + 0x1E, 0x06, 0x01, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 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, 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, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3C, 0x78, 0x70, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 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, 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, +}; diff --git a/keyboards/crkbd/keymaps/mcrown/keymap.c b/keyboards/crkbd/keymaps/mcrown/keymap.c new file mode 100644 index 0000000000..907e1347bb --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/keymap.c @@ -0,0 +1,141 @@ +/** @file keymap.c + * @brief keymao.c that includes key layout and keylogs functions + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include "mcrown.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________QWERTY_L3______________________, _____________________QWERTY_R3______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_LOWER] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________LOWER_L1_______________________, _____________________LOWER_R1_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________LOWER_L2_______________________, _____________________LOWER_R2_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________LOWER_L3_______________________, _____________________LOWER_R3_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_RAISE] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________RAISE_L1_______________________, _____________________RAISE_R1_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________RAISE_L2_______________________, _____________________RAISE_R2_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________RAISE_L3_______________________, _____________________RAISE_R3_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_ADJUST] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________ADJUST_L1______________________, _____________________ADJUST_R1______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________ADJUST_L2______________________, _____________________ADJUST_R2______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________ADJUST_L3______________________, _____________________ADJUST_R3______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record){ + bool user_records_press=true; + + if (record->event.pressed){ + add_keylog(keycode); + } + + switch (keycode){ + case QWERTY: + if (record->event.pressed){ + set_single_persistent_default_layer(_QWERTY); + } + 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); + } + 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); + } + break; + + case ADJUST: + if (record->event.pressed){ + layer_on(_ADJUST); + }else{ + layer_off(_ADJUST); + } + break; + + case RGB_MOD: + #ifdef RGBLIGHT_ENABLE + if(record->event.pressed){ + rgblight_mode(RGB_current_mode); + rgblight_step(); + RGB_current_mode = rgblight_get_mode(); + } + #endif + break; + + case RGBRST: + #ifdef RGBLIGHT_ENABLE + if(record->event.pressed){ + eeconfig_update_rgblight_default(); + rgblight_enable(); + RGB_current_mode = rgblight_get_mode(); + } + #endif + break; + + default: + user_records_press=false; + break; + } + + return false==user_records_press; +} diff --git a/keyboards/crkbd/keymaps/mcrown/mcrown.h b/keyboards/crkbd/keymaps/mcrown/mcrown.h new file mode 100644 index 0000000000..c3ed36eece --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/mcrown.h @@ -0,0 +1,109 @@ +/** @file mcrown.h + * @brief mcrown header thant incluedes key layout and some definintions. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#pragma once + +#include QMK_KEYBOARD_H +#include "oled.h" + +#define KC_XXXXX KC_NO +#define KC_LOWER LOWER +#define KC_RAISE RAISE +#define KC_CTLTB CTL_T(KC_TAB) +#define KC_GUIEI GUI_T(KC_LANG2) +#define KC_ALTKN ALT_T(KC_LANG1) + +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + +/* For values greater than 0x200, substract that value and add 0x20 so the characters can be mapped */ +#define RM_LSFT(kc) ((uint8_t)(0x20)+(kc-0x200)) + +/* ######################################################################### LAYOUT BLOCKS ##################################################### */ +/* -----------------------------------------BUTTON1---BUTTON2- BUTTON3------- */ +#define _____________MOD_LEFT_____________ KC_GUIEI, KC_LOWER, KC_SPC +#define _____________MOD_RIGHT____________ KC_ENT, KC_RAISE, KC_ALTKN + + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________RAISE_L1_______________________ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC +#define _____________________RAISE_L2_______________________ KC_LSFT, KC_MPLY, KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX +#define _____________________RAISE_L3_______________________ KC_CTLTB, KC_CALC, KC_VOLD, KC_MPRV, KC_BRIU, KC_BRID + +#define _____________________RAISE_R1_______________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL +#define _____________________RAISE_R2_______________________ KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV +#define _____________________RAISE_R3_______________________ KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________QWERTY_L1______________________ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T +#define _____________________QWERTY_L2______________________ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G +#define _____________________QWERTY_L3______________________ KC_CTLTB, KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _____________________QWERTY_R1______________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC +#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, KC_RSFT + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________LOWER_L1_______________________ KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5 +#define _____________________LOWER_L2_______________________ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN +#define _____________________LOWER_L3_______________________ KC_CTLTB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 + +#define _____________________LOWER_R1_______________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC +#define _____________________LOWER_R2_______________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_HOME, KC_END +#define _____________________LOWER_R3_______________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________ADJUST_L1______________________ XXXXXXX, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) + #define _____________________ADJUST_L2______________________ XXXXXXX, XXXXXXX, RGB_SPI, RGB_SAI, RGB_HUI, RGB_VAI + #define _____________________ADJUST_L3______________________ XXXXXXX, XXXXXXX, RGB_SPD, RGB_SAD, RGB_HUD, RGB_VAD +#else/* ---------------------------------------------------------------|---------|--------|--------|--------|------------- */ + #define _____________________ADJUST_L2______________________ M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_L3______________________ M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#endif/* --------------------------------------------------------------|---------|--------|--------|--------|------------- */ +#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) + #define _____________________ADJUST_R1______________________ RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_R3______________________ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#else/* ---------------------------------------------------------------|---------|--------|--------|--------|------------- */ + #define _____________________ADJUST_R1______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_R3______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#endif/* --------------------------------------------------------------|---------|--------|--------|--------|------------- */ +#define _____________________ADJUST_R2______________________ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + +/* Each layer gets a name for readability */ +typedef enum custom_layers { + _QWERTY, + _DVORAK, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, + _NUMPAD, + _MAX_LAYERS +}CUSTOM_LAYERS_T; + +/* To be used to identify the current working layer */ +typedef enum custom_keycodes{ + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, + BACKLIT, + RGBRST +}CUSTOM_KEYCODES_T; diff --git a/keyboards/crkbd/keymaps/mcrown/oled.c b/keyboards/crkbd/keymaps/mcrown/oled.c new file mode 100644 index 0000000000..b728a5806e --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/oled.c @@ -0,0 +1,354 @@ +/** @file oled.h + * @brief mcrown oled service implementation. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include QMK_KEYBOARD_H +#include +#include +#include "mcrown.h" +#include "oled.h" + +#define ASCII_TABLE_LENGTH (0x80) +#define KEYLOG_STRING_STARTUP (KEYLOG_EOL_LEN+1) +#define ALT_CODE (0x7E) +#define SPECIAL_KEYS_SHIFT(kc) (0x18+(kc)) + +static void render_keylogger_status(void); + +static char keylog_str[KEYLOG_EOL_LEN] = {' '}; +static uint16_t log_timer = 0; +static uint8_t current_cursor_pos=0; +static uint32_t cursor_oled_timer = 0; +static uint32_t standby_oled_timer = 0; +static char last_c=' '; + +/* Provides the ASCII value or the address of the character selected of the OLED font specified in glcfont.c */ +static const char ascii_t[ASCII_TABLE_LENGTH] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* | | | | | | | | | | | | | | | | */ + 0x0F, 0x1A, 0x1B, 0x19, 0x18, 0x0E, ' ', ' ', 0x11, 0x1C, 0x97, ' ', ' ', ' ', ' ', ' ', /* 0 */ + /* | | | | | | | | | | | | | | | | */ + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 0x1D, ' ', ' ', ' ', ' ', /* 1 */ + /* | | | | | | | | | | | | | | | | */ + 0x16, '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', /* 2 */ + /* | | | | | | | | | | | | | | | | */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', /* 3 */ + /* | | | | | | | | | | | | | | | | */ + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* 4 */ + /* | | | | | | | | | | | | | | | | */ + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', /* 5 */ + /* | | | | | | | | | | | | | | | | */ + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* 6 */ + /* | | | | | | | | | | | | | | | | */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F, /* 7 */ +}; + +/* This table is to remap and get the corresponding ASCII value based on the KEYCODE (taken as the index of the array) of quatum_keycodes.h module */ +static const unsigned char code_to_ascii[ASCII_TABLE_LENGTH] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', /* 0 */ + /* | | | | | | | | | | | | | | | | */ + 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', /* 1 */ + /* | | | | | | | | | | | | | | | | */ + '3', '4', '5', '6', '7', '8', '9', '0', 0x0A, 0x1B, 0x08, 0x09, ' ', '-', '=', '[', /* 2 */ + /* | | | | | | | | | | | | | | | | */ + ']', '\\', 0x00, ';', '\'', '`', ',', '.', '/', 0x00, 0x00, 0x00, 0x00, 0x00, '!', '@', /* 3 */ + /* | | | | | | | | | | | | | | | | */ + '#', '$', '%', '^', '&', '*', '(', ')', 0x00, 0x00, 0x00, 0x00, 0x00, '_', '+', '{', /* 4 */ + /* | | | | | | | | | | | | | | | | */ + '}', '|', 0x00, 0x00, 0x00, '~', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, /* 6 */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, /* 7 */ +}; + +/** @brief maps the keycode to get the ascii value. + * + * If any argument is invalid, the function has no effect. + * + * @param keycode value of the pressed key. + * @return ascii value of the pressed key or a special value for non-ascii keys. + */ +inline static char get_ascii(int16_t keycode){ + uint8_t ascii_idx=0x00; + + if(keycode 300){ + cursor_oled_timer = timer_read32(); + cursor_f=!cursor_f; + } + oled_write_P(PSTR("\n>:"), false); + if(current_cursor_pos>(KEYLOG_LEN-1)){ + current_cursor_pos=0; + memset(keylog_str, ' ', sizeof(char)*KEYLOG_EOL_LEN); + /* Here the EOL is to clear with white spaces all the keylog area */ + keylog_str[KEYLOG_EOL_LEN-1] = '\0'; + oled_write(keylog_str, false); + /* Reset EOL to the begining of the keylog string */ + keylog_str[0] = '\0'; + } + oled_write(keylog_str, false); + oled_write_char(last_c, cursor_f); + +} + +/** @brief displays the current active layout. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_layout_state(void){ + CUSTOM_LAYERS_T current_layer; + current_layer=(CUSTOM_LAYERS_T)get_highest_layer(layer_state); + +#ifdef OLED_VERTICAL + oled_write_P(PSTR("Lyt:\n"), false); +#else + oled_write_P(PSTR("Layout: "), false); +#endif + + switch (current_layer){ +#ifdef OLED_VERTICAL + case _COLEMAK: + oled_write_P(PSTR("Clmak\n"), false); + break; + + case _DVORAK: + oled_write_P(PSTR("Dvak\n"), false); + break; + + case _QWERTY: + oled_write_P(PSTR("Qwty\n"), false); + break; + + default: + oled_write_P(PSTR("Undf\n"), false); + break; + +#else + case _COLEMAK: + oled_write_P(PSTR("Colemak\n"), false); + break; + + case _DVORAK: + oled_write_P(PSTR("Dvorak\n"), false); + break; + + case _QWERTY: + oled_write_P(PSTR("Qwerty\n"), false); + break; + + default: + oled_write_P(PSTR("Undefined\n"), false); + break; +#endif + } +} + +/** @brief displays the current active layer. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_layer_state(void){ + CUSTOM_LAYERS_T current_layer; + current_layer=(CUSTOM_LAYERS_T)get_highest_layer(layer_state); + +#ifdef OLED_VERTICAL + oled_write_P(PSTR("Lyr:\n"), false); +#else + oled_write_P(PSTR("Layer:"), false); +#endif + + switch(current_layer){ +#ifdef OLED_VERTICAL + case _LOWER: + oled_write_P(PSTR("Lwr\n"), true); + break; + + case _RAISE: + oled_write_P(PSTR("Ris\n"), true); + break; + + case _ADJUST: + oled_write_P(PSTR("Adj\n"), true); + break; + + case _NUMPAD: + oled_write_P(PSTR("Num\n"), true); + break; + + default: + oled_write_P(PSTR("Def\n"), false); + break; + +#else + case _LOWER: + oled_write_P(PSTR(" Lower "), true); + break; + + case _RAISE: + oled_write_P(PSTR(" Raise "), true); + break; + + case _ADJUST: + oled_write_P(PSTR(" Adjust "), true); + break; + + case _NUMPAD: + oled_write_P(PSTR(" Numpad "), true); + break; + + default: + oled_write_P(PSTR(" Default "), false); + break; +#endif + } +} + +/** @brief displays the current status of the main display/ + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_status(void){ + render_layout_state(); + oled_write_P(PSTR("\n"), false); + render_layer_state(); + render_keylogger_status(); +} + +/** @brief renders the logo to be displayed. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +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); +} + +/** @brief executes the actions for both displays. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void oled_task_user(void){ + if (timer_elapsed32(standby_oled_timer) > 15000){ + oled_off(); + }else{ + oled_on(); + if(true==is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + oled_write_P(PSTR("\n"), false); + oled_scroll_left(); + } + } +} + +/** @brief process the current key and add it to the keylog string. + * + * If any argument is invalid, the function has no effect. + * + * @param keycode pressed key. + * @return void. + */ +extern void add_keylog(uint16_t keycode){ + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)){ + keycode&=0x00FF; + } + + if(current_cursor_pos>(KEYLOG_LEN-1)||(current_cursor_pos>KEYLOG_STRING_STARTUP)){ + current_cursor_pos=0; + last_c=get_ascii(keycode); + current_cursor_pos++; + }else{ + if(keycode <= KC_TILD){ + keylog_str[current_cursor_pos]=last_c; + last_c=get_ascii(keycode); + current_cursor_pos++; + } + keylog_str[current_cursor_pos] = '\0'; + } + + log_timer = timer_read(); + + standby_oled_timer = timer_read32(); +} diff --git a/keyboards/crkbd/keymaps/mcrown/oled.h b/keyboards/crkbd/keymaps/mcrown/oled.h new file mode 100644 index 0000000000..7e7c746b99 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/oled.h @@ -0,0 +1,34 @@ +/** @file oled.h + * @brief oled header that includes function prototypes and external variables. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ +#pragma once + +#include +#include "mcrown.h" + +#ifdef OLED_VERTICAL +#define KEYLOG_LEN (48) +#else +#define KEYLOG_LEN (19) +#endif + +#define KEYLOG_EOL_LEN (KEYLOG_LEN+1) + +extern void add_keylog(uint16_t keycode); +extern void update_log(void); diff --git a/keyboards/crkbd/keymaps/mcrown/readme.md b/keyboards/crkbd/keymaps/mcrown/readme.md new file mode 100644 index 0000000000..e6034b1234 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/readme.md @@ -0,0 +1,13 @@ +![the-frey-layout](https://raw.githubusercontent.com/MarioCorona/mcrown_pics/main/mcrown_layout.png) + +# Keyboard layout by MCrown + +This is all four layers: + +- The top indicates the RAISE layer +- The middle indicates the DEFAULT layer +- The bottom indicates the LOWER layer +- Green indicated ADJUST layer + +All the keys respond as you'd expect to the 'shift' key - i.e. on a UK/GB keyboard, `/` becomes `?` and so on. + diff --git a/keyboards/crkbd/keymaps/mcrown/rules.mk b/keyboards/crkbd/keymaps/mcrown/rules.mk new file mode 100644 index 0000000000..df09acc6c0 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/rules.mk @@ -0,0 +1,18 @@ + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +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 + +# 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 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 \ + ./oled.c\ diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h index 8a4ddad748..d5b9a86985 100644 --- a/keyboards/crkbd/keymaps/ninjonas/config.h +++ b/keyboards/crkbd/keymaps/ninjonas/config.h @@ -34,9 +34,9 @@ along with this program. If not, see . #define RGB_MATRIX_SAT_STEP 10 #define RGB_MATRIX_VAL_STEP 10 #define RGB_MATRIX_SPD_STEP 10 - // #define RGB_MATRIX_KEYPRESSES + // #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 @@ -82,7 +82,9 @@ along with this program. If not, see . #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // END: RGB_MATRIX_KEYPRESSES // END: Disable RGB Effects -#endif +#endif #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" -#define OLED_DISABLE_TIMEOUT \ No newline at end of file +#define OLED_DISABLE_TIMEOUT + +#define LAYOUT LAYOUT_split_3x6_3 diff --git a/keyboards/crkbd/keymaps/ninjonas/keymap.c b/keyboards/crkbd/keymaps/ninjonas/keymap.c index 57cc23226d..bea80d2fd6 100644 --- a/keyboards/crkbd/keymaps/ninjonas/keymap.c +++ b/keyboards/crkbd/keymaps/ninjonas/keymap.c @@ -1,6 +1,8 @@ #include QMK_KEYBOARD_H #include "ninjonas.h" +uint8_t is_master; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_wrapper( //,----------------------------------------------------. ,----------------------------------------------------. @@ -98,4 +100,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`---------------------' `---------------------' ), */ -}; \ No newline at end of file +}; diff --git a/keyboards/crkbd/keymaps/oled_sample/keymap.c b/keyboards/crkbd/keymaps/oled_sample/keymap.c index f2d5770b63..b8c3985fb9 100644 --- a/keyboards/crkbd/keymaps/oled_sample/keymap.c +++ b/keyboards/crkbd/keymaps/oled_sample/keymap.c @@ -38,21 +38,21 @@ enum crkbd_layers { #define ALTKN ALT_T(KC_LANG1) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( + [_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_BSPC, CTLTB, 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, GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN ), - [_LOWER] = LAYOUT( + [_LOWER] = 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_BSPC, CTLTB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, KC_LSFT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN ), - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_split_3x6_3( KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, CTLTB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_split_3x6_3( RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -192,7 +192,7 @@ void render_status_main(void) { void oled_task_user(void) { update_log(); - if (is_master) { + if (is_keyboard_master()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_crkbd_logo(); diff --git a/keyboards/crkbd/keymaps/omgvee/keymap.c b/keyboards/crkbd/keymaps/omgvee/keymap.c deleted file mode 100644 index 2c33d8b8c5..0000000000 --- a/keyboards/crkbd/keymaps/omgvee/keymap.c +++ /dev/null @@ -1,242 +0,0 @@ -#include QMK_KEYBOARD_H -#include "bootloader.h" -#ifdef PROTOCOL_LUFA - #include "lufa.h" - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "ssd1306.h" -#endif - -extern keymap_config_t keymap_config; - -#ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -#endif - -extern uint8_t is_master; - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 3 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, - BACKLIT, - RGBRST -}; - -enum macro_keycodes { - KC_SAMPLEMACRO, -}; - -#define KC______ KC_TRNS -#define KC_XXXXX KC_NO -#define KC_LOWER LOWER -#define KC_RAISE RAISE -#define KC_RST RESET -#define KC_ERST EEPROM_RESET -#define KC_LRST RGBRST -#define KC_LTOG RGB_TOG -#define KC_LHUI RGB_HUI -#define KC_LHUD RGB_HUD -#define KC_LSAI RGB_SAI -#define KC_LSAD RGB_SAD -#define KC_LVAI RGB_VAI -#define KC_LVAD RGB_VAD -#define KC_LMOD RGB_MOD -#define KC_SFCPS SFT_T(KC_CAPS) -#define KC_CTLTB CTL_T(KC_TAB) -#define KC_GUIEI GUI_T(KC_LANG2) -#define KC_ALTKN ALT_T(KC_LANG1) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - SFCPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, ENT, SPC, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_LOWER] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - SFCPS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ENT,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, RSFT,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, ENT, SPC, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_RAISE] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - TAB, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, DEL,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - SFCPS, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, BSLS,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, XXXXX, VOLD, VOLU, MUTE, MPLY, UNDS, PLUS, LBRC, RBRC, SLSH, RSFT,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, ENT, SPC, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_ADJUST] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - RST, LRST, XXXXX, XXXXX, XXXXX, ERST, MNXT, MPRV, MFFD, MRWD, XXXXX, EJCT,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LTOG, LHUI, LSAI, LVAI, PGUP, HOME, LEFT, DOWN, UP, RIGHT, XXXXX, INS,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LMOD, LHUD, LSAD, LVAD, PGDN, END, BRID, BRIU, VOLD, VOLU, MUTE, MPLY,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, ENT, SPC, RAISE, ALTKN \ - //`--------------------' `--------------------' - ) -}; - -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_config.mode; - #endif - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h - #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display - #endif -} - -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#ifdef SSD1306OLED - -// When add source files to SRC in rules.mk, you can use functions. -const char *read_layer_state(void); -const char *read_logo(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); -const char *read_keylog(void); -const char *read_keylogs(void); - -// const char *read_mode_icon(bool swap); -// const char *read_host_led_state(void); -// void set_timelog(void); -// const char *read_timelog(void); - -void matrix_scan_user(void) { - iota_gfx_task(); -} - -void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { - // If you want to change the display of OLED, you need to change here - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); - matrix_write_ln(matrix, read_keylogs()); - //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); - //matrix_write_ln(matrix, read_host_led_state()); - //matrix_write_ln(matrix, read_timelog()); - } else { - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); - matrix_write_ln(matrix, read_keylogs()); - //matrix_write(matrix, read_logo()); - } -} - -void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - struct CharacterMatrix matrix; - matrix_clear(&matrix); - matrix_render_user(&matrix); - matrix_update(&display, &matrix); -} -#endif//SSD1306OLED - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { -#ifdef SSD1306OLED - set_keylog(keycode, record); -#endif - // set_timelog(); - } - - switch (keycode) { - case 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 RGB_MOD: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_config.mode; - } - #endif - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_config.mode; - } - #endif - break; - } - return true; -} diff --git a/keyboards/crkbd/keymaps/omgvee/readme.md b/keyboards/crkbd/keymaps/omgvee/readme.md deleted file mode 100644 index bc316c2a35..0000000000 --- a/keyboards/crkbd/keymaps/omgvee/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -# Reade.md for what I want from my HeliDox(CRKBD) layout -====================================================== - - -![My beloved HeliDox keeb](https://i.imgur.com/NbVAB3g.jpg) - -- media keys and media controls -- in-switch LED intensity controls (+/-) -- underglow RGB hue/color controls -- underglow RGB intensity controls -- familiar key arrangement with Enter and symbols on the usual keys (to the right hand side) -- navigation keys should be the vim ones really; -- arrow keys on one layer(most likely on the ADJUST one) - -See keymap.c for layouts - - -P.S> this lil' keeb is so addictive I have no words, really... diff --git a/keyboards/crkbd/keymaps/omgvee/rules.mk b/keyboards/crkbd/keymaps/omgvee/rules.mk deleted file mode 100644 index 88e43aa99f..0000000000 --- a/keyboards/crkbd/keymaps/omgvee/rules.mk +++ /dev/null @@ -1,32 +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 -# -EXTRAFLAGS += -flto -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 = 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. -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/keebio/fourier/keymaps/jennetters/config.h b/keyboards/crkbd/keymaps/oo/config.h similarity index 88% rename from keyboards/keebio/fourier/keymaps/jennetters/config.h rename to keyboards/crkbd/keymaps/oo/config.h index 5f99c65ad5..8dc71430a1 100644 --- a/keyboards/keebio/fourier/keymaps/jennetters/config.h +++ b/keyboards/crkbd/keymaps/oo/config.h @@ -20,9 +20,9 @@ along with this program. If not, see . #pragma once +#define SPLIT_USB_DETECT + +#define TAPPING_FORCE_HOLD #define TAPPING_TERM 100 -/* Use I2C or Serial, not both */ - -#define USE_SERIAL -// #define USE_I2C +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/oo/keymap.c b/keyboards/crkbd/keymaps/oo/keymap.c new file mode 100644 index 0000000000..17d5788d6d --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/keymap.c @@ -0,0 +1,166 @@ +/* + Copyright 2019 @foostan + Copyright 2020 Drashna Jaelre <@drashna> + Copyright 2021 Oliver Ocean <@oliverocean> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General 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_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RALT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + 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_RSFT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, MO(1), KC_ENT, MO(2), KC_SPC, KC_RGUI + // |--------+--------+--------| |--------+--------+--------| + ), + + [1] = LAYOUT_split_3x6_3( + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_BSLS, KC_UNDS, KC_TAB, KC_PEQL, KC_TILD, KC_GRV, KC_PEQL, KC_TAB, KC_UNDS, KC_BSLS, 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_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS + // |--------+--------+--------| |--------+--------+--------| + ), + + [2] = LAYOUT_split_3x6_3( + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_PIPE, KC_LT, KC_LPRN, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, KC_RPRN, KC_GT, KC_PIPE, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PMNS, KC_PPLS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_CAPS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_CAPS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS + // |--------+--------+--------| |--------+--------+--------| + ) + +}; + + +#ifdef OLED_DRIVER_ENABLE +#include +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("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); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } +} + +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/oo/readme.md b/keyboards/crkbd/keymaps/oo/readme.md new file mode 100644 index 0000000000..e7ef686599 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/readme.md @@ -0,0 +1,19 @@ +# Build instructions + +```zsh +# if this is a fresh install of QMK, don't forget to run setup +# or you might be missing necessary tools and libraries! +# https://docs.qmk.fm/#/newbs_getting_started +$ qmk setup + +# using json via the configurator can be easier than starting from scratch +# but you will need to go back and make the formatting readable for future edits +$ qmk json2c -o keymap.c keymap.json + +# compile; use appropriate tool for your microcontroller +$ qmk compile -kb crkbd/rev1/common -km oo + +# flash; each side has to be done separately +$ qmk flash -kb crkbd/rev1/common -km oo + +``` diff --git a/keyboards/crkbd/keymaps/oo/rules.mk b/keyboards/crkbd/keymaps/oo/rules.mk new file mode 100644 index 0000000000..c582662134 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/rules.mk @@ -0,0 +1 @@ +OLED_DRIVER_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c index a9dbe7657a..e1e0518745 100644 --- a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c +++ b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c @@ -104,8 +104,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef OLED_DRIVER_ENABLE +# include + oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_master) { + if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } return rotation; @@ -203,7 +205,7 @@ void oled_render_logo(void) { } void oled_task_user(void) { - if (is_master) { + if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { diff --git a/keyboards/crkbd/keymaps/rpbaptist/keymap.c b/keyboards/crkbd/keymaps/rpbaptist/keymap.c index 0296749d09..2dafbd2a70 100644 --- a/keyboards/crkbd/keymaps/rpbaptist/keymap.c +++ b/keyboards/crkbd/keymaps/rpbaptist/keymap.c @@ -1,6 +1,5 @@ #include QMK_KEYBOARD_H -extern uint8_t is_master; static uint32_t oled_timer = 0; #ifdef RGB_MATRIX_ENABLE @@ -84,7 +83,7 @@ user_config_t user_config; #define KC_EUR ALGR(KC_5) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_COLEMAKDHM] = LAYOUT( \ + [_COLEMAKDHM] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, BSP_DEL,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -96,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_GAMING] = LAYOUT( \ + [_GAMING] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -108,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_GAMING_EXT] = LAYOUT( \ + [_GAMING_EXT] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. KC_GRV, KC_1, KC_2, _______, KC_3, KC_4, _______, _______, _______, _______, _______, KC_DEL,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -120,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_NUMPAD] = LAYOUT( \ + [_NUMPAD] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_EUR, KC_P7, KC_P8, KC_P9, XXXXXXX, _______,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -132,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_SYM] = LAYOUT( \ + [_SYM] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -144,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_NAV] = LAYOUT( \ + [_NAV] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_BSPC,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -156,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - [_UTIL] = LAYOUT( \ + [_UTIL] = LAYOUT_split_3x6_3( \ //,-----------------------------------------------------. ,-----------------------------------------------------. RESET, XXXXXXX, KC_MPRV, KC_VOLU, KC_MNXT, COLEMAK, RGB_IDL, RGB_MAP, RGB_NXS, XXXXXXX, RGB_HUD, RGB_HUI,\ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -183,7 +182,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { #ifdef OLED_DRIVER_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_master) { + if (is_keyboard_master()) { return OLED_ROTATION_270; } else { return OLED_ROTATION_180; @@ -299,7 +298,7 @@ void oled_task_user(void) { oled_on(); } - if (is_master) { + if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_crkbd_logo(); @@ -344,7 +343,7 @@ void check_default_layer(uint8_t type) { void rgb_matrix_indicators_user(void) { if ( - user_config.rgb_layer_change && !g_suspend_state && rgb_matrix_config.enable && + user_config.rgb_layer_change && rgb_matrix_config.enable && (!user_config.rgb_matrix_idle_anim || rgb_matrix_get_mode() != user_config.rgb_matrix_idle_mode) ) { diff --git a/keyboards/crkbd/keymaps/rs/config.h b/keyboards/crkbd/keymaps/rs/config.h index 9701c2b3f2..a2d5092dee 100644 --- a/keyboards/crkbd/keymaps/rs/config.h +++ b/keyboards/crkbd/keymaps/rs/config.h @@ -28,7 +28,7 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED +// #define SSD1306OLED #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/rs/keymap.c b/keyboards/crkbd/keymaps/rs/keymap.c index 135ccb076c..7e2a2e066e 100644 --- a/keyboards/crkbd/keymaps/rs/keymap.c +++ b/keyboards/crkbd/keymaps/rs/keymap.c @@ -2,37 +2,37 @@ #include "rs.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - TAB , Q , W , E , R , T , Y , U , I , O , P ,EQL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_EQL , //|----+----+----+----+----+----| |----+----+----+----+----+----| - ESCC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT, + KC_ESCC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, //|----+----+----+----+----+----+ |----+----+----+----+----+----| - LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENTS, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ENTS, //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - LALT,LGUI,SPC , BSPC,CODE,FN + KC_LALT,KC_LGUI,KC_SPC , KC_BSPC,KC_CODE,KC_FN // `----+----+----' `+---+----+----'c ), - [_CODE] = LAYOUT_kc( + [_CODE] = LAYOUT( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - GRV ,EXLM, AT ,HASH, DLR,PERC, CIRC,LPLT,ASTR,RPGT,NEQL, , + KC_GRV ,KC_EXLM, KC_AT ,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_LPLT,KC_ASTR,KC_RPGT,KC_NEQL,_______, //|----+----+----+----+----+----| |----+----+----+----+----+----| - , 1 , 2 , 3 , 4 , 5 , MINS,LBRC, UP ,RBRC, ,BSLS, + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_MINS,KC_LBRC, KC_UP ,KC_RBRC,_______,KC_BSLS, //|----+----+----+----+----+----+ |----+----+----+----+----+----| - , 6 , 7 , 8 , 9 , 0 , AMPR,LEFT,DOWN,RGHT, ,PIPE, + _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_AMPR,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_PIPE, //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , ,DOT , , , + _______,_______,KC_DOT , _______,_______,_______ // `----+----+----' `----+----+----' ), - [_FN] = LAYOUT_kc( + [_FN] = LAYOUT( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, F11, + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, //|----+----+----+----+----+----| |----+----+----+----+----+----| - LTOG,LHUI,LSAI,LVAI,LRST,BRMU, VOLU, ,PGUP, , , , + KC_LTOG,KC_LHUI,KC_LSAI,KC_LVAI,KC_LRST,KC_BRMU, KC_VOLU,_______,KC_PGUP,_______,_______,_______, //|----+----+----+----+----+----+ |----+----+----+----+----+----| - LMOD,LHUD,LSAD,LVAD,RST ,BRMD, VOLD,CTRA,PGDN,CTRE, , , + KC_LMOD,KC_LHUD,KC_LSAD,KC_LVAD,KC_RST ,KC_BRMD, KC_VOLD,KC_CTRA,KC_PGDN,KC_CTRE,_______,_______, //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , , , MUTE, , + _______,_______,_______, KC_MUTE,_______,_______ // `----+----+----' `----+----+----' ), }; diff --git a/keyboards/crkbd/keymaps/rs/rules.mk b/keyboards/crkbd/keymaps/rs/rules.mk index 683b4b70dd..8c9897ffb4 100644 --- a/keyboards/crkbd/keymaps/rs/rules.mk +++ b/keyboards/crkbd/keymaps/rs/rules.mk @@ -14,7 +14,7 @@ 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. +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing TAP_DANCE_ENABLE = no diff --git a/keyboards/crkbd/keymaps/omgvee/config.h b/keyboards/crkbd/keymaps/snowe/config.h similarity index 63% rename from keyboards/crkbd/keymaps/omgvee/config.h rename to keyboards/crkbd/keymaps/snowe/config.h index 5699c3bebe..b624b589bc 100644 --- a/keyboards/crkbd/keymaps/omgvee/config.h +++ b/keyboards/crkbd/keymaps/snowe/config.h @@ -28,24 +28,28 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED - #define USE_SERIAL_PD2 #define TAPPING_FORCE_HOLD -#define TAPPING_TERM 100 +#define TAPPING_TERM 200 -#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 BACKLIGHT_LEVELS 10 +#define IGNORE_MOD_TAP_INTERRUPT +#undef PERMISSIVE_HOLD -#undef PRODUCT -#define PRODUCT "Vee's hotswappable Helidox/Corne/CRKBD split keeb" +#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 NO_ACTION_MACRO -#define NO_ACTION_FUNCTION +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" + +// fix for me putting alt under A and being a fast typist +#define IGNORE_MOD_TAP_INTERRUPT +//#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY + +#define LAYER_STATE_8BIT \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/snowe/keycode_aliases.h b/keyboards/crkbd/keymaps/snowe/keycode_aliases.h new file mode 100644 index 0000000000..bd70a79aa5 --- /dev/null +++ b/keyboards/crkbd/keymaps/snowe/keycode_aliases.h @@ -0,0 +1,81 @@ +/* + * Copyright 2020 Drashna Jaelre <@drashna> + * Copyright 2021 Tyler Thrailkill <@snowe/@snowe2010> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 GUI_ESC GUI_T(KC_ESC) +#define CTL_ESC CTL_T(KC_ESC) +#define SH_BKSP SFT_T(KC_BSPC) +#define SP_RAIS LT(_UPPER, KC_SPC) + +#define LOWER MO(_LOWER) +#define RAISE MO(_UPPER) +#define ADJUST MO(_ADJUST) +#define TG_MODS TG(_MODS) +//#define TG_GAME TG(_GAMEPAD) +//#define OS_LWR OSL(_LOWER) +//#define OS_RSE OSL(_UPPER) + +//#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 WORKMAN KC_WORKMAN + +#define KC_RESET RESET +#define KC_RST KC_RESET + +#ifdef SWAP_HANDS_ENABLE +# define KC_C1R3 SH_TT +#else // SWAP_HANDS_ENABLE +# define KC_C1R3 KC_BSPC +#endif // SWAP_HANDS_ENABLE + +#define BK_LWER LT(_LOWER, KC_BSPC) +#define SP_LWER LT(_LOWER, KC_SPC) +#define DL_RAIS LT(_UPPER, KC_DEL) +#define ET_RAIS LT(_UPPER, KC_ENTER) +#define SFT_ENT SFT_T(KC_ENTER) +#define SP_RAIS LT(_UPPER, KC_SPC) + +/* OSM keycodes, to keep things clean and easy to change */ +#define KC_MLSF OSM(MOD_LSFT) +#define KC_MRSF OSM(MOD_RSFT) + +#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 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/keyboards/crkbd/keymaps/snowe/keymap.c b/keyboards/crkbd/keymaps/snowe/keymap.c new file mode 100644 index 0000000000..4dfd6ecbeb --- /dev/null +++ b/keyboards/crkbd/keymaps/snowe/keymap.c @@ -0,0 +1,190 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Tyler Thrailkill <@snowe/@snowe2010> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 "snowe.h" + +// Symbols chart +// ↯ hyper key (ctrl, alt, shift, super) +// ⌘ command +// ⌥ option +// ⌃ control +// ⇧ shift +// ⌫ backspace +// ⌦ delete +// ⎋ escape +// ↩ enter + +/* Wrapper + * ,-----------------------------------------------. .-----------------------------------------------. + * | Tab | 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 | | + * `-----------------------. | | .-----------------------' + * |-------+-------+-------| |-------+-------+-------| + * | ⌃ | ⇧/↩ | ⌫/LWR | | ␣/RAY | ␣ | R ⌥ | + * `-----------------------' '-----------------------' + */ +// clang-format off +#define LAYOUT_crkbd_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 \ + ) \ + LAYOUT_wrapper( \ + KC_TAB, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ + GUI_ESC, CTL_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, ALT_T(K1A), KC_QUOT, \ + HYPR_T(KC_DEL), ALT_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_BSLS, \ + KC_LCTL, LOWER, SH_BKSP, KC_ENTER, SP_RAIS, KC_LALT \ + ) +// clang-format on +#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + /* 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 | , | . | / | | + * `-----------------------. | | .-----------------------' + * |-------+-------+-------| |-------+-------+-------| + * | | | | | | | | + * `-----------------------' '-----------------------' + */ + [_MAIN] = LAYOUT_crkbd_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + /* Lower + * ,-----------------------------------------------. .-----------------------------------------------. + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | _ | + | [ | ] | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | ← | ↑ | ↓ | → | | + * `-----------------------. | | .-----------------------' + * |-------+-------+-------| |-------+-------+-------| + * | | | | | | | | + * `-----------------------' '-----------------------' + */ + [_LOWER] = LAYOUT_wrapper( + KC_TILDE, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, + KC_F12 , _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, + _______ , _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, + _______, _______, _______, _______, _______, _______ + ), + + + /* + * ,-----------------------------------------------. .-----------------------------------------------. + * | | | | | | | | | | | | | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | | | | | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | | | | | | + * `-----------------------. | | .-----------------------' + * |-------+-------+-------| |-------+-------+-------| + * | | | | | | | | + * `-----------------------' '-----------------------' + */ + /* Raise + * ,-----------------------------------------------. .-----------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | ← | ↑ | ↓ | → | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | | | | | | | | home |pg down| pg up | end | | + * `-----------------------. | | .-----------------------' + * |-------+-------+-------| |-------+-------+-------| + * | | | | | | | | + * `-----------------------' '-----------------------' + */ + [_UPPER] = LAYOUT_wrapper( \ + KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, + _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, + _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_wrapper( \ + _______, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET, + _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, + _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, + _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _UPPER, _ADJUST); } + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LCTL: + case KC_RCTL: +#ifdef OCEAN_DREAM_ENABLE + is_calm = (record->event.pressed) ? true : false; +#endif +#ifdef LUNA_ENABLE + if (record->event.pressed) { + isSneaking = true; + } else { + isSneaking = false; + } +#endif + break; + case KC_SPC: +#ifdef LUNA_ENABLE + if (record->event.pressed) { + isJumping = true; + showedJump = false; + } else { + isJumping = false; + } +#endif + break; + } + return true; +} + +// uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { +// switch (keycode) { +// case ALT_T(KC_A): +// case SH_BKSP: +// return TAPPING_TERM + 500; +// default: +// return TAPPING_TERM; +// } +//} +// +// bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { +// switch (keycode) { +// case ALT_T(KC_A): +// case SH_BKSP: +// return true; +// default: +// return false; +// } +//} \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/snowe/rules.mk b/keyboards/crkbd/keymaps/snowe/rules.mk new file mode 100644 index 0000000000..fac462a685 --- /dev/null +++ b/keyboards/crkbd/keymaps/snowe/rules.mk @@ -0,0 +1,25 @@ +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 = 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 +AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +LEADER_ENABLE = no +MIDI_ENABLE = no # MIDI controls +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 +RGB_MATRIX_ENABLE = yes + +OCEAN_DREAM_ENABLE = yes +LUNA_ENABLE = no # disabled so travis build succeeds + +# if firmware size over limit, try this option +CFLAGS += -flto + +WPM_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c index 28b3e19d13..144586969d 100644 --- a/keyboards/crkbd/keymaps/soundmonster/keymap.c +++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c @@ -11,8 +11,6 @@ extern rgblight_config_t rgblight_config; static uint32_t oled_timer = 0; #endif -extern uint8_t is_master; - // 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 @@ -38,7 +36,7 @@ enum custom_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( + [_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, //|------+------+------+------+------+------| |------+------+-------+------+-------+--------| @@ -50,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT( + [_LOWER] = 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, //|------+------+-------+-------+-------+-------| |------+------+------+------+------+------| @@ -62,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------' `--------------------' ), - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. KC_ESC,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC, //|------+------+------+------+------+------| |------+------+------+------+------+------| @@ -74,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------' `--------------------' ), - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_split_3x6_3( //,-----------------------------------------. ,-----------------------------------------. RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC__MUTE, KC_NO, KC_NO, KC_NO, KC_NO, //|------+------+------+------+------+------| |------+------+------+------+------+------| @@ -298,6 +296,10 @@ void render_status_secondary(void) { render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods()); } +void suspend_power_down_user() { + oled_off(); +} + void oled_task_user(void) { if (timer_elapsed32(oled_timer) > 30000) { oled_off(); @@ -307,7 +309,7 @@ void oled_task_user(void) { else { oled_on(); } #endif - if (is_master) { + if (is_keyboard_master()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_status_secondary(); diff --git a/keyboards/crkbd/keymaps/thefrey/README.md b/keyboards/crkbd/keymaps/thefrey/README.md deleted file mode 100644 index 69b20cfcd6..0000000000 --- a/keyboards/crkbd/keymaps/thefrey/README.md +++ /dev/null @@ -1,16 +0,0 @@ -![the-frey-layout](https://raw.githubusercontent.com/the-frey/the-frey.github.com/master/assets/images/keyboard-layout.jpg) - -# Keyboard layout by the-frey - -This is a layout that allows access to all the paren keys easily, has a tab on the lower layer (for SUPER-TAB app switching) and some utility features like PGUP/PGDOWN and HOME/END. - -In addition, the arrows are on the lower layer and are bound to the vim keys (h,j,k,l). I've found this a productive layout for programming in emacs and hopefully you will too. - -The layout image above shows the keymap, with each key marked with all three layers: - -- The top indicates the raise layer -- The middle indicates the default layer -- The bottom indicates the lower layer - -All the keys respond as you'd expect to the 'shift' key - i.e. on a UK/GB keyboard, `/` becomes `?` and so on. - diff --git a/keyboards/crkbd/keymaps/thefrey/keymap.c b/keyboards/crkbd/keymaps/thefrey/keymap.c deleted file mode 100644 index 9a142a924a..0000000000 --- a/keyboards/crkbd/keymaps/thefrey/keymap.c +++ /dev/null @@ -1,243 +0,0 @@ -#include QMK_KEYBOARD_H -#include "bootloader.h" -#ifdef PROTOCOL_LUFA - #include "lufa.h" - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "ssd1306.h" -#endif - -extern keymap_config_t keymap_config; - -#ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -#endif - -extern uint8_t is_master; - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 3 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, - BACKLIT, - RGBRST -}; - -enum macro_keycodes { - KC_SAMPLEMACRO, -}; - -#define KC______ KC_TRNS -#define KC_XXXXX KC_NO -#define KC_LOWER LOWER -#define KC_RAISE RAISE -#define KC_RST RESET -#define KC_LRST RGBRST -#define KC_LTOG RGB_TOG -#define KC_LHUI RGB_HUI -#define KC_LHUD RGB_HUD -#define KC_LSAI RGB_SAI -#define KC_LSAD RGB_SAD -#define KC_LVAI RGB_VAI -#define KC_LVAD RGB_VAD -#define KC_LMOD RGB_MOD -#define KC_CTLTB CTL_T(KC_TAB) -#define KC_GUIEI GUI_T(KC_LANG2) -#define KC_ALTKN ALT_T(KC_LANG1) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_LOWER] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - TAB, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, MUTE, VOLD, VOLU, PGUP, PGDN, LEFT, DOWN, UP, RIGHT, HOME, END,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LSFT, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, XXXXX,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_RAISE] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - ESC, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, BSPC,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, GRV,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, UNDS, PLUS, LBRC, RBRC, BSLS, TILD,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \ - //`--------------------' `--------------------' - ), - - [_ADJUST] = LAYOUT_kc( \ - //,-----------------------------------------. ,-----------------------------------------. - RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \ - //`--------------------' `--------------------' - ) -}; - -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_config.mode; - #endif - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h - #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display - #endif -} - -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#ifdef SSD1306OLED - -// When add source files to SRC in rules.mk, you can use functions. -const char *read_layer_state(void); -const char *read_logo(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); -const char *read_keylog(void); -const char *read_keylogs(void); - -// const char *read_mode_icon(bool swap); -// const char *read_host_led_state(void); -// void set_timelog(void); -// const char *read_timelog(void); - -void matrix_scan_user(void) { - iota_gfx_task(); -} - -void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { - // If you want to change the display of OLED, you need to change here - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); - matrix_write_ln(matrix, read_keylogs()); - //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); - //matrix_write_ln(matrix, read_host_led_state()); - //matrix_write_ln(matrix, read_timelog()); - } else { - matrix_write(matrix, read_logo()); - } -} - -void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - struct CharacterMatrix matrix; - matrix_clear(&matrix); - matrix_render_user(&matrix); - matrix_update(&display, &matrix); -} -#endif//SSD1306OLED - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { -#ifdef SSD1306OLED - set_keylog(keycode, record); -#endif - // set_timelog(); - } - - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_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 RGB_MOD: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_config.mode; - } - #endif - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_config.mode; - } - #endif - break; - } - return true; -} diff --git a/keyboards/crkbd/keymaps/thefrey/rules.mk b/keyboards/crkbd/keymaps/thefrey/rules.mk deleted file mode 100644 index 16deaf45d1..0000000000 --- a/keyboards/crkbd/keymaps/thefrey/rules.mk +++ /dev/null @@ -1,31 +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 = 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/thumb_ctrl/config.h b/keyboards/crkbd/keymaps/thumb_ctrl/config.h index 5670d8c646..4aee2aed14 100755 --- a/keyboards/crkbd/keymaps/thumb_ctrl/config.h +++ b/keyboards/crkbd/keymaps/thumb_ctrl/config.h @@ -28,7 +28,7 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED +// #define SSD1306OLED #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c b/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c index c67958aa14..cbd7a46890 100755 --- a/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c +++ b/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c @@ -15,8 +15,6 @@ extern keymap_config_t keymap_config; extern rgblight_config_t rgblight_config; #endif -extern uint8_t is_master; - // 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 @@ -62,51 +60,51 @@ enum custom_keycodes { #define KC_ALTDL ALT_T(KC_DEL) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, //|------+------+------+------+------+------| |------+------+------+------+------+------| - CTLTB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + KC_CTLTB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - ALTSP, LOWER, GUIEN, SFTJP, RAISE, ALTDL + KC_ALTSP, KC_LOWER, KC_GUIEN, KC_SFTJP, KC_RAISE, KC_ALTDL //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT_kc( + [_LOWER] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - , 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, _______, //|------+------+------+------+------+------| |------+------+------+------+------+------| - , HOME, END, PGDN, PGUP, F11, LEFT, DOWN, UP, RGHT, F12, PIPE, + _______, KC_HOME, KC_END, KC_PGDN, KC_PGUP, KC_F11, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F12, KC_PIPE, //|------+------+------+------+------+------| |------+------+------+------+------+------| - , F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, , + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - , , , , , + _______, _______, _______, _______, _______, _______ //`--------------------' `--------------------' ), - [_RAISE] = LAYOUT_kc( + [_RAISE] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - , EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, , + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, //|------+------+------+------+------+------| |------+------+------+------+------+------| - , XXXXX, XXXXX, XXXXX, XXXXX, PSCR, GRV, MINS, PLUS, LCBR, RCBR, BSLS, + _______, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_PSCR, KC_GRV, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, //|------+------+------+------+------+------| |------+------+------+------+------+------| - , XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, TILD, UNDS, EQL, LBRC, RBRC, , + _______, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_TILD, KC_UNDS, KC_EQL, KC_LBRC, KC_RBRC, _______, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - , , , , , + _______, _______, _______, _______, _______, _______ //`--------------------' `--------------------' ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_RST, KC_LRST, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LTOG, KC_LHUI, KC_LSAI, KC_LVAI, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LMOD, KC_LHUD, KC_LSAD, KC_LVAD, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - GUIEI, LOWER, SPC, ENT, RAISE, ALTKN + KC_GUIEI, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_ALTKN //`--------------------' `--------------------' ) }; @@ -250,4 +248,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk index 16deaf45d1..b2014be78a 100755 --- a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk +++ b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk @@ -14,7 +14,7 @@ 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. +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 @@ -29,3 +29,6 @@ SRC += ./lib/glcdfont.c \ # ./lib/mode_icon_reader.c \ # ./lib/host_led_state_reader.c \ # ./lib/timelogger.c \ + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/rev1/common/keymaps/via/config.h b/keyboards/crkbd/keymaps/via/config.h similarity index 100% rename from keyboards/crkbd/rev1/common/keymaps/via/config.h rename to keyboards/crkbd/keymaps/via/config.h diff --git a/keyboards/crkbd/rev1/common/keymaps/via/keymap.c b/keyboards/crkbd/keymaps/via/keymap.c similarity index 99% rename from keyboards/crkbd/rev1/common/keymaps/via/keymap.c rename to keyboards/crkbd/keymaps/via/keymap.c index ecd1f17a5c..4735255eae 100644 --- a/keyboards/crkbd/rev1/common/keymaps/via/keymap.c +++ b/keyboards/crkbd/keymaps/via/keymap.c @@ -70,8 +70,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef OLED_DRIVER_ENABLE +#include + oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_master) { + if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } return rotation; @@ -157,7 +159,7 @@ void oled_render_logo(void) { } void oled_task_user(void) { - if (is_master) { + if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { diff --git a/keyboards/crkbd/rev1/common/keymaps/via/rules.mk b/keyboards/crkbd/keymaps/via/rules.mk similarity index 100% rename from keyboards/crkbd/rev1/common/keymaps/via/rules.mk rename to keyboards/crkbd/keymaps/via/rules.mk diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h b/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h index bdd1a099ae..d1c3855402 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h @@ -6,6 +6,7 @@ // #define EE_HANDS #define SSD1306OLED +#define USE_SSD_I2C #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c b/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c index 48f60419fb..7940e28025 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c @@ -13,8 +13,6 @@ extern rgblight_config_t rgblight_config; #endif -extern uint8_t is_master; - enum layer_names { _QWERTY, _LOWER, @@ -31,8 +29,6 @@ enum custom_keycodes { SCRL }; -#define KC______ KC_TRNS -#define KC_XXXXX KC_NO #define KC_LOWER LOWER #define KC_RAISE RAISE #define KC_RST RESET @@ -57,51 +53,51 @@ enum custom_keycodes { #define KC_SCRL SCRL const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, //|------+------+------+------+------+------| |------+------+------+------+------+------| - TAB, CTLA, S, D, F, G, H, J, K, L, CTLSC, QUOT, + KC_TAB, KC_CTLA, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTLSC, KC_QUOT, //|------+------+------+------+------+------| |------+------+------+------+------+------| - GRAVE, SFTZ, WINX, C, V, B, N, M, COMM, WINDO, SFTSL,BSLASH, + KC_GRAVE, KC_SFTZ, KC_WINX, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_WINDO, KC_SFTSL,KC_BSLASH, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT_kc( + [_LOWER] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, XXXXX, PGDN, PSCR, PGUP, LBRC, RBRC, 7, 8, 9, XXXXX, XXXXX, + KC_ESC, XXXXXXX, KC_PGDN, KC_PSCR, KC_PGUP, KC_LBRC, KC_RBRC, KC_7, KC_8, KC_9, XXXXXXX, XXXXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LCTRL, PLUS, MINS, EQL, LPRN, RPRN, 4, 5, 6, RCTRL, XXXXX, + XXXXXXX, KC_LCTRL, KC_PLUS, KC_MINS, KC_EQL, KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_RCTRL, XXXXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LSFT, HOME, XXXXX, END, LCBR, RCBR, 1, 2, 3, RSFT, XXXXX, + XXXXXXX, KC_LSFT, KC_HOME, XXXXXXX, KC_END, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, KC_RSFT, XXXXXXX, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, 0 + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_0 //`--------------------' `--------------------' ), - [_RAISE] = LAYOUT_kc( + [_RAISE] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, XXXXX, F7, F8, F9, F10, BTN2, BTN2, MNXT, MPRV, MPLY, MSTP, + KC_ESC, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_BTN2, KC_BTN2, KC_MNXT, KC_MPRV, KC_MPLY, KC_MSTP, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LCTRL, F4, F5, F6, F11, LEFT, DOWN, UP, RIGHT, RCTRL, XXXXX, + XXXXXXX, KC_LCTRL, KC_F4, KC_F5, KC_F6, KC_F11, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RCTRL, XXXXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LSFT, F1, F2, F3, F12, XXXXX, XXXXX, VOLU, VOLD, MUTE, RSFT, + XXXXXXX, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F12, XXXXXXX, XXXXXXX, KC_VOLU, KC_VOLD, KC_MUTE, KC_RSFT, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RST, + KC_RST, KC_LRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RST, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LTOG, KC_LHUI, KC_LSAI, KC_LVAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LMOD, KC_LHUD, KC_LSAD, KC_LVAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ) }; @@ -128,7 +124,7 @@ void matrix_init_user(void) { #endif //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h #ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display + iota_gfx_init(); // turns on the display #endif } @@ -147,11 +143,14 @@ void matrix_scan_user(void) { } void matrix_render_user(struct CharacterMatrix *matrix) { - if (is_master) { + if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here - matrix_write_ln(matrix, read_layer_state()); - matrix_write_ln(matrix, read_keylog()); - matrix_write_ln(matrix, read_keylogs()); + matrix_write(matrix, read_layer_state()); + matrix_write(matrix, "\n"); + matrix_write(matrix, read_keylog()); + matrix_write(matrix, "\n"); + matrix_write(matrix, read_keylogs()); + matrix_write(matrix, "\n"); } else { matrix_write(matrix, read_logo()); } @@ -224,4 +223,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk b/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk index 46be73c475..44ff63ada1 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk @@ -9,3 +9,6 @@ SRC += ./lib/glcdfont.c \ ./lib/layer_state_reader.c \ ./lib/logo_reader.c \ ./lib/keylogger.c \ + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c index 8749f7a686..14a5b5d90a 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c @@ -16,7 +16,6 @@ extern bool isScrollMode; extern rgblight_config_t rgblight_config; #endif -extern uint8_t is_master; enum layer_names { _QWERTY, @@ -60,51 +59,51 @@ enum custom_keycodes { #define KC_SCRL SCRL const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, //|------+------+------+------+------+------| |------+------+------+------+------+------| - TAB, CTLA, S, D, F, G, H, J, K, L, CTLSC, QUOT, + KC_TAB, KC_CTLA, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTLSC, KC_QUOT, //|------+------+------+------+------+------| |------+------+------+------+------+------| - GRAVE, SFTZ, WINX, C, V, B, N, M, COMM, WINDO, SFTSL,BSLASH, + KC_GRAVE, KC_SFTZ, KC_WINX, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_WINDO, KC_SFTSL,KC_BSLASH, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT_kc( + [_LOWER] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, XXXXX, PGDN, PSCR, PGUP, LBRC, RBRC, 7, 8, 9, XXXXX, XXXXX, + KC_ESC, KC_XXXXX, KC_PGDN, KC_PSCR, KC_PGUP, KC_LBRC, KC_RBRC, KC_7, KC_8, KC_9, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LCTRL, PLUS, MINS, EQL, LPRN, RPRN, 4, 5, 6, RCTRL, XXXXX, + KC_XXXXX, KC_LCTRL, KC_PLUS, KC_MINS, KC_EQL, KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_RCTRL, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LSFT, HOME, XXXXX, END, LCBR, RCBR, 1, 2, 3, RSFT, XXXXX, + KC_XXXXX, KC_LSFT, KC_HOME, KC_XXXXX, KC_END, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, KC_RSFT, KC_XXXXX, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, 0 + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_0 //`--------------------' `--------------------' ), - [_RAISE] = LAYOUT_kc( + [_RAISE] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - ESC, XXXXX, F7, F8, F9, F10, BTN2, BTN2, MNXT, MPRV, MPLY, MSTP, + KC_ESC, KC_XXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_BTN2, KC_BTN2, KC_MNXT, KC_MPRV, KC_MPLY, KC_MSTP, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LCTRL, F4, F5, F6, F11, LEFT, DOWN, UP, RIGHT, RCTRL, XXXXX, + KC_XXXXX, KC_LCTRL, KC_F4, KC_F5, KC_F6, KC_F11, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RCTRL, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - XXXXX, LSFT, F1, F2, F3, F12, XXXXX, XXXXX, VOLU, VOLD, MUTE, RSFT, + KC_XXXXX, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F12, KC_XXXXX, KC_XXXXX, KC_VOLU, KC_VOLD, KC_MUTE, KC_RSFT, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT( //,-----------------------------------------. ,-----------------------------------------. - RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RST, + KC_RST, KC_LRST, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_RST, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LTOG, KC_LHUI, KC_LSAI, KC_LVAI, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------| |------+------+------+------+------+------| - LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, + KC_LMOD, KC_LHUD, KC_LSAD, KC_LVAD, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LOWER, SPC, SCRL, MBTN1, ENT, RAISE + KC_LOWER, KC_SPC, KC_SCRL, KC_MBTN1, KC_ENT, KC_RAISE //`--------------------' `--------------------' ) }; diff --git a/keyboards/crkbd/keymaps/vxid/config.h b/keyboards/crkbd/keymaps/vxid/config.h index bbf76d705f..d9c0cbccf4 100644 --- a/keyboards/crkbd/keymaps/vxid/config.h +++ b/keyboards/crkbd/keymaps/vxid/config.h @@ -29,6 +29,7 @@ along with this program. If not, see . // #define EE_HANDS #define SSD1306OLED +#define USE_SSD_I2C #define USE_SERIAL_PD2 diff --git a/keyboards/crkbd/keymaps/vxid/keymap.c b/keyboards/crkbd/keymaps/vxid/keymap.c index e1c73caeb7..191ad3cbfe 100644 --- a/keyboards/crkbd/keymaps/vxid/keymap.c +++ b/keyboards/crkbd/keymaps/vxid/keymap.c @@ -7,8 +7,6 @@ extern keymap_config_t keymap_config; -extern uint8_t is_master; - #define _QWERTY 0 #define _LOWER 1 #define _RAISE 2 @@ -25,39 +23,39 @@ enum custom_keycodes { #define KC_RAISE RAISE const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( \ + [_QWERTY] = LAYOUT( \ //,-----------------------------------------. ,-----------------------------------------. - Q, W, E, R, T, ESC, DEL, Y, U, I, O, P,\ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P,\ //|------+------+------+------+------+------| |------+------+------+------+------+------| - A, S, D, F, G, SPC, BSPC, H, J, K, L, SCLN,\ + KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN,\ //|------+------+------+------+------+------| |------+------+------+------+------+------| - Z, X, C, V, B, TAB, ENT, N, M, COMM, DOT, SLSH,\ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,\ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - LALT, LGUI, LCTL, LSFT, RAISE, LOWER \ + KC_LALT, KC_LGUI, KC_LCTL, KC_LSFT, KC_RAISE, KC_LOWER \ //`--------------------' `--------------------' ), - [_LOWER] = LAYOUT_kc( \ + [_LOWER] = LAYOUT( \ //,-----------------------------------------. ,------------------------------------------. - 1, 2, 3, 4, 5, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX,\ //|------+------+------+------+------+------| |-------+------+------+------+------+------| - 6, 7, 8, 9, 0, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ + KC_6, KC_7, KC_8, KC_9, KC_0, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX,\ //|------+------+------+------+------+------| |-------+------+------+------+------+------| - EQL, PLUS, MINS, SLSH, ASTR, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ + KC_EQL, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX,\ //|------+------+------+------+------+------+------| |------+-------+------+------+------+------+------| - LALT, LGUI, LCTL, LSFT, RAISE, LOWER \ + KC_LALT, KC_LGUI, KC_LCTL, KC_LSFT, KC_RAISE, KC_LOWER \ //`--------------------' `--------------------' ), - [_RAISE] = LAYOUT_kc( \ + [_RAISE] = LAYOUT( \ //,-----------------------------------------. ,------------------------------------------. - EXLM, AT, HASH, DLR, PERC, LPRN, RPRN, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LPRN, KC_RPRN, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX,\ //|------+------+------+------+------+------| |-------+------+------+------+------+------| - CIRC, AMPR, ASTR, QUOT, DQUO, LCBR, RCBR, LEFT, DOWN, UP, RIGHT, XXXXX,\ + KC_CIRC, KC_AMPR, KC_ASTR, KC_QUOT, KC_DQUO, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_XXXXX,\ //|------+------+------+------+------+------| |-------+------+------+------+------+------| - BSLS, TILD, GRV, UNDS, PIPE, LBRC, RBRC, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\ + KC_BSLS, KC_TILD, KC_GRV, KC_UNDS, KC_PIPE, KC_LBRC, KC_RBRC, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX, KC_XXXXX,\ //|------+------+------+------+------+------+------| |------+-------+------+------+------+------+------| - LALT, LGUI, LCTL, LSFT, RAISE, LOWER \ + KC_LALT, KC_LGUI, KC_LCTL, KC_LSFT, KC_RAISE, KC_LOWER \ //`--------------------' `--------------------' ) }; diff --git a/keyboards/crkbd/keymaps/vxid/rules.mk b/keyboards/crkbd/keymaps/vxid/rules.mk index 83e87ecf98..8cc80475e6 100644 --- a/keyboards/crkbd/keymaps/vxid/rules.mk +++ b/keyboards/crkbd/keymaps/vxid/rules.mk @@ -14,7 +14,7 @@ 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. +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 @@ -29,3 +29,6 @@ SRC += ./lib/glcdfont.c \ # ./lib/mode_icon_reader.c \ # ./lib/host_led_state_reader.c \ # ./lib/timelogger.c \ + +VPATH += keyboards/crkbd/lib +LIB_SRC += ssd1306.c i2c.c diff --git a/keyboards/crkbd/keymaps/xyverz/keymap.c b/keyboards/crkbd/keymaps/xyverz/keymap.c index c1777f2023..ff9d258f01 100644 --- a/keyboards/crkbd/keymaps/xyverz/keymap.c +++ b/keyboards/crkbd/keymaps/xyverz/keymap.c @@ -17,6 +17,7 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include enum layer_names { _DVORAK, @@ -101,7 +102,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { #ifdef OLED_DRIVER_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_master) { + if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } return rotation; @@ -187,7 +188,7 @@ void oled_render_logo(void) { } void oled_task_user(void) { - if (is_master) { + if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { diff --git a/keyboards/crkbd/rev1/legacy/i2c.c b/keyboards/crkbd/lib/i2c.c similarity index 98% rename from keyboards/crkbd/rev1/legacy/i2c.c rename to keyboards/crkbd/lib/i2c.c index 7b45c3f866..7b82e838c2 100644 --- a/keyboards/crkbd/rev1/legacy/i2c.c +++ b/keyboards/crkbd/lib/i2c.c @@ -6,7 +6,7 @@ #include #include "i2c.h" -#if defined(USE_I2C) || defined(USE_MATRIX_I2C) +#if defined(USE_SSD_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 diff --git a/keyboards/crkbd/rev1/legacy/i2c.h b/keyboards/crkbd/lib/i2c.h similarity index 100% rename from keyboards/crkbd/rev1/legacy/i2c.h rename to keyboards/crkbd/lib/i2c.h diff --git a/keyboards/crkbd/rev1/common/rules.mk b/keyboards/crkbd/rev1/common/rules.mk index 0b8106e3f2..836587e45e 100644 --- a/keyboards/crkbd/rev1/common/rules.mk +++ b/keyboards/crkbd/rev1/common/rules.mk @@ -1,2 +1 @@ -SPLIT_KEYBOARD = yes -SPLIT_TRANSPORT = mirror # for when Split Mirroring drops, it will maintain mirroring functionality +DEFAULT_FOLDER = crkbd/rev1 diff --git a/keyboards/crkbd/rev1/config.h b/keyboards/crkbd/rev1/config.h index 60bd379724..95ffb6d5bf 100644 --- a/keyboards/crkbd/rev1/config.h +++ b/keyboards/crkbd/rev1/config.h @@ -18,6 +18,9 @@ along with this program. If not, see . #pragma once +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 + /* ws2812 RGB LED */ #define RGB_DI_PIN D3 @@ -29,4 +32,8 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE # define RGBLED_NUM 54 // Number of LEDs # define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_SPLIT { 27, 27 } +# define SPLIT_TRANSPORT_MIRROR #endif + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/crkbd/rev1/legacy/matrix.c b/keyboards/crkbd/rev1/legacy/matrix.c deleted file mode 100644 index 371b1913e1..0000000000 --- a/keyboards/crkbd/rev1/legacy/matrix.c +++ /dev/null @@ -1,397 +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 . -*/ - -/* - * scan matrix - */ -#include -#include -#include -#include -#include -#include -#include -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" -#include "split_util.h" -#include "quantum.h" - -#ifdef USE_MATRIX_I2C -# include "i2c.h" -#else // USE_SERIAL -# include "split_scomm.h" -#endif - -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif - -#define ERROR_DISCONNECT_COUNT 5 - -static uint8_t debouncing = DEBOUNCE; -static const int ROWS_PER_HAND = MATRIX_ROWS/2; -static uint8_t error_count = 0; -uint8_t is_master = 0 ; - -static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); -static uint8_t matrix_master_scan(void); - - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} - -void tx_rx_leds_init(void) -{ -#ifndef NO_DEBUG_LEDS - setPinOutput(B0); - setPinOutput(D5); - writePinHigh(B0); - writePinHigh(D5); -#endif -} - -void tx_led_on(void) -{ -#ifndef NO_DEBUG_LEDS - writePinLow(D5); -#endif -} - -void tx_led_off(void) -{ -#ifndef NO_DEBUG_LEDS - writePinHigh(D5); -#endif -} - -void rx_led_on(void) -{ -#ifndef NO_DEBUG_LEDS - writePinLow(B0); -#endif -} - -void rx_led_off(void) -{ -#ifndef NO_DEBUG_LEDS - writePinHigh(B0); -#endif -} - - -void matrix_init(void) -{ - split_keyboard_setup(); - - // initialize row and col - unselect_rows(); - init_cols(); - - tx_rx_leds_init(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - - is_master = has_usb(); - - matrix_init_quantum(); -} - -uint8_t _matrix_scan(void) -{ - bool changed = false; - // Right hand is stored after the left in the matirx so, we need to offset it - int offset = isLeftHand ? 0 : (ROWS_PER_HAND); - - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { - select_row(i); - _delay_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(); - if (matrix_debouncing[i+offset] != cols) { - changed = true; - matrix_debouncing[i+offset] = cols; - debouncing = DEBOUNCE; - } - unselect_rows(); - } - - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { - matrix[i+offset] = matrix_debouncing[i+offset]; - } - } - } - - return changed; -} - -#ifdef USE_MATRIX_I2C - -// Get rows from other half over i2c -int i2c_transaction(void) { - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; - - int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE); - if (err) goto i2c_error; - - // start of matrix stored at 0x00 - err = i2c_master_write(0x00); - if (err) goto i2c_error; - - // Start read - err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); - if (err) goto i2c_error; - - if (!err) { - int i; - for (i = 0; i < ROWS_PER_HAND-1; ++i) { - matrix[slaveOffset+i] = i2c_master_read(I2C_ACK); - } - matrix[slaveOffset+i] = i2c_master_read(I2C_NACK); - i2c_master_stop(); - } else { -i2c_error: // the cable is disconnceted, or something else went wrong - i2c_reset_state(); - return err; - } - - return 0; -} - -#else // USE_SERIAL - -int serial_transaction(int master_changed) { - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; -#ifdef SERIAL_USE_MULTI_TRANSACTION - int ret=serial_update_buffers(master_changed); -#else - int ret=serial_update_buffers(); -#endif - if (ret ) { - if(ret==2) rx_led_on(); - return 1; - } - rx_led_off(); - memcpy(&matrix[slaveOffset], - (void *)serial_slave_buffer, SERIAL_SLAVE_BUFFER_LENGTH); - return 0; -} -#endif - -uint8_t matrix_scan(void) -{ - bool changed = false; - if (is_master) { - changed |= matrix_master_scan(); - }else{ - changed |= matrix_slave_scan(); - int offset = (isLeftHand) ? ROWS_PER_HAND : 0; - memcpy(&matrix[offset], - (void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH); - matrix_scan_quantum(); - } - return (uint8_t) changed; -} - - -uint8_t matrix_master_scan(void) { - - int ret = _matrix_scan(); - int mchanged = 1; - - int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; - -#ifdef USE_MATRIX_I2C -// for (int i = 0; i < ROWS_PER_HAND; ++i) { - /* i2c_slave_buffer[i] = matrix[offset+i]; */ -// i2c_slave_buffer[i] = matrix[offset+i]; -// } -#else // USE_SERIAL - #ifdef SERIAL_USE_MULTI_TRANSACTION - mchanged = memcmp((void *)serial_master_buffer, - &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH); - #endif - memcpy((void *)serial_master_buffer, - &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH); -#endif - -#ifdef USE_MATRIX_I2C - if( i2c_transaction() ) { -#else // USE_SERIAL - if( serial_transaction(mchanged) ) { -#endif - // turn on the indicator led when halves are disconnected - tx_led_on(); - - error_count++; - - if (error_count > ERROR_DISCONNECT_COUNT) { - // reset other half if disconnected - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; - for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[slaveOffset+i] = 0; - } - } - } else { - // turn off the indicator led on no error - tx_led_off(); - error_count = 0; - } - matrix_scan_quantum(); - return ret; -} - -uint8_t matrix_slave_scan(void) { - int ret = _matrix_scan(); - - int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; - -#ifdef USE_MATRIX_I2C - for (int i = 0; i < ROWS_PER_HAND; ++i) { - /* i2c_slave_buffer[i] = matrix[offset+i]; */ - i2c_slave_buffer[i] = matrix[offset+i]; - } -#else // USE_SERIAL - #ifdef SERIAL_USE_MULTI_TRANSACTION - int change = 0; - #endif - for (int i = 0; i < ROWS_PER_HAND; ++i) { - #ifdef SERIAL_USE_MULTI_TRANSACTION - if( serial_slave_buffer[i] != matrix[offset+i] ) - change = 1; - #endif - serial_slave_buffer[i] = matrix[offset+i]; - } - #ifdef SERIAL_USE_MULTI_TRANSACTION - slave_buffer_change_count += change; - #endif -#endif - return ret; -} - -bool matrix_is_modified(void) -{ - if (debouncing) return false; - return true; -} - -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(col_pins[x] & 0xF); - _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF); - } -} - -static matrix_row_t read_cols(void) -{ - matrix_row_t result = 0; - for(int x = 0; x < MATRIX_COLS; x++) { - result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); - } - return result; -} - -static void unselect_rows(void) -{ - for(int x = 0; x < ROWS_PER_HAND; x++) { - _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF); - _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); - } -} - -static void select_row(uint8_t row) -{ - _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF); - _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF); -} diff --git a/keyboards/crkbd/rev1/legacy/rules.mk b/keyboards/crkbd/rev1/legacy/rules.mk index 94c5fe0242..836587e45e 100644 --- a/keyboards/crkbd/rev1/legacy/rules.mk +++ b/keyboards/crkbd/rev1/legacy/rules.mk @@ -1,10 +1 @@ -CUSTOM_MATRIX = yes - -SRC += matrix.c \ - split_util.c \ - split_scomm.c - -QUANTUM_LIB_SRC += i2c.c serial.c - -# Disable unsupported hardware -BACKLIGHT_SUPPORTED = no +DEFAULT_FOLDER = crkbd/rev1 diff --git a/keyboards/crkbd/rev1/legacy/serial.c b/keyboards/crkbd/rev1/legacy/serial.c deleted file mode 100644 index f6293c3dc2..0000000000 --- a/keyboards/crkbd/rev1/legacy/serial.c +++ /dev/null @@ -1,589 +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 - -#ifdef __AVR_ATmega32U4__ - // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial. - #ifdef USE_I2C - #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1 - #error Using ATmega32U4 I2C, so can not use PD0, PD1 - #endif - #endif - - #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3 - #define SERIAL_PIN_DDR DDRD - #define SERIAL_PIN_PORT PORTD - #define SERIAL_PIN_INPUT PIND - #if SOFT_SERIAL_PIN == D0 - #define SERIAL_PIN_MASK _BV(PD0) - #define EIMSK_BIT _BV(INT0) - #define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01))) - #define SERIAL_PIN_INTERRUPT INT0_vect - #elif SOFT_SERIAL_PIN == D1 - #define SERIAL_PIN_MASK _BV(PD1) - #define EIMSK_BIT _BV(INT1) - #define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11))) - #define SERIAL_PIN_INTERRUPT INT1_vect - #elif SOFT_SERIAL_PIN == D2 - #define SERIAL_PIN_MASK _BV(PD2) - #define EIMSK_BIT _BV(INT2) - #define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21))) - #define SERIAL_PIN_INTERRUPT INT2_vect - #elif SOFT_SERIAL_PIN == D3 - #define SERIAL_PIN_MASK _BV(PD3) - #define EIMSK_BIT _BV(INT3) - #define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31))) - #define SERIAL_PIN_INTERRUPT INT3_vect - #endif - #elif SOFT_SERIAL_PIN == E6 - #define SERIAL_PIN_DDR DDRE - #define SERIAL_PIN_PORT PORTE - #define SERIAL_PIN_INPUT PINE - #define SERIAL_PIN_MASK _BV(PE6) - #define EIMSK_BIT _BV(INT6) - #define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) - #define SERIAL_PIN_INTERRUPT INT6_vect - #else - #error invalid SOFT_SERIAL_PIN value - #endif - -#else - #error serial.c now support ATmega32U4 only -#endif - -//////////////// for backward compatibility //////////////////////////////// -#ifndef SERIAL_USE_MULTI_TRANSACTION -/* --- USE Simple API (OLD API, compatible with let's split serial.c) */ - #if SERIAL_SLAVE_BUFFER_LENGTH > 0 - uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; - #endif - #if SERIAL_MASTER_BUFFER_LENGTH > 0 - uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; - #endif - uint8_t volatile status0 = 0; - -SSTD_t transactions[] = { - { (uint8_t *)&status0, - #if SERIAL_MASTER_BUFFER_LENGTH > 0 - sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, - #else - 0, (uint8_t *)NULL, - #endif - #if SERIAL_SLAVE_BUFFER_LENGTH > 0 - sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer - #else - 0, (uint8_t *)NULL, - #endif - } -}; - -void serial_master_init(void) -{ soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } - -void serial_slave_init(void) -{ soft_serial_target_init(transactions, TID_LIMIT(transactions)); } - -// 0 => no error -// 1 => slave did not respond -// 2 => checksum error -int serial_update_buffers() -{ - int result; - result = soft_serial_transaction(); - return result; -} - -#endif // end of Simple API (OLD API, compatible with let's split serial.c) -//////////////////////////////////////////////////////////////////////////// - -#define ALWAYS_INLINE __attribute__((always_inline)) -#define NO_INLINE __attribute__((noinline)) -#define _delay_sub_us(x) __builtin_avr_delay_cycles(x) - -// 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 -// 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) { - SERIAL_PIN_DDR |= SERIAL_PIN_MASK; -} - -// 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) { - SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK; - SERIAL_PIN_PORT |= SERIAL_PIN_MASK; -} - -inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; -inline static -uint8_t serial_read_pin(void) { - return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK); -} - -inline static void serial_low(void) ALWAYS_INLINE; -inline static -void serial_low(void) { - SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; -} - -inline static void serial_high(void) ALWAYS_INLINE; -inline static -void serial_high(void) { - SERIAL_PIN_PORT |= SERIAL_PIN_MASK; -} - -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-INT3,INT6 - EIMSK |= EIMSK_BIT; -#if SERIAL_PIN_MASK == _BV(PE6) - // Trigger on falling edge of INT6 - EICRB &= EICRx_BIT; -#else - // Trigger on falling edge of INT0-INT3 - EICRA &= EICRx_BIT; -#endif -} - -// 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) diff --git a/keyboards/crkbd/rev1/legacy/serial.h b/keyboards/crkbd/rev1/legacy/serial.h deleted file mode 100644 index 7e0c0847a4..0000000000 --- a/keyboards/crkbd/rev1/legacy/serial.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef SOFT_SERIAL_H -#define SOFT_SERIAL_H - -#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 (OLD API, compatible with let's split serial.c) -// ex. -// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 -// #define SERIAL_MASTER_BUFFER_LENGTH 1 -// -// //// USE flexible API (using multi-type transaction function) -// #define SERIAL_USE_MULTI_TRANSACTION -// -// ///////////////////////////////////////////////////////////////// - - -#ifndef SERIAL_USE_MULTI_TRANSACTION -/* --- USE Simple API (OLD API, compatible with let's split serial.c) */ -#if SERIAL_SLAVE_BUFFER_LENGTH > 0 -extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; -#endif -#if SERIAL_MASTER_BUFFER_LENGTH > 0 -extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; -#endif - -void serial_master_init(void); -void serial_slave_init(void); -int serial_update_buffers(void); - -#endif // USE Simple API - -// 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 - -#endif /* SOFT_SERIAL_H */ diff --git a/keyboards/crkbd/rev1/legacy/split_scomm.c b/keyboards/crkbd/rev1/legacy/split_scomm.c deleted file mode 100644 index eccf2f3d2f..0000000000 --- a/keyboards/crkbd/rev1/legacy/split_scomm.c +++ /dev/null @@ -1,111 +0,0 @@ -/* -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 . -*/ - -#ifdef USE_SERIAL -#ifdef SERIAL_USE_MULTI_TRANSACTION -/* --- USE flexible API (using multi-type transaction function) --- */ - -#include -#include -#include -#include "split_scomm.h" -#include "serial.h" -#ifdef CONSOLE_ENABLE - #include "debug.h" -#endif - -uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; -uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; -uint8_t volatile status_com = 0; -uint8_t volatile status1 = 0; -uint8_t slave_buffer_change_count = 0; -uint8_t s_change_old = 0xff; -uint8_t s_change_new = 0xff; - -SSTD_t transactions[] = { -#define GET_SLAVE_STATUS 0 - /* master buffer not changed, only recive slave_buffer_change_count */ - { (uint8_t *)&status_com, - 0, NULL, - sizeof(slave_buffer_change_count), &slave_buffer_change_count, - }, -#define PUT_MASTER_GET_SLAVE_STATUS 1 - /* master buffer changed need send, and recive slave_buffer_change_count */ - { (uint8_t *)&status_com, - sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, - sizeof(slave_buffer_change_count), &slave_buffer_change_count, - }, -#define GET_SLAVE_BUFFER 2 - /* recive serial_slave_buffer */ - { (uint8_t *)&status1, - 0, NULL, - sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer - } -}; - -void serial_master_init(void) -{ - soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); -} - -void serial_slave_init(void) -{ - soft_serial_target_init(transactions, TID_LIMIT(transactions)); -} - -// 0 => no error -// 1 => slave did not respond -// 2 => checksum error -int serial_update_buffers(int master_update) -{ - int status, smatstatus; - static int need_retry = 0; - - if( s_change_old != s_change_new ) { - smatstatus = soft_serial_transaction(GET_SLAVE_BUFFER); - if( smatstatus == TRANSACTION_END ) { - s_change_old = s_change_new; -#ifdef CONSOLE_ENABLE - if (debug_matrix) { - uprintf("slave matrix = %b %b %b %b\n", - serial_slave_buffer[0], serial_slave_buffer[1], - serial_slave_buffer[2], serial_slave_buffer[3]); - } -#endif - } - } else { - // serial_slave_buffer dosen't change - smatstatus = TRANSACTION_END; // dummy status - } - - if( !master_update && !need_retry) { - status = soft_serial_transaction(GET_SLAVE_STATUS); - } else { - status = soft_serial_transaction(PUT_MASTER_GET_SLAVE_STATUS); - } - if( status == TRANSACTION_END ) { - s_change_new = slave_buffer_change_count; - need_retry = 0; - } else { - need_retry = 1; - } - return smatstatus; -} - -#endif // SERIAL_USE_MULTI_TRANSACTION -#endif /* USE_SERIAL */ diff --git a/keyboards/crkbd/rev1/legacy/split_scomm.h b/keyboards/crkbd/rev1/legacy/split_scomm.h deleted file mode 100644 index 47f0ca1b9d..0000000000 --- a/keyboards/crkbd/rev1/legacy/split_scomm.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -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 . -*/ - -#ifndef SPLIT_COMM_H -#define SPLIT_COMM_H - -#ifndef SERIAL_USE_MULTI_TRANSACTION -/* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */ -#include "serial.h" - -#else -/* --- USE flexible API (using multi-type transaction function) --- */ -// Buffers for master - slave communication -#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 -#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2 - -extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; -extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; -extern uint8_t slave_buffer_change_count; - -void serial_master_init(void); -void serial_slave_init(void); -int serial_update_buffers(int master_changed); - -#endif - -#endif /* SPLIT_COMM_H */ diff --git a/keyboards/crkbd/rev1/legacy/split_util.c b/keyboards/crkbd/rev1/legacy/split_util.c deleted file mode 100644 index d0fee04ad6..0000000000 --- a/keyboards/crkbd/rev1/legacy/split_util.c +++ /dev/null @@ -1,127 +0,0 @@ -/* -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 -#include -#include -#include -#include -#include -#include "split_util.h" -#include "matrix.h" -#include "keyboard.h" -#include "wait.h" - -#ifdef EE_HANDS -# include "eeconfig.h" -#endif - -#ifdef USE_MATRIX_I2C -# include "i2c_master.h" -#else -# include "split_scomm.h" -#endif - -#ifndef SPLIT_USB_TIMEOUT -# define SPLIT_USB_TIMEOUT 2000 -#endif - -#ifndef SPLIT_USB_TIMEOUT_POLL -# define SPLIT_USB_TIMEOUT_POLL 10 -#endif - -volatile bool isLeftHand = true; - -bool waitForUsb(void) { - for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) { - // This will return true if a USB connection has been established - if (UDADDR & _BV(ADDEN)) { - return true; - } - wait_ms(SPLIT_USB_TIMEOUT_POLL); - } - - // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow - (USBCON &= ~(_BV(USBE) | _BV(OTGPADE))); - - return false; -} - -__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); - return readPin(SPLIT_HAND_PIN); -#elif defined(EE_HANDS) - return eeconfig_read_handedness(); -#elif defined(MASTER_RIGHT) - return !has_usb(); -#endif - - return has_usb(); -} - -__attribute__((weak)) bool has_usb(void) { - static enum { UNKNOWN, MASTER, SLAVE } usbstate = UNKNOWN; - - // only check once, as this is called often - if (usbstate == UNKNOWN) { -#if defined(SPLIT_USB_DETECT) - usbstate = waitForUsb() ? MASTER : SLAVE; -#elif defined(__AVR__) - USBCON |= (1 << OTGPADE); // enables VBUS pad - wait_us(5); - - usbstate = (USBSTA & (1 << VBUS)) ? MASTER : SLAVE; // checks state of VBUS -#else - usbstate = MASTER; -#endif - } - - return (usbstate == MASTER); -} - -static void keyboard_master_setup(void) { - -#ifdef USE_MATRIX_I2C - i2c_init(); -#else - serial_master_init(); -#endif -} - -static void keyboard_slave_setup(void) { - -#ifdef USE_MATRIX_I2C - i2c_slave_init(SLAVE_I2C_ADDRESS); -#else - serial_slave_init(); -#endif -} - -// this code runs before the usb and keyboard is initialized -void split_keyboard_setup(void) { - isLeftHand = is_keyboard_left(); - - if (has_usb()) { - keyboard_master_setup(); - } else { - keyboard_slave_setup(); - } - sei(); -} diff --git a/keyboards/crkbd/rev1/legacy/ssd1306.c b/keyboards/crkbd/rev1/legacy/ssd1306.c deleted file mode 100644 index b04b7e15c1..0000000000 --- a/keyboards/crkbd/rev1/legacy/ssd1306.c +++ /dev/null @@ -1,357 +0,0 @@ -#ifdef SSD1306OLED - -#include "ssd1306.h" -#include "i2c.h" -#include -#include "print.h" -#ifdef PROTOCOL_LUFA -#include "lufa.h" -#endif -#include "sendchar.h" -#include "timer.h" - -struct CharacterMatrix display; - -extern const unsigned char font[] PROGMEM; - -#ifndef OLED_BLANK_CHAR -#define OLED_BLANK_CHAR ' ' -#endif - -#ifndef OLED_BITS_FILTER -#define OLED_BITS_FILTER -#endif - -// Set this to 1 to help diagnose early startup problems -// when testing power-on with ble. Turn it off otherwise, -// as the latency of printing most of the debug info messes -// with the matrix scan, causing keys to drop. -#define DEBUG_TO_SCREEN 0 - -//static uint16_t last_battery_update; -//static uint32_t vbat; -//#define BatteryUpdateInterval 10000 /* milliseconds */ - -// 'last_flush' is declared as uint16_t, -// so this must be less than 65535 -#ifndef ScreenOffInterval -#define ScreenOffInterval 60000 /* milliseconds */ -#endif - -#if DEBUG_TO_SCREEN -static uint8_t displaying; -#endif -static uint16_t last_flush; - -static bool force_dirty = true; - -// Write command sequence. -// Returns true on success. -static inline bool _send_cmd1(uint8_t cmd) { - bool res = false; - - if (i2c_start_write(SSD1306_ADDRESS)) { - xprintf("failed to start write to %d\n", SSD1306_ADDRESS); - goto done; - } - - if (i2c_master_write(0x0 /* command byte follows */)) { - print("failed to write control byte\n"); - - goto done; - } - - if (i2c_master_write(cmd)) { - xprintf("failed to write command %d\n", cmd); - goto done; - } - res = true; -done: - i2c_master_stop(); - return res; -} - -#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;} -#define send_cmds(c) if (!_send_cmds(c,sizeof(c))) {goto done;} -#define cmd1(X) X -#define cmd2(X,Y) X,Y -#define cmd3(X,Y,Z) X,Y,Z - -static bool _send_cmds(const uint8_t* p,uint8_t sz) { - for(uint8_t i=sz;i;i--) { - send_cmd1( pgm_read_byte(p++) ); - } - return true; -done: - return false; -} - -#define SEND_CMDS(...) {static const uint8_t _cmds[] PROGMEM = { __VA_ARGS__,0 };send_cmds(_cmds);} - -static void clear_display(void) { - matrix_clear(&display); - - // Clear all of the display bits (there can be random noise - // in the RAM on startup) - SEND_CMDS( - cmd3(PageAddr, 0, (DisplayHeight / 8) - 1), - cmd3(ColumnAddr, 0, DisplayWidth - 1) - ); - - if (i2c_start_write(SSD1306_ADDRESS)) { - goto done; - } - if (i2c_master_write(0x40)) { - // Data mode - goto done; - } - for (uint8_t row = MatrixRows;row; row--) { - for (uint8_t col = DisplayWidth; col; col--) { - i2c_master_write(0); - } - } - - display.dirty = false; - -done: - i2c_master_stop(); -} - -#if DEBUG_TO_SCREEN -#undef sendchar -static int8_t capture_sendchar(uint8_t c) { - sendchar(c); - iota_gfx_write_char(c); - - if (!displaying) { - iota_gfx_flush(); - } - return 0; -} -#endif - -bool iota_gfx_init(bool rotate) { - bool success = false; - - i2c_master_init(); - SEND_CMDS( - cmd1(DisplayOff), - cmd2(SetDisplayClockDiv, 0x80), - cmd2(SetMultiPlex, DisplayHeight - 1), - cmd2(SetDisplayOffset, 0), - cmd1(SetStartLine | 0x0), - cmd2(SetChargePump, 0x14 /* Enable */), - cmd2(SetMemoryMode, 0 /* horizontal addressing */) - ); - - if(rotate){ - // the following Flip the display orientation 180 degrees - SEND_CMDS( - cmd1(SegRemap), - cmd1(ComScanInc) - ); - }else{ - // Flips the display orientation 0 degrees - SEND_CMDS( - cmd1(SegRemap | 0x1), - cmd1(ComScanDec) - ); - } - - SEND_CMDS( -#ifdef SSD1306_128X64 - cmd2(SetComPins, 0x12), -#else - cmd2(SetComPins, 0x2), -#endif - cmd2(SetContrast, 0x8f), - cmd2(SetPreCharge, 0xf1), - cmd2(SetVComDetect, 0x40), - cmd1(DisplayAllOnResume), - cmd1(NormalDisplay), - cmd1(DeActivateScroll), - cmd1(DisplayOn), - - cmd2(SetContrast, 0) // Dim - ); - - clear_display(); - - success = true; - - iota_gfx_flush(); - -#if DEBUG_TO_SCREEN - print_set_sendchar(capture_sendchar); -#endif - -done: - return success; -} - -bool iota_gfx_off(void) { - bool success = false; - - send_cmd1(DisplayOff); - success = true; - -done: - return success; -} - -bool iota_gfx_on(void) { - bool success = false; - - send_cmd1(DisplayOn); - success = true; - -done: - return success; -} - -void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) { - *matrix->cursor = c; - ++matrix->cursor; - - if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) { - // We went off the end; scroll the display upwards by one line - memmove(&matrix->display[0], &matrix->display[1], - MatrixCols * (MatrixRows - 1)); - matrix->cursor = &matrix->display[MatrixRows - 1][0]; - memset(matrix->cursor, OLED_BLANK_CHAR, MatrixCols); - } -} - -void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) { - matrix->dirty = true; - - if (c == '\n') { - // Clear to end of line from the cursor and then move to the - // start of the next line - uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols; - - while (cursor_col++ < MatrixCols) { - matrix_write_char_inner(matrix, OLED_BLANK_CHAR); - } - return; - } - - matrix_write_char_inner(matrix, c); -} - -void iota_gfx_write_char(uint8_t c) { - matrix_write_char(&display, c); -} - -void matrix_write(struct CharacterMatrix *matrix, const char *data) { - while (*data) { - matrix_write_char(matrix, *data); - ++data; - } -} - -void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) { - matrix_write(matrix, data); - matrix_write(matrix, "\n"); -} - -void iota_gfx_write(const char *data) { - matrix_write(&display, data); -} - -void matrix_write_P(struct CharacterMatrix *matrix, const char *data) { - while (true) { - uint8_t c = pgm_read_byte(data); - if (c == 0) { - return; - } - matrix_write_char(matrix, c); - ++data; - } -} - -void iota_gfx_write_P(const char *data) { - matrix_write_P(&display, data); -} - -void matrix_clear(struct CharacterMatrix *matrix) { - memset(matrix->display, OLED_BLANK_CHAR, sizeof(matrix->display)); - matrix->cursor = &matrix->display[0][0]; - matrix->dirty = true; -} - -void iota_gfx_clear_screen(void) { - matrix_clear(&display); -} - -void matrix_render(struct CharacterMatrix *matrix) { - last_flush = timer_read(); - iota_gfx_on(); -#if DEBUG_TO_SCREEN - ++displaying; -#endif - - // Move to the home position - SEND_CMDS( - cmd3(PageAddr, 0, MatrixRows - 1), - cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1) - ); - - if (i2c_start_write(SSD1306_ADDRESS)) { - goto done; - } - if (i2c_master_write(0x40)) { - // Data mode - goto done; - } - - for (uint8_t row = 0; row < MatrixRows; ++row) { - for (uint8_t col = 0; col < MatrixCols; ++col) { - const uint8_t *glyph = font + (matrix->display[row][col] * FontWidth); - - for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) { - uint8_t colBits = pgm_read_byte(glyph + glyphCol); - i2c_master_write(colBits OLED_BITS_FILTER); - } - - // 1 column of space between chars (it's not included in the glyph) - //i2c_master_write(0); - } - } - - matrix->dirty = false; - -done: - i2c_master_stop(); -#if DEBUG_TO_SCREEN - --displaying; -#endif -} - -void iota_gfx_flush(void) { - matrix_render(&display); -} - -__attribute__ ((weak)) -void iota_gfx_task_user(void) { -} - -void iota_gfx_task(void) { - iota_gfx_task_user(); - - if (display.dirty|| force_dirty) { - iota_gfx_flush(); - force_dirty = false; - } - - if (ScreenOffInterval !=0 && timer_elapsed(last_flush) > ScreenOffInterval) { - iota_gfx_off(); - } -} - -bool process_record_gfx(uint16_t keycode, keyrecord_t *record) { - force_dirty = true; - return true; -} - -#endif diff --git a/keyboards/crkbd/rev1/legacy/ssd1306.h b/keyboards/crkbd/rev1/legacy/ssd1306.h deleted file mode 100644 index 11a3cc67f4..0000000000 --- a/keyboards/crkbd/rev1/legacy/ssd1306.h +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#include -#include -#include "action.h" - -enum ssd1306_cmds { - DisplayOff = 0xAE, - DisplayOn = 0xAF, - - SetContrast = 0x81, - DisplayAllOnResume = 0xA4, - - DisplayAllOn = 0xA5, - NormalDisplay = 0xA6, - InvertDisplay = 0xA7, - SetDisplayOffset = 0xD3, - SetComPins = 0xda, - SetVComDetect = 0xdb, - SetDisplayClockDiv = 0xD5, - SetPreCharge = 0xd9, - SetMultiPlex = 0xa8, - SetLowColumn = 0x00, - SetHighColumn = 0x10, - SetStartLine = 0x40, - - SetMemoryMode = 0x20, - ColumnAddr = 0x21, - PageAddr = 0x22, - - ComScanInc = 0xc0, - ComScanDec = 0xc8, - SegRemap = 0xa0, - SetChargePump = 0x8d, - ExternalVcc = 0x01, - SwitchCapVcc = 0x02, - - ActivateScroll = 0x2f, - DeActivateScroll = 0x2e, - SetVerticalScrollArea = 0xa3, - RightHorizontalScroll = 0x26, - LeftHorizontalScroll = 0x27, - VerticalAndRightHorizontalScroll = 0x29, - VerticalAndLeftHorizontalScroll = 0x2a, -}; - -// Controls the SSD1306 128x32 OLED display via i2c - -#ifndef SSD1306_ADDRESS -#define SSD1306_ADDRESS 0x3C -#endif - -#define DisplayHeight 32 -#define DisplayWidth 128 - -#define FontHeight 8 -#define FontWidth 6 - -#define MatrixRows (DisplayHeight / FontHeight) -#define MatrixCols (DisplayWidth / FontWidth) - -struct CharacterMatrix { - uint8_t display[MatrixRows][MatrixCols]; - uint8_t *cursor; - bool dirty; -}; - -extern struct CharacterMatrix display; - -bool iota_gfx_init(bool rotate); -void iota_gfx_task(void); -bool iota_gfx_off(void); -bool iota_gfx_on(void); -void iota_gfx_flush(void); -void iota_gfx_write_char(uint8_t c); -void iota_gfx_write(const char *data); -void iota_gfx_write_P(const char *data); -void iota_gfx_clear_screen(void); - -void iota_gfx_task_user(void); - -void matrix_clear(struct CharacterMatrix *matrix); -void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c); -void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c); -void matrix_write(struct CharacterMatrix *matrix, const char *data); -void matrix_write_ln(struct CharacterMatrix *matrix, const char *data); -void matrix_write_P(struct CharacterMatrix *matrix, const char *data); -void matrix_render(struct CharacterMatrix *matrix); - -bool process_record_gfx(uint16_t keycode, keyrecord_t *record); diff --git a/keyboards/crkbd/rev1/rev1.c b/keyboards/crkbd/rev1/rev1.c index f2df8942ab..63e4bed522 100644 --- a/keyboards/crkbd/rev1/rev1.c +++ b/keyboards/crkbd/rev1/rev1.c @@ -83,47 +83,14 @@ led_config_t g_led_config = { { 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1 } }; -#endif -void matrix_init_kb(void) { - -#ifdef RGB_MATRIX_ENABLE - if (!isLeftHand) { - g_led_config = (led_config_t){ { - { 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 }, - { 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 } - }, { - { 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 }, { 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 } - }, { - 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 - matrix_init_user(); +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); } -#ifdef SSD1306OLED -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_gfx(keycode,record) && process_record_user(keycode, record); +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); } #endif diff --git a/keyboards/crkbd/rev1/rev1.h b/keyboards/crkbd/rev1/rev1.h index c805efccce..126c4b8998 100644 --- a/keyboards/crkbd/rev1/rev1.h +++ b/keyboards/crkbd/rev1/rev1.h @@ -19,21 +19,7 @@ along with this program. If not, see . #pragma once #include "crkbd.h" -#if defined(KEYBOARD_crkbd_rev1_legacy) -# include "legacy.h" -#elif defined(KEYBOARD_crkbd_rev1_common) -# include "common.h" -#endif - #include "quantum.h" -#include "split_util.h" -#ifdef PROTOCOL_LUFA -# include "lufa.h" -#endif -#ifdef SSD1306OLED -# include "ssd1306.h" -#endif - // clang-format off #define LAYOUT_split_3x6_3( \ @@ -70,18 +56,5 @@ along with this program. If not, see . { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \ } -#define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, R30, R31, R32 \ - ) \ - LAYOUT_split_3x6_3( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##R30, KC_##R31, KC_##R32 \ - ) -// clang-format on #define LAYOUT LAYOUT_split_3x6_3 diff --git a/keyboards/crkbd/rev1/rules.mk b/keyboards/crkbd/rev1/rules.mk index 6bc5a5b038..d38a618090 100644 --- a/keyboards/crkbd/rev1/rules.mk +++ b/keyboards/crkbd/rev1/rules.mk @@ -1,3 +1 @@ -LIB_SRC += ssd1306.c - -DEFAULT_FOLDER = crkbd/rev1/legacy +SPLIT_KEYBOARD = yes diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk index adbbf016ed..466d9265f8 100644 --- a/keyboards/crkbd/rules.mk +++ b/keyboards/crkbd/rules.mk @@ -34,7 +34,7 @@ RGB_MATRIX_DRIVER = WS2812 SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if firmware size over limit, try this option -# CFLAGS += -flto +# LTO_ENABLE = yes LAYOUTS = split_3x5_3 split_3x6_3 -DEFAULT_FOLDER = crkbd/rev1/legacy +DEFAULT_FOLDER = crkbd/rev1 diff --git a/keyboards/custommk/genesis/genesis.c b/keyboards/custommk/genesis/genesis.c index 47296dd804..f684d7ef7a 100644 --- a/keyboards/custommk/genesis/genesis.c +++ b/keyboards/custommk/genesis/genesis.c @@ -16,7 +16,8 @@ #include "genesis.h" -__attribute__((weak)) void 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; /* top left encoder */ if (index == 0) { if (clockwise) { @@ -32,5 +33,6 @@ __attribute__((weak)) void encoder_update_user(uint8_t index, bool clockwise) { } else { tap_code(KC_VOLD); } - } -} \ No newline at end of file + } + return true; +} diff --git a/keyboards/cutie_club/borsdorf/rules.mk b/keyboards/cutie_club/borsdorf/rules.mk index 4430f2419c..6d815e4ff3 100644 --- a/keyboards/cutie_club/borsdorf/rules.mk +++ b/keyboards/cutie_club/borsdorf/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/cutie_club/giant_macro_pad/config.h b/keyboards/cutie_club/giant_macro_pad/config.h new file mode 100755 index 0000000000..c6ef81309d --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/config.h @@ -0,0 +1,48 @@ +/* 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 0x74B6 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Cutie Club +#define PRODUCT Cupar19 Giant Macro Pad + +/* key matrix size */ +#define MATRIX_ROWS 20 +#define MATRIX_COLS 20 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { C10, C11, C12, D2, B3, B4, B5, B6, B7, B8, A3, B2, B1, B0, C5, C4, A7, A6, A5, A4 } +#define MATRIX_COL_PINS { C9, C8, C7, C6, B15, B14, B13, B12, A8, A15, B9, A2, A1, A0, C3, C2, C1, C0, F1, F0 } +#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/cutie_club/giant_macro_pad/giant_macro_pad.c b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.c new file mode 100755 index 0000000000..934817aca2 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.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 "giant_macro_pad.h" diff --git a/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h new file mode 100755 index 0000000000..8e0b612f3c --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h @@ -0,0 +1,72 @@ +/* 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" + +/* 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_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, k00_16, k00_17, k00_18, k00_19, \ + 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_14, k01_15, k01_16, k01_17, k01_18, k01_19, \ + 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_14, k02_15, k02_16, k02_17, k02_18, k02_19, \ + 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_14, k03_15, k03_16, k03_17, k03_18, k03_19, \ + k04_00, k04_01, k04_02, k04_03, k04_04, k04_05, k04_06, k04_07, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_14, k04_15, k04_16, k04_17, k04_18, k04_19, \ + k05_00, k05_01, k05_02, k05_03, k05_04, k05_05, k05_06, k05_07, k05_08, k05_09, k05_10, k05_11, k05_12, k05_13, k05_14, k05_15, k05_16, k05_17, k05_18, k05_19, \ + k06_00, k06_01, k06_02, k06_03, k06_04, k06_05, k06_06, k06_07, k06_08, k06_09, k06_10, k06_11, k06_12, k06_13, k06_14, k06_15, k06_16, k06_17, k06_18, k06_19, \ + k07_00, k07_01, k07_02, k07_03, k07_04, k07_05, k07_06, k07_07, k07_08, k07_09, k07_10, k07_11, k07_12, k07_13, k07_14, k07_15, k07_16, k07_17, k07_18, k07_19, \ + k08_00, k08_01, k08_02, k08_03, k08_04, k08_05, k08_06, k08_07, k08_08, k08_09, k08_10, k08_11, k08_12, k08_13, k08_14, k08_15, k08_16, k08_17, k08_18, k08_19, \ + k09_00, k09_01, k09_02, k09_03, k09_04, k09_05, k09_06, k09_07, k09_08, k09_09, k09_10, k09_11, k09_12, k09_13, k09_14, k09_15, k09_16, k09_17, k09_18, k09_19, \ + k10_00, k10_01, k10_02, k10_03, k10_04, k10_05, k10_06, k10_07, k10_08, k10_09, k10_10, k10_11, k10_12, k10_13, k10_14, k10_15, k10_16, k10_17, k10_18, k10_19, \ + k11_00, k11_01, k11_02, k11_03, k11_04, k11_05, k11_06, k11_07, k11_08, k11_09, k11_10, k11_11, k11_12, k11_13, k11_14, k11_15, k11_16, k11_17, k11_18, k11_19, \ + k12_00, k12_01, k12_02, k12_03, k12_04, k12_05, k12_06, k12_07, k12_08, k12_09, k12_10, k12_11, k12_12, k12_13, k12_14, k12_15, k12_16, k12_17, k12_18, k12_19, \ + k13_00, k13_01, k13_02, k13_03, k13_04, k13_05, k13_06, k13_07, k13_08, k13_09, k13_10, k13_11, k13_12, k13_13, k13_14, k13_15, k13_16, k13_17, k13_18, k13_19, \ + k14_00, k14_01, k14_02, k14_03, k14_04, k14_05, k14_06, k14_07, k14_08, k14_09, k14_10, k14_11, k14_12, k14_13, k14_14, k14_15, k14_16, k14_17, k14_18, k14_19, \ + k15_00, k15_01, k15_02, k15_03, k15_04, k15_05, k15_06, k15_07, k15_08, k15_09, k15_10, k15_11, k15_12, k15_13, k15_14, k15_15, k15_16, k15_17, k15_18, k15_19, \ + k16_00, k16_01, k16_02, k16_03, k16_04, k16_05, k16_06, k16_07, k16_08, k16_09, k16_10, k16_11, k16_12, k16_13, k16_14, k16_15, k16_16, k16_17, k16_18, k16_19, \ + k17_00, k17_01, k17_02, k17_03, k17_04, k17_05, k17_06, k17_07, k17_08, k17_09, k17_10, k17_11, k17_12, k17_13, k17_14, k17_15, k17_16, k17_17, k17_18, k17_19, \ + k18_00, k18_01, k18_02, k18_03, k18_04, k18_05, k18_06, k18_07, k18_08, k18_09, k18_10, k18_11, k18_12, k18_13, k18_14, k18_15, k18_16, k18_17, k18_18, k18_19, \ + k19_00, k19_01, k19_02, k19_03, k19_04, k19_05, k19_06, k19_07, k19_08, k19_09, k19_10, k19_11, k19_12, k19_13, k19_14, k19_15, k19_16, k19_17, k19_18, k19_19 \ +) \ +{ \ + { 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, k00_16, k00_17, k00_18, k00_19 }, \ + { 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_14, k01_15, k01_16, k01_17, k01_18, k01_19 }, \ + { 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_14, k02_15, k02_16, k02_17, k02_18, k02_19 }, \ + { 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_14, k03_15, k03_16, k03_17, k03_18, k03_19 }, \ + { k04_00, k04_01, k04_02, k04_03, k04_04, k04_05, k04_06, k04_07, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_14, k04_15, k04_16, k04_17, k04_18, k04_19 }, \ + { k05_00, k05_01, k05_02, k05_03, k05_04, k05_05, k05_06, k05_07, k05_08, k05_09, k05_10, k05_11, k05_12, k05_13, k05_14, k05_15, k05_16, k05_17, k05_18, k05_19 }, \ + { k06_00, k06_01, k06_02, k06_03, k06_04, k06_05, k06_06, k06_07, k06_08, k06_09, k06_10, k06_11, k06_12, k06_13, k06_14, k06_15, k06_16, k06_17, k06_18, k06_19 }, \ + { k07_00, k07_01, k07_02, k07_03, k07_04, k07_05, k07_06, k07_07, k07_08, k07_09, k07_10, k07_11, k07_12, k07_13, k07_14, k07_15, k07_16, k07_17, k07_18, k07_19 }, \ + { k08_00, k08_01, k08_02, k08_03, k08_04, k08_05, k08_06, k08_07, k08_08, k08_09, k08_10, k08_11, k08_12, k08_13, k08_14, k08_15, k08_16, k08_17, k08_18, k08_19 }, \ + { k09_00, k09_01, k09_02, k09_03, k09_04, k09_05, k09_06, k09_07, k09_08, k09_09, k09_10, k09_11, k09_12, k09_13, k09_14, k09_15, k09_16, k09_17, k09_18, k09_19 }, \ + { k10_00, k10_01, k10_02, k10_03, k10_04, k10_05, k10_06, k10_07, k10_08, k10_09, k10_10, k10_11, k10_12, k10_13, k10_14, k10_15, k10_16, k10_17, k10_18, k10_19 }, \ + { k11_00, k11_01, k11_02, k11_03, k11_04, k11_05, k11_06, k11_07, k11_08, k11_09, k11_10, k11_11, k11_12, k11_13, k11_14, k11_15, k11_16, k11_17, k11_18, k11_19 }, \ + { k12_00, k12_01, k12_02, k12_03, k12_04, k12_05, k12_06, k12_07, k12_08, k12_09, k12_10, k12_11, k12_12, k12_13, k12_14, k12_15, k12_16, k12_17, k12_18, k12_19 }, \ + { k13_00, k13_01, k13_02, k13_03, k13_04, k13_05, k13_06, k13_07, k13_08, k13_09, k13_10, k13_11, k13_12, k13_13, k13_14, k13_15, k13_16, k13_17, k13_18, k13_19 }, \ + { k14_00, k14_01, k14_02, k14_03, k14_04, k14_05, k14_06, k14_07, k14_08, k14_09, k14_10, k14_11, k14_12, k14_13, k14_14, k14_15, k14_16, k14_17, k14_18, k14_19 }, \ + { k15_00, k15_01, k15_02, k15_03, k15_04, k15_05, k15_06, k15_07, k15_08, k15_09, k15_10, k15_11, k15_12, k15_13, k15_14, k15_15, k15_16, k15_17, k15_18, k15_19 }, \ + { k16_00, k16_01, k16_02, k16_03, k16_04, k16_05, k16_06, k16_07, k16_08, k16_09, k16_10, k16_11, k16_12, k16_13, k16_14, k16_15, k16_16, k16_17, k16_18, k16_19 }, \ + { k17_00, k17_01, k17_02, k17_03, k17_04, k17_05, k17_06, k17_07, k17_08, k17_09, k17_10, k17_11, k17_12, k17_13, k17_14, k17_15, k17_16, k17_17, k17_18, k17_19 }, \ + { k18_00, k18_01, k18_02, k18_03, k18_04, k18_05, k18_06, k18_07, k18_08, k18_09, k18_10, k18_11, k18_12, k18_13, k18_14, k18_15, k18_16, k18_17, k18_18, k18_19 }, \ + { k19_00, k19_01, k19_02, k19_03, k19_04, k19_05, k19_06, k19_07, k19_08, k19_09, k19_10, k19_11, k19_12, k19_13, k19_14, k19_15, k19_16, k19_17, k19_18, k19_19 } \ +} diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c new file mode 100755 index 0000000000..2db71e990c --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c @@ -0,0 +1,453 @@ +/* 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 + +enum custom_keycodes { + NUM_0 = 0, + NUM_1, + NUM_2, + NUM_3, + NUM_4, + NUM_5, + NUM_6, + NUM_7, + NUM_8, + NUM_9, + NUM_10, + NUM_11, + NUM_12, + NUM_13, + NUM_14, + NUM_15, + NUM_16, + NUM_17, + NUM_18, + NUM_19, + NUM_20, + NUM_21, + NUM_22, + NUM_23, + NUM_24, + NUM_25, + NUM_26, + NUM_27, + NUM_28, + NUM_29, + NUM_30, + NUM_31, + NUM_32, + NUM_33, + NUM_34, + NUM_35, + NUM_36, + NUM_37, + NUM_38, + NUM_39, + NUM_40, + NUM_41, + NUM_42, + NUM_43, + NUM_44, + NUM_45, + NUM_46, + NUM_47, + NUM_48, + NUM_49, + NUM_50, + NUM_51, + NUM_52, + NUM_53, + NUM_54, + NUM_55, + NUM_56, + NUM_57, + NUM_58, + NUM_59, + NUM_60, + NUM_61, + NUM_62, + NUM_63, + NUM_64, + NUM_65, + NUM_66, + NUM_67, + NUM_68, + NUM_69, + NUM_70, + NUM_71, + NUM_72, + NUM_73, + NUM_74, + NUM_75, + NUM_76, + NUM_77, + NUM_78, + NUM_79, + NUM_80, + NUM_81, + NUM_82, + NUM_83, + NUM_84, + NUM_85, + NUM_86, + NUM_87, + NUM_88, + NUM_89, + NUM_90, + NUM_91, + NUM_92, + NUM_93, + NUM_94, + NUM_95, + NUM_96, + NUM_97, + NUM_98, + NUM_99, + NUM_100, + NUM_101, + NUM_102, + NUM_103, + NUM_104, + NUM_105, + NUM_106, + NUM_107, + NUM_108, + NUM_109, + NUM_110, + NUM_111, + NUM_112, + NUM_113, + NUM_114, + NUM_115, + NUM_116, + NUM_117, + NUM_118, + NUM_119, + NUM_120, + NUM_121, + NUM_122, + NUM_123, + NUM_124, + NUM_125, + NUM_126, + NUM_127, + NUM_128, + NUM_129, + NUM_130, + NUM_131, + NUM_132, + NUM_133, + NUM_134, + NUM_135, + NUM_136, + NUM_137, + NUM_138, + NUM_139, + NUM_140, + NUM_141, + NUM_142, + NUM_143, + NUM_144, + NUM_145, + NUM_146, + NUM_147, + NUM_148, + NUM_149, + NUM_150, + NUM_151, + NUM_152, + NUM_153, + NUM_154, + NUM_155, + NUM_156, + NUM_157, + NUM_158, + NUM_159, + NUM_160, + NUM_161, + NUM_162, + NUM_163, + NUM_164, + NUM_165, + NUM_166, + NUM_167, + NUM_168, + NUM_169, + NUM_170, + NUM_171, + NUM_172, + NUM_173, + NUM_174, + NUM_175, + NUM_176, + NUM_177, + NUM_178, + NUM_179, + NUM_180, + NUM_181, + NUM_182, + NUM_183, + NUM_184, + NUM_185, + NUM_186, + NUM_187, + NUM_188, + NUM_189, + NUM_190, + NUM_191, + NUM_192, + NUM_193, + NUM_194, + NUM_195, + NUM_196, + NUM_197, + NUM_198, + NUM_199, + NUM_200, + NUM_201, + NUM_202, + NUM_203, + NUM_204, + NUM_205, + NUM_206, + NUM_207, + NUM_208, + NUM_209, + NUM_210, + NUM_211, + NUM_212, + NUM_213, + NUM_214, + NUM_215, + NUM_216, + NUM_217, + NUM_218, + NUM_219, + NUM_220, + NUM_221, + NUM_222, + NUM_223, + NUM_224, + NUM_225, + NUM_226, + NUM_227, + NUM_228, + NUM_229, + NUM_230, + NUM_231, + NUM_232, + NUM_233, + NUM_234, + NUM_235, + NUM_236, + NUM_237, + NUM_238, + NUM_239, + NUM_240, + NUM_241, + NUM_242, + NUM_243, + NUM_244, + NUM_245, + NUM_246, + NUM_247, + NUM_248, + NUM_249, + NUM_250, + NUM_251, + NUM_252, + NUM_253, + NUM_254, + NUM_255, + NUM_256, + NUM_257, + NUM_258, + NUM_259, + NUM_260, + NUM_261, + NUM_262, + NUM_263, + NUM_264, + NUM_265, + NUM_266, + NUM_267, + NUM_268, + NUM_269, + NUM_270, + NUM_271, + NUM_272, + NUM_273, + NUM_274, + NUM_275, + NUM_276, + NUM_277, + NUM_278, + NUM_279, + NUM_280, + NUM_281, + NUM_282, + NUM_283, + NUM_284, + NUM_285, + NUM_286, + NUM_287, + NUM_288, + NUM_289, + NUM_290, + NUM_291, + NUM_292, + NUM_293, + NUM_294, + NUM_295, + NUM_296, + NUM_297, + NUM_298, + NUM_299, + NUM_300, + NUM_301, + NUM_302, + NUM_303, + NUM_304, + NUM_305, + NUM_306, + NUM_307, + NUM_308, + NUM_309, + NUM_310, + NUM_311, + NUM_312, + NUM_313, + NUM_314, + NUM_315, + NUM_316, + NUM_317, + NUM_318, + NUM_319, + NUM_320, + NUM_321, + NUM_322, + NUM_323, + NUM_324, + NUM_325, + NUM_326, + NUM_327, + NUM_328, + NUM_329, + NUM_330, + NUM_331, + NUM_332, + NUM_333, + NUM_334, + NUM_335, + NUM_336, + NUM_337, + NUM_338, + NUM_339, + NUM_340, + NUM_341, + NUM_342, + NUM_343, + NUM_344, + NUM_345, + NUM_346, + NUM_347, + NUM_348, + NUM_349, + NUM_350, + NUM_351, + NUM_352, + NUM_353, + NUM_354, + NUM_355, + NUM_356, + NUM_357, + NUM_358, + NUM_359, + NUM_360, + NUM_361, + NUM_362, + NUM_363, + NUM_364, + NUM_365, + NUM_366, + NUM_367, + NUM_368, + NUM_369, + NUM_370, + NUM_371, + NUM_372, + NUM_373, + NUM_374, + NUM_375, + NUM_376, + NUM_377, + NUM_378, + NUM_379, + NUM_380, + NUM_381, + NUM_382, + NUM_383, + NUM_384, + NUM_385, + NUM_386, + NUM_387, + NUM_388, + NUM_389, + NUM_390, + NUM_391, + NUM_392, + NUM_393, + NUM_394, + NUM_395, + NUM_396, + NUM_397, + NUM_398, + NUM_399, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_10, NUM_11, NUM_12, NUM_13, NUM_14, NUM_15, NUM_16, NUM_17, NUM_18, NUM_19, + NUM_20, NUM_21, NUM_22, NUM_23, NUM_24, NUM_25, NUM_26, NUM_27, NUM_28, NUM_29, NUM_30, NUM_31, NUM_32, NUM_33, NUM_34, NUM_35, NUM_36, NUM_37, NUM_38, NUM_39, + NUM_40, NUM_41, NUM_42, NUM_43, NUM_44, NUM_45, NUM_46, NUM_47, NUM_48, NUM_49, NUM_50, NUM_51, NUM_52, NUM_53, NUM_54, NUM_55, NUM_56, NUM_57, NUM_58, NUM_59, + NUM_60, NUM_61, NUM_62, NUM_63, NUM_64, NUM_65, NUM_66, NUM_67, NUM_68, NUM_69, NUM_70, NUM_71, NUM_72, NUM_73, NUM_74, NUM_75, NUM_76, NUM_77, NUM_78, NUM_79, + NUM_80, NUM_81, NUM_82, NUM_83, NUM_84, NUM_85, NUM_86, NUM_87, NUM_88, NUM_89, NUM_90, NUM_91, NUM_92, NUM_93, NUM_94, NUM_95, NUM_96, NUM_97, NUM_98, NUM_99, + NUM_100,NUM_101,NUM_102,NUM_103,NUM_104,NUM_105,NUM_106,NUM_107,NUM_108,NUM_109,NUM_110,NUM_111,NUM_112,NUM_113,NUM_114,NUM_115,NUM_116,NUM_117,NUM_118,NUM_119, + NUM_120,NUM_121,NUM_122,NUM_123,NUM_124,NUM_125,NUM_126,NUM_127,NUM_128,NUM_129,NUM_130,NUM_131,NUM_132,NUM_133,NUM_134,NUM_135,NUM_136,NUM_137,NUM_138,NUM_139, + NUM_140,NUM_141,NUM_142,NUM_143,NUM_144,NUM_145,NUM_146,NUM_147,NUM_148,NUM_149,NUM_150,NUM_151,NUM_152,NUM_153,NUM_154,NUM_155,NUM_156,NUM_157,NUM_158,NUM_159, + NUM_160,NUM_161,NUM_162,NUM_163,NUM_164,NUM_165,NUM_166,NUM_167,NUM_168,NUM_169,NUM_170,NUM_171,NUM_172,NUM_173,NUM_174,NUM_175,NUM_176,NUM_177,NUM_178,NUM_179, + NUM_180,NUM_181,NUM_182,NUM_183,NUM_184,NUM_185,NUM_186,NUM_187,NUM_188,NUM_189,NUM_190,NUM_191,NUM_192,NUM_193,NUM_194,NUM_195,NUM_196,NUM_197,NUM_198,NUM_199, + NUM_200,NUM_201,NUM_202,NUM_203,NUM_204,NUM_205,NUM_206,NUM_207,NUM_208,NUM_209,NUM_210,NUM_211,NUM_212,NUM_213,NUM_214,NUM_215,NUM_216,NUM_217,NUM_218,NUM_219, + NUM_220,NUM_221,NUM_222,NUM_223,NUM_224,NUM_225,NUM_226,NUM_227,NUM_228,NUM_229,NUM_230,NUM_231,NUM_232,NUM_233,NUM_234,NUM_235,NUM_236,NUM_237,NUM_238,NUM_239, + NUM_240,NUM_241,NUM_242,NUM_243,NUM_244,NUM_245,NUM_246,NUM_247,NUM_248,NUM_249,NUM_250,NUM_251,NUM_252,NUM_253,NUM_254,NUM_255,NUM_256,NUM_257,NUM_258,NUM_259, + NUM_260,NUM_261,NUM_262,NUM_263,NUM_264,NUM_265,NUM_266,NUM_267,NUM_268,NUM_269,NUM_270,NUM_271,NUM_272,NUM_273,NUM_274,NUM_275,NUM_276,NUM_277,NUM_278,NUM_279, + NUM_280,NUM_281,NUM_282,NUM_283,NUM_284,NUM_285,NUM_286,NUM_287,NUM_288,NUM_289,NUM_290,NUM_291,NUM_292,NUM_293,NUM_294,NUM_295,NUM_296,NUM_297,NUM_298,NUM_299, + NUM_300,NUM_301,NUM_302,NUM_303,NUM_304,NUM_305,NUM_306,NUM_307,NUM_308,NUM_309,NUM_310,NUM_311,NUM_312,NUM_313,NUM_314,NUM_315,NUM_316,NUM_317,NUM_318,NUM_319, + NUM_320,NUM_321,NUM_322,NUM_323,NUM_324,NUM_325,NUM_326,NUM_327,NUM_328,NUM_329,NUM_330,NUM_331,NUM_332,NUM_333,NUM_334,NUM_335,NUM_336,NUM_337,NUM_338,NUM_339, + NUM_340,NUM_341,NUM_342,NUM_343,NUM_344,NUM_345,NUM_346,NUM_347,NUM_348,NUM_349,NUM_350,NUM_351,NUM_352,NUM_353,NUM_354,NUM_355,NUM_356,NUM_357,NUM_358,NUM_359, + NUM_360,NUM_361,NUM_362,NUM_363,NUM_364,NUM_365,NUM_366,NUM_367,NUM_368,NUM_369,NUM_370,NUM_371,NUM_372,NUM_373,NUM_374,NUM_375,NUM_376,NUM_377,NUM_378,NUM_379, + NUM_380,NUM_381,NUM_382,NUM_383,NUM_384,NUM_385,NUM_386,NUM_387,NUM_388,NUM_389,NUM_390,NUM_391,NUM_392,NUM_393,NUM_394,NUM_395,NUM_396,NUM_397,NUM_398,NUM_399 + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + char numString[5]; + itoa(keycode, numString, 10); + SEND_STRING(numString); + return false; +}; diff --git a/keyboards/durgod/k320/keymaps/via/config.h b/keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h old mode 100644 new mode 100755 similarity index 90% rename from keyboards/durgod/k320/keymaps/via/config.h rename to keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h index 2ae6fca9d9..d7f8524d00 --- a/keyboards/durgod/k320/keymaps/via/config.h +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h @@ -1,5 +1,4 @@ -/* - * Copyright 2021 Maxime Coirault +/* 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 @@ -17,4 +16,4 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define DYNAMIC_KEYMAP_LAYER_COUNT 1 diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c new file mode 100755 index 0000000000..64b3f2b530 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* 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_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk b/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk new file mode 100755 index 0000000000..74edb2bf0d --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE=yes diff --git a/keyboards/cutie_club/giant_macro_pad/readme.md b/keyboards/cutie_club/giant_macro_pad/readme.md new file mode 100755 index 0000000000..313f1e1a86 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/readme.md @@ -0,0 +1,13 @@ +# Cupar19 Giant Macro Pad + +![Cupar19 Giant Macro Pad](https://user-images.githubusercontent.com/15253132/118325863-0135e680-b4fc-11eb-99f2-754b155b0acd.png) + +* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/) +* Hardware Supported: STM32F072 based giant 20x20 macro pad +* Hardware Availability: N/A (one-off) + +Make example for this keyboard (after setting up your build environment): + + make cutie_club/giant_macro_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). diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk new file mode 100755 index 0000000000..6d815e4ff3 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/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 = 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/keyboards/cutie_club/wraith/rules.mk b/keyboards/cutie_club/wraith/rules.mk index dce4ad6866..a42fd42576 100644 --- a/keyboards/cutie_club/wraith/rules.mk +++ b/keyboards/cutie_club/wraith/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/cybergear/macro25/LICENSE b/keyboards/cybergear/macro25/LICENSE new file mode 100644 index 0000000000..d159169d10 --- /dev/null +++ b/keyboards/cybergear/macro25/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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. diff --git a/keyboards/cybergear/macro25/config.h b/keyboards/cybergear/macro25/config.h new file mode 100644 index 0000000000..982559ef37 --- /dev/null +++ b/keyboards/cybergear/macro25/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy 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 CyberGear +#define PRODUCT Macro25 (mk-macro-01) diff --git a/keyboards/cybergear/macro25/info.json b/keyboards/cybergear/macro25/info.json new file mode 100644 index 0000000000..4117d12bb5 --- /dev/null +++ b/keyboards/cybergear/macro25/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Macro225 (mk-macro-01)", + "url": "https://github.com/CyberGear/mk-macro-01", + "maintainer": "CyberGear", + "usb": { + "vid": "0x1209", + "pid": "0x69A1", + "device_ver": "0x0001" + }, + "width": 5, + "height": 2, + "diode_direction": "COL2ROW", + "layouts": { + "LAYOUT_ortho_2x5": { + "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} + ] + } + }, + "matrix_pins": { + "rows": ["E6", "B4"], + "cols": ["B1", "F7", "F6", "F5", "F4"] + } +} diff --git a/keyboards/cybergear/macro25/keymaps/default/keymap.c b/keyboards/cybergear/macro25/keymaps/default/keymap.c new file mode 100644 index 0000000000..79a7e65adc --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 MAC(kc) (QK_RCTL | QK_RGUI | QK_RALT | (kc)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x5( + MAC(KC_KP_0), MAC(KC_KP_1), MAC(KC_KP_2), MAC(KC_KP_3), MAC(KC_KP_4), + MAC(KC_KP_5), MAC(KC_KP_6), MAC(KC_KP_7), MAC(KC_KP_8), MAC(KC_KP_9) + ) +}; diff --git a/keyboards/cybergear/macro25/keymaps/via/keymap.c b/keyboards/cybergear/macro25/keymaps/via/keymap.c new file mode 100644 index 0000000000..c4db95797e --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 MAC(kc) (QK_RCTL | QK_RGUI | QK_RALT | (kc)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x5( + MAC(KC_KP_0), MAC(KC_KP_1), MAC(KC_KP_2), MAC(KC_KP_3), MAC(KC_KP_4), + MAC(KC_KP_5), MAC(KC_KP_6), MAC(KC_KP_7), MAC(KC_KP_8), MAC(KC_KP_9) + ), + [1] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cybergear/macro25/keymaps/via/rules.mk b/keyboards/cybergear/macro25/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cybergear/macro25/macro25.c b/keyboards/cybergear/macro25/macro25.c new file mode 100644 index 0000000000..662c5c1fe3 --- /dev/null +++ b/keyboards/cybergear/macro25/macro25.c @@ -0,0 +1,17 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "macro25.h" diff --git a/keyboards/cybergear/macro25/macro25.h b/keyboards/cybergear/macro25/macro25.h new file mode 100644 index 0000000000..22b814a97b --- /dev/null +++ b/keyboards/cybergear/macro25/macro25.h @@ -0,0 +1,27 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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_2x5( \ + K00, K01, K02, K03, K04, \ + K05, K06, K07, K08, K09 \ +) { \ + { K00, K01, K02, K03, K04 }, \ + { K05, K06, K07, K08, K09 }, \ +} diff --git a/keyboards/cybergear/macro25/readme.md b/keyboards/cybergear/macro25/readme.md new file mode 100644 index 0000000000..9875e83173 --- /dev/null +++ b/keyboards/cybergear/macro25/readme.md @@ -0,0 +1,15 @@ +# CyberGear Macro25 + +![](https://i.imgur.com/Jk2xGMvh.jpg) + +Macro keyboard made using Arduino Pro Micro, with VIA support. + +* Keyboard Maintainer: [CyberGear](https://github.com/CyberGear) +* Hardware Supported: Arduino Pro Micro +* Hardware Availability: [GitHub](https://github.com/CyberGear/mk-macro-01) + +Make example for this keyboard (after setting up your build environment): + + make cybergear/macro25: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/cybergear/macro25/rules.mk b/keyboards/cybergear/macro25/rules.mk new file mode 100644 index 0000000000..e4ffb10d04 --- /dev/null +++ b/keyboards/cybergear/macro25/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 index a41e158f1c..ea56f948ee 100644 --- a/keyboards/daisy/config.h +++ b/keyboards/daisy/config.h @@ -52,6 +52,9 @@ along with this program. If not, see . */ //#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 diff --git a/keyboards/daisy/daisy.c b/keyboards/daisy/daisy.c index 4e365ed462..98b7ac84b3 100644 --- a/keyboards/daisy/daisy.c +++ b/keyboards/daisy/daisy.c @@ -15,21 +15,3 @@ */ #include "daisy.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(C6); - writePinHigh(C6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(C6, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/daisy/keymaps/default/keymap.c b/keyboards/daisy/keymaps/default/keymap.c index f076803766..10f5710417 100644 --- a/keyboards/daisy/keymaps/default/keymap.c +++ b/keyboards/daisy/keymaps/default/keymap.c @@ -29,13 +29,13 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base Layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │ + * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│ + * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ - * │Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │  / │ + * │Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ * ├────┬─┴─┬─┴──┬┴───┴───┼───┴───┴──┬┴───┼───┼────┤ - * │Ctrl│GUI│Alt │        │ Backspace│Lowr│Rse│ Alt│ + * │Ctrl│GUI│Alt │ │ Backspace│Lowr│Rse│ Alt│ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘ */ [_BL] = LAYOUT( @@ -47,13 +47,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Function Layer 1 (Lower) * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ * └───┴┬──┴┬──┴┬──┴───┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴───┘ - * │    │ = │ ▴ │   │   │   │ [ │ ] │ ; │ ' │      │ + * │ │ = │ ▴ │ │ │ │ [ │ ] │ ; │ ' │ │ * ├────└─┬─┴─┬─┴─┬───┐─┴─┬─└───┴───┴───┴───┘─┬────┤ - * │      │ ◂ │ ▾ │ ▸ │   │   │   │   │   │   │    │ + * │ │ ◂ │ ▾ │ ▸ │ │ │ │ │ │ │ │ * ├────┬─└───┴───┴───┘───┌──────────┐┴───┼───┼────┤ - * │    │   │    │        │   Delete │    │   │    │ + * │ │ │ │ │ Delete │ │ │ │ * └────┴───┴────┴────────└──────────┘────┴───┴────┘ */ [_LW] = LAYOUT( @@ -65,13 +65,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Function Layer 2 (Raise) * ┌───┬───┬───┬───┬───┬───┬───┐───┌───┬───┐───┬───┐ - * │Rst│F1 │F2 │F3 │F4 │F5 │F6 │   │Hom│PgU│   │   │ + * │Rst│F1 │F2 │F3 │F4 │F5 │F6 │ │Hom│PgU│ │ │ * └───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐──└┬──┴┬──┴┐──┴───┤ - * │    │F7 │F8 │F9 │F10│F11│F12│   │ ; │ ' │      │ + * │ │F7 │F8 │F9 │F10│F11│F12│ │ ; │ ' │ │ * ├────└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴─┐────┤ - * │      │RGB│Mod│HuD│HuI│VaD│VaI│SaD│SaI│BLS│    │ + * │ │RGB│Mod│HuD│HuI│VaD│VaI│SaD│SaI│BLS│ │ * ├────┬─└───┴───┴───┴───┴───┴───┴───┴───┴───┘────┤ - * │    │   │    │        │          │    │   │    │ + * │ │ │ │ │ │ │ │ │ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘ */ [_RS] = LAYOUT( diff --git a/keyboards/daisy/keymaps/via/keymap.c b/keyboards/daisy/keymaps/via/keymap.c index b3156ce3b8..102657116c 100644 --- a/keyboards/daisy/keymaps/via/keymap.c +++ b/keyboards/daisy/keymaps/via/keymap.c @@ -30,13 +30,13 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base Layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │ + * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│ + * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ - * │Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │  / │ + * │Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ * ├────┬─┴─┬─┴──┬┴───┴───┼───┴───┴──┬┴───┼───┼────┤ - * │Ctrl│GUI│Alt │        │ Backspace│Lowr│Rse│ Alt│ + * │Ctrl│GUI│Alt │ │ Backspace│Lowr│Rse│ Alt│ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘ */ [_BL] = LAYOUT( @@ -48,13 +48,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Function Layer 1 (Lower) * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ * └───┴┬──┴┬──┴┬──┴───┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴───┘ - * │    │ = │ ▴ │   │   │   │ [ │ ] │ ; │ ' │      │ + * │ │ = │ ▴ │ │ │ │ [ │ ] │ ; │ ' │ │ * ├────└─┬─┴─┬─┴─┬───┐─┴─┬─└───┴───┴───┴───┘─┬────┤ - * │      │ ◂ │ ▾ │ ▸ │   │   │   │   │   │   │    │ + * │ │ ◂ │ ▾ │ ▸ │ │ │ │ │ │ │ │ * ├────┬─└───┴───┴───┘───┌──────────┐┴───┼───┼────┤ - * │    │   │    │        │   Delete │    │   │    │ + * │ │ │ │ │ Delete │ │ │ │ * └────┴───┴────┴────────└──────────┘────┴───┴────┘ */ [_LW] = LAYOUT( @@ -66,13 +66,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Function Layer 2 (Raise) * ┌───┬───┬───┬───┬───┬───┬───┐───┌───┬───┐───┬───┐ - * │Rst│F1 │F2 │F3 │F4 │F5 │F6 │   │Hom│PgU│   │   │ + * │Rst│F1 │F2 │F3 │F4 │F5 │F6 │ │Hom│PgU│ │ │ * └───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐──└┬──┴┬──┴┐──┴───┤ - * │    │F7 │F8 │F9 │F10│F11│F12│   │ ; │ ' │      │ + * │ │F7 │F8 │F9 │F10│F11│F12│ │ ; │ ' │ │ * ├────└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴─┐────┤ - * │      │RGB│Mod│HuD│HuI│VaD│VaI│SaD│SaI│BLS│    │ + * │ │RGB│Mod│HuD│HuI│VaD│VaI│SaD│SaI│BLS│ │ * ├────┬─└───┴───┴───┴───┴───┴───┴───┴───┴───┘────┤ - * │    │   │    │        │          │    │   │    │ + * │ │ │ │ │ │ │ │ │ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘ */ [_RS] = LAYOUT( @@ -86,11 +86,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ┌───┬───┬───┬───┬───┬───┬───┐───┌───┬───┐───┬───┐ * | | | | | | | | | | | | | * └───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐──└┬──┴┬──┴┐──┴───┤ - * │    │  │  │  │ │ │ │   │   │   │      │ + * │ │ │ │ │ │ │ │ │ │ │ │ * ├────└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴─┐────┤ - * │      │ │ │ │ │ │ │ │ │ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─└───┴───┴───┴───┴───┴───┴───┴───┴───┘────┤ - * │    │   │    │        │          │    │   │    │ + * │ │ │ │ │ │ │ │ │ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘ */ [_EM] = LAYOUT( diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk index fa34092cd7..f2f3619b56 100644 --- a/keyboards/daji/seis_cinco/rules.mk +++ b/keyboards/daji/seis_cinco/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F072 BOARD = GENERIC_STM32_F072XB +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -11,7 +14,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_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 +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: 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/dekunukem/duckypad/rules.mk b/keyboards/dekunukem/duckypad/rules.mk index 2deef1eeea..1a7031eff3 100644 --- a/keyboards/dekunukem/duckypad/rules.mk +++ b/keyboards/dekunukem/duckypad/rules.mk @@ -1,6 +1,9 @@ -# MCU Name +# MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/nckiibs/flatbread60/config.h b/keyboards/delikeeb/flatbread60/config.h similarity index 99% rename from keyboards/nckiibs/flatbread60/config.h rename to keyboards/delikeeb/flatbread60/config.h index 14b54f43a6..6c40d46bff 100644 --- a/keyboards/nckiibs/flatbread60/config.h +++ b/keyboards/delikeeb/flatbread60/config.h @@ -23,7 +23,7 @@ along with this program. If not, see . #define VENDOR_ID 0x9906 #define PRODUCT_ID 0x0000 #define DEVICE_VER 0x0001 -#define MANUFACTURER nckiibs +#define MANUFACTURER delikeeb #define PRODUCT Flatbread60 /* key matrix size */ diff --git a/keyboards/nckiibs/flatbread60/flatbread60.c b/keyboards/delikeeb/flatbread60/flatbread60.c similarity index 100% rename from keyboards/nckiibs/flatbread60/flatbread60.c rename to keyboards/delikeeb/flatbread60/flatbread60.c diff --git a/keyboards/nckiibs/flatbread60/flatbread60.h b/keyboards/delikeeb/flatbread60/flatbread60.h similarity index 100% rename from keyboards/nckiibs/flatbread60/flatbread60.h rename to keyboards/delikeeb/flatbread60/flatbread60.h diff --git a/keyboards/nckiibs/flatbread60/info.json b/keyboards/delikeeb/flatbread60/info.json similarity index 100% rename from keyboards/nckiibs/flatbread60/info.json rename to keyboards/delikeeb/flatbread60/info.json diff --git a/keyboards/nckiibs/flatbread60/keymaps/default/keymap.c b/keyboards/delikeeb/flatbread60/keymaps/default/keymap.c similarity index 100% rename from keyboards/nckiibs/flatbread60/keymaps/default/keymap.c rename to keyboards/delikeeb/flatbread60/keymaps/default/keymap.c diff --git a/keyboards/nckiibs/flatbread60/keymaps/default/readme.md b/keyboards/delikeeb/flatbread60/keymaps/default/readme.md similarity index 100% rename from keyboards/nckiibs/flatbread60/keymaps/default/readme.md rename to keyboards/delikeeb/flatbread60/keymaps/default/readme.md diff --git a/keyboards/nckiibs/flatbread60/keymaps/via/keymap.c b/keyboards/delikeeb/flatbread60/keymaps/via/keymap.c similarity index 100% rename from keyboards/nckiibs/flatbread60/keymaps/via/keymap.c rename to keyboards/delikeeb/flatbread60/keymaps/via/keymap.c diff --git a/keyboards/nckiibs/flatbread60/keymaps/via/rules.mk b/keyboards/delikeeb/flatbread60/keymaps/via/rules.mk similarity index 100% rename from keyboards/nckiibs/flatbread60/keymaps/via/rules.mk rename to keyboards/delikeeb/flatbread60/keymaps/via/rules.mk diff --git a/keyboards/nckiibs/flatbread60/readme.md b/keyboards/delikeeb/flatbread60/readme.md similarity index 91% rename from keyboards/nckiibs/flatbread60/readme.md rename to keyboards/delikeeb/flatbread60/readme.md index fa932143b4..6f187833a6 100644 --- a/keyboards/nckiibs/flatbread60/readme.md +++ b/keyboards/delikeeb/flatbread60/readme.md @@ -10,10 +10,10 @@ This is a custom PCB made by a hobbiest, and it has an ortholinear 60 key layout Make example for this keyboard (after setting up your build environment): - make nckiibs/flatbread60:default + make delikeeb/flatbread60:default Flashing example for this keyboard: - make nckiibs/flatbread60:default:flash + make delikeeb/flatbread60: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/nckiibs/flatbread60/rules.mk b/keyboards/delikeeb/flatbread60/rules.mk similarity index 100% rename from keyboards/nckiibs/flatbread60/rules.mk rename to keyboards/delikeeb/flatbread60/rules.mk diff --git a/keyboards/delikeeb/vaguettelite/config.h b/keyboards/delikeeb/vaguettelite/config.h new file mode 100644 index 0000000000..ef1aec49ef --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/config.h @@ -0,0 +1,119 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x9906 +#define PRODUCT_ID 0x0011 +#define DEVICE_VER 0x0003 +#define MANUFACTURER dELIKEEb +#define PRODUCT Vaguette Lite + +/* key matrix size */ +#define MATRIX_ROWS 6 +#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 { F4, B3, D1, D2, D3, F5 } +#define MATRIX_COL_PINS { F6, F7, B1, B2, B6, B5, B4, E6, D7, C6, D0, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/*rotary encoder setting*/ +#define ENCODERS_PAD_A { D5, F1 } +#define ENCODERS_PAD_B { B7, F0 } + +#define RGB_DI_PIN C7 +#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_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 + +//#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/delikeeb/vaguettelite/info.json b/keyboards/delikeeb/vaguettelite/info.json new file mode 100644 index 0000000000..0f3d6049a2 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/info.json @@ -0,0 +1,15 @@ +{ + "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}] + }, + "LAYOUT_625u_universal": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"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":2.25}, {"x":14, "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":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}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + } + } +} diff --git a/keyboards/delikeeb/vaguettelite/keymaps/default/keymap.c b/keyboards/delikeeb/vaguettelite/keymaps/default/keymap.c new file mode 100644 index 0000000000..98af7556ab --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/default/keymap.c @@ -0,0 +1,135 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE + * --------------------------------------------------------------------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bspc | Mute | + * --------------------------------------------------------------------------------------------------------- + * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | [ | ] | + *---------------------------------------------------------------------------------------------------------- + * | Esc | A | S | D | F | G | H | J | K | L | ; | Enter | N/A | ' | + *---------------------------------------------------------------------------------------------------------- + * | N/A | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Del | + *---------------------------------------------------------------------------------------------------------- + * | Ctrl | GUI | Alt | Lower | Space | Space | Space | Raise | Alt | Left | Down | Up | Right | + *---------------------------------------------------------------------------------------------------------- + */ + + [_BASE] = 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_AUDIO_MUTE, + 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_LBRC, KC_RBRC, + 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_NO, KC_QUOT, + KC_NO , 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_QUOT), KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, LOWER , KC_SPC , KC_SPC , KC_SPC , RAISE, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = 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_F12 , _______, + KC_BSPC, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, _______, _______, + KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, _______, _______, + KC_ENT , _______, KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL, KC_END , _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_all( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG, + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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; + + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + } + return true; +} diff --git a/keyboards/delikeeb/vaguettelite/keymaps/default/readme.md b/keyboards/delikeeb/vaguettelite/keymaps/default/readme.md new file mode 100644 index 0000000000..1dc3967344 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Vaguette LITE diff --git a/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/keymap.c b/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/keymap.c new file mode 100644 index 0000000000..ed028e84b1 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/keymap.c @@ -0,0 +1,135 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE + * --------------------------------------------------------------------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | BSP | Mute | + * --------------------------------------------------------------------------------------------------------- + * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | [ | ] | + *---------------------------------------------------------------------------------------------------------- + * | Esc | A | S | D | F | G | H | J | K | L | ; | Enter | ' | + *---------------------------------------------------------------------------------------------------------- + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | + *---------------------------------------------------------------------------------------------------------- + * | Ctrl | GUI | Alt | Space | Raise | Left | Down | Up | Right | + *---------------------------------------------------------------------------------------------------------- + */ + + [_BASE] = LAYOUT_625u_universal( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_MINS, KC_BSPC, KC_AUDIO_MUTE, + 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_LBRC, KC_RBRC, + 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_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_QUOT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT + ), + + [_LOWER] = LAYOUT_625u_universal( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11 , KC_F12 , KC_F12 , _______, + KC_BSPC, KC_EQL , KC_7 , KC_8 , KC_9 , KC_SLSH, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, _______, _______, + KC_ENT , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_UNDS, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, _______, + KC_DLR , KC_PAST, KC_1 , KC_2 , KC_3 , KC_PPLS, KC_PIPE, KC_LCBR, KC_RCBR, KC_PERC, KC_AMPR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_625u_universal( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL, KC_END , _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_625u_universal( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG, + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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; + + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + } + return true; +} diff --git a/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/readme.md b/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/readme.md new file mode 100644 index 0000000000..fc537215ee --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/default_625u_universal/readme.md @@ -0,0 +1 @@ +# The keymap using standard 6.25u spacebar for Vaguette LITE diff --git a/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c b/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c new file mode 100644 index 0000000000..58bc0c7783 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c @@ -0,0 +1,155 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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, + _MAC, + _GAME +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + BASE = SAFE_RANGE, + LOWER, + RAISE, + MAC, + GAME +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE + * --------------------------------------------------------------------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bspc | Mute | + * --------------------------------------------------------------------------------------------------------- + * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | [ | ] | + *---------------------------------------------------------------------------------------------------------- + * | Esc | A | S | D | F | G | H | J | K | L | ; | Enter | N/A | ' | + *---------------------------------------------------------------------------------------------------------- + * | N/A | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | DEL | + *---------------------------------------------------------------------------------------------------------- + * | Ctrl | GUI | Alt | Lower | Space | Space | Space | Raise | Alt | Left | Down | Up | Right | + *---------------------------------------------------------------------------------------------------------- + */ + + [_BASE] = 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_AUDIO_MUTE, + 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_LBRC, KC_RBRC, + 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_NO, KC_QUOT, + KC_NO , 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_QUOT), KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, LOWER , KC_SPC , KC_SPC , KC_SPC , RAISE, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_MAC] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_GAME] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, MO(_LOWER), KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_LOWER] = 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_F12 , _______, + KC_BSPC, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, _______, _______, + KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, _______, _______, + KC_ENT , _______, KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL, KC_END , _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_all( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG, + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, TG(_GAME), _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TG(_MAC), _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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; + + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + } + return true; +} diff --git a/keyboards/delikeeb/vaguettelite/keymaps/noclew/readme.md b/keyboards/delikeeb/vaguettelite/keymaps/noclew/readme.md new file mode 100644 index 0000000000..bc2bbecb7c --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/noclew/readme.md @@ -0,0 +1 @@ +# The noclew's keymap for Vaguette LITE diff --git a/keyboards/delikeeb/vaguettelite/keymaps/via/keymap.c b/keyboards/delikeeb/vaguettelite/keymaps/via/keymap.c new file mode 100644 index 0000000000..a84b41b29d --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/via/keymap.c @@ -0,0 +1,136 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE + * --------------------------------------------------------------------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSpc | Mute | + * --------------------------------------------------------------------------------------------------------- + * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | [ | ] | + *---------------------------------------------------------------------------------------------------------- + * | Esc | A | S | D | F | G | H | J | K | L | ; | Enter | N/A | ' | + *---------------------------------------------------------------------------------------------------------- + * | N/A | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Del | + *---------------------------------------------------------------------------------------------------------- + * | Ctrl | GUI | Alt | Lower | Space | Space | Space | Raise | Alt | Left | Down | Up | Right | + *---------------------------------------------------------------------------------------------------------- + */ + + [_BASE] = 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_AUDIO_MUTE, + 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_LBRC, KC_RBRC, + 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_NO, KC_QUOT, + KC_NO , 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_QUOT), KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, LOWER , KC_SPC , KC_SPC , KC_SPC , RAISE, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = 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_F12 , _______, + KC_BSPC, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, _______, _______, + KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, _______, _______, + KC_ENT , _______, KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL, KC_END , _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_all( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG, + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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; + + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + } + return true; +} diff --git a/keyboards/delikeeb/vaguettelite/keymaps/via/rules.mk b/keyboards/delikeeb/vaguettelite/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/delikeeb/vaguettelite/readme.md b/keyboards/delikeeb/vaguettelite/readme.md new file mode 100644 index 0000000000..f076df2e13 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/readme.md @@ -0,0 +1,19 @@ +# Vaguette Lite + +![vaguettelite](https://i.imgur.com/bSZKD1cl.jpg) + +Vaguette Lite is a 60% keyboard that has a reduced alphas area, and it is a variation of Vaguette, which is a 40% keyboard with a detachable Numpad. + +* Keyboard Maintainer: [noclew](https://github.com/noclew) +* Hardware Supported: Vaguette Lite PCB +* Hardware Availability: Not commercially available. GB on Reddit and Geekhack time to times. + +Make example for this keyboard (after setting up your build environment): + + make delikeeb/vaguettelite:default + +Flashing example for this keyboard: + + make delikee/vaguettelite: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/delikeeb/vaguettelite/rules.mk b/keyboards/delikeeb/vaguettelite/rules.mk new file mode 100644 index 0000000000..5fff90decf --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/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 = 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 = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/delikeeb/vaguettelite/vaguettelite.c b/keyboards/delikeeb/vaguettelite/vaguettelite.c new file mode 100644 index 0000000000..a91dae9a3f --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/vaguettelite.c @@ -0,0 +1,17 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vaguettelite.h" diff --git a/keyboards/delikeeb/vaguettelite/vaguettelite.h b/keyboards/delikeeb/vaguettelite/vaguettelite.h new file mode 100644 index 0000000000..20a0e59722 --- /dev/null +++ b/keyboards/delikeeb/vaguettelite/vaguettelite.h @@ -0,0 +1,57 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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( \ + k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k65, k66, k69,\ + k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k67, k68,\ + k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k61, k70,\ + k60, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k62,\ + k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k63, k64 \ +) { \ + { 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, KC_NO, k55, k56, k57, k58, k59}, \ + { k60, KC_NO, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70 } \ +} + +#define LAYOUT_625u_universal( \ + k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k65, k66, k69,\ + k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k67, k68,\ + k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k70,\ + k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48,\ + k49, k50, k51, k54, k57, k58, k59, k63, k64 \ +) { \ + { k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12 }, \ + { k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24 }, \ + { k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36 }, \ + { k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ + { k49, k50, k51, KC_NO, KC_NO, k54, KC_NO, KC_NO, KC_NO, k57, k58, k59}, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k63, k64, k65, k66, k67, k68, k69, k70 } \ +} diff --git a/keyboards/delikeeb/vanana/config.h b/keyboards/delikeeb/vanana/config.h new file mode 100644 index 0000000000..3a5a888945 --- /dev/null +++ b/keyboards/delikeeb/vanana/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You 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 0x9906 +#define PRODUCT_ID 0x0013 +#define MANUFACTURER dELIKEEb diff --git a/keyboards/delikeeb/vanana/info.json b/keyboards/delikeeb/vanana/info.json new file mode 100644 index 0000000000..486e8a7672 --- /dev/null +++ b/keyboards/delikeeb/vanana/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/delikeeb/vanana/keymaps/default/keymap.c new file mode 100644 index 0000000000..281bb36acb --- /dev/null +++ b/keyboards/delikeeb/vanana/keymaps/default/keymap.c @@ -0,0 +1,162 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 AUDIO_ENABLE + float song_coin[][2] = SONG(COIN_SOUND); +#endif + +// 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE + * ------------------------------------------- ------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | + * ------------------------------------------- ------------------------------------------- + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | + * ------------------------------------------- --------- -------------------------------------------- + * | Esc | A | S | D | F | G | | Bksp | | H | J | K | L | ; |Enter | + * ------------------------------------------- --------- ------------------------------------------- + * | Shift| Z | X | C | V | B | | Del | | N | M | , | . | / |Sft(')| + * ------------------------------------------- --------- ------------------------------------------- + * | GUI | Alt | Ctrl |Lower |Space | |Space |Raise |Alt | Left | Right| + * ------------------------------------ ------------------------------------ + */ + + [_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_BSLS, + KC_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_BSPC, 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_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(KC_QUOT), + KC_LGUI, KC_LALT, KC_LCTL, LOWER , KC_SPC, KC_SPC , RAISE , KC_RALT, KC_LEFT, 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_BSPC, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, _______, + KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_LEFT, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, + KC_ENT , KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_RGHT, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL , KC_END , _______, + _______, _______, _______, _______, _______, _______, KC_UP , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, KC_DOWN, _______, KC_PGUP, _______, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG , + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_VOLU, _______, _______, _______, _______, _______, _______, + _______, AU_ON , AU_OFF , _______, _______, _______, KC_VOLD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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 RESET: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(song_coin); + #endif + } + return false; + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_DOWN); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_UP); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_DOWN); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_UP); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} diff --git a/keyboards/delikeeb/vanana/keymaps/default/readme.md b/keyboards/delikeeb/vanana/keymaps/default/readme.md new file mode 100644 index 0000000000..4fb4d2183a --- /dev/null +++ b/keyboards/delikeeb/vanana/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for vanana diff --git a/keyboards/delikeeb/vanana/keymaps/via/keymap.c b/keyboards/delikeeb/vanana/keymaps/via/keymap.c new file mode 100644 index 0000000000..6d04898f3f --- /dev/null +++ b/keyboards/delikeeb/vanana/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE + * ------------------------------------------- ------------------------------------------- + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | + * ------------------------------------------- ------------------------------------------- + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | + * ------------------------------------------- --------- -------------------------------------------- + * | Esc | A | S | D | F | G | | Bksp | | H | J | K | L | ; |Enter | + * ------------------------------------------- --------- ------------------------------------------- + * | Shift| Z | X | C | V | B | | Del | | N | M | , | . | / | " | + * ------------------------------------------- --------- ------------------------------------------- + * | Ctrl | GUI | Alt |Lower |Space | |Space |Raise |Alt | DOWN | UP | + * ------------------------------------ ------------------------------------ + */ + + [_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_BSLS, + KC_ESC, KC_A , KC_S , KC_D , KC_F , KC_G, KC_BSPC, 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_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(KC_QUOT), + KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC, KC_SPC , RAISE , KC_RALT, KC_DOWN, KC_UP + ), + + [_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_BSPC, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, _______, + KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_LEFT, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, + KC_ENT , KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_RGHT, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL , KC_END , _______, + _______, _______, _______, _______, _______, _______, KC_UP , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, KC_DOWN, _______, KC_PGUP, _______, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG , + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_VOLU, _______, _______, _______, _______, _______, _______, + _______, AU_ON , AU_OFF , _______, _______, _______, KC_VOLD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/delikeeb/vanana/keymaps/via/rules.mk b/keyboards/delikeeb/vanana/keymaps/via/rules.mk new file mode 100644 index 0000000000..9b19aff091 --- /dev/null +++ b/keyboards/delikeeb/vanana/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/delikeeb/vanana/readme.md b/keyboards/delikeeb/vanana/readme.md new file mode 100644 index 0000000000..9872b6ed12 --- /dev/null +++ b/keyboards/delikeeb/vanana/readme.md @@ -0,0 +1,19 @@ +# Vanana + +![vanana](https://i.imgur.com/I5a5KKNl.jpg) + +Vanana is a non-split ergonomic keyboard with RGB underglow and on-board pinouts for a Bluetooth setup. Designed by dELIKEEb. + +* Keyboard Maintainer: [noclew](https://github.com/noclew) +* Hardware Supported: Vanana PCB +* Hardware Availability: Not commercially available. GB on Reddit and Geekhack time to times. + +Make example for this keyboard (after setting up your build environment): + + make delikeeb/vanana/rev2:default + +Flashing example for this keyboard: + + make delikeeb/vanana/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/delikeeb/vanana/rev1/config.h b/keyboards/delikeeb/vanana/rev1/config.h new file mode 100644 index 0000000000..d584e32a39 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev1/config.h @@ -0,0 +1,100 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 0x0001 +#define PRODUCT Vanana rev1 + +/* 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 { D2, D7, B4, B5, B6 } +#define MATRIX_COL_PINS { B2, B3, B1, F7, F5, F6, D3, D1, D0, D4, C6, E6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Rotary Encoder and Buzzer */ +#define ENCODERS_PAD_A { C7, F1 } +#define ENCODERS_PAD_B { D5, F0 } +#define B7_AUDIO + +#define RGB_DI_PIN F0 +#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 + +/* 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/delikeeb/vanana/rev1/rev1.c b/keyboards/delikeeb/vanana/rev1/rev1.c new file mode 100644 index 0000000000..73b5039eb8 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/delikeeb/vanana/rev1/rev1.h b/keyboards/delikeeb/vanana/rev1/rev1.h new file mode 100644 index 0000000000..3b125b3ca8 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev1/rev1.h @@ -0,0 +1,40 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, k49, k31, k32, k33, k34, k35, k36, \ + k37, k38, k39, k40, k41, k42, k60, k43, k44, k45, k46, k47, k48, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59 \ +) { \ + { 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 } \ +} diff --git a/keyboards/delikeeb/vanana/rev1/rules.mk b/keyboards/delikeeb/vanana/rev1/rules.mk new file mode 100644 index 0000000000..eee766eca6 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev1/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/delikeeb/vanana/rev2/config.h b/keyboards/delikeeb/vanana/rev2/config.h new file mode 100644 index 0000000000..8893bb09f5 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev2/config.h @@ -0,0 +1,100 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 0x0002 +#define PRODUCT Vanana rev2 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#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 { D1, C6, E6, B4, B5, F5} +#define MATRIX_COL_PINS { B3, B1, F7, F6, F4, D2, D3, D0, D4, D7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Rotary Encoder and Buzzer */ +#define ENCODERS_PAD_A { B6, F0 } +#define ENCODERS_PAD_B { B2, F1 } +#define B7_AUDIO + +#define RGB_DI_PIN C7 +#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 + +/* 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/delikeeb/vanana/rev2/rev2.c b/keyboards/delikeeb/vanana/rev2/rev2.c new file mode 100644 index 0000000000..8f2a259921 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/delikeeb/vanana/rev2/rev2.h b/keyboards/delikeeb/vanana/rev2/rev2.h new file mode 100644 index 0000000000..7f8d16b57f --- /dev/null +++ b/keyboards/delikeeb/vanana/rev2/rev2.h @@ -0,0 +1,41 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, k55, k60, k06, k07, k08, k09, k10, \ + k11, k12, k13, k14, k15, k54, k59, k16, k17, k18, k19, k20, \ + k21, k22, k23, k24, k25, k53, k56, k58, k26, k27, k28, k29, k30, \ + k31, k32, k33, k34, k35, k52, k51, k57, k36, k37, k38, k39, k40, \ + k41, k42, k43, k44, k45, k46, k47, k48, k49, k50 \ +) { \ + { 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 } \ +} diff --git a/keyboards/delikeeb/vanana/rev2/rules.mk b/keyboards/delikeeb/vanana/rev2/rules.mk new file mode 100644 index 0000000000..8bb6ab5d91 --- /dev/null +++ b/keyboards/delikeeb/vanana/rev2/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/delikeeb/vanana/rules.mk b/keyboards/delikeeb/vanana/rules.mk new file mode 100644 index 0000000000..f4aa799093 --- /dev/null +++ b/keyboards/delikeeb/vanana/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: 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 +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = delikeeb/vanana/rev2 diff --git a/keyboards/nckiibs/vaneela/config.h b/keyboards/delikeeb/vaneela/config.h similarity index 100% rename from keyboards/nckiibs/vaneela/config.h rename to keyboards/delikeeb/vaneela/config.h diff --git a/keyboards/nckiibs/vaneela/info.json b/keyboards/delikeeb/vaneela/info.json similarity index 100% rename from keyboards/nckiibs/vaneela/info.json rename to keyboards/delikeeb/vaneela/info.json diff --git a/keyboards/nckiibs/vaneela/keymaps/default/keymap.c b/keyboards/delikeeb/vaneela/keymaps/default/keymap.c similarity index 100% rename from keyboards/nckiibs/vaneela/keymaps/default/keymap.c rename to keyboards/delikeeb/vaneela/keymaps/default/keymap.c diff --git a/keyboards/nckiibs/vaneela/keymaps/default/readme.md b/keyboards/delikeeb/vaneela/keymaps/default/readme.md similarity index 100% rename from keyboards/nckiibs/vaneela/keymaps/default/readme.md rename to keyboards/delikeeb/vaneela/keymaps/default/readme.md diff --git a/keyboards/nckiibs/vaneela/keymaps/via/keymap.c b/keyboards/delikeeb/vaneela/keymaps/via/keymap.c similarity index 100% rename from keyboards/nckiibs/vaneela/keymaps/via/keymap.c rename to keyboards/delikeeb/vaneela/keymaps/via/keymap.c diff --git a/keyboards/delikeeb/vaneela/keymaps/via/rules.mk b/keyboards/delikeeb/vaneela/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delikeeb/vaneela/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/nckiibs/vaneela/readme.md b/keyboards/delikeeb/vaneela/readme.md similarity index 92% rename from keyboards/nckiibs/vaneela/readme.md rename to keyboards/delikeeb/vaneela/readme.md index 65a7d1772b..0e8f894690 100644 --- a/keyboards/nckiibs/vaneela/readme.md +++ b/keyboards/delikeeb/vaneela/readme.md @@ -10,10 +10,10 @@ This is a semi-staggered 5x12 keyboard made by a hobbist. Vaneela runs on Pro Mi Make example for this keyboard (after setting up your build environment): - make nckiibs/vaneela:default + make delikeeb/vaneela:default Flashing example for this keyboard: - make nckiibs/vaneela:default:flash + make delikeeb/vaneela: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/nckiibs/vaneela/rules.mk b/keyboards/delikeeb/vaneela/rules.mk similarity index 100% rename from keyboards/nckiibs/vaneela/rules.mk rename to keyboards/delikeeb/vaneela/rules.mk diff --git a/keyboards/nckiibs/vaneela/vaneela.c b/keyboards/delikeeb/vaneela/vaneela.c similarity index 100% rename from keyboards/nckiibs/vaneela/vaneela.c rename to keyboards/delikeeb/vaneela/vaneela.c diff --git a/keyboards/nckiibs/vaneela/vaneela.h b/keyboards/delikeeb/vaneela/vaneela.h similarity index 100% rename from keyboards/nckiibs/vaneela/vaneela.h rename to keyboards/delikeeb/vaneela/vaneela.h diff --git a/keyboards/nckiibs/vaneelaex/config.h b/keyboards/delikeeb/vaneelaex/config.h similarity index 99% rename from keyboards/nckiibs/vaneelaex/config.h rename to keyboards/delikeeb/vaneelaex/config.h index 46ced5bfbf..0b96918cbf 100644 --- a/keyboards/nckiibs/vaneelaex/config.h +++ b/keyboards/delikeeb/vaneelaex/config.h @@ -23,7 +23,7 @@ along with this program. If not, see . #define VENDOR_ID 0x9906 #define PRODUCT_ID 0x0002 #define DEVICE_VER 0x0001 -#define MANUFACTURER nckiibs +#define MANUFACTURER delikeeb #define PRODUCT VaneelaEx /* key matrix size */ diff --git a/keyboards/nckiibs/vaneelaex/info.json b/keyboards/delikeeb/vaneelaex/info.json similarity index 100% rename from keyboards/nckiibs/vaneelaex/info.json rename to keyboards/delikeeb/vaneelaex/info.json diff --git a/keyboards/nckiibs/vaneelaex/keymaps/default/keymap.c b/keyboards/delikeeb/vaneelaex/keymaps/default/keymap.c similarity index 100% rename from keyboards/nckiibs/vaneelaex/keymaps/default/keymap.c rename to keyboards/delikeeb/vaneelaex/keymaps/default/keymap.c diff --git a/keyboards/nckiibs/vaneelaex/keymaps/default/readme.md b/keyboards/delikeeb/vaneelaex/keymaps/default/readme.md similarity index 100% rename from keyboards/nckiibs/vaneelaex/keymaps/default/readme.md rename to keyboards/delikeeb/vaneelaex/keymaps/default/readme.md diff --git a/keyboards/nckiibs/vaneelaex/keymaps/via/keymap.c b/keyboards/delikeeb/vaneelaex/keymaps/via/keymap.c similarity index 100% rename from keyboards/nckiibs/vaneelaex/keymaps/via/keymap.c rename to keyboards/delikeeb/vaneelaex/keymaps/via/keymap.c diff --git a/keyboards/delikeeb/vaneelaex/keymaps/via/rules.mk b/keyboards/delikeeb/vaneelaex/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delikeeb/vaneelaex/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/nckiibs/vaneelaex/readme.md b/keyboards/delikeeb/vaneelaex/readme.md similarity index 91% rename from keyboards/nckiibs/vaneelaex/readme.md rename to keyboards/delikeeb/vaneelaex/readme.md index 9417ae812d..9bd39b5109 100644 --- a/keyboards/nckiibs/vaneelaex/readme.md +++ b/keyboards/delikeeb/vaneelaex/readme.md @@ -11,10 +11,10 @@ Vaneela Ex supports Pro Micro and its compatible variants, such as elite-C. Make example for this keyboard (after setting up your build environment): - make nckiibs/vaneelaex:default + make delikeeb/vaneelaex:default Flashing example for this keyboard: - make nckiibs/vaneelaex:default:flash + make delikeeb/vaneelaex: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/nckiibs/vaneelaex/rules.mk b/keyboards/delikeeb/vaneelaex/rules.mk similarity index 100% rename from keyboards/nckiibs/vaneelaex/rules.mk rename to keyboards/delikeeb/vaneelaex/rules.mk diff --git a/keyboards/nckiibs/vaneelaex/vaneelaex.c b/keyboards/delikeeb/vaneelaex/vaneelaex.c similarity index 100% rename from keyboards/nckiibs/vaneelaex/vaneelaex.c rename to keyboards/delikeeb/vaneelaex/vaneelaex.c diff --git a/keyboards/nckiibs/vaneelaex/vaneelaex.h b/keyboards/delikeeb/vaneelaex/vaneelaex.h similarity index 100% rename from keyboards/nckiibs/vaneelaex/vaneelaex.h rename to keyboards/delikeeb/vaneelaex/vaneelaex.h diff --git a/keyboards/delikeeb/waaffle/config.h b/keyboards/delikeeb/waaffle/config.h new file mode 100644 index 0000000000..1b02e32c6d --- /dev/null +++ b/keyboards/delikeeb/waaffle/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You 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 0x9906 +#define PRODUCT_ID 0x0012 +#define MANUFACTURER dELIKEEb diff --git a/keyboards/delikeeb/waaffle/keymaps/default/keymap.c b/keyboards/delikeeb/waaffle/keymaps/default/keymap.c new file mode 100644 index 0000000000..5fcd609b8a --- /dev/null +++ b/keyboards/delikeeb/waaffle/keymaps/default/keymap.c @@ -0,0 +1,149 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE + * ------------------------------------------------------------------------------------------------------------------ + * | * | / | = | Del || ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSpc | + * ------------------------------------------------------------------------------------------------------------------ + * | + | 7 | 8 | 9 || Tab | Q | W | E | R | T | Y | U | I | O | P | \ | + *------------------------------------------------------------------------------------------------------------------- + * | + | 4 | 5 | 6 || Esc | A | S | D | F | G | H | J | K | L | ; | Enter| + *------------------------------------------------------------------------------------------------------------------ + * | Enter| 1 | 2 | 3 || Shift| Z | X | C | V | B | N | M | , | . | / | Shift| + *------------------------------------------------------------------------------------------------------------------- + * | Enter| . | 0 | 0 || Ctrl | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| + *------------------------------------------------------------------------------------------------------------------- + */ + [_BASE] = LAYOUT_ortho_5x16( + KC_PAST, KC_PSLS, KC_EQL, 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_BSPC, + KC_PPLS, KC_7, KC_8, KC_9, 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_PPLS, KC_4, KC_5, KC_6, 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_ENT, KC_1, KC_2, KC_3, 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_QUOT), + KC_ENT, KC_PDOT, KC_0, KC_0, KC_LCTL, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, KC_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_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, + _______, _______, _______, _______, KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, + _______, _______, _______, _______, KC_ENT , KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL , KC_END , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG , + _______, _______, _______, _______, _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +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; + + 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; + + } + return true; +} + +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) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_DOWN); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_UP); + } else { + tap_code(KC_VOLD); + } + } + + } else if (index == 1) { /* Second encoder. Only supported by Elite-C */ + if (clockwise) { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_RIGHT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_DOWN); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_LOWER)){ + tap_code(KC_LEFT); + } else if (IS_LAYER_ON(_RAISE)){ + tap_code(KC_UP); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} diff --git a/keyboards/delikeeb/waaffle/keymaps/default/readme.md b/keyboards/delikeeb/waaffle/keymaps/default/readme.md new file mode 100644 index 0000000000..4cf5c435bd --- /dev/null +++ b/keyboards/delikeeb/waaffle/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for waaffle diff --git a/keyboards/delikeeb/waaffle/keymaps/via/keymap.c b/keyboards/delikeeb/waaffle/keymaps/via/keymap.c new file mode 100644 index 0000000000..73d29ec14f --- /dev/null +++ b/keyboards/delikeeb/waaffle/keymaps/via/keymap.c @@ -0,0 +1,78 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + BASE = SAFE_RANGE, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE + * ------------------------------------------------------------------------------------------------------------------ + * | * | / | = | Del || ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSpc | + * ------------------------------------------------------------------------------------------------------------------ + * | + | 7 | 8 | 9 || Tab | Q | W | E | R | T | Y | U | I | O | P | \ | + *------------------------------------------------------------------------------------------------------------------- + * | + | 4 | 5 | 6 || Esc | A | S | D | F | G | H | J | K | L | ; | Enter| + *------------------------------------------------------------------------------------------------------------------ + * | Enter| 1 | 2 | 3 || Shift| Z | X | C | V | B | N | M | , | . | / | Shift| + *------------------------------------------------------------------------------------------------------------------- + * | Enter| . | 0 | 0 || Ctrl | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| + *------------------------------------------------------------------------------------------------------------------- + */ + [_BASE] = LAYOUT_ortho_5x16( + KC_PAST, KC_PSLS, KC_EQL, 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_BSPC, + KC_PPLS, KC_7, KC_8, KC_9, 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_PPLS, KC_4, KC_5, KC_6, 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_ENT, KC_1, KC_2, KC_3, 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_QUOT), + KC_ENT, KC_PDOT, KC_0, KC_0, KC_LCTL, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, KC_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_SLSH, KC_7 , KC_8 , KC_9 , KC_PPLS, KC_CIRC, KC_LBRC, KC_RBRC, KC_AT , KC_EXLM, KC_BSLS, + _______, _______, _______, _______, KC_EQL , KC_0 , KC_4 , KC_5 , KC_6 , KC_MINS, KC_PIPE, KC_LPRN, KC_RPRN, KC_HASH, KC_DQUO, _______, + _______, _______, _______, _______, KC_ENT , KC_PAST, KC_1 , KC_2 , KC_3 , KC_UNDS, KC_DLR , KC_LCBR, KC_RCBR, KC_AMPR, KC_PERC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BSPC, KC_DEL , KC_END , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_ortho_5x16( + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG , + _______, _______, _______, _______, _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_CAPS, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/delikeeb/waaffle/keymaps/via/rules.mk b/keyboards/delikeeb/waaffle/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delikeeb/waaffle/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/delikeeb/waaffle/readme.md b/keyboards/delikeeb/waaffle/readme.md new file mode 100644 index 0000000000..0e8d9c4379 --- /dev/null +++ b/keyboards/delikeeb/waaffle/readme.md @@ -0,0 +1,22 @@ +# Waaffle + +![waaffle](https://i.imgur.com/MMIuK9tl.jpg) +![waaffle](https://imgur.com/6IMH4kul.jpg) + +Waaffle is an ortholinear keyboard that supports 60 key and 80 key layouts. The base PCB has a 60 key ortholinear layout, and it can be expanded to an 80 key ortholinear keyboard simply by adding an extension PCB. Waaffle features RGB underglow and on-board pinouts including a power switch and battery connection for a Bluetooth setup. Designed by dELIKEEb + +* Keyboard Maintainer: [noclew](https://github.com/noclew) +* Hardware Supported: Waaffle PCB +* Hardware Availability: Not commercially available. GB on Reddit and Geekhack time to times. + +Make example for this keyboard (after setting up your build environment): + + make delikeeb/waaffle/rev3/pro_micro:default # for Pro Micro builds + make delikeeb/waaffle/rev3/elite_c:default # for Elite-C builds + +Flashing example for this keyboard: + + make delikeeb/waaffle/rev3/pro_micro:default:flash # for Pro Micro builds + make delikeeb/waaffle/rev3/elite_c:default:flash # for Elite-C builds + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/delikeeb/waaffle/rev3/config.h b/keyboards/delikeeb/waaffle/rev3/config.h new file mode 100644 index 0000000000..0c4327623d --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/config.h @@ -0,0 +1,137 @@ +/* +Copyright 2020 noclew + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 Waaffle_rev3 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#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, B6, B2, B3, B1, F5, F6, F7 } +#define MATRIX_COL_PINS { D3, D2, B5, B4, E6, D7, C6, D4, D0, D1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +/*rotary encoder setting*/ +#define ENCODERS_PAD_A { B7, F1 } +#define ENCODERS_PAD_B { D5, F0 } + +#define RGB_DI_PIN C7 +#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 6 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/delikeeb/waaffle/rev3/elite_c/rules.mk b/keyboards/delikeeb/waaffle/rev3/elite_c/rules.mk new file mode 100644 index 0000000000..8b5026cb03 --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/elite_c/rules.mk @@ -0,0 +1,6 @@ +# Bootloader selection +BOOTLOADER = atmel-dfu + +# supported on Elite-C controllers +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +ENCODER_ENABLE = yes # Enable Rotary Encoder diff --git a/keyboards/delikeeb/waaffle/rev3/info.json b/keyboards/delikeeb/waaffle/rev3/info.json new file mode 100644 index 0000000000..200dce5a2a --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "waaffle", + "url": "", + "maintainer": "noclew", + "width": 16.25, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x16": { + "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":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "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":15.25, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "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":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "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}, + {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "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}, {"x":13.25, "y":4}, {"x":14.25, "y":4}, {"x":15.25, "y":4} + ] + } + } +} diff --git a/keyboards/delikeeb/waaffle/rev3/pro_micro/rules.mk b/keyboards/delikeeb/waaffle/rev3/pro_micro/rules.mk new file mode 100644 index 0000000000..bdc4842c57 --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/pro_micro/rules.mk @@ -0,0 +1,6 @@ +# Bootloader selection +BOOTLOADER = caterina + +# not supported on Pro Micro controllers +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +ENCODER_ENABLE = no # Enable Rotary Encoder diff --git a/keyboards/delikeeb/waaffle/rev3/rev3.c b/keyboards/delikeeb/waaffle/rev3/rev3.c new file mode 100644 index 0000000000..bf7f5a1099 --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/rev3.c @@ -0,0 +1,17 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/delikeeb/waaffle/rev3/rev3.h b/keyboards/delikeeb/waaffle/rev3/rev3.h new file mode 100644 index 0000000000..8ca245d845 --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/rev3.h @@ -0,0 +1,44 @@ +/* Copyright 2020 noclew + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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_5x16( \ + k76, k66, k56, k71, k61, k51, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, \ + k77, k67, k57, k72, k62, k52, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, \ + k78, k68, k58, k73, k63, k53, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, \ + k79, k69, k59, k74, k64, k54, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, \ + k80, k70, k60, k75, k65, k55, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50 \ +) { \ + { 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 } \ +} diff --git a/keyboards/delikeeb/waaffle/rev3/rules.mk b/keyboards/delikeeb/waaffle/rev3/rules.mk new file mode 100644 index 0000000000..775a281931 --- /dev/null +++ b/keyboards/delikeeb/waaffle/rev3/rules.mk @@ -0,0 +1,24 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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/config.h b/keyboards/delilah/config.h new file mode 100644 index 0000000000..d07366a51d --- /dev/null +++ b/keyboards/delilah/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x726B +#define PRODUCT_ID 0x645C +#define DEVICE_VER 0x0001 +#define MANUFACTURER rainkeebs +#define PRODUCT Delilah + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5, B6, C6, C7 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F0, E6, D5, D3, D4, D6, 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 RGB_DI_PIN B3 +#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 +#endif diff --git a/keyboards/delilah/delilah.c b/keyboards/delilah/delilah.c new file mode 100644 index 0000000000..b2e98b60fa --- /dev/null +++ b/keyboards/delilah/delilah.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "delilah.h" diff --git a/keyboards/delilah/delilah.h b/keyboards/delilah/delilah.h new file mode 100644 index 0000000000..64b25351b1 --- /dev/null +++ b/keyboards/delilah/delilah.h @@ -0,0 +1,28 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K211, \ + K300, K301, K302, K303, K306, K308, K309, 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, KC_NO, K211 }, \ + { K300, K301, K302, K303, KC_NO, KC_NO, K306, KC_NO, K308, K309, KC_NO, K311 } \ +} diff --git a/keyboards/delilah/info.json b/keyboards/delilah/info.json new file mode 100644 index 0000000000..343a100a2d --- /dev/null +++ b/keyboards/delilah/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/delilah/keymaps/default/keymap.c new file mode 100644 index 0000000000..ae00beadf5 --- /dev/null +++ b/keyboards/delilah/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the 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_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, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + 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), + + 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), + + 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) +}; diff --git a/keyboards/delilah/keymaps/via/keymap.c b/keyboards/delilah/keymaps/via/keymap.c new file mode 100644 index 0000000000..3a6e0d9a20 --- /dev/null +++ b/keyboards/delilah/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the 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_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, FN_MO23, + KC_LCTL, KC_LGUI, KC_LALT, FN_MO13, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + 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), + + 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), + + 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) +}; diff --git a/keyboards/delilah/keymaps/via/rules.mk b/keyboards/delilah/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delilah/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/delilah/readme.md b/keyboards/delilah/readme.md new file mode 100644 index 0000000000..8ba9d83188 --- /dev/null +++ b/keyboards/delilah/readme.md @@ -0,0 +1,22 @@ +# Delilah + +![Delilah](https://i.imgur.com/TqBZycx.png) + +A 12.25u, traditional stagger, 40% keyboard. Designed to keep another punctuation key on base layer while still being compact. + +* Keyboard Maintainer: Rain +* Hardware Supported: Delilah PCB v1.0, v1.1 +* Hardware Availability: [rainkeebs](https://www.rainkeebs.mx/) + + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb delilah -kb default + +To reset the keyboard, hold the top left key while plugging in, or hit the reset button near the USB port + +Install example for this keyboard: + + qmk flash -kb delilah -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/delilah/rules.mk b/keyboards/delilah/rules.mk new file mode 100644 index 0000000000..41a0abee9b --- /dev/null +++ b/keyboards/delilah/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +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 diff --git a/keyboards/dichotomy/keymaps/alairock/keymap.c b/keyboards/dichotomy/keymaps/alairock/keymap.c index a1d196fb06..a7f9189a48 100644 --- a/keyboards/dichotomy/keymaps/alairock/keymap.c +++ b/keyboards/dichotomy/keymaps/alairock/keymap.c @@ -58,9 +58,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = LAYOUT( /* Shifted number/function layout, for per-key control. Only active when shift is held, and number is toggled or held */ - 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_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, _______, _______, _______, _______, _______, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, + KC_LGUI, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_LSFT, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk index d6f98125ee..a9a01d8673 100755 --- a/keyboards/dichotomy/rules.mk +++ b/keyboards/dichotomy/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration #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 diff --git a/keyboards/dm9records/plaid/plaid.h b/keyboards/dm9records/plaid/plaid.h index d791cf7c00..0b1c837619 100644 --- a/keyboards/dm9records/plaid/plaid.h +++ b/keyboards/dm9records/plaid/plaid.h @@ -44,25 +44,9 @@ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ } -// Used to create a keymap using only KC_ prefixed keys -#define KC_KEYMAP( \ - 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 \ - ) \ - LAYOUT_plaid_grid( \ - KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \ - KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \ - KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \ - KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \ - ) - -#define KEYMAP LAYOUT_plaid_grid +#define LAYOUT LAYOUT_plaid_grid #define LAYOUT_ortho_4x12 LAYOUT_plaid_grid #define LAYOUT_planck_mit LAYOUT_plaid_mit -#define LAYOUT_kc_ortho_4x12 KC_KEYMAP -#define KC_LAYOUT_ortho_4x12 KC_KEYMAP #define LED_RED C5 #define LED_GREEN C4 diff --git a/keyboards/dmqdesign/spin/keymaps/codecoffeecode/keymap.c b/keyboards/dmqdesign/spin/keymaps/codecoffeecode/keymap.c index 6e0911da53..d6653691bb 100644 --- a/keyboards/dmqdesign/spin/keymaps/codecoffeecode/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/codecoffeecode/keymap.c @@ -24,7 +24,7 @@ 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) { switch(index) { case 0: if (clockwise) { @@ -48,4 +48,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { } break; } + return true; } diff --git a/keyboards/dmqdesign/spin/keymaps/default/keymap.c b/keyboards/dmqdesign/spin/keymaps/default/keymap.c index 0b5e6bd0b9..ea6b518c38 100644 --- a/keyboards/dmqdesign/spin/keymaps/default/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/default/keymap.c @@ -24,24 +24,25 @@ 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 (index == 0) { /* First encoder */ if (clockwise) { rgblight_increase_hue(); //Cycle through the RGB hue } else { rgblight_decrease_hue(); } - } else if (index == 1) { /* Second encoder */ + } else if (index == 1) { /* Second encoder */ if (clockwise) { tap_code(KC_VOLU); //Example of using tap_code which lets you use keycodes outside of the keymap } else { tap_code(KC_VOLD); } - } else if (index == 2) { /* Third encoder */ + } else if (index == 2) { /* Third encoder */ if (clockwise) { rgblight_increase_val(); //Change brightness on the RGB LEDs } else { rgblight_decrease_val(); } } + return true; } diff --git a/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c b/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c index cb2a21f557..100f821a60 100644 --- a/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c @@ -50,7 +50,7 @@ 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 (index == 0) { /* First encoder */ switch (currentLayer) { //break each encoder update into a switch statement for the current layer case _BL: @@ -124,6 +124,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; } } + return true; } layer_state_t layer_state_set_user(layer_state_t state) { //This will run every time the layer is updated diff --git a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c index b9ad17386c..4760011da5 100644 --- a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c @@ -61,7 +61,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ switch (get_highest_layer(layer_state)) { //break each encoder update into a switch statement for the current layer case _NUMPAD: @@ -135,6 +135,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; } } + return true; } layer_state_t layer_state_set_user(layer_state_t state) { //This will run every time the layer is updated diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c index ba3aa96d49..bdf5dff0df 100644 --- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c @@ -37,8 +37,8 @@ enum custom_keycodes { // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MACRO] = LAYOUT( - A(S(KC_N)), HELLO, CH_SUSP, TO(_MACRO), - KC_MPRV, KC_MPLY, KC_MNXT, TO(_NUMPAD), + A(S(KC_N)), HELLO, CH_SUSP, TO(_MACRO), + KC_MPRV, KC_MPLY, KC_MNXT, TO(_NUMPAD), C(A(KC_COMM)), KC_F5, C(A(KC_DOT)), TO(_RGB), MO(_FN), CH_ASST, CH_CPNL), @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO), }; -// clang-format on +// clang-format on typedef enum layer_ack { ACK_NO = 0, @@ -79,20 +79,20 @@ const rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, H const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_GREEN}); const rgblight_segment_t PROGMEM _meh_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_YELLOW}); -// clang-format on +// clang-format on const rgblight_segment_t *const PROGMEM _rgb_layers[] = { [LAYER_OFFSET + 0] = _macro_layer, [LAYER_OFFSET + 1] = _numpad_layer, [LAYER_OFFSET + 2] = _rgb_layer, [LAYER_OFFSET + 3] = _fn_layer, - + [ACK_OFFSET + ACK_NO] = _no_layer, [ACK_OFFSET + ACK_YES] = _yes_layer, [ACK_OFFSET + ACK_MEH] = _meh_layer, [ACK_OFFSET + ACK_MEH + 1] = NULL }; -// clang-format off +// clang-format off const uint8_t PROGMEM _n_rgb_layers = sizeof(_rgb_layers) / sizeof(_rgb_layers[0]) - 1; @@ -200,7 +200,7 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) { } } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case _RGB: if (index == 0) { @@ -234,4 +234,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { } break; } + return true; } diff --git a/keyboards/dmqdesign/spin/keymaps/via/keymap.c b/keyboards/dmqdesign/spin/keymaps/via/keymap.c new file mode 100644 index 0000000000..6527cc8fd8 --- /dev/null +++ b/keyboards/dmqdesign/spin/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2020-2021 adamkraus6 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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, TO(0), + KC_4, KC_5, KC_6, TO(1), + KC_1, KC_2, KC_3, TO(2), + KC_0, KC_BSPC, KC_ENTER + ), + + [1] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ), + + [2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ), + + [3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + rgblight_increase_hue(); //Cycle through the RGB hue + } else { + rgblight_decrease_hue(); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + rgblight_increase_sat(); + } else { + rgblight_decrease_sat(); + } + } else if (index == 2) { /* Third encoder */ + if (clockwise) { + rgblight_increase_val(); //Change brightness on the RGB LEDs + } else { + rgblight_decrease_val(); + } + } + return true; +} diff --git a/keyboards/dmqdesign/spin/keymaps/via/rules.mk b/keyboards/dmqdesign/spin/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/dmqdesign/spin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h index ef6c55c3e1..f3ee1ed045 100644 --- a/keyboards/do60/config.h +++ b/keyboards/do60/config.h @@ -45,6 +45,9 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, F4, B4, D7, D6, B3, B0 } #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 diff --git a/keyboards/do60/do60.c b/keyboards/do60/do60.c index 3dba9b5359..b19fc59828 100644 --- a/keyboards/do60/do60.c +++ b/keyboards/do60/do60.c @@ -2,26 +2,9 @@ extern inline void setdefaultrgb(void); - void matrix_init_kb(void) { // Keyboard start-up code goes here // Runs once when the firmware starts up matrix_init_user(); - led_init_ports(); setdefaultrgb(); }; - -void led_init_ports(void) { - // Set caps lock LED pin as output - setPinOutput(B2); - // Default to off - writePinHigh(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B2, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/do60/rules.mk b/keyboards/do60/rules.mk index 73bb4f096b..106a1f06da 100644 --- a/keyboards/do60/rules.mk +++ b/keyboards/do60/rules.mk @@ -15,7 +15,7 @@ BOOTLOADER = atmel-dfu 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 = yes # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug EXTRAKEY_ENABLE = yes # Audio control and System control diff --git a/keyboards/donutcables/budget96/budget96.c b/keyboards/donutcables/budget96/budget96.c index 5f3436dc61..8c7b894bc4 100644 --- a/keyboards/donutcables/budget96/budget96.c +++ b/keyboards/donutcables/budget96/budget96.c @@ -15,21 +15,3 @@ */ #include "budget96.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/donutcables/budget96/config.h b/keyboards/donutcables/budget96/config.h index e04cc8b78d..39b661dda7 100644 --- a/keyboards/donutcables/budget96/config.h +++ b/keyboards/donutcables/budget96/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/doodboard/duckboard/config.h b/keyboards/doodboard/duckboard/config.h index ea8a8ae5dd..80c9411165 100644 --- a/keyboards/doodboard/duckboard/config.h +++ b/keyboards/doodboard/duckboard/config.h @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This 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 +19,7 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x4442 #define PRODUCT_ID 0xFF44 #define DEVICE_VER 0x0001 #define MANUFACTURER doodboard diff --git a/keyboards/doodboard/duckboard/duckboard.c b/keyboards/doodboard/duckboard/duckboard.c index af0cb24beb..853e105ceb 100644 --- a/keyboards/doodboard/duckboard/duckboard.c +++ b/keyboards/doodboard/duckboard/duckboard.c @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This 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/doodboard/duckboard/duckboard.h b/keyboards/doodboard/duckboard/duckboard.h index 0e753d445e..c98c9a703a 100644 --- a/keyboards/doodboard/duckboard/duckboard.h +++ b/keyboards/doodboard/duckboard/duckboard.h @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This 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 . */ - #pragma once #include "quantum.h" diff --git a/keyboards/doodboard/duckboard/info.json b/keyboards/doodboard/duckboard/info.json index d5193e61eb..074f5c88ad 100644 --- a/keyboards/doodboard/duckboard/info.json +++ b/keyboards/doodboard/duckboard/info.json @@ -1,35 +1,35 @@ { "keyboard_name": "duckboard", - "url": "", + "url": "https://doodboard.xyz/", "maintainer": "doodboard", "width": 5, "height": 5, "layouts": { "LAYOUT": { "layout": [ - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, - {"x": 1, "y": 1}, - {"x": 2, "y": 1}, - {"x": 3, "y": 1}, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, - {"x": 1, "y": 2}, - {"x": 2, "y": 2}, - {"x": 3, "y": 2}, - {"x": 4, "y": 1, "h": 2}, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 1, "h": 2 }, - {"x": 1, "y": 3}, - {"x": 2, "y": 3}, - {"x": 3, "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": 4, "y": 3, "h": 2} + { "x": 0, "y": 4 }, + { "x": 1, "y": 4 }, + { "x": 2, "y": 4 }, + { "x": 3, "y": 4 }, + { "x": 4, "y": 3, "h": 2 } ] } } diff --git a/keyboards/doodboard/duckboard/keymaps/default/keymap.c b/keyboards/doodboard/duckboard/keymaps/default/keymap.c index 6684e98633..9c849a8a1e 100644 --- a/keyboards/doodboard/duckboard/keymaps/default/keymap.c +++ b/keyboards/doodboard/duckboard/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This 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,32 +18,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( 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_BSPC, KC_MUTE, KC_P0, KC_PDOT, KC_PENT), - [1] = LAYOUT( - TG(1), KC_TRNS, KC_TRNS, KC_TRNS, - KC_HOME, KC_UP, KC_PGUP, - KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, - KC_END, KC_DOWN, KC_PGDN, - TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), - [2] = LAYOUT( - 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, - TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, KC_PPLS, + KC_1, KC_2, KC_3, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_END, KC_DOWN, KC_PGDN, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + 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, + TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), }; -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_VOLU); } else { tap_code(KC_VOLD); } -} + } + return true; } @@ -111,8 +114,8 @@ void oled_task_user(void) { void keyboard_post_init_user(void) { //Customise these values to debug - //debug_enable=true; - //debug_matrix=true; + debug_enable=true; + debug_matrix=true; //debug_keyboard=true; //debug_mouse=true; } diff --git a/keyboards/doodboard/duckboard/readme.md b/keyboards/doodboard/duckboard/readme.md index d2b799ab61..866a7d4b9e 100644 --- a/keyboards/doodboard/duckboard/readme.md +++ b/keyboards/doodboard/duckboard/readme.md @@ -1,10 +1,10 @@ -# duckboard +# duckboard R1 -An 18-key numpad with rotary encoder and OLED support. +An 18-key numpad with rotary encoder and OLED support. -* Keyboard Maintainer: [doodboard](https://github.com/doodboard) -* Hardware Supported: duckboard PCB -* Hardware Availability: Private Group Buy +- Keyboard Maintainer: [doodboard](https://doodboard.xyz/) +- Hardware Supported: duckboard PCB +- Hardware Availability: Private Group Buy Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/doodboard/duckboard_r2/config.h b/keyboards/doodboard/duckboard_r2/config.h new file mode 100644 index 0000000000..10ed3c4cab --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/config.h @@ -0,0 +1,60 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4442 +#define PRODUCT_ID 0x6462 +#define DEVICE_VER 0x0001 +#define MANUFACTURER doodboard +#define PRODUCT duckboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 5 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 2 + +/* media key slowdown for windows */ +#define TAP_CODE_DELAY 20 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 8 // Number of LEDs +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/doodboard/duckboard_r2/duckboard_r2.c b/keyboards/doodboard/duckboard_r2/duckboard_r2.c new file mode 100644 index 0000000000..095544b9e3 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/duckboard_r2.c @@ -0,0 +1,17 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "duckboard_r2.h" diff --git a/keyboards/doodboard/duckboard_r2/duckboard_r2.h b/keyboards/doodboard/duckboard_r2/duckboard_r2.h new file mode 100644 index 0000000000..1f3c462da8 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/duckboard_r2.h @@ -0,0 +1,33 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, \ + K11, K12, K13, K14, \ + K21, K22, K23, K24, \ + K30, K31, K32, K33, K34, \ + K40, K41, K42, K43, K44 \ +) { \ + { KC_NO, K01, K02, K03, K04 }, \ + { KC_NO, K11, K12, K13, K14 }, \ + { KC_NO, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, K34 }, \ + { K40, K41, K42, K43, K44 } \ +} diff --git a/keyboards/doodboard/duckboard_r2/info.json b/keyboards/doodboard/duckboard_r2/info.json new file mode 100644 index 0000000000..69a1b1cd1a --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/info.json @@ -0,0 +1,39 @@ +{ + "keyboard_name": "duckboard", + "url": "https://doodboard.xyz/", + "maintainer": "doodboard", + "width": 5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + + { "x": 0, "y": 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/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c new file mode 100644 index 0000000000..40b685d1d6 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c @@ -0,0 +1,121 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_7, KC_8, KC_9, KC_PPLS, + KC_4, KC_5, KC_6, KC_PPLS, + KC_MUTE, KC_1, KC_2, KC_3, KC_ENT, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, KC_TRNS, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_TRNS, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, + RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +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; +} + + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } + + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 2 +#define IDLE_SPEED 40 // below this wpm value your animation will idle + +#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; + +// 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 void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + 0, 0,192,192,192,192,192,192,192,248,248, 30, 30,254,254,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,255,255,255,255,255,255,255,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,127,127,255,255,255,255,255,159,159,135,135,129,129,129, 97, 97, 25, 25, 7, 7, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 97, 97,127, 1, 1, 97, 97,127, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0,128,128,128,128,128,128,128,240,240, 60, 60,252,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 7, 7, 7, 7,255,255,254,254,255,255,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,255,255,255,255,255,255,255, 63, 63, 15, 15, 3, 3, 3,195,195, 51, 51, 15, 15, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 99, 99,127, 3, 3, 99, 99,127, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //assumes 1 frame prep stage + 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(); + } + } + +void oled_task_user(void) { + render_anim(); + oled_set_cursor(0,6); + oled_write_P(PSTR("DUCK\nBOARD\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; + case 2: + oled_write_P(PSTR("RGB\n"), false); + break; + } +} +#endif + +void keyboard_post_init_user(void) { + //Customise these values to debug + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} diff --git a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c new file mode 100644 index 0000000000..521f374c30 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c @@ -0,0 +1,131 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_7, KC_8, KC_9, KC_PPLS, + KC_4, KC_5, KC_6, KC_PPLS, + KC_MUTE, KC_1, KC_2, KC_3, KC_ENT, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, KC_TRNS, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_TRNS, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, + RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + TG(2), RESET, 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), +}; + +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; +} + + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } + + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 2 +#define IDLE_SPEED 40 // below this wpm value your animation will idle + +#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; + +// 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 void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + 0, 0,192,192,192,192,192,192,192,248,248, 30, 30,254,254,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,255,255,255,255,255,255,255,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,127,127,255,255,255,255,255,159,159,135,135,129,129,129, 97, 97, 25, 25, 7, 7, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 97, 97,127, 1, 1, 97, 97,127, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0,128,128,128,128,128,128,128,240,240, 60, 60,252,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 7, 7, 7, 7,255,255,254,254,255,255,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,255,255,255,255,255,255,255, 63, 63, 15, 15, 3, 3, 3,195,195, 51, 51, 15, 15, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 99, 99,127, 3, 3, 99, 99,127, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //assumes 1 frame prep stage + 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(); + } + } + +void oled_task_user(void) { + render_anim(); + oled_set_cursor(0,6); + oled_write_P(PSTR("DUCK\nBOARD\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; + case 2: + oled_write_P(PSTR("RGB\n"), false); + break; + case 3: + oled_write_P(PSTR("FN2\n"), false); + break; + } +} +#endif + +void keyboard_post_init_user(void) { + //Customise these values to debug + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} diff --git a/keyboards/sidderskb/majbritt/keymaps/via/rules.mk b/keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk similarity index 100% rename from keyboards/sidderskb/majbritt/keymaps/via/rules.mk rename to keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk diff --git a/keyboards/doodboard/duckboard_r2/readme.md b/keyboards/doodboard/duckboard_r2/readme.md new file mode 100644 index 0000000000..8f9c77b6eb --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/readme.md @@ -0,0 +1,17 @@ +# duckboard R2 + +A 21-key numpad with rotary encoder and OLED support. + +- Keyboard Maintainer: [doodboard](https://doodboard.xyz/) +- Hardware Supported: duckboard PCB +- Hardware Availability: Private Group Buy + +Make example for this keyboard (after setting up your build environment): + + make doodboard/duckboard_r2:default + +Flashing example for this keyboard: + + make doodboard/duckboard_r2: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/doodboard/duckboard_r2/rules.mk b/keyboards/doodboard/duckboard_r2/rules.mk new file mode 100644 index 0000000000..09a60d8a79 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/rules.mk @@ -0,0 +1,25 @@ +# 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 = 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 diff --git a/keyboards/draculad/config.h b/keyboards/draculad/config.h new file mode 100644 index 0000000000..8a27fdea4d --- /dev/null +++ b/keyboards/draculad/config.h @@ -0,0 +1,67 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You 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 0x1B1E +#define DEVICE_VER 0x0001 +#define MANUFACTURER mangoiv +#define PRODUCT draculad + +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +#define MATRIX_ROW_PINS {D4, C6, D7, E6} +#define MATRIX_COL_PINS {F4, F5,F6, F7, B1} + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + + +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 30000 +#endif + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLED_NUM 10 +#define RGBLIGHT_SPLIT +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_SLEEP +#endif + +#define ENCODERS_PAD_A {B2 , B4} +#define ENCODERS_PAD_B {B6 , B5} + +#define ENCODER_RESOLUTIONS { 4, 4, 4, 1} +#define UNUSED_PINS + +#define EE_HANDS diff --git a/keyboards/crkbd/rev1/legacy/legacy.c b/keyboards/draculad/draculad.c similarity index 87% rename from keyboards/crkbd/rev1/legacy/legacy.c rename to keyboards/draculad/draculad.c index 595ff1eaf7..04a83ef2e3 100644 --- a/keyboards/crkbd/rev1/legacy/legacy.c +++ b/keyboards/draculad/draculad.c @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 @mangoiv This 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,4 +15,4 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "legacy.h" +#include "draculad.h" \ No newline at end of file diff --git a/keyboards/draculad/draculad.h b/keyboards/draculad/draculad.h new file mode 100644 index 0000000000..b98bb0d2c4 --- /dev/null +++ b/keyboards/draculad/draculad.h @@ -0,0 +1,40 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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( \ + 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, R33, \ + L31, L32, L33, R30, R31, R32 \ + ) \ + { \ + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { XXX, L30, L31, L32, L33 }, \ + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { XXX, R33, R32, R31, R30 } \ + } diff --git a/keyboards/draculad/info.json b/keyboards/draculad/info.json new file mode 100644 index 0000000000..c0f37771b9 --- /dev/null +++ b/keyboards/draculad/info.json @@ -0,0 +1,59 @@ +{ + "keyboard_name": "DracuLad", + "url": "", + "maintainer": "MangoIV", + "width": 13, + "height": 5.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"L00", "x":0, "y":1}, + {"label":"L01", "x":1, "y":0.35}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0.35}, + {"label":"L04", "x":4, "y":0.5}, + + {"label":"R00", "x":8, "y":0.5}, + {"label":"R01", "x":9, "y":0.35}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0.35}, + {"label":"R04", "x":12, "y":1}, + + {"label":"L10", "x":0, "y":2}, + {"label":"L11", "x":1, "y":1.35}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1.35}, + {"label":"L14", "x":4, "y":1.5}, + + {"label":"R10", "x":8, "y":1.5}, + {"label":"R11", "x":9, "y":1.35}, + {"label":"R12", "x":10, "y":1}, + {"label":"R13", "x":11, "y":1.35}, + {"label":"R14", "x":12, "y":2}, + + {"label":"L20", "x":0, "y":3}, + {"label":"L21", "x":1, "y":2.35}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2.35}, + {"label":"L24", "x":4, "y":2.5}, + + {"label":"R20", "x":8, "y":2.5}, + {"label":"R21", "x":9, "y":2.35}, + {"label":"R22", "x":10, "y":2}, + {"label":"R23", "x":11, "y":2.35}, + {"label":"R24", "x":12, "y":3}, + + {"label":"L30", "x":4.25, "y":3.5}, + {"label":"R33", "x":7.75, "y":3.5}, + + {"label":"L31", "x":3, "y":4.5}, + {"label":"L32", "x":4, "y":4.5}, + {"label":"L33", "x":5, "y":4.5}, + + {"label":"R30", "x":7, "y":4.5}, + {"label":"R31", "x":8, "y":4.5}, + {"label":"R32", "x":9, "y":4.5} + ] + } + } +} diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c new file mode 100644 index 0000000000..1d3591ce99 --- /dev/null +++ b/keyboards/draculad/keymaps/default/keymap.c @@ -0,0 +1,225 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 { + _BASE, + _NUM, + _SYMB, + _MUS, + _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, + 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_MUTE, TG(_ADJ), + KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB,KC_ENT), KC_CAPS + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, KC_NO, + XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_NO, + KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO + ), + [_MUS] = LAYOUT( + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_ADJ] = LAYOUT( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +#ifdef OLED_DRIVER_ENABLE + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + if (is_keyboard_master()) { + if(is_keyboard_left()){ + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_90; + } + } else { + return OLED_ROTATION_0; + } +} +static void render_logo(void) { + static const char PROGMEM drac_logo[] = { + // drac_logo, 128x64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 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, 0x04, 0x04, 0x0c, 0x18, 0x78, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3e, 0xfc, 0xf0, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, + 0xe0, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xf0, 0x80, 0xc0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0x7c, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xcc, 0x8c, 0x84, 0x86, 0x86, 0xc6, 0xff, + 0xff, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xf0, 0x71, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, + 0x7f, 0x7f, 0x3e, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf8, 0xfc, + 0xfc, 0xfe, 0xfe, 0x7e, 0x7c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xc0, + 0xc0, 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, 0x01, 0x07, + 0x0f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x99, 0x18, 0x08, + 0x0c, 0x0c, 0x8c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x80, + 0xc3, 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, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 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 + }; + oled_write_raw_P(drac_logo, sizeof(drac_logo)); +} + +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)) { + case _BASE: + oled_write_P(PSTR("Base "), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbols"), false); + break; + case _ADJ: + oled_write_P(PSTR("Adjust "), false); + break; + case _MUS: + oled_write_P(PSTR("Mouse "), false); + break; + default: + oled_write_P(PSTR("Unkn "), false); + break; + } +} + +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 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 == 2) { + if(clockwise) { + tap_code(KC_PGUP); + } + else{ + tap_code(KC_PGDN); + } + } + else if (index == 3 ) { + // Page up/Page down + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + return true; +} +#endif diff --git a/keyboards/crkbd/rev1/legacy/serial_config.h b/keyboards/draculad/keymaps/pimoroni/config.h similarity index 74% rename from keyboards/crkbd/rev1/legacy/serial_config.h rename to keyboards/draculad/keymaps/pimoroni/config.h index 40d11d4de2..c5f9df6f99 100644 --- a/keyboards/crkbd/rev1/legacy/serial_config.h +++ b/keyboards/draculad/keymaps/pimoroni/config.h @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 @mangoiv This 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 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef SOFT_SERIAL_PIN -#define SOFT_SERIAL_PIN D2 -#define SERIAL_USE_MULTI_TRANSACTION +//comment that out if your trackball is on the left side +#define TRACKBALL_RIGHT + +#ifdef TRACKBALL_RIGHT + #define PIMORONI_TRACKBALL_INVERT_X + #define PIMORONI_TRACKBALL_INVERT_Y #endif + diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c new file mode 100644 index 0000000000..87cbe3cd3a --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/keymap.c @@ -0,0 +1,324 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 "pimoroni_trackball.h" +#include "pointing_device.h" + + +enum layer_number { + _BASE, + _NUM, + _SYMB, + _MUS, + _ADJ +}; + +enum custom_keycodes { + BALL_HUI,//cycles hue + BALL_WHT,//cycles white + BALL_DEC,//decreased color + BALL_SCR,//scrolls + BALL_NCL,//left click + BALL_RCL,//right click + 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, + 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_MUTE, TG(_ADJ), + KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB,KC_DEL) + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, KC_NO, + KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_NO, + KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______ + ), + [_MUS] = LAYOUT( + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_ADJ] = LAYOUT( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + + +#ifdef OLED_DRIVER_ENABLE + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + if (is_keyboard_master()) { + if(is_keyboard_left()){ + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_90; + } + } else { + return OLED_ROTATION_0; + } +} +static void render_logo(void) { + static const char PROGMEM drac_logo[] = { + // drac_logo, 128x64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 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, 0x04, 0x04, 0x0c, 0x18, 0x78, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3e, 0xfc, 0xf0, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, + 0xe0, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xf0, 0x80, 0xc0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0x7c, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xcc, 0x8c, 0x84, 0x86, 0x86, 0xc6, 0xff, + 0xff, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xf0, 0x71, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, + 0x7f, 0x7f, 0x3e, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf8, 0xfc, + 0xfc, 0xfe, 0xfe, 0x7e, 0x7c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xc0, + 0xc0, 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, 0x01, 0x07, + 0x0f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x99, 0x18, 0x08, + 0x0c, 0x0c, 0x8c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x80, + 0xc3, 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, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 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 + }; + oled_write_raw_P(drac_logo, sizeof(drac_logo)); +} + +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)) { + case _BASE: + oled_write_P(PSTR("Base "), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbols"), false); + break; + case _ADJ: + oled_write_P(PSTR("Adjust "), false); + break; + case _MUS: + oled_write_P(PSTR("Mouse "), false); + break; + default: + oled_write_P(PSTR("Unkn "), false); + break; + } +} + +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 + +uint8_t white = 0; +uint8_t red = 255; +uint8_t green = 0; +uint8_t blue = 0; + +void ball_increase_hue(void){ + if(red!=255&&green!=255&&blue!=255){ + red =255; + } + if (red==255&&green<255&&blue==0){ + green += 15; + } else if(green==255&&blue==0&&red>0){ + red-=15; + } else if(red==0&&blue<255&&green==255){ + blue+=15; + } else if(blue==255&&green>0&&red==0){ + green -= 15; + } else if(green == 0&&blue==255&&red<255){ + red +=15; + } else if(green ==0&&blue>0&&red==255){ + blue -=15; + } + trackball_set_rgbw(red,green,blue,white); +} + +void decrease_color(void){ + if (green>0){ + green-=15; + } + if (red>0){ + red-=15; + } + if (blue>0){ + blue-=15; + } + trackball_set_rgbw(red,green,blue,white); +} + +void cycle_white(void){ + if (white<255){ + white +=15; + } else{ + white=0; + } + trackball_set_rgbw(red,green,blue,white); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record){ + switch (keycode){ + case BALL_HUI: + if(record->event.pressed){ + ball_increase_hue(); + } + break; + + case BALL_WHT: + if(record-> event.pressed){ + cycle_white(); + } + break; + + case BALL_DEC: + if(record-> event.pressed){ + decrease_color(); + } + break; + + case BALL_SCR: + if(record->event.pressed){ + trackball_set_scrolling(true); + } else{ + trackball_set_scrolling(false); + } + break; + + case BALL_NCL: + record->event.pressed?register_code(KC_BTN1):unregister_code(KC_BTN1); + break; + case BALL_RCL: + record->event.pressed?register_code(KC_BTN2):unregister_code(KC_BTN2); + break; + case BALL_MCL: + record->event.pressed?register_code(KC_BTN3):unregister_code(KC_BTN3); + break; + } + return true; +} +#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 == 2) { + switch (get_highest_layer(layer_state)) { + case _ADJ: + clockwise?ball_increase_hue():cycle_white(); + break; + case _MUS: + clockwise?tap_code(KC_WH_U):tap_code(KC_WH_D); + break; + default: + clockwise?tap_code(KC_PGUP):tap_code(KC_PGDN); + break; + } + } + // I only have 2 encoders on the the pimoroni example board, just add else ifs for your other encoders... + // the missing ones are encoder 1 on the right side and encoder 3 on the left side + return true; +} +#endif diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c new file mode 100644 index 0000000000..c4f4a0441a --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c @@ -0,0 +1,177 @@ +/* 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 "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; + +static uint16_t i2c_timeout_timer; + +#ifndef I2C_TIMEOUT +# define I2C_TIMEOUT 100 +#endif +#ifndef I2C_WAITCHECK +# define I2C_WAITCHECK 1000 +#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_WRITE, 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; + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (true) { + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); + } + + + if (!process_record_user(keycode, record)) { return false; } + +/* 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 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; } + + +__attribute__((weak)) void pointing_device_init(void) { trackball_set_rgbw(0x80, 0x00, 0x00, 0x00); } + +void pointing_device_task(void) { + static bool debounce; + static uint16_t debounce_timer; + uint8_t state[5] = {}; + if (timer_elapsed(i2c_timeout_timer) > I2C_WAITCHECK) { + if (i2c_readReg(TRACKBALL_WRITE, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { + if (!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(); + } + } + } else { + i2c_timeout_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); + pointing_device_send(); +} diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h new file mode 100644 index 0000000000..cfcd5a47a1 --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h @@ -0,0 +1,35 @@ +/* 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" + +#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); \ No newline at end of file diff --git a/keyboards/draculad/keymaps/pimoroni/rules.mk b/keyboards/draculad/keymaps/pimoroni/rules.mk new file mode 100644 index 0000000000..547a02f26f --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/rules.mk @@ -0,0 +1,6 @@ +# only uncomment on the side you have your trackball on +POINTING_DEVICE_ENABLE = yes +SRC += pimoroni_trackball.c +QUANTUM_LIB_SRC += i2c_master.c +OLED_DRIVER_ENABLE = yes +MOUSEKEY_ENABLE = no diff --git a/keyboards/draculad/readme.md b/keyboards/draculad/readme.md new file mode 100644 index 0000000000..585d6cb5fc --- /dev/null +++ b/keyboards/draculad/readme.md @@ -0,0 +1,31 @@ +# DracuLad + +![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true) + +*A 34-36 key split keyboard* +- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. +- bright RGB Underglow with WS2812B LEDs +- one SSD1306 OLED per side +- aggressive pinky stagger similar to the Kyria but with an alternative thumb cluster to raise comfort for large hands +- support for MX and Choc switches + +* Keyboard Maintainer: [MangoIV](https://github.com/MangoIV) +* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the Pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout) +* Hardware Availability: [MangoIV's GitHub](https://github.com/MangoIV/dracuLad) + +Make example for this keyboard (after setting up your build env): + + make draculad:default + +or for the version using the Pimoroni trackball: + + make draculad:pimoroni + +Flashing example for DFU and Caterina respectively (replace `default` with the name of your keymap): + + make draculad:default:dfu + make draculad:default:flash + +When flashing the first time using handedness by EEPROM, use the [QMK guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom). + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/draculad/rules.mk b/keyboards/draculad/rules.mk new file mode 100644 index 0000000000..d8596006c3 --- /dev/null +++ b/keyboards/draculad/rules.mk @@ -0,0 +1,27 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.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 +WPM_ENABLE = yes +ENCODER_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/draytronics/daisy/config.h b/keyboards/draytronics/daisy/config.h new file mode 100644 index 0000000000..b524f89028 --- /dev/null +++ b/keyboards/draytronics/daisy/config.h @@ -0,0 +1,112 @@ +/*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" + +#define VENDOR_ID 0x4454 //DT for DrayTronics +#define PRODUCT_ID 0x4441 //DA for Daisy +#define DEVICE_VER 0x0100 //Version 1 +#define MANUFACTURER Draytronics +#define PRODUCT DAISY + +/* 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 { B0, C0, C1} +#define MATRIX_COL_PINS { C2, C3, C4, C5 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B1, D0 } +#define ENCODERS_PAD_B { B2, D1 } +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW +#define TAP_CODE_DELAY 10 +/* 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 + +//Underglow +#define RGB_DI_PIN D4 // Underglow led pin +#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 +#endif diff --git a/keyboards/draytronics/daisy/daisy.c b/keyboards/draytronics/daisy/daisy.c new file mode 100644 index 0000000000..149cb3d0c7 --- /dev/null +++ b/keyboards/draytronics/daisy/daisy.c @@ -0,0 +1,19 @@ +/*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 "daisy.h" diff --git a/keyboards/draytronics/daisy/daisy.h b/keyboards/draytronics/daisy/daisy.h new file mode 100644 index 0000000000..2c47989433 --- /dev/null +++ b/keyboards/draytronics/daisy/daisy.h @@ -0,0 +1,33 @@ +/*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( \ + K00, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23 \ +) { \ +{ K00, _x_, _x_, K03, }, \ +{ K10, K11, K12, K13, }, \ +{ K20, K21, K22, K23, }, \ +} diff --git a/keyboards/draytronics/daisy/info.json b/keyboards/draytronics/daisy/info.json new file mode 100644 index 0000000000..ac3b83f81f --- /dev/null +++ b/keyboards/draytronics/daisy/info.json @@ -0,0 +1,28 @@ +{ + "keyboard_name": "Draytronics DAISY", + "url": "https://www.draytronics.co.uk/daisy", + "maintainer": "ghostseven", + "width": 4, + "height": 3, + "layout_aliases": { + "LAYOUT_daisy": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"", "x":0, "y":0}, + {"label":"", "x":3, "y":0}, + + {"label":"", "x":0, "y":1}, + {"label":"", "x":1, "y":1}, + {"label":"", "x":2, "y":1}, + {"label":"", "x":3, "y":1}, + + {"label":"", "x":0, "y":2}, + {"label":"", "x":1, "y":2}, + {"label":"", "x":2, "y":2}, + {"label":"", "x":3, "y":2} + ] + } + } +} diff --git a/keyboards/draytronics/daisy/keymaps/default/keymap.c b/keyboards/draytronics/daisy/keymaps/default/keymap.c new file mode 100644 index 0000000000..74cd02ecd2 --- /dev/null +++ b/keyboards/draytronics/daisy/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/*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 +#define _BASE 0 // Base layer +#define _CODE 1 // Code layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_MUTE, KC_HOME, + MO(_CODE), KC_MPRV, KC_MNXT, KC_MPLY, + C(KC_LEFT), C(KC_UP), C(KC_DOWN), C(KC_RIGHT) + ), + [_CODE] = LAYOUT( + KC_MUTE, KC_END, + _______, RGB_MOD, RGB_VAI, RGB_TOG, + G(S(KC_5)), G(A(KC_ESC)), G(KC_F), RESET + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + else if (index == 1) { + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } + return true; +} diff --git a/keyboards/draytronics/daisy/readme.md b/keyboards/draytronics/daisy/readme.md new file mode 100644 index 0000000000..6e8dd007aa --- /dev/null +++ b/keyboards/draytronics/daisy/readme.md @@ -0,0 +1,20 @@ +# DAISY +![daisy](https://www.draytronics.co.uk/wp-content/uploads/2020/12/repository-open-graph-template-1.png) + +An open source macro pad with rotary encoders and under glow, designed to be easily built with (mostly) through hole components. More info / kits / PCB designs available at [draytronics.co.uk/daisy](https://www.draytronics.co.uk/daisy) + +* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) +* Hardware Supported: DAISY PCB / ATMega328P +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) + +Make example for this keyboard (after setting up your build environment): + + make draytronics/daisy:default + +Flashing example for this keyboard: + + make draytronics/daisy: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). + +VIA design config file avaliable [here](https://www.draytronics.co.uk/f_daisy/draytronics_daisy_via_config.json) diff --git a/keyboards/draytronics/daisy/rules.mk b/keyboards/draytronics/daisy/rules.mk new file mode 100644 index 0000000000..f826ee6187 --- /dev/null +++ b/keyboards/draytronics/daisy/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# 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 = 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/scarlet/readme.md b/keyboards/draytronics/scarlet/readme.md index 4a548ec8d6..a1ba2e330f 100644 --- a/keyboards/draytronics/scarlet/readme.md +++ b/keyboards/draytronics/scarlet/readme.md @@ -2,11 +2,11 @@ ![scarlet](https://www.draytronics.co.uk/wp-content/uploads/2020/10/Scarlet-PCB-Compared-Combined.png) -A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](draytronics.co.uk) +A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](https://draytronics.co.uk) * Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) * Hardware Supported: SCARLET PCB / ATMega32A -* Hardware Availability: [draytronics.co.uk](draytronics.co.uk) +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/dubba175/config.h b/keyboards/dubba175/config.h new file mode 100644 index 0000000000..2eab0e2693 --- /dev/null +++ b/keyboards/dubba175/config.h @@ -0,0 +1,56 @@ +/* Copyright 2020 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 Dubba175 +#define VENDOR_ID 0x0420 +#define PRODUCT_ID 0x0420 +#define DEVICE_VER 0x0420 + +/* 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) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B1, B3, B2, B5 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B6 } +#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 \ No newline at end of file diff --git a/keyboards/dubba175/dubba175.c b/keyboards/dubba175/dubba175.c new file mode 100644 index 0000000000..066e772fa2 --- /dev/null +++ b/keyboards/dubba175/dubba175.c @@ -0,0 +1,16 @@ +/* Copyright 2020 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 "dubba175.h" \ No newline at end of file diff --git a/keyboards/dubba175/dubba175.h b/keyboards/dubba175/dubba175.h new file mode 100644 index 0000000000..0413b158d2 --- /dev/null +++ b/keyboards/dubba175/dubba175.h @@ -0,0 +1,30 @@ +/* Copyright 2020 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( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, \ + k302, k303, k304, k305, k306, k307 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209 }, \ + { KC_NO, KC_NO, k302, k303, k304, k305, k306, k307, KC_NO, KC_NO } \ +} diff --git a/keyboards/dubba175/info.json b/keyboards/dubba175/info.json new file mode 100644 index 0000000000..5f8c3f1f44 --- /dev/null +++ b/keyboards/dubba175/info.json @@ -0,0 +1,12 @@ +{ + "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/config.h b/keyboards/dubba175/keymaps/default/config.h new file mode 100644 index 0000000000..7a4761b1ae --- /dev/null +++ b/keyboards/dubba175/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2020 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 8 +#define COMBO_TERM 40 diff --git a/keyboards/dubba175/keymaps/default/keymap.c b/keyboards/dubba175/keymaps/default/keymap.c new file mode 100644 index 0000000000..e502e94981 --- /dev/null +++ b/keyboards/dubba175/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2020 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, + _NAV, + _FN +}; + +enum combo_events { + combo_ESC, + combo_BACK, + combo_TAB, + combo_DELETE, + combo_ENTER, + combo_QUOT, + 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_Q, KC_P, 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 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_QUOT] = COMBO(quot_combo, KC_QUOT), + [combo_LPRN] = COMBO(lprn_combo, KC_LPRN), + [combo_RPRN] = COMBO(rprn_combo, KC_RPRN), +}; + +#define NUM MO(_NUM) +#define NAV MO(_NAV) +#define FN MO(_FN) +#define xxx KC_TRNS + +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_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 + ), + + + [_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 + ), + + [_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 + ) + +}; diff --git a/keyboards/dubba175/keymaps/default/readme.md b/keyboards/dubba175/keymaps/default/readme.md new file mode 100644 index 0000000000..8e5c2c528b --- /dev/null +++ b/keyboards/dubba175/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default Dubba175 Keymap diff --git a/keyboards/dubba175/keymaps/default/rules.mk b/keyboards/dubba175/keymaps/default/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/dubba175/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/dubba175/readme.md b/keyboards/dubba175/readme.md new file mode 100644 index 0000000000..f8f1459236 --- /dev/null +++ b/keyboards/dubba175/readme.md @@ -0,0 +1,15 @@ +# Dubba175 + +![Dubba175](https://i.imgur.com/nzDZuS3h.jpg) + +Dubba175 is a 10u wide ortholinear keyboard featuring 2x 1.75u spacebars as the bottom row layout option. + +* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby) +* Hardware Supported: Dubba175 (https://github.com/drhigsby/dubba175) +* Hardware Availability: P3DStore.com offers a stacked acrlyic case / make your own + +Make example for this keyboard (after setting up your build environment): + + make dubba175: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/dubba175/rules.mk b/keyboards/dubba175/rules.mk new file mode 100644 index 0000000000..f9c2a3c5ea --- /dev/null +++ b/keyboards/dubba175/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 # 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 +LTO_ENABLE = no # Use link time optimization diff --git a/keyboards/duck/eagle_viper/info.json b/keyboards/duck/eagle_viper/info.json index f20babdbcf..1ab27a6d8d 100644 --- a/keyboards/duck/eagle_viper/info.json +++ b/keyboards/duck/eagle_viper/info.json @@ -6,7 +6,7 @@ "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_eagle": { + "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": { diff --git a/keyboards/dumbo/keymaps/default/keymap.c b/keyboards/dumbo/keymaps/default/keymap.c index dfa6a52b91..63b9936032 100644 --- a/keyboards/dumbo/keymaps/default/keymap.c +++ b/keyboards/dumbo/keymaps/default/keymap.c @@ -189,7 +189,7 @@ void oled_task_user(void) { #endif #ifdef ENCODER_ENABLE -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { // master side thumb encoder // Volume control @@ -226,5 +226,6 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_HOME); } } + return true; } #endif diff --git a/keyboards/dumbo/keymaps/trip-trap/keymap.c b/keyboards/dumbo/keymaps/trip-trap/keymap.c index 4e73fdaa0e..03825db031 100644 --- a/keyboards/dumbo/keymaps/trip-trap/keymap.c +++ b/keyboards/dumbo/keymaps/trip-trap/keymap.c @@ -387,7 +387,7 @@ void oled_task_user(void) { #endif #ifdef ENCODER_ENABLE -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { // master side thumb encoder // Volume control @@ -424,5 +424,6 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_HOME); } } + return true; } #endif diff --git a/keyboards/dumbpad/config.h b/keyboards/dumbpad/config.h index d1fa9aa4b3..5a1a1c92b8 100644 --- a/keyboards/dumbpad/config.h +++ b/keyboards/dumbpad/config.h @@ -1,5 +1,5 @@ /* -Copyright 2019 imchipwood +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 @@ -14,218 +14,21 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xDEAF +#define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0913 -#define DEVICE_VER 0x0001 #define MANUFACTURER imchipwood #define PRODUCT dumbpad - -/* - * 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_ROWS 4 -#define MATRIX_COLS 5 -#define MATRIX_ROW_PINS { F4, F5, F6, F7 } -#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ +/* Column/Row IO definitions */ #define DIODE_DIRECTION COL2ROW -/* Rotary encoder */ -#define ENCODERS_PAD_A { D0 } -#define ENCODERS_PAD_B { D4 } - -/* LED layer indicators */ -#define LAYER_INDICATOR_LED_0 B3 -#define LAYER_INDICATOR_LED_1 B1 - -/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ -#define BOOTMAGIC_LITE_ROW 3 -#define BOOTMAGIC_LITE_COLUMN 0 - - /* 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 - -/* - * 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 - -/* 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 +/* Reduce tapdance required taps from 5 to 2 */ +#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/dumbpad.c b/keyboards/dumbpad/dumbpad.c deleted file mode 100644 index d9b649c715..0000000000 --- a/keyboards/dumbpad/dumbpad.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright 2019 Chip - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "dumbpad.h" - -void keyboard_pre_init_kb(void) { - // Set the layer LED IO as outputs - setPinOutput(LAYER_INDICATOR_LED_0); - setPinOutput(LAYER_INDICATOR_LED_1); - - keyboard_pre_init_user(); -} - -void shutdown_user() { - // Shutdown the layer LEDs - writePinLow(LAYER_INDICATOR_LED_0); - writePinLow(LAYER_INDICATOR_LED_1); -} - -layer_state_t layer_state_set_kb(layer_state_t state) { - // Layer LEDs act as binary indication of current layer - uint8_t layer = biton32(state); - writePin(LAYER_INDICATOR_LED_0, layer & 0b1); - writePin(LAYER_INDICATOR_LED_1, (layer >> 1) & 0b1); - return layer_state_set_user(state); -} - -// 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 - for (int i = 0; i < 2; i++) { - writePin(LAYER_INDICATOR_LED_0, true); - writePin(LAYER_INDICATOR_LED_1, false); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, true); - writePin(LAYER_INDICATOR_LED_1, true); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, false); - writePin(LAYER_INDICATOR_LED_1, true); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, false); - writePin(LAYER_INDICATOR_LED_1, false); - wait_ms(100); - } - - 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/dumbpad/info.json b/keyboards/dumbpad/info.json deleted file mode 100644 index 8b6a8116e3..0000000000 --- a/keyboards/dumbpad/info.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "keyboard_name": "dumbpad", - "url": "", - "maintainer": "qmk", - "width": 5, - "height": 4, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"7", "x":1, "y":0}, - {"label":"8", "x":2, "y":0}, - {"label":"9", "x":3, "y":0}, - {"label":"BSPC", "x":4, "y":0}, - {"label":"4", "x":1, "y":1}, - {"label":"5", "x":2, "y":1}, - {"label":"6", "x":3, "y":1}, - {"label":"ESC", "x":4, "y":1}, - {"label":"1", "x":1, "y":2}, - {"label":"2", "x":2, "y":2}, - {"label":"3", "x":3, "y":2}, - {"label":"TAB", "x":4, "y":2}, - {"label":"LMOUSE", "x":0, "y":3}, - {"label":"TT(2)", "x":1, "y":3}, - {"label":"0", "x":2, "y":3}, - {"label":".", "x":3, "y":3}, - {"label":"ENT", "x":4, "y":3} - ] - } - } -} \ No newline at end of file diff --git a/keyboards/dumbpad/keymaps/default/config.h b/keyboards/dumbpad/keymaps/default/config.h deleted file mode 100644 index 8380885593..0000000000 --- a/keyboards/dumbpad/keymaps/default/config.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/keymaps/default/keymap.c b/keyboards/dumbpad/keymaps/default/keymap.c deleted file mode 100644 index c0d4a7c077..0000000000 --- a/keyboards/dumbpad/keymaps/default/keymap.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright 2019 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 - -#define _BASE 0 -#define _SUB 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - BASE LAYER - /-----------------------------------------------------` - | | 7 | 8 | 9 | Bkspc | - | |---------|---------|---------|---------| - | | 4 | 5 | 6 | Esc | - | |---------|---------|---------|---------| - | | 1 | 2 | 3 | Tab | - |-------------|---------|---------|---------|---------| - | Left mouse | TT(SUB) | 0 | . | Enter | - \-----------------------------------------------------' - */ - [_BASE] = LAYOUT( - KC_7, KC_8, KC_9, KC_BSPC, - KC_4, KC_5, KC_6, KC_ESC, - KC_1, KC_2, KC_3, KC_TAB, - KC_BTN1, TT(_SUB), KC_0, KC_DOT, KC_ENTER - ), - /* - SUB LAYER - /-----------------------------------------------------` - | | | | | Reset | - | |---------|---------|---------|---------| - | | | | | + | - | |---------|---------|---------|---------| - | | | | | - | - |-------------|---------|---------|---------|---------| - | LOCK | | | | = | - \-----------------------------------------------------' - */ - [_SUB] = LAYOUT( - _______, _______, _______, RESET, - _______, _______, _______, KC_KP_PLUS, - _______, _______, _______, KC_KP_MINUS, - KC_LOCK, _______, _______, _______, KC_EQL - ), -}; - -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 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; -} - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - //debug_enable = true; - //debug_matrix = true; - //debug_keyboard = true; - //debug_mouse = true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -void encoder_update_user(uint8_t index, bool clockwise) { - /* 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) - */ - if (index == 0) { - switch (biton32(layer_state)) { - case _BASE: - // main layer - move mouse right (CW) and left (CCW) - if (clockwise) { - tap_code(KC_MS_R); - } else { - tap_code(KC_MS_L); - } - break; - - default: - // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) - if (clockwise) { - tap_code(KC_EQL); - } else { - tap_code(KC_MINS); - } - break; - } - } -} diff --git a/keyboards/dumbpad/keymaps/imchipwood/config.h b/keyboards/dumbpad/keymaps/imchipwood/config.h deleted file mode 100644 index 8380885593..0000000000 --- a/keyboards/dumbpad/keymaps/imchipwood/config.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/keymaps/imchipwood/keymap.c b/keyboards/dumbpad/keymaps/imchipwood/keymap.c deleted file mode 100644 index 73a8e824ca..0000000000 --- a/keyboards/dumbpad/keymaps/imchipwood/keymap.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2019 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 - -#define _BASE 0 -#define _SUB 1 -#define _DBG 2 - - -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, - KC_MPLY, TT(_SUB), KC_P0, KC_PDOT, KC_KP_ENTER - ), - /* - SUB LAYER - /-----------------------------------------------------` - | | | | | Numlock | - | |---------|---------|---------|---------| - | | | | | - | - | |---------|---------|---------|---------| - | | | | | / | - |-------------|---------|---------|---------|---------| - | MO(_DBG) | | | | = | - \-----------------------------------------------------' - */ - [_SUB] = LAYOUT( - _______, _______, _______, KC_NLCK, - _______, _______, _______, KC_KP_MINUS, - _______, _______, _______, KC_KP_SLASH, - MO(_DBG), _______, _______, _______, KC_KP_EQUAL - ), - /* - DEBUG LAYER - /-----------------------------------------------------` - | | | | | Reset | - | |---------|---------|---------|---------| - | | | | | | - | |---------|---------|---------|---------| - | | | | | | - |-------------|---------|---------|---------|---------| - | | | | | | - \-----------------------------------------------------' - */ - [_DBG] = LAYOUT( - _______, _______, _______, RESET, - _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, _______ - ), -}; - -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 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; -} - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - //debug_enable = true; - //debug_matrix = true; - //debug_keyboard = true; - //debug_mouse = true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - - -void encoder_update_user(uint8_t index, bool clockwise) { - /* Custom encoder control - handles CW/CCW turning of encoder - * Cusotom behavior: - * main layer: - * CW: volume up - * CCW: volume down - * sub layer: - * CW: next media track - * CCW: prev media track - * debug layer: - * CW: brightness up - * CCW: brightness down - */ - if (index == 0) { - switch (biton32(layer_state)) { - case _BASE: - // main layer - volume up (CW) and down (CCW) - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - - case _SUB: - // sub layer - next track (CW) and previous track (CCW) - if (clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - break; - - case _DBG: - // debug layer - brightness up (CW) and brightness down (CCW) - if (clockwise) { - tap_code(KC_BRIU); - } else { - tap_code(KC_BRID); - } - break; - - default: - // any other layer (shouldn't exist..) - volume up (CW) and down (CCW) - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - } - } -} diff --git a/keyboards/dumbpad/readme.md b/keyboards/dumbpad/readme.md index 8f3789bcb3..ad72ed58d8 100644 --- a/keyboards/dumbpad/readme.md +++ b/keyboards/dumbpad/readme.md @@ -1,19 +1,23 @@ # dumbpad -![dumbpad](https://i.imgur.com/sS3fq1Z.jpg) +![dumbpad](https://i.imgur.com/1T7ciLZl.jpg) -A 4x4 macro/numpad with rotary encoder. +dumbpad is a num/macro pad available in two major form factors - single- and dual-rotary encoder. -Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Single-encoder PCBs are reversible - components can be soldered to either side to allow +the encoder to be on either the left or right side. +* Dual-encoder PCBs come in two versions - one with the encoders in the bottom corners, the otherin the top corners -PCB repository: https://github.com/imchipwood/dumbpad +Support for dumbpad all PCB revisions can be found in this directory. -Make example for this keyboard (after setting up your build environment): - - make dumbpad:default - -Program with: - - make dumbpad:default:avrdude - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +* Maintainer: [imchipwood](https://github.com/imchipwood) +* PCB repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) + * PCB revisions: + * v0.x - these revisions have two LEDs for layer indication + * ['v0x'](v0x/): Default setup for single rotary encoder v0.x PCBs + * ['v0x_right'](v0x_right/): Same as v0x but with rotary encoder on right side (components on bottom of PCB) + * ['v0x_dualencoder'](v0x_dualencoder/): Dual-encoder PCBs + * v1.x - these revisions have three LEDs - two for layer indication, one for numlock indication + * ['v1x'](v1x/): Default setup for v1.x PCBs with a single rotary encoder on the left side + * ['v1x_right'](v1x_right/): Same as v1x but with rotary encoder on right side (components on bottom of PCB) + * ['v1x_dualencoder'](v1x_dualencoder/): v1x PCB with two rotary encoders diff --git a/keyboards/dumbpad/rules.mk b/keyboards/dumbpad/rules.mk index 2ccf3e8228..87ec1ab01b 100644 --- a/keyboards/dumbpad/rules.mk +++ b/keyboards/dumbpad/rules.mk @@ -1,35 +1 @@ -# 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 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 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 - -ENCODER_ENABLE = yes -MOUSEKEY_ENABLE = yes -KEY_LOCK_ENABLE = yes +DEFAULT_FOLDER = dumbpad/v0x diff --git a/keyboards/keebio/iris/keymaps/dvp-zjpxshade/config.h b/keyboards/dumbpad/v0x/config.h similarity index 52% rename from keyboards/keebio/iris/keymaps/dvp-zjpxshade/config.h rename to keyboards/dumbpad/v0x/config.h index 72e35c4728..6d503c9abe 100644 --- a/keyboards/keebio/iris/keymaps/dvp-zjpxshade/config.h +++ b/keyboards/dumbpad/v0x/config.h @@ -1,5 +1,5 @@ /* -Copyright 2017 Danny Nguyen +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 @@ -14,28 +14,28 @@ GNU General 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 +#pragma once #include "config_common.h" -/* Use I2C or Serial, not both */ +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0007 -#define USE_SERIAL -// #define USE_I2C +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS -/* Select hand configuration */ +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { D4 } -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS +/* Onboard LEDs */ +#define LED_00 B3 +#define LED_01 B1 -#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 - -#endif +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v0x/info.json b/keyboards/dumbpad/v0x/info.json new file mode 100644 index 0000000000..7ac64ee689 --- /dev/null +++ b/keyboards/dumbpad/v0x/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x", + "keyboard_folder": "dumbpad/v0x", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x/keymaps/default/keymap.c b/keyboards/dumbpad/v0x/keymaps/default/keymap.c new file mode 100644 index 0000000000..22fbd24c02 --- /dev/null +++ b/keyboards/dumbpad/v0x/keymaps/default/keymap.c @@ -0,0 +1,107 @@ +/* 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 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + //debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* 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) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x/readme.md b/keyboards/dumbpad/v0x/readme.md new file mode 100644 index 0000000000..ff302de3f9 --- /dev/null +++ b/keyboards/dumbpad/v0x/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x + +![dumbpad](https://i.imgur.com/c3YBNp0l.jpg) + +A 4x4 numpad/macropad with a rotary encoder to the left of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.2, v0.6, v0.7 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x: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/dumbpad/v0x/rules.mk b/keyboards/dumbpad/v0x/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x/templates/keymap.c b/keyboards/dumbpad/v0x/templates/keymap.c new file mode 100644 index 0000000000..6f862b8225 --- /dev/null +++ b/keyboards/dumbpad/v0x/templates/keymap.c @@ -0,0 +1,26 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x/v0x.c b/keyboards/dumbpad/v0x/v0x.c new file mode 100644 index 0000000000..b981c3769f --- /dev/null +++ b/keyboards/dumbpad/v0x/v0x.c @@ -0,0 +1,59 @@ +/* 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 "v0x.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/v0x/v0x.h b/keyboards/dumbpad/v0x/v0x.h new file mode 100644 index 0000000000..578250f917 --- /dev/null +++ b/keyboards/dumbpad/v0x/v0x.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { KC_NO, k01, k02, k03, k04 }, \ + { KC_NO, k11, k12, k13, k14 }, \ + { KC_NO, k21, k22, k23, k24 }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/keebio/iris/keymaps/hag/config.h b/keyboards/dumbpad/v0x_dualencoder/config.h similarity index 51% rename from keyboards/keebio/iris/keymaps/hag/config.h rename to keyboards/dumbpad/v0x_dualencoder/config.h index c4604af436..586e55056c 100644 --- a/keyboards/keebio/iris/keymaps/hag/config.h +++ b/keyboards/dumbpad/v0x_dualencoder/config.h @@ -1,5 +1,5 @@ /* -Copyright 2017 Danny Nguyen +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 @@ -14,28 +14,27 @@ GNU General 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 +#pragma once #include "config_common.h" -/* Use I2C or Serial, not both */ +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0006 -#define USE_SERIAL -// #define USE_I2C +/* Column/Row IO definitions - dualencoder version is true 4x4 */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D7, E6, B4, B5 } -/* Select hand configuration */ +/* Dual rotary encoders */ +#define ENCODERS_PAD_A { C6, D0 } +#define ENCODERS_PAD_B { D4, D1 } -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS +/* Onboard LEDs */ +#define LED_00 B3 +#define LED_01 B1 -#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 - -#endif +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v0x_dualencoder/info.json b/keyboards/dumbpad/v0x_dualencoder/info.json new file mode 100644 index 0000000000..09a7d14b95 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x_dualencoder", + "keyboard_folder": "dumbpad/v0x_dualencoder", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 4, + "height": 4, + "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}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c new file mode 100644 index 0000000000..b103c306f3 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c @@ -0,0 +1,135 @@ +/* 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 | Esc | + |---------|---------|---------|---------| + | 1 | 2 | 3 | Tab | + |---------|---------|---------|---------| + | TT(1) | 0 | . | Enter | + \---------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, KC_DOT, KC_ENTER + ), + /* + SUB LAYER + /---------------------------------------` + | | | | Reset | + |---------|---------|---------|---------| + | | | | + | + |---------|---------|---------|---------| + | | | | - | + |---------|---------|---------|---------| + | | | | = | + \---------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * left encoder: + * 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) + * right encoder: + * main layer: + * CW: colume up + * CCW: volume down + * other layers: + * CW: right arrow + * CCW: left arrow + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x_dualencoder/readme.md b/keyboards/dumbpad/v0x_dualencoder/readme.md new file mode 100644 index 0000000000..a4aedb5824 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x dual-encoder + +![dumbpad](https://i.imgur.com/OkSRXWTl.jpg) + +A 4x4 numpad/macropad with two rotary encoders + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.6_dualencoder, v0.6_dualencoder_top + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x_dualencoder: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/dumbpad/v0x_dualencoder/rules.mk b/keyboards/dumbpad/v0x_dualencoder/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c b/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c new file mode 100644 index 0000000000..c602269ed3 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c @@ -0,0 +1,44 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c new file mode 100644 index 0000000000..9b2a2cd241 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c @@ -0,0 +1,59 @@ +/* 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 "v0x_dualencoder.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h new file mode 100644 index 0000000000..f38d398857 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + 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/dumbpad/v0x_right/config.h b/keyboards/dumbpad/v0x_right/config.h new file mode 100644 index 0000000000..0380203fdf --- /dev/null +++ b/keyboards/dumbpad/v0x_right/config.h @@ -0,0 +1,39 @@ +/* +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 . +*/ +#pragma once + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0007 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { D0 } + +/* Onboard LEDs */ +#define LED_00 B1 +#define LED_01 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/dumbpad/v0x_right/info.json b/keyboards/dumbpad/v0x_right/info.json new file mode 100644 index 0000000000..d8225c6ee5 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x_right", + "keyboard_folder": "dumbpad/v0x_right", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "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}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c new file mode 100644 index 0000000000..48002ff4d9 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c @@ -0,0 +1,107 @@ +/* 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 | Esc | | + |---------|---------|---------|---------| | + | 1 | 2 | 3 | Tab | | + |---------|---------|---------|---------|-------------| + | TT(1) | 0 | . | Enter | Left mouse | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | Reset | | + |---------|---------|---------|---------| | + | | | | + | | + |---------|---------|---------|---------| | + | | | | - | | + |---------|---------|---------|---------|-------------| + | | | | = | LOCK | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL, KC_LOCK + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* 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) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x_right/readme.md b/keyboards/dumbpad/v0x_right/readme.md new file mode 100644 index 0000000000..152ed9b108 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x with encoder on right side + +![dumbpad](https://i.imgur.com/c3YBNp0l.jpg) + +A 4x4 numpad/macropad with a rotary encoder to the right of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.6, v0.7 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x_right: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/dumbpad/v0x_right/rules.mk b/keyboards/dumbpad/v0x_right/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_right/templates/keymap.c b/keyboards/dumbpad/v0x_right/templates/keymap.c new file mode 100644 index 0000000000..6f862b8225 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/templates/keymap.c @@ -0,0 +1,26 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v0x_right/v0x_right.c b/keyboards/dumbpad/v0x_right/v0x_right.c new file mode 100644 index 0000000000..2a987b2eaa --- /dev/null +++ b/keyboards/dumbpad/v0x_right/v0x_right.c @@ -0,0 +1,59 @@ +/* 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 "v0x_right.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/v0x_right/v0x_right.h b/keyboards/dumbpad/v0x_right/v0x_right.h new file mode 100644 index 0000000000..169f391e82 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/v0x_right.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO }, \ + { k10, k11, k12, k13, KC_NO }, \ + { k20, k21, k22, k23, KC_NO }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x/config.h b/keyboards/dumbpad/v1x/config.h new file mode 100644 index 0000000000..0d967a6a01 --- /dev/null +++ b/keyboards/dumbpad/v1x/config.h @@ -0,0 +1,42 @@ +/* +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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { D4 } + +/* Onboard LEDs */ +#define LED_00 B6 +#define LED_01 B1 +#define LED_02 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v1x/info.json b/keyboards/dumbpad/v1x/info.json new file mode 100644 index 0000000000..3b5739d832 --- /dev/null +++ b/keyboards/dumbpad/v1x/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x", + "keyboard_folder": "dumbpad/v1x", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x/keymaps/default/keymap.c b/keyboards/dumbpad/v1x/keymaps/default/keymap.c new file mode 100644 index 0000000000..22fbd24c02 --- /dev/null +++ b/keyboards/dumbpad/v1x/keymaps/default/keymap.c @@ -0,0 +1,107 @@ +/* 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 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + //debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* 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) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x/readme.md b/keyboards/dumbpad/v1x/readme.md new file mode 100644 index 0000000000..260a6816a5 --- /dev/null +++ b/keyboards/dumbpad/v1x/readme.md @@ -0,0 +1,15 @@ +# dumbpad v1.x + +![dumbpad](https://i.imgur.com/ND03FiFl.png) + +A 4x4 numpad/macropad with a rotary encoder to the left of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x: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/dumbpad/v1x/rules.mk b/keyboards/dumbpad/v1x/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x/templates/keymap.c b/keyboards/dumbpad/v1x/templates/keymap.c new file mode 100644 index 0000000000..6f862b8225 --- /dev/null +++ b/keyboards/dumbpad/v1x/templates/keymap.c @@ -0,0 +1,26 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x/v1x.c b/keyboards/dumbpad/v1x/v1x.c new file mode 100644 index 0000000000..0adef0f610 --- /dev/null +++ b/keyboards/dumbpad/v1x/v1x.c @@ -0,0 +1,69 @@ +/* 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 "v1x.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x/v1x.h b/keyboards/dumbpad/v1x/v1x.h new file mode 100644 index 0000000000..578250f917 --- /dev/null +++ b/keyboards/dumbpad/v1x/v1x.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { KC_NO, k01, k02, k03, k04 }, \ + { KC_NO, k11, k12, k13, k14 }, \ + { KC_NO, k21, k22, k23, k24 }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x_dualencoder/config.h b/keyboards/dumbpad/v1x_dualencoder/config.h new file mode 100644 index 0000000000..13f4785d8a --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/config.h @@ -0,0 +1,42 @@ +/* +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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Dual rotary encoders */ +#define ENCODERS_PAD_A { B2, D0 } +#define ENCODERS_PAD_B { D4, D1 } + +/* Onboard LEDs */ +#define LED_00 B6 +#define LED_01 B1 +#define LED_02 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v1x_dualencoder/info.json b/keyboards/dumbpad/v1x_dualencoder/info.json new file mode 100644 index 0000000000..60e584193c --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x_dualencoder", + "keyboard_folder": "dumbpad/v1x_dualencoder", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c new file mode 100644 index 0000000000..8e4f444ee7 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c @@ -0,0 +1,135 @@ +/* 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 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * left encoder: + * 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) + * right encoder: + * main layer: + * CW: colume up + * CCW: volume down + * other layers: + * CW: right arrow + * CCW: left arrow + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x_dualencoder/readme.md b/keyboards/dumbpad/v1x_dualencoder/readme.md new file mode 100644 index 0000000000..b568351bfd --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/readme.md @@ -0,0 +1,87 @@ +# dumbpad v1.x dual-encoder + +![dumbpad](https://i.imgur.com/s69rdfA.png) + +## Single- vs Dual-Encoder Support + +The combined Cherry MX/encoder sockets allow single- and dual-encoder configurations. + +The only rule when using two encoders is that there cannot be two encoders on the left side at once, or two on the right side. +This table shows where the encoders are in the switch grid ("X" for encoder, "s" for switch): + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| |__X__| s | s |__X__| +| | s | s | s | s | +| | s | s | s | s | +|__X__|__X__| s | s |__X__| + +- The three encoders in columns C0 and C1 are connected to each other +- The two encoders in column C4 are connected to each other + +So, if doing dual encoders, one must be in column C4 and the other in either C0 or C1. Three or more encoders will not work. + +The following sections describe the configurations that the default keymaps in QMK are designed for. + +### Single-Encoder (Default Configuration) + +In the default configuration, the encoder is in column 0, the bottom left corner below the Pro Micro. All other sockets are filled with switches. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | +|__X__| s | s | s | s | + +![single encoder](https://i.imgur.com/8ZPz1gFl.jpg) + +### Dual-Encoder Bottom + +One dual-encoder configuration has encoders in the bottom two corners of the 4x4 grid, and switches in the rest of the grid. The socket in column 0 is left empty. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | +| |__X__| s | s |__X__| + +![dual-encoder bottom](https://i.imgur.com/QCqKDMSl.jpg) + +### Dual-Encoder Top + +Another dual-encoder configuration has encoders in the top two corners of the 4x4 grid, and switches in the rest of the grid. The socket in column 0 is left empty. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| |__X__| s | s |__X__| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | + +![dual-encoder top](https://i.imgur.com/Rq6ox2Ol.jpg) + +### No-Encoder + +You may also choose not to use any rotary encoders if you like! + +### Bill Of Materials + +- Cherry-style mechanical switches +- EC11 rotary encoder with pushbutton (7-pin) - one or two depending on your desired configuration +- 1n4148 diodes (thru hole) - one per switch and rotary encoder (if using clickable encoder(s)) +- 1x Arduino Pro Micro or pin-compatible ATmega32u4-based MCU +- (optional) 3x 3mm LEDs +- (optional) 3x 330 ohm resistors (for limiting current in LEDs) +- (optional) 6mm SPST switch for resetting MCU + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0_dual + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x_dualencoder: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/dumbpad/v1x_dualencoder/rules.mk b/keyboards/dumbpad/v1x_dualencoder/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c b/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c new file mode 100644 index 0000000000..c602269ed3 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c @@ -0,0 +1,44 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c new file mode 100644 index 0000000000..4ea402d805 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c @@ -0,0 +1,69 @@ +/* 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 "v1x_dualencoder.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h new file mode 100644 index 0000000000..b8bb84fe5f --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { KC_NO, k01, k02, k03, k04 }, \ + { KC_NO, k11, k12, k13, k14 }, \ + { KC_NO, k21, k22, k23, k24 }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x_right/config.h b/keyboards/dumbpad/v1x_right/config.h new file mode 100644 index 0000000000..23c2685dde --- /dev/null +++ b/keyboards/dumbpad/v1x_right/config.h @@ -0,0 +1,42 @@ +/* +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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { B2 } + +/* Onboard LEDs - reversed */ +#define LED_00 B3 +#define LED_01 B1 +#define LED_02 B6 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/dumbpad/v1x_right/info.json b/keyboards/dumbpad/v1x_right/info.json new file mode 100644 index 0000000000..e812f0bb8d --- /dev/null +++ b/keyboards/dumbpad/v1x_right/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x_right", + "keyboard_folder": "dumbpad/v1x_right", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "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}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c new file mode 100644 index 0000000000..48002ff4d9 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c @@ -0,0 +1,107 @@ +/* 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 | Esc | | + |---------|---------|---------|---------| | + | 1 | 2 | 3 | Tab | | + |---------|---------|---------|---------|-------------| + | TT(1) | 0 | . | Enter | Left mouse | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | Reset | | + |---------|---------|---------|---------| | + | | | | + | | + |---------|---------|---------|---------| | + | | | | - | | + |---------|---------|---------|---------|-------------| + | | | | = | LOCK | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL, KC_LOCK + ), +}; + +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 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; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* 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) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x_right/readme.md b/keyboards/dumbpad/v1x_right/readme.md new file mode 100644 index 0000000000..5e983bf40f --- /dev/null +++ b/keyboards/dumbpad/v1x_right/readme.md @@ -0,0 +1,15 @@ +# dumbpad v1.x with encoder on right side + +![dumbpad](https://i.imgur.com/ND03FiFl.png) + +A 4x4 numpad/macropad with a rotary encoder to the right of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x_right: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/dumbpad/v1x_right/rules.mk b/keyboards/dumbpad/v1x_right/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_right/templates/keymap.c b/keyboards/dumbpad/v1x_right/templates/keymap.c new file mode 100644 index 0000000000..6f862b8225 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/templates/keymap.c @@ -0,0 +1,26 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x_right/v1x_right.c b/keyboards/dumbpad/v1x_right/v1x_right.c new file mode 100644 index 0000000000..c2adbaebed --- /dev/null +++ b/keyboards/dumbpad/v1x_right/v1x_right.c @@ -0,0 +1,69 @@ +/* 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 "v1x_right.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// 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 + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x_right/v1x_right.h b/keyboards/dumbpad/v1x_right/v1x_right.h new file mode 100644 index 0000000000..169f391e82 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/v1x_right.h @@ -0,0 +1,30 @@ +/* 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 . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO }, \ + { k10, k11, k12, k13, KC_NO }, \ + { k20, k21, k22, k23, KC_NO }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/durgod/k320/board.h b/keyboards/durgod/boards/DURGOD_STM32_F070/board.h similarity index 99% rename from keyboards/durgod/k320/board.h rename to keyboards/durgod/boards/DURGOD_STM32_F070/board.h index 17d08b17f1..2d04bccbd6 100644 --- a/keyboards/durgod/k320/board.h +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/board.h @@ -20,4 +20,3 @@ along with this program. If not, see . #define STM32_HSECLK 12000000U #include_next #undef STM32_HSE_BYPASS - diff --git a/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk b/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk new file mode 100644 index 0000000000..4791848333 --- /dev/null +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk @@ -0,0 +1,12 @@ +# List of all the board related files. +BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F070RB/board.c + +# Required include directories +BOARDINC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F070RB + +# Include mcu configuration +EXTRAINCDIRS = $(BOARD_PATH)/boards/DURGOD_STM32_F070 + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/keyboards/durgod/k320/bootloader_defs.h b/keyboards/durgod/boards/DURGOD_STM32_F070/bootloader_defs.h similarity index 100% rename from keyboards/durgod/k320/bootloader_defs.h rename to keyboards/durgod/boards/DURGOD_STM32_F070/bootloader_defs.h diff --git a/keyboards/durgod/boards/DURGOD_STM32_F070/chconf.h b/keyboards/durgod/boards/DURGOD_STM32_F070/chconf.h new file mode 100644 index 0000000000..a7d95c51a9 --- /dev/null +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/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/durgod/k320/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_ST_TIMEDELTA 0 + +#include_next diff --git a/keyboards/durgod/k320/mcuconf.h b/keyboards/durgod/boards/DURGOD_STM32_F070/mcuconf.h similarity index 100% rename from keyboards/durgod/k320/mcuconf.h rename to keyboards/durgod/boards/DURGOD_STM32_F070/mcuconf.h diff --git a/keyboards/durgod/k320/config.h b/keyboards/durgod/k320/config.h index 70438900ee..323a9ccff9 100644 --- a/keyboards/durgod/k320/config.h +++ b/keyboards/durgod/k320/config.h @@ -1,19 +1,18 @@ -/* -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 . -*/ +/* 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 @@ -36,8 +35,13 @@ along with this program. If not, see . /* 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 7 +#define DEBOUNCE 5 /* Bootmagic Lite key configuration */ #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE @@ -50,4 +54,3 @@ along with this program. If not, see . #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 index 5e33d8fcd2..6c67c3d453 100644 --- a/keyboards/durgod/k320/info.json +++ b/keyboards/durgod/k320/info.json @@ -7,913 +7,293 @@ "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 - } + { "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": "Enter", - "x": 13.75, - "y": 2.5, - "w": 1.25, - "h": 2 - }, - { - "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": "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 - } + { "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 index f5500ea830..42091f36cd 100644 --- a/keyboards/durgod/k320/k320.c +++ b/keyboards/durgod/k320/k320.c @@ -40,3 +40,23 @@ void led_init_ports(void) { 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/k320.h b/keyboards/durgod/k320/k320.h index 48da048410..c504f5a2bb 100644 --- a/keyboards/durgod/k320/k320.h +++ b/keyboards/durgod/k320/k320.h @@ -17,6 +17,17 @@ #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); @@ -26,12 +37,12 @@ void on_all_leds(void); // This a shortcut to help you visually see your layout. #define LAYOUT_tkl_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, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3D, K3E, K3F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K4E, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F \ + 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, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K4E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F \ ) { \ { 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 }, \ @@ -45,10 +56,10 @@ void on_all_leds(void); // 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, \ + 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, K4E, K3D, K3E, K3F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3D, K3E, K3F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4E, \ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F \ ) { \ @@ -64,7 +75,7 @@ void on_all_leds(void); // 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, \ + 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, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4E, \ diff --git a/keyboards/durgod/k320/keymaps/default/keymap.c b/keyboards/durgod/k320/keymaps/default/keymap.c deleted file mode 100644 index 49a14ec299..0000000000 --- a/keyboards/durgod/k320/keymaps/default/keymap.c +++ /dev/null @@ -1,95 +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 { - _BASE, - _FUNC -}; - -static bool win_key_locked = 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 -}; - -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| - * |-----------------------------------------------------------| `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | - * |-----------------------------------------------------------| ,----. - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | - * |-----------------------------------------------------------| ,-------------. - * |Ctrl|Gui |Alt | Space |Alt |Func |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-| | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | |Lock| | | |Func | | | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_TGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - -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 - 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 true; -} - diff --git a/keyboards/durgod/k320/keymaps/default/keymap.json b/keyboards/durgod/k320/keymaps/default/keymap.json new file mode 100644 index 0000000000..d8242ae764 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ + "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 index e26c79c8ae..c94943a837 100644 --- a/keyboards/durgod/k320/keymaps/default/readme.md +++ b/keyboards/durgod/k320/keymaps/default/readme.md @@ -1,6 +1,8 @@ # The default keymap for Durgod Taurus K320. -Layer 0 : Standard ANSI 87 Keys TKL layout (Windows) +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 diff --git a/keyboards/durgod/k320/keymaps/default_iso/keymap.c b/keyboards/durgod/k320/keymaps/default_iso/keymap.c deleted file mode 100644 index 559b6fe715..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso/keymap.c +++ /dev/null @@ -1,72 +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 { - _BASE, - _FUNC -}; - -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_iso( /* 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_ENT, 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_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_tkl_iso( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - diff --git a/keyboards/durgod/k320/keymaps/default_iso/readme.md b/keyboards/durgod/k320/keymaps/default_iso/readme.md deleted file mode 100644 index a7d1d5f1d3..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# The ISO keymap for Durgod Taurus K320. - -Layer 0 : Standard ISO 88 Keys TKL layout (Windows) - -Layer 1 : Media control and Windows lock key -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 - diff --git a/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c b/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c deleted file mode 100644 index 783fc45f1b..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c +++ /dev/null @@ -1,71 +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 { - _BASE, - _FUNC -}; - -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|Alt |Gui | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig | - * `-----------------------------------------------------------' `-------------' - */ - [_BASE] = LAYOUT_tkl_iso( /* 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_ENT, 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_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_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_iso( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md b/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md deleted file mode 100644 index 354f7b4cba..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -# The ISO (Mac) keymap for Durgod Taurus K320. - -Layer 0 : Standard ISO 88 Keys TKL layout (Mac) - -Layer 1 : Media control -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/default_mac/keymap.json b/keyboards/durgod/k320/keymaps/default_mac/keymap.json new file mode 100644 index 0000000000..dc5d3d3fd5 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_mac/keymap.json @@ -0,0 +1,26 @@ +{ + "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_mac/readme.md b/keyboards/durgod/k320/keymaps/default_mac/readme.md new file mode 100644 index 0000000000..2765f14f90 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_mac/readme.md @@ -0,0 +1,8 @@ +# The default (Mac) keymap for Durgod Taurus K320. + +Supports both ANSI and ISO layouts. + +Layer 0 : Standard 87/88 keys TKL layout (Mac) + +Layer 1 : Media control +- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c index 834d2ca55e..8494fbe039 100644 --- a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c @@ -59,20 +59,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn| * |-----------------------------------------------------------| `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Ret | * |-----------------------------------------------------------| ,----. - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | + * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | * |-----------------------------------------------------------| ,-------------. * |Ctrl|Gui |Alt | Space |Alt |Func |App|Ctrl | |Lft| Dn |Rig | * `-----------------------------------------------------------' `-------------' */ - [_WBL] = LAYOUT_tkl_ansi( /* 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_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_WFN, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [_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 * ,-----------------------------------------------------------. ,--------------. @@ -82,20 +82,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * | | | | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,-------------. * | |Lock| | | |Func |Sys| | | | | | * `-----------------------------------------------------------' `-------------' */ - [_WFL] = LAYOUT_tkl_ansi( /* Windows First Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_TGUI, _______, _______, _______, _______, MO_WSL, _______, _______, _______, _______ + [_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 * ,-----------------------------------------------------------. ,--------------. @@ -105,20 +105,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * | | | | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,-------------. * | | | | | |Func |Sys| | | | | | * `-----------------------------------------------------------' `-------------' */ - [_WSL] = LAYOUT_tkl_ansi( /* 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 + [_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) @@ -129,20 +129,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn| * |-----------------------------------------------------------| `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Ret | * |-----------------------------------------------------------| ,----. - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | + * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | * |-----------------------------------------------------------| ,-------------. * |Ctrl|Alt |Gui | Space |Gui |Alt|Func |Ctrl | |Lft| Dn |Rig | * `-----------------------------------------------------------' `-------------' */ - [_MBL] = LAYOUT_tkl_ansi( /* 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_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_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [_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 * ,-----------------------------------------------------------. ,--------------. @@ -152,20 +152,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * | | | | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,-------------. * | | | | | |Sys|Func | | | | | | * `-----------------------------------------------------------' `-------------' */ - [_MFL] = LAYOUT_tkl_ansi( /* Mac First Layer */ - _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_TMED, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, MO_MSL, _______, _______, _______, _______, _______ + [_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 * ,-----------------------------------------------------------. ,--------------. @@ -175,20 +175,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| |--------------| * | | | | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |-----------------------------------------------------------| ,-------------. * | | | | | |Sys|Func | | | | | | * `-----------------------------------------------------------' `-------------' */ - [_MSL] = LAYOUT_tkl_ansi( /* 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 + [_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 ) }; diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md index 821c8b26a2..0eef77fd45 100644 --- a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md @@ -1,6 +1,8 @@ # A keymap for Durgod Taurus K320 that supports toggling between Mac and Windows -Layer 0 : Standard ANSI 87 Keys TKL layout (Windows) +Supports both ANSI and ISO layouts. + +Layer 0 : Standard 87/88 keys TKL layout (Windows) Layer 1 : Media control and Windows lock key (Windows) - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 @@ -12,7 +14,7 @@ Layer 2 : System layer (Windows) - Fn + Menu + F4 : Turning Off System - Fn + Menu + F12 : Switch to Mac layout -Layer 3 : Mac 87 Keys TKL layout +Layer 3 : Mac 87/88 keys TKL layout Layer 4 : Media control and Media lock key (Mac) - Standard Mac Media keys for Fn + F1 ~ Fn + F12. @@ -61,4 +63,3 @@ For repeating Flashing you have two options with this keymap: 2. Use key combination if using default keymap - Hold down Fn + Menu (Windows Layout) or Fn + Right-Alt (Mac layout) (These are the same physical keys) - Press Esc. Keyboard should go into booloader state. - diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk new file mode 100644 index 0000000000..19843e8a20 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk @@ -0,0 +1 @@ +OPT_DEFS += -DWINLOCK_DISABLED diff --git a/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c b/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c index bf79f24dba..866e522fc9 100644 --- a/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c +++ b/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c @@ -35,11 +35,6 @@ #define KC_STOP LCTL(LSFT(KC_HOME)) // Select from Cursor to Home #define KC_SEND LCTL(LSFT(KC_END)) // Select from Cursor to End -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - KC_TGUI = SAFE_RANGE // Toggle between GUI Lock or Unlock -}; - // °±²³µ©ΩθΩ√∞∆≈≠→↓←↑≡■□●○∴«»÷≤≥Σ // Defines the Enumeration for Unicode Map enum unicode_names { diff --git a/keyboards/durgod/k320/keymaps/via/keymap.c b/keyboards/durgod/k320/keymaps/via/keymap.c index 9a4d9ff38c..fc46e3860f 100644 --- a/keyboards/durgod/k320/keymaps/via/keymap.c +++ b/keyboards/durgod/k320/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 kuenhlee and Don Kjer +/* 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 @@ -19,7 +19,8 @@ enum _layer { _BASE, _FUNC, - _LAYER3 + _LAYER3, + _LAYER4 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -39,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' `-------------' */ [_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_ESC, KC_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 + 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 * ,-----------------------------------------------------------. ,--------------. @@ -62,20 +63,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' `-------------' */ [_FUNC] = LAYOUT_all( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_LAYER3] = LAYOUT_all( /* Function Layer */ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + [_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 index 1ed99238c6..d1b2ac191d 100644 --- a/keyboards/durgod/k320/keymaps/via/readme.md +++ b/keyboards/durgod/k320/keymaps/via/readme.md @@ -1,6 +1,6 @@ # The default keymap for Durgod Taurus K320. -Layer 0 : Standard Keys TKL layout +Layer 0 : Standard 87/88 keys TKL layout Layer 1 : Media control - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/via/rules.mk b/keyboards/durgod/k320/keymaps/via/rules.mk index 36b7ba9cbc..8815b6a0a6 100644 --- a/keyboards/durgod/k320/keymaps/via/rules.mk +++ b/keyboards/durgod/k320/keymaps/via/rules.mk @@ -1,2 +1,4 @@ +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 1150294354..551a292824 100644 --- a/keyboards/durgod/k320/readme.md +++ b/keyboards/durgod/k320/readme.md @@ -1,6 +1,6 @@ # K320 -This is a standard fixed ANSI TKL from off the shelf Durgod Taurus K320 without Backlight. +This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key) keyboard without backlight. * Keyboard Maintainer: [dkjer](https://github.com/dkjer) * Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6 @@ -30,7 +30,7 @@ For first Flashing from initial Stock's Firmware - 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 (thanks to [tylert](https://github.com/tylert) for instructions!): + - Using dfu-util: dfu-util --list dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN} @@ -55,4 +55,3 @@ For repeating Flashing you can use BootMagic: - 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 040ea2dc88..e6f0007fd4 100644 --- a/keyboards/durgod/k320/rules.mk +++ b/keyboards/durgod/k320/rules.mk @@ -1,8 +1,10 @@ # MCU name # Actually F070, but close enough MCU = STM32F072 +BOARD = DURGOD_STM32_F070 -BOARD = ST_NUCLEO64_F070RB +# Bootloader selection +BOOTLOADER = stm32-dfu # Do not put the microcontroller into power saving mode OPT_DEFS += -DNO_SUSPEND_POWER_DOWN diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h index 8638dc8792..cccc9b62f3 100644 --- a/keyboards/dz60/dz60.h +++ b/keyboards/dz60/dz60.h @@ -32,6 +32,33 @@ { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } +/* LAYOUT_60_ansi_arrow_split_bs_7u_spc + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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 │3c │3d │3e │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │40 │41 │43 │46 │4b │4c │4d │4e │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ +*/ +#define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \ + 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, k3c, k3d, k3e, \ + k40, k41, k43, k46, 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, KC_NO, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4b, k4c, k4d, k4e } \ +} + /* * LAYOUT_60_ansi_arrow * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ @@ -681,3 +708,30 @@ { k30, k31, 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 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │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_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, 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, 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 } \ +} diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json index 1c13ec8a8e..5990bbec11 100644 --- a/keyboards/dz60/info.json +++ b/keyboards/dz60/info.json @@ -80,75 +80,146 @@ {"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_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": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"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": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.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":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": 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} + {"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_true_hhkb": { @@ -1802,6 +1873,74 @@ {"x": 13, "y": 4}, {"x": 14, "y": 4} ] + }, + "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/dz60/keymaps/LEdiodes/rules.mk b/keyboards/dz60/keymaps/LEdiodes/rules.mk index 38b067eb0f..251d25fade 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/dz60/keymaps/gk64/keymap.c b/keyboards/dz60/keymaps/gk64/keymap.c new file mode 100644 index 0000000000..9de1ec11c5 --- /dev/null +++ b/keyboards/dz60/keymaps/gk64/keymap.c @@ -0,0 +1,18 @@ +#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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, 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/dz60/keymaps/jdelkins/config.h b/keyboards/dz60/keymaps/jdelkins/config.h new file mode 100644 index 0000000000..95b45b2c12 --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins/config.h @@ -0,0 +1,51 @@ +/* + 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 + +/* Directional arrangement | LAYOUT_directional + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │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_directional_nosplitspace( \ + 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, 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 } \ +} + +#define AUTO_SHIFT_TIMEOUT 160 +#define RGBLIGHT_LAYERS +#define LEADER_TIMEOUT 400 +#define LEADER_PER_KEY_TIMING diff --git a/keyboards/dz60/keymaps/jdelkins/keymap.c b/keyboards/dz60/keymaps/jdelkins/keymap.c new file mode 100644 index 0000000000..c0bf4445a8 --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins/keymap.c @@ -0,0 +1,279 @@ +/* + 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_directional_nosplitspace + +#define IDLE_TIMEOUT 360 +uint16_t rgb_idle_seconds = 0; +uint16_t rgb_timer; +bool rgb_was_enabled; + +// 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; + } +} + +enum { + TD_LDCTL, + TD_G, +}; + +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), +}; + +// 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 + ), + [_GAME] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_LALT, KC_SPC, _______, _______, _______, _______, _______ + ), + [_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 + ), + [_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, + _______, 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 + ), +}; + +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_GAME, + L_FUNC, + L_KP, + L_ADJUST, + L_CAPSLOCK, + L_NUMLOCK, +}; + +const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + [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_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)) + 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(); +} + +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; + } + 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)); + } + } +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + static uint16_t gesc_timer; + + 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); + } + return false; + } + return false; + } + + return true; +} diff --git a/keyboards/dz60/keymaps/jdelkins/rules.mk b/keyboards/dz60/keymaps/jdelkins/rules.mk new file mode 100644 index 0000000000..b0a4f73dd7 --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins/rules.mk @@ -0,0 +1,7 @@ +LEADER_ENABLE = yes +MOUSEKEY_ENABLE = yes +CONSOLE_ENABLE = no +NKRO_ENABLE = no +TAP_DANCE_ENABLE = yes +LTO_ENABLE = yes +AUTO_SHIFT_ENABLE = yes diff --git a/keyboards/dz60/keymaps/jdelkins_ss/config.h b/keyboards/dz60/keymaps/jdelkins_ss/config.h new file mode 100644 index 0000000000..e023d3452b --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins_ss/config.h @@ -0,0 +1,51 @@ +/* + 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 new file mode 100644 index 0000000000..2744c43727 --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins_ss/keymap.c @@ -0,0 +1,367 @@ +/* + 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 new file mode 100644 index 0000000000..49346a80e4 --- /dev/null +++ b/keyboards/dz60/keymaps/jdelkins_ss/rules.mk @@ -0,0 +1,8 @@ +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/krusli/rules.mk b/keyboards/dz60/keymaps/krusli/rules.mk index 3138a24b63..1e7c0f7453 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/dz60/keymaps/marianas/rules.mk b/keyboards/dz60/keymaps/marianas/rules.mk index 230d194ab8..b68cc80cf7 100644 --- a/keyboards/dz60/keymaps/marianas/rules.mk +++ b/keyboards/dz60/keymaps/marianas/rules.mk @@ -3,7 +3,7 @@ # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk index 26b48a6263..1671c42e9b 100644 --- a/keyboards/dz60/rules.mk +++ b/keyboards/dz60/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 @@ -21,4 +21,4 @@ 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_split_bs_rshift 60_hhkb 60_iso 60_abnt2 60_tsangan_hhkb +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/rules.mk b/keyboards/dztech/bocc/rules.mk index 6695a40a62..2668874ea2 100644 --- a/keyboards/dztech/bocc/rules.mk +++ b/keyboards/dztech/bocc/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c index 4bffe50db8..99b3c6c286 100644 --- a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c +++ b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c @@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, 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(4), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + _______, _______, _______, _______, _______, _______, 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, @@ -28,12 +28,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, 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/dztech/dz60rgb/keymaps/mechmaster48/README.md b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md new file mode 100644 index 0000000000..cda042db06 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md @@ -0,0 +1,15 @@ +# Mechmaster48 keymap + +-Personal keyboard layout +-Mainly following the default layout. +-Picture of the map below with 3 total layers 0-2 +-More to come as I figure QMK out + +## Layer 0 +![alt text](https://i.imgur.com/yi8BCCf.gif) + +## Layer 1 +![alt text](https://i.imgur.com/aG2cCn9.gif) + +## Layer 2 +![alt text](https://i.imgur.com/79RAh1G.gif) \ No newline at end of file diff --git a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c new file mode 100644 index 0000000000..84cc76b112 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c @@ -0,0 +1,79 @@ +/* +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 . +/* + +-This is just a diagram that makes it easier for me to see what keys I have bound and where. +-The README has a better image to see the exact keymap. + +--Layer 0-- + _________________________________________________________________________________________________ + |[esc] [1!]-[2@]-[3#]-[4$]-[5%]-[6^]-[7&]-[8*]-[9(]-[0)]-[-_]-[+=] [ BackSpace ]| + |[ Tab ] [Q]-[W]-[E]-[R]-[T]-[Y]-[U]-[I]-[O]-[P]-[[{]-[]}] [ |\ ]| + |[CapsLock] [A]-[S]-[D]-[F]-[G]-[H]-[J]-[K]-[L]-[;/:]-['/"] [Enter]| + |[ Shift ] [Z]-[X]-[C]-[V]-[B]-[N]-[M]-[/.]-[?//] [↑][del]| + |[ctrl][win][alt] [____________________SPACE__________________][fn/OSL(1)][ctrl][←][↓][→] | + |_________________________________________________________________________________________________| + + + + +--Layer 1-- + _____________________________________________________________________________________ + |[TO(2)] [F1]-[F2]-[F3]-[F4]-[F5]-[F6]-[F7]-[F8]-[F9]-[F10]-[F11]-[F12] [ ▼ ]| + |[ ▼ ] [~]-[▼]-[▼]-[▼]-[▼]-[▼]-[PS]-[▼]-[▼]-[▼]-[play/pause]-[▼] [ RESET ]| + |[ ▼ ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[PU]-[▼]-[▼] [ ▼ ]| + |[ Shift ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[PD]-[▼] [vol↑] [ ▼ ]| + |[ctrl][ ▼ ][alt] [_________________▼________________] [▼][ ▼ ][←prvs][vol↓][next→]| + |_____________________________________________________________________________________| + + + +--Layer 2-- + _________________________________________________________________________________________________ + |[ ▼ ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼] [ ▼ ]| + |[ ▼ ] [RGBTgg]-[▼]-[Hue+]-[Hue-]-[Sat+]-[Sat-]-[Brt+]-[Brt-]-[RGBmd]-[▼]-[▼]-[▼] [ RESET ]| + |[ ▼ ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼] [ ▼ ]| + |[ ▼ ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼] [ ▼ ][ ▼ ]| + |[ ▼ ][ ▼ ][▼] [_______________TO(0)________________] [▼][ ▼ ] [ ▼ ][ ▼ ][ ▼ ]| + |_________________________________________________________________________________________________| + +*/ + +#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_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, OSL(1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + TO(2), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_GRV, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, KC_MPLY, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______, KC_VOLU, KC_MUTE, + KC_LCTL, _______, KC_LALT, TO(0), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, TO(0), _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h new file mode 100644 index 0000000000..a2b29c03be --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h @@ -0,0 +1,56 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 +#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 diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c new file mode 100644 index 0000000000..b4b77b392d --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c @@ -0,0 +1,230 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more 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 LT_DEL LT(_RGB, KC_DEL) +#define LT_CAPS LT(_FNC, KC_CAPS) +#define LM_LALT LM(_FNC, MOD_LALT) +#define LM_NALT LM(_NUM, MOD_LALT) +#define RSFT_SL RSFT_T(KC_SLSH) +#define RALT_F6 RALT_T(KC_F6) +#define CTLINS LCTL(KC_INS) // Ctrl + Insert (terminal copy) +#define SFTINS LSFT(KC_INS) // Shift + Insert (terminal paste) +#define AMDREP LCTL(LSFT(KC_S)) // AMD Replay +#define AMDREC LCTL(LSFT(KC_E)) // AMD Record + +enum piv3rt_layers { + _DEF, + _MAC, + _FNC, + _RGB, + _NUM, +}; + +enum piv3rt_keycodes { + RGB_RST = SAFE_RANGE, + RGB_PCY, // Cycle through RGB profiles + RGB_000, // Turn everything off except profiles + EACUTE, // French É for Windows + CCED, // French Ç for Windows + AGRAVE, // French À for Windows + FRQLT, // French ≪ for Windows + FRQGT, // French ≫ for Windows +}; + +enum piv3rt_rgbprofiles { + CSGO, + TEXT, + OFF, // Should be the last item +}; + +enum piv3rt_rgbprofiles current_profile = OFF; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEF] = 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, + LT_CAPS, KC_A, KC_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_SL, KC_UP, LT_DEL, + KC_LCTL, KC_LGUI, LM_LALT, KC_SPC, RALT_F6, MO(_FNC), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_MAC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LGUI, KC_LCTL, KC_LGUI, _______, _______, _______, _______, _______, _______ + ), + [_FNC] = 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, + _______, AGRAVE, KC_UP, EACUTE, _______, KC_INS, _______, _______, KC_UP, KC_UP, KC_PGUP, KC_HOME, KC_PSCR, KC_NUBS, + _______, KC_HOME, KC_DOWN, KC_END, CTLINS, SFTINS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_F8, + _______, _______, KC_CALC, CCED, _______, _______, _______, _______, FRQLT, FRQGT, TG(_NUM), KC_VOLU, KC_MUTE, + _______, TG(_MAC), LM_NALT, _______, KC_MPLY, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_RGB] = 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_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, RGB_PCY, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_000, _______, + _______, _______, _______, RGB_RST, _______, _______, KC_PWR, AMDREC, AMDREP + ), + [_NUM] = LAYOUT( + KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, TG(_NUM), _______, _______, + _______, _______, _______, KC_PENT, _______, _______, _______, _______, _______ + ), +}; + +void reset_leds(void) { + current_profile = OFF; + rgblight_enable(); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + rgb_matrix_sethsv(0x6a, 0x33, 0xff); +} + +void suspend_wakeup_init_user(void) { + current_profile = OFF; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_RST: + if (record->event.pressed) { + reset_leds(); + } + return false; + break; + case RGB_PCY: + if (record->event.pressed) { + // Cycle through RGB profiles + current_profile = current_profile == OFF ? 0 : current_profile + 1; + } + return false; + break; + case RGB_000: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 0, 0); + } + return false; + break; + case EACUTE: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P2) SS_TAP(X_P0) SS_TAP(X_P1) SS_UP(X_LALT)); + } + return false; + break; + case CCED: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P9) SS_TAP(X_P9) SS_UP(X_LALT)); + } + return false; + break; + case AGRAVE: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P9) SS_TAP(X_P2) SS_UP(X_LALT)); + } + return false; + break; + case FRQLT: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P4) SS_UP(X_LALT)); + } + return false; + break; + case FRQGT: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P5) SS_UP(X_LALT)); + } + return false; + break; + } + return true; +}; + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + led_t led_state = host_keyboard_led_state(); + + if (led_state.caps_lock) { + // Tab key = 27 + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0xff, 0x00, 0x00); + } + + if (led_state.num_lock && (layer_state_is(_FNC) || layer_state_is(_NUM))) { + // ESC key = 13 + RGB_MATRIX_INDICATOR_SET_COLOR(13, 0xff, 0x55, 0x55); + } + + if (layer_state_is(_NUM)) { + // Num pad + for (int i=0; i<3; i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(3 + i, 0xff, 0x55, 0x55); + RGB_MATRIX_INDICATOR_SET_COLOR(17 + i, 0xff, 0x55, 0x55); + RGB_MATRIX_INDICATOR_SET_COLOR(30 + i, 0xff, 0x55, 0x55); + } + RGB_MATRIX_INDICATOR_SET_COLOR(43, 0xff, 0x00, 0x00); + return; + } + + if (layer_state_is(_RGB)) { + // AMD record and replay + RGB_MATRIX_INDICATOR_SET_COLOR(54, 0x00, 0xff, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(55, 0xff, 0x00, 0x00); + } + + if (current_profile == CSGO) { + // Moves + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(39, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(38, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(37, 0xff, 0x00, 0x00); + + // Grenades + RGB_MATRIX_INDICATOR_SET_COLOR(4, 0x00, 0xff, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(3, 0xff, 0x66, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(2, 0x66, 0x66, 0x22); + RGB_MATRIX_INDICATOR_SET_COLOR(1, 0xff, 0xff, 0xff); + + // Primary + RGB_MATRIX_INDICATOR_SET_COLOR(18, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(17, 0x99, 0x33, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(16, 0x00, 0xff, 0x00); + + // Secondary + RGB_MATRIX_INDICATOR_SET_COLOR(32, 0x66, 0x66, 0x22); + RGB_MATRIX_INDICATOR_SET_COLOR(31, 0x00, 0x00, 0xff); + + // Equipment + RGB_MATRIX_INDICATOR_SET_COLOR(30, 0xff, 0x00, 0xff); + RGB_MATRIX_INDICATOR_SET_COLOR(29, 0x00, 0x00, 0xff); + RGB_MATRIX_INDICATOR_SET_COLOR(28, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0x33, 0x66, 0x99); + } else if (current_profile == TEXT) { + // Letters + for (int i=0; i<7; i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(17 + i, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(31 + i, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(46 + i, 0x33, 0x66, 0x99); + } + RGB_MATRIX_INDICATOR_SET_COLOR(38, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(39, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0x33, 0x66, 0x99); + } +} diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk b/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk new file mode 100644 index 0000000000..23a7632433 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk @@ -0,0 +1 @@ +NKRO_ENABLE = yes diff --git a/keyboards/dztech/dz60rgb/v1/rules.mk b/keyboards/dztech/dz60rgb/v1/rules.mk index f6b7f394cc..678eb385c3 100644 --- a/keyboards/dztech/dz60rgb/v1/rules.mk +++ b/keyboards/dztech/dz60rgb/v1/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk index f6b7f394cc..678eb385c3 100644 --- a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk +++ b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk index e8753127ef..6a9af2dee5 100644 --- a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk +++ b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/dztech/dz65rgb/config.h b/keyboards/dztech/dz65rgb/config.h index b8c5759db6..71487efbd9 100644 --- a/keyboards/dztech/dz65rgb/config.h +++ b/keyboards/dztech/dz65rgb/config.h @@ -1,3 +1,18 @@ +/* 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" diff --git a/keyboards/dztech/dz65rgb/dz65rgb.c b/keyboards/dztech/dz65rgb/dz65rgb.c index aa5bf6601c..8340d8fcee 100644 --- a/keyboards/dztech/dz65rgb/dz65rgb.c +++ b/keyboards/dztech/dz65rgb/dz65rgb.c @@ -1,117 +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 "dz65rgb.h" - -#ifdef RGB_MATRIX_ENABLE -const is31_led 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 }, - { 0, C9_6, C8_6, C7_6 }, - { 0, C9_5, C8_5, C7_5 }, - { 0, C9_4, C8_4, C7_4 }, - { 0, C9_3, C8_3, C7_3 }, - { 0, C9_2, C8_2, C7_2 }, - { 0, C9_1, C8_1, C7_1 }, - { 0, C2_9, C3_9, C4_9 }, - { 0, C1_9, C3_10, C4_10 }, - { 0, C1_10, C2_10, C4_11 }, - { 0, C1_11, C2_11, C3_11 }, - { 0, C1_13, C2_13, C3_13 }, - { 0, C1_14, C2_14, C3_14 }, - - { 0, C1_7, C2_7, C3_7 }, - { 0, C1_6, C2_6, C3_6 }, - { 0, C1_5, C2_5, C3_5 }, - { 0, C1_4, C2_4, C3_4 }, - { 0, C1_3, C2_3, C3_3 }, - { 0, C1_2, C2_2, C4_3 }, - { 0, C1_1, C3_2, C4_2 }, - { 0, C2_1, C3_1, C4_1 }, - { 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, C1_15, C2_15, C3_15 }, - - { 0, C1_8, C2_8, C3_8 }, - { 1, C9_6, C8_6, C7_6 }, - { 1, C9_5, C8_5, C7_5 }, - { 1, C9_4, C8_4, C7_4 }, - { 1, C9_3, C8_3, C7_3 }, - { 1, C9_2, C8_2, C7_2 }, - { 1, C9_1, C8_1, C7_1 }, - { 1, C2_9, C3_9, C4_9 }, - { 1, C1_9, C3_10, C4_10 }, - { 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 }, - { 0, C1_16, C2_16, C3_16 }, - - { 1, C9_8, C7_7, C6_7 }, - { 1, C1_5, C2_5, C3_5 }, - { 1, C1_4, C2_4, C3_4 }, - { 1, C1_3, C2_3, C3_3 }, - { 1, C1_2, C2_2, C4_3 }, - { 1, C1_1, C3_2, C4_2 }, - { 1, C9_9, C8_9, C7_9 }, - { 1, C9_10, C8_10, C7_10 }, - { 1, C9_11, C8_11, C7_11 }, - { 1, C9_12, C8_12, C7_12 }, - { 1, C1_14, C2_14, C3_14 }, - { 1, C1_15, C2_15, C3_15 }, - { 1, C1_16, C2_16, C3_16 }, - { 0, C9_15, C8_15, C6_14 }, - - { 1, C8_8, C7_8, C6_8 }, - { 1, C1_8, C2_8, C3_8 }, - { 1, C1_7, C2_7, C3_7 }, - { 1, C2_1, C3_1, C4_1 }, - { 1, C9_14, C8_14, C7_14 }, - { 1, C9_15, C8_15, C6_14 }, - { 1, C9_16, C7_15, C6_15 }, - { 1, C8_16, C7_16, C6_16 }, - { 0, C8_16, C7_16, C6_16 }, - { 0, C9_16, C7_15, C6_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, 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, 63, 64, 65, NO_LED, 66, 67 } - }, { - { 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 }, { 150, 64 }, { 165, 64 }, { 180, 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, 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 (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); - } -} -#endif diff --git a/keyboards/dztech/dz65rgb/dz65rgb.h b/keyboards/dztech/dz65rgb/dz65rgb.h index 371facc89e..734a1cff3f 100644 --- a/keyboards/dztech/dz65rgb/dz65rgb.h +++ b/keyboards/dztech/dz65rgb/dz65rgb.h @@ -1,19 +1,28 @@ +/* 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 +#ifdef KEYBOARD_dztech_dz65rgb_v1 + #include "v1.h" +#endif +#ifdef KEYBOARD_dztech_dz65rgb_v2 + #include "v2.h" +#endif +#ifdef KEYBOARD_dztech_dz65rgb_v3 + #include "v3.h" +#endif #include "quantum.h" - -#define XXX KC_NO - -#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, K48, K49, 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, K49, K4A, K4B, XXX, K4D, K4E } \ -} diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h new file mode 100644 index 0000000000..d9d295dfa8 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Felix Springer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 + +#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 + +// Fix RGB_MATRIX_STARTUP, because RGB_MATRIX_CYCLE_ALL is disabled. +// The actual handling of RGB_EFFECTs is done in keymap.c +#undef RGB_MATRIX_STARTUP_MODE + +#endif diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c b/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c new file mode 100644 index 0000000000..b166a5629d --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c @@ -0,0 +1,120 @@ +/* Copyright 2021 Felix Springer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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_user { + _QWERTY, + _AD, + _VI, + _FN, + _KB +}; + +enum keycodes_user { + _BASEEF = SAFE_RANGE, + _KITTEF +}; + +int selected_mode_user = RGB_MATRIX_CUSTOM_base_effect; // for layer_state_set_user() +bool process_record_user(uint16_t keycode, keyrecord_t * record) { + switch (keycode) { + case _BASEEF: + if (record->event.pressed) { + selected_mode_user = RGB_MATRIX_CUSTOM_base_effect; + } + return false; + case _KITTEF: + if (record->event.pressed) { + selected_mode_user = RGB_MATRIX_CUSTOM_kitt_effect; + } + return false; + default: + return true; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_65_ansi( + 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_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, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_AD] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_VI] = LAYOUT_65_ansi( + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_ESC, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, _______, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FIND, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN] = LAYOUT_65_ansi( + XXXXXXX, KC_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, + XXXXXXX, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, KC_PSTE, + CTL_T(KC_CAPS), KC_BRID, KC_VOLD, KC_BRIU, XXXXXXX, XXXXXXX, TG(_AD), TG(_VI), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COPY, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_APP, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, KC_MSTP, KC_CUT, + KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_KB), XXXXXXX, KC_RCTL, KC_MPRV, KC_MPLY, KC_MNXT + ), + [_KB] = LAYOUT_65_ansi( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, + XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, _BASEEF, _KITTEF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, XXXXXXX, + KC_LSFT, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) + /* + [_LEDS] = LAYOUT_65_ansi( + 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , + 15 , 16 Q, 17 W, 18 E, 19 R, 20 T, 21 Y, 22 U, 23 I, 24 O, 25 P, 26 , 27 , 28 , 29 , + 30 , 31 A, 32 S, 33 D, 34 F, 35 G, 36 H, 37 J, 38 K, 39 L, 40 , 41 , 42 , 43 , + 44 , 45 Z, 46 X, 47 C, 48 V, 49 B, 50 N, 51 M, 52 , 53 , 54 , 55 , 56 , 57 , + 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 + ) + */ +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _QWERTY: + rgb_matrix_mode(selected_mode_user); + break; + case _AD: + if (selected_mode_user == RGB_MATRIX_CUSTOM_base_effect) { + rgb_matrix_mode(RGB_MATRIX_CUSTOM_base_ad_effect); + } else { + rgb_matrix_mode(selected_mode_user); + } + break; + case _VI: + rgb_matrix_mode(RGB_MATRIX_CUSTOM_vi_effect); + break; + case _FN: + rgb_matrix_mode(RGB_MATRIX_CUSTOM_fn_indicator); + break; + case _KB: + rgb_matrix_mode(RGB_MATRIX_CUSTOM_kb_indicator); + break; + } + + return state; +} diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md new file mode 100644 index 0000000000..d872587317 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md @@ -0,0 +1,24 @@ +# jumper149's DZ65RGB v2 + +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 +``` + +## build + +``` +./bin/qmk compile +``` + +## flash + +Use `qmk flash` or if it is broken (unknown reason) you can try this workaround. +I personally had some problems on ArchLinux, that I didn't debug any further though. + +``` +sudo dfu-programmer atmega32u4 erase +sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex +sudo dfu-programmer atmega32u4 reset +``` diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/rgb_matrix_user.inc b/keyboards/dztech/dz65rgb/keymaps/jumper149/rgb_matrix_user.inc new file mode 100644 index 0000000000..8d99ff9481 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/rgb_matrix_user.inc @@ -0,0 +1,700 @@ +/* Copyright 2021 Felix Springer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_EFFECT(base_effect) +RGB_MATRIX_EFFECT(base_ad_effect) +RGB_MATRIX_EFFECT(vi_effect) +RGB_MATRIX_EFFECT(fn_indicator) +RGB_MATRIX_EFFECT(kb_indicator) +RGB_MATRIX_EFFECT(kitt_effect) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +/* +[_LEDS] = LAYOUT_65_ansi( + 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , + 15 , 16 Q, 17 W, 18 E, 19 R, 20 T, 21 Y, 22 U, 23 I, 24 O, 25 P, 26 , 27 , 28 , 29 , + 30 , 31 A, 32 S, 33 D, 34 F, 35 G, 36 H, 37 J, 38 K, 39 L, 40 , 41 , 42 , 43 , + 44 , 45 Z, 46 X, 47 C, 48 V, 49 B, 50 N, 51 M, 52 , 53 , 54 , 55 , 56 , 57 , + 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 +) +*/ + +// variable for startup animation +bool BASE_EFFECT_NOT_STARTED_YET = true; +uint8_t base_effect_startup_counter = 255; + +static HSV base_effect_math(HSV hsv, uint8_t i, uint8_t time) { + + if (BASE_EFFECT_NOT_STARTED_YET) { + base_effect_startup_counter = 0; + BASE_EFFECT_NOT_STARTED_YET = false; + } + + // startup animation + if (base_effect_startup_counter < 255) { + + // jump to correct indices for alpha keys + if (i == 0) { // only run for one key (key 0 is an arbitrary choice) + if (base_effect_startup_counter == 0) { + base_effect_startup_counter = 1; + } else if (base_effect_startup_counter == 1) { + base_effect_startup_counter = 17; + } else if (base_effect_startup_counter == 26) { + base_effect_startup_counter = 31; + } else if (base_effect_startup_counter == 40) { + base_effect_startup_counter = 45; + } else if (base_effect_startup_counter == 52) { + base_effect_startup_counter = 100; + } else if (base_effect_startup_counter == 120) { + base_effect_startup_counter = 255; + } else { + base_effect_startup_counter++; + } + } + + // overwrite some highlit keys + if (3 + 39 - i < base_effect_startup_counter - 100 && i >= 36 && i <= 39) { + hsv.s = hsv.s; + } else if (3 + 39 - i < base_effect_startup_counter - 100 && i >= 31 && i <= 34) { + hsv.s = hsv.s; + // light up alpha keys + } else if (i < base_effect_startup_counter && i >= 16 && i <= 25) { + hsv.s = 0; + } else if (31 + 39 - i < base_effect_startup_counter && i >= 31 && i <= 39) { + hsv.s = 0; + } else if (i < base_effect_startup_counter && i >= 45 && i <= 51) { + hsv.s = 0; + // light up number row + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 2) { + hsv.s = 0; + hsv.v = 1 * (hsv.v / 8); + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 3) { + hsv.s = 0; + hsv.v = 2 * (hsv.v / 8); + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 4) { + hsv.s = 0; + hsv.v = 3 * (hsv.v / 8); + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i >= 5 && i <= 8) { + hsv.v = hsv.v; + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 9) { + hsv.s = 0; + hsv.v = 3 * (hsv.v / 8); + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 10) { + hsv.s = 0; + hsv.v = 2 * (hsv.v / 8); + } else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 11) { + hsv.s = 0; + hsv.v = 1 * (hsv.v / 8); + // light up punctuation keys + } else if (27 + 1 - i < base_effect_startup_counter - 100 && i >= 26 && i <= 27) { + hsv.s = 0; + hsv.v = hsv.v / 8; + } else if (41 + 2 - i < base_effect_startup_counter - 100 && i >= 40 && i <= 41) { + hsv.s = 0; + hsv.v = hsv.v / 8; + } else if (54 + 3 - i < base_effect_startup_counter - 100 && i >= 52 && i <= 54) { + hsv.s = 0; + hsv.v = hsv.v / 8; + // rest + } else { + hsv.v = 0; + } + + } else { + + switch (i) { + + // number row + case 0: + hsv.v = 0; + break; + case 1: + hsv.v = 0; + break; + case 2: + hsv.s = 0; + hsv.v = 1 * (hsv.v / 8); + break; + case 3: + hsv.s = 0; + hsv.v = 2 * (hsv.v / 8); + break; + case 4: + hsv.s = 0; + hsv.v = 3 * (hsv.v / 8); + break; + case 5: + hsv.v = hsv.v; + break; + case 6: + hsv.v = hsv.v; + break; + case 7: + hsv.v = hsv.v; + break; + case 8: + hsv.v = hsv.v; + break; + case 9: + hsv.s = 0; + hsv.v = 3 * (hsv.v / 8); + break; + case 10: + hsv.s = 0; + hsv.v = 2 * (hsv.v / 8); + break; + case 11: + hsv.s = 0; + hsv.v = 1 * (hsv.v / 8); + break; + case 12: + hsv.v = 0; + break; + + // punctuation keys + case 26: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 27: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 40: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 41: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 52: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 53: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + case 54: + hsv.s = 0; + hsv.v = hsv.v / 8; + break; + + default: + if ( + (i > 15 && i <= 25) || + (i > 30 && i <= 39) || + (i > 44 && i <= 51) + ) { + if (i > 35 && i <= 39) { + hsv.s = hsv.s; + } else if (i > 30 && i <= 34) { + hsv.s = hsv.s; + } else { + hsv.s = 0; + } + } else { + hsv.v = 0; + } + break; + + } + + } + + return hsv; +} + +bool base_effect(effect_params_t* params) { + return effect_runner_i(params, &base_effect_math); +} + +static HSV base_ad_effect_math(HSV hsv, uint8_t i, uint8_t time) { + + // no startup animation + if (BASE_EFFECT_NOT_STARTED_YET) { + base_effect_startup_counter = 255; // act like startup is already completed + BASE_EFFECT_NOT_STARTED_YET = false; + } + + switch (i) { + + // delete + case 14: + hsv.h = 0; + hsv.s = 255; + break; + + // insert + case 29: + hsv.h = 255/3; + hsv.s = 255; + break; + + // home + case 43: + hsv.s = 0; + break; + + // end + case 57: + hsv.s = 255; + break; + + default: + hsv = base_effect_math(hsv, i, time); + break; + + } + + return hsv; +} + +bool base_ad_effect(effect_params_t* params) { + return effect_runner_i(params, &base_ad_effect_math); +} + +static HSV vi_effect_math(HSV hsv, uint8_t i, uint8_t time) { + + // no startup animation + if (BASE_EFFECT_NOT_STARTED_YET) { + base_effect_startup_counter = 255; // act like startup is already completed + BASE_EFFECT_NOT_STARTED_YET = false; + } + + switch (i) { + + // hjkl + case 36: + break; + case 37: + break; + case 38: + break; + case 39: + break; + + // page up + case 22: + hsv.s = 0; + break; + + // page down + case 33: + hsv.s = 0; + break; + + // find + case 54: + hsv.s = 0; + break; + + default: + hsv.v = 0; + break; + + } + + return hsv; +} + +bool vi_effect(effect_params_t* params) { + return effect_runner_i(params, &vi_effect_math); +} + +static HSV fn_indicator_math(HSV hsv, uint8_t i, uint8_t time) { + + // cancel base effect startup + base_effect_startup_counter = 255; + + switch (i) { + + // F1 - F12 + case 1: + hsv.h = 0 * 255 / 3; + hsv.s = 255; + break; + case 2: + hsv.h = 0 * 255 / 3; + hsv.s = 255; + break; + case 3: + hsv.h = 0 * 255 / 3; + hsv.s = 255; + break; + case 4: + hsv.h = 0 * 255 / 3; + hsv.s = 255; + break; + case 5: + hsv.h = 1 * 255 / 3; + hsv.s = 255; + break; + case 6: + hsv.h = 1 * 255 / 3; + hsv.s = 255; + break; + case 7: + hsv.h = 1 * 255 / 3; + hsv.s = 255; + break; + case 8: + hsv.h = 1 * 255 / 3; + hsv.s = 255; + break; + case 9: + hsv.h = 2 * 255 / 3; + hsv.s = 255; + break; + case 10: + hsv.h = 2 * 255 / 3; + hsv.s = 255; + break; + case 11: + hsv.h = 2 * 255 / 3; + hsv.s = 255; + break; + case 12: + hsv.h = 2 * 255 / 3; + hsv.s = 255; + break; + + // delete/insert + case 13: + hsv.h = 0; + hsv.s = 255; + break; + case 14: + hsv.h = 1 * (255 / 3); + hsv.s = 255; + break; + + // paste/copy/cut + case 29: + hsv.s = 0; + break; + case 43: + hsv.h = 200; + hsv.s = 255; + break; + case 57: + hsv.h = 0; + hsv.s = 255; + break; + + // print/scroll/pause + case 25: + hsv.s = 0; + break; + case 26: + hsv.s = 0; + break; + case 27: + hsv.s = 0; + break; + + // caps lock + case 30: + hsv.s = 0; + break; + + // modifier + case 44: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + case 55: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + case 58: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + case 59: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + case 60: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + case 64: + hsv.s = 0; + hsv.v = hsv.v / 2; + break; + + // volume + case 18: // mute + hsv.h = 0; + break; + case 17: // increase + hsv.s = 255; + break; + case 32: // decrease + hsv.s = 0; + break; + + // brightness + case 33: // increase + hsv.s = 255; + break; + case 31: // decrease + hsv.s = 0; + break; + + // media + case 65: // previous + hsv.s = 0; + break; + case 67: // next + hsv.s = 0; + break; + case 56: // stop + hsv.h = 0; + break; + case 66: // play/pause + hsv.h = 255/3; + break; + + // menu + case 51: + hsv.s = 0; + break; + + // toggle AD layer + case 36: + hsv.h = 0; + break; + + // toggle VI layer + case 37: + hsv.h = 255/3; + break; + + // KB layer + case 62: + hsv.h = time; + hsv.s = 255; + break; + + // no function + default: + hsv.v = 0; + break; + + } + + return hsv; +} + +bool fn_indicator(effect_params_t* params) { + return effect_runner_i(params, &fn_indicator_math); +} + +static HSV kb_indicator_math(HSV hsv, uint8_t i, uint8_t time) { + + // cancel base effect startup + base_effect_startup_counter = 255; + + switch (i) { + + // test HSV + case 14: + break; + case 29: + break; + case 43: + break; + case 57: + break; + case 67: + break; + + // toggle RGB + case 16: + hsv.s = 0; + if (time < (255 / 2)) { + hsv.v = 255; + } else { + hsv.v = 0; + } + break; + + // cycle effect + case 17: + hsv.s = 255; + hsv.v = 255; + if (time < (255 / 3)) { + hsv.h = 0; + } else if (time < (2 * 255 / 3)) { + hsv.h = 255 / 3; + } else { + hsv.h = 2 * 255 / 3; + } + break; + + // adjust hue + case 18: + hsv.h = time; + hsv.s = 255; + hsv.v = 255; + break; + case 19: + hsv.h = 255 - time; + hsv.s = 255; + hsv.v = 255; + break; + + // adjust saturation + case 32: + hsv.s = 255; + hsv.v = 255; + break; + case 33: + hsv.s = 0; + hsv.v = 255; + break; + + // adjust value + case 45: + hsv.v = 255; + break; + case 46: + hsv.v = 63; + break; + + // adjust speed + case 4: + if (((time / 8) % 2) == 0) { + hsv.v = 255; + } else { + hsv.v = 63; + } + break; + case 5: + if (((time / 16) % 2) == 0) { + hsv.v = 63; + } else { + hsv.v = 255; + } + break; + + // set main effect + case 36: // BASE + hsv.s = 0; + break; + case 37: // KITT + hsv.h = 0; + hsv.s = 255; + if (time < 128) { + hsv.v = time; + } else { + hsv.v = 255 - time; + } + break; + + // reset (for flashing) + case 13: + hsv.s = 0; + if (time < 16) { + hsv.v = 255 - time * 128 / 16; + } else { + hsv.v = 127; + } + break; + + // reset (reinitialize EEPROM) + case 42: + hsv.s = 0; + hsv.v = 127; + break; + + // shift + case 44: + hsv.s = 0; + hsv.v = 63; + break; + case 55: + hsv.s = 0; + hsv.v = 63; + break; + + // no function + default: + hsv.v = 0; + + } + + return hsv; +} + +bool kb_indicator(effect_params_t* params) { + return effect_runner_i(params, &kb_indicator_math); +} + +uint8_t led_count = 7; +uint8_t led_first = 33; +static uint8_t time_to_led(uint8_t time, uint8_t led_behind) { + uint16_t led_time = led_count * time; + uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count); + uint8_t led; + if (step < led_count) { + led = step; + } else { + led = led_count - 1 - (step - led_count); + } + return led; +} + +static HSV kitt_effect_math(HSV hsv, uint8_t i, uint8_t time) { + + // reset base effect startup + if (i == 0) { + BASE_EFFECT_NOT_STARTED_YET = true; + } + + hsv.h = 0; + hsv.s = 255; + + if (i >= led_first && i < led_first + led_count) { + uint8_t j = i - led_first; + if (j == time_to_led(time, 0)) { + hsv.v = hsv.v; + } else if (j == time_to_led(time, 1)) { + hsv.v = hsv.v/2; + } else if (j == time_to_led(time, 2)) { + hsv.v = hsv.v/4; + } else if (j == time_to_led(time, 3)) { + hsv.v = hsv.v/8; + } else { + hsv.v = 0; + } + } else { + hsv.v = 0; + } + + return hsv; +} + +bool kitt_effect(effect_params_t* params) { + return effect_runner_i(params, &kitt_effect_math); +} + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// vim: syntax=c diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/rules.mk b/keyboards/dztech/dz65rgb/keymaps/jumper149/rules.mk new file mode 100644 index 0000000000..6245023e80 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/dztech/dz65rgb/readme.md b/keyboards/dztech/dz65rgb/readme.md index 8d7b95b3d6..e4d7a7a35d 100644 --- a/keyboards/dztech/dz65rgb/readme.md +++ b/keyboards/dztech/dz65rgb/readme.md @@ -3,17 +3,25 @@ A customizable 65% RGB keyboard. * Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) -* Hardware Supported: DZ65RGB V1 and V2 +* Hardware Supported: DZ65RGB V1,V2 and V3 * Hardware Availability: [KBDfans](https://kbdfans.com/) -There are two versions of the DZ65RGB. Please use the appropriate firmware for your board. +There are three versions of the DZ65RGB. Please use the appropriate firmware for your board. * V1: STM32F303 (Arm), takes .bin files -* V2: ATmega32U4 (AVR), takes .hex files +* V2: ATmega32U4 (AVR), takes .hex files, is31fl3731 rgbmatrix driver +* V3: ATmega32U4 (AVR), takes .bin files, is31fl3741 rgbmatrix driver + +## Bootloader mode + +To put in bootloader mode, hold the `Esc` key while plugging in the USB cable. or use reset key behind the pcb. + +## Making firmware Make example for this keyboard (after setting up your build environment): make dztech/dz65rgb/v1:default # Arm (STM32F303) make dztech/dz65rgb/v2:default # AVR (ATmega32U4) + make dztech/dz65rgb/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/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h index cd47477160..adfa934b04 100644 --- a/keyboards/dztech/dz65rgb/v1/config.h +++ b/keyboards/dztech/dz65rgb/v1/config.h @@ -1,3 +1,18 @@ +/* Copyright 2019 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 /* USB Device descriptor parameter */ diff --git a/keyboards/dztech/dz65rgb/v1/readme.md b/keyboards/dztech/dz65rgb/v1/readme.md new file mode 100644 index 0000000000..ac433e5b8d --- /dev/null +++ b/keyboards/dztech/dz65rgb/v1/readme.md @@ -0,0 +1,16 @@ +# DZ65RGB V1 + +A customizable 65% RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: DZ65RGB V1 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/dz65rgb/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/dztech/dz65rgb/v1/rules.mk b/keyboards/dztech/dz65rgb/v1/rules.mk index 8751af6491..5468deb718 100644 --- a/keyboards/dztech/dz65rgb/v1/rules.mk +++ b/keyboards/dztech/dz65rgb/v1/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/dztech/dz65rgb/v1/v1.c b/keyboards/dztech/dz65rgb/v1/v1.c new file mode 100644 index 0000000000..8a3f0e27bf --- /dev/null +++ b/keyboards/dztech/dz65rgb/v1/v1.c @@ -0,0 +1,123 @@ +/* Copyright 2019 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 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 }, + { 0, C9_6, C8_6, C7_6 }, + { 0, C9_5, C8_5, C7_5 }, + { 0, C9_4, C8_4, C7_4 }, + { 0, C9_3, C8_3, C7_3 }, + { 0, C9_2, C8_2, C7_2 }, + { 0, C9_1, C8_1, C7_1 }, + { 0, C2_9, C3_9, C4_9 }, + { 0, C1_9, C3_10, C4_10 }, + { 0, C1_10, C2_10, C4_11 }, + { 0, C1_11, C2_11, C3_11 }, + { 0, C1_13, C2_13, C3_13 }, + { 0, C1_14, C2_14, C3_14 }, + + { 0, C1_7, C2_7, C3_7 }, + { 0, C1_6, C2_6, C3_6 }, + { 0, C1_5, C2_5, C3_5 }, + { 0, C1_4, C2_4, C3_4 }, + { 0, C1_3, C2_3, C3_3 }, + { 0, C1_2, C2_2, C4_3 }, + { 0, C1_1, C3_2, C4_2 }, + { 0, C2_1, C3_1, C4_1 }, + { 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, C1_15, C2_15, C3_15 }, + + { 0, C1_8, C2_8, C3_8 }, + { 1, C9_6, C8_6, C7_6 }, + { 1, C9_5, C8_5, C7_5 }, + { 1, C9_4, C8_4, C7_4 }, + { 1, C9_3, C8_3, C7_3 }, + { 1, C9_2, C8_2, C7_2 }, + { 1, C9_1, C8_1, C7_1 }, + { 1, C2_9, C3_9, C4_9 }, + { 1, C1_9, C3_10, C4_10 }, + { 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 }, + { 0, C1_16, C2_16, C3_16 }, + + { 1, C9_8, C7_7, C6_7 }, + { 1, C1_5, C2_5, C3_5 }, + { 1, C1_4, C2_4, C3_4 }, + { 1, C1_3, C2_3, C3_3 }, + { 1, C1_2, C2_2, C4_3 }, + { 1, C1_1, C3_2, C4_2 }, + { 1, C9_9, C8_9, C7_9 }, + { 1, C9_10, C8_10, C7_10 }, + { 1, C9_11, C8_11, C7_11 }, + { 1, C9_12, C8_12, C7_12 }, + { 1, C1_14, C2_14, C3_14 }, + { 1, C1_15, C2_15, C3_15 }, + { 1, C1_16, C2_16, C3_16 }, + { 0, C9_15, C8_15, C6_14 }, + + { 1, C8_8, C7_8, C6_8 }, + { 1, C1_8, C2_8, C3_8 }, + { 1, C1_7, C2_7, C3_7 }, + { 1, C2_1, C3_1, C4_1 }, + { 1, C9_14, C8_14, C7_14 }, + { 1, C9_15, C8_15, C6_14 }, + { 1, C9_16, C7_15, C6_15 }, + { 1, C8_16, C7_16, C6_16 }, + { 0, C8_16, C7_16, C6_16 }, + { 0, C9_16, C7_15, C6_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, 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, 63, 64, 65, NO_LED, 66, 67 } + }, { + { 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 }, { 150, 64 }, { 165, 64 }, { 180, 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, 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/dztech/dz65rgb/v1/v1.h b/keyboards/dztech/dz65rgb/v1/v1.h new file mode 100644 index 0000000000..1811cefae6 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v1/v1.h @@ -0,0 +1,34 @@ +/* Copyright 2019 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_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, K48, K49, 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, K49, K4A, K4B, XXX, K4D, K4E } \ +} diff --git a/keyboards/dztech/dz65rgb/v2/config.h b/keyboards/dztech/dz65rgb/v2/config.h index ccd74275ae..f86d65cd06 100644 --- a/keyboards/dztech/dz65rgb/v2/config.h +++ b/keyboards/dztech/dz65rgb/v2/config.h @@ -1,3 +1,18 @@ +/* Copyright 2020 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 /* USB Device descriptor parameter */ diff --git a/keyboards/dztech/dz65rgb/v2/readme.md b/keyboards/dztech/dz65rgb/v2/readme.md new file mode 100644 index 0000000000..7bf3766403 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v2/readme.md @@ -0,0 +1,16 @@ +# DZ65RGB V2 + +A customizable 65% RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: DZ65RGB V2 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/dz65rgb/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/dztech/dz65rgb/v2/v2.c b/keyboards/dztech/dz65rgb/v2/v2.c new file mode 100644 index 0000000000..788709d989 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v2/v2.c @@ -0,0 +1,123 @@ +/* Copyright 2020 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 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 }, + { 0, C9_6, C8_6, C7_6 }, + { 0, C9_5, C8_5, C7_5 }, + { 0, C9_4, C8_4, C7_4 }, + { 0, C9_3, C8_3, C7_3 }, + { 0, C9_2, C8_2, C7_2 }, + { 0, C9_1, C8_1, C7_1 }, + { 0, C2_9, C3_9, C4_9 }, + { 0, C1_9, C3_10, C4_10 }, + { 0, C1_10, C2_10, C4_11 }, + { 0, C1_11, C2_11, C3_11 }, + { 0, C1_13, C2_13, C3_13 }, + { 0, C1_14, C2_14, C3_14 }, + + { 0, C1_7, C2_7, C3_7 }, + { 0, C1_6, C2_6, C3_6 }, + { 0, C1_5, C2_5, C3_5 }, + { 0, C1_4, C2_4, C3_4 }, + { 0, C1_3, C2_3, C3_3 }, + { 0, C1_2, C2_2, C4_3 }, + { 0, C1_1, C3_2, C4_2 }, + { 0, C2_1, C3_1, C4_1 }, + { 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, C1_15, C2_15, C3_15 }, + + { 0, C1_8, C2_8, C3_8 }, + { 1, C9_6, C8_6, C7_6 }, + { 1, C9_5, C8_5, C7_5 }, + { 1, C9_4, C8_4, C7_4 }, + { 1, C9_3, C8_3, C7_3 }, + { 1, C9_2, C8_2, C7_2 }, + { 1, C9_1, C8_1, C7_1 }, + { 1, C2_9, C3_9, C4_9 }, + { 1, C1_9, C3_10, C4_10 }, + { 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 }, + { 0, C1_16, C2_16, C3_16 }, + + { 1, C9_8, C7_7, C6_7 }, + { 1, C1_5, C2_5, C3_5 }, + { 1, C1_4, C2_4, C3_4 }, + { 1, C1_3, C2_3, C3_3 }, + { 1, C1_2, C2_2, C4_3 }, + { 1, C1_1, C3_2, C4_2 }, + { 1, C9_9, C8_9, C7_9 }, + { 1, C9_10, C8_10, C7_10 }, + { 1, C9_11, C8_11, C7_11 }, + { 1, C9_12, C8_12, C7_12 }, + { 1, C1_14, C2_14, C3_14 }, + { 1, C1_15, C2_15, C3_15 }, + { 1, C1_16, C2_16, C3_16 }, + { 0, C9_15, C8_15, C6_14 }, + + { 1, C8_8, C7_8, C6_8 }, + { 1, C1_8, C2_8, C3_8 }, + { 1, C1_7, C2_7, C3_7 }, + { 1, C2_1, C3_1, C4_1 }, + { 1, C9_14, C8_14, C7_14 }, + { 1, C9_15, C8_15, C6_14 }, + { 1, C9_16, C7_15, C6_15 }, + { 1, C8_16, C7_16, C6_16 }, + { 0, C8_16, C7_16, C6_16 }, + { 0, C9_16, C7_15, C6_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, 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, 63, 64, 65, NO_LED, 66, 67 } + }, { + { 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 }, { 150, 64 }, { 165, 64 }, { 180, 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, 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/dztech/dz65rgb/v2/v2.h b/keyboards/dztech/dz65rgb/v2/v2.h new file mode 100644 index 0000000000..ead68e8760 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v2/v2.h @@ -0,0 +1,34 @@ +/* Copyright 2020 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_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, K48, K49, 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, K49, K4A, K4B, XXX, K4D, K4E } \ +} diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h new file mode 100755 index 0000000000..c348e323d4 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v3/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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x445A +#define PRODUCT_ID 0x1424 +#define DEVICE_VER 0x0003 +#define MANUFACTURER DZTECH +#define PRODUCT DZ65RGBV3 + +/* 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 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 +#endif diff --git a/keyboards/dztech/dz65rgb/v3/readme.md b/keyboards/dztech/dz65rgb/v3/readme.md new file mode 100644 index 0000000000..e5ae7eec7c --- /dev/null +++ b/keyboards/dztech/dz65rgb/v3/readme.md @@ -0,0 +1,19 @@ +# DZ65RGB V3 + +A customizable 65% RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: DZ65RGB V3 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Bootloader mode + +To put in bootloader mode, hold the `Esc` key while plugging in the USB cable. or use reset key behind the pcb. + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/dz65rgb/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/dztech/dz65rgb/v3/rules.mk b/keyboards/dztech/dz65rgb/v3/rules.mk new file mode 100755 index 0000000000..ace821a327 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v3/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-ms + +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 +LTO_ENABLE = yes diff --git a/keyboards/dztech/dz65rgb/v3/v3.c b/keyboards/dztech/dz65rgb/v3/v3.c new file mode 100755 index 0000000000..dec75814ca --- /dev/null +++ b/keyboards/dztech/dz65rgb/v3/v3.c @@ -0,0 +1,125 @@ +/* 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 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 = { { + { 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, NO_LED,55, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } +}, { + {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 }, { 150, 64 }, { 165, 64 }, { 180, 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, 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/dztech/dz65rgb/v3/v3.h b/keyboards/dztech/dz65rgb/v3/v3.h new file mode 100755 index 0000000000..a36069d795 --- /dev/null +++ b/keyboards/dztech/dz65rgb/v3/v3.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_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, 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, XXX, K3C, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/dztech/volcano660/rules.mk b/keyboards/dztech/volcano660/rules.mk index c230601214..e7aea4087f 100644 --- a/keyboards/dztech/volcano660/rules.mk +++ b/keyboards/dztech/volcano660/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/ealdin/quadrant/quadrant.c b/keyboards/ealdin/quadrant/quadrant.c index 5a4acaf006..a5aff62dae 100644 --- a/keyboards/ealdin/quadrant/quadrant.c +++ b/keyboards/ealdin/quadrant/quadrant.c @@ -17,7 +17,8 @@ // Rotary encoder functions: -__attribute__((weak)) void 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; uint16_t mapped_code = 0; if (index == 0) { if (clockwise) { @@ -49,6 +50,7 @@ __attribute__((weak)) void encoder_update_user(uint8_t index, bool clockwise) { } tap_code(mapped_code); } + return true; } void keyboard_pre_init_kb(void) { @@ -63,4 +65,3 @@ bool led_update_kb(led_t led_state) { } return true; } - diff --git a/keyboards/ebastler/isometria_75/rev1/keymaps/default/keymap.c b/keyboards/ebastler/isometria_75/rev1/keymaps/default/keymap.c index d3242a9de1..d8c980f471 100644 --- a/keyboards/ebastler/isometria_75/rev1/keymaps/default/keymap.c +++ b/keyboards/ebastler/isometria_75/rev1/keymaps/default/keymap.c @@ -18,32 +18,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_iso( /* keymap for layer 0 */ - KC_ESC, KC_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_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_ESC, KC_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_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, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_iso( /* keymap for layer 1 */ - RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, 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_DEL, 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, MO(2), KC_TRNS, KC_TRNS, + RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, 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_DEL, 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, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS), [2] = LAYOUT_iso( /* 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, 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, MO(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, 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, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS), }; /* Encoder */ -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { /* The first if reads the first encoder, not needed on this board which only features a single one */ if (index == 0) { /* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */ @@ -71,4 +71,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; } } + return true; } diff --git a/keyboards/ebastler/isometria_75/rev1/keymaps/via/keymap.c b/keyboards/ebastler/isometria_75/rev1/keymaps/via/keymap.c index 1ed98f1a55..0b83408beb 100644 --- a/keyboards/ebastler/isometria_75/rev1/keymaps/via/keymap.c +++ b/keyboards/ebastler/isometria_75/rev1/keymaps/via/keymap.c @@ -18,40 +18,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_iso( /* keymap for layer 0 */ - KC_ESC, KC_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_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_ESC, KC_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_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, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_iso( /* keymap for layer 1 */ - RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, 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_DEL, 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, MO(2), KC_TRNS, KC_TRNS, + RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, 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_DEL, 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, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS), [2] = LAYOUT_iso( /* 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, 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, MO(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, 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, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS), [3] = LAYOUT_iso( /* keymap for layer 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 */ -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { /* The first if reads the first encoder, not needed on this board which only features a single one */ if (index == 0) { /* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */ @@ -79,4 +79,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { break; } } + return true; } diff --git a/keyboards/ebastler/isometria_75/rev1/rules.mk b/keyboards/ebastler/isometria_75/rev1/rules.mk index 72be720b2b..ec05abff0d 100644 --- a/keyboards/ebastler/isometria_75/rev1/rules.mk +++ b/keyboards/ebastler/isometria_75/rev1/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/eco/eco.h b/keyboards/eco/eco.h index 8c57244fba..211e41fe8f 100644 --- a/keyboards/eco/eco.h +++ b/keyboards/eco/eco.h @@ -10,18 +10,4 @@ #include "quantum.h" -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc( \ - 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 \ - ) \ - { \ - { KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k010, KC_##k011, KC_##k012, KC_##k013, KC_##k014 }, \ - { KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k110, KC_##k111, KC_##k112, KC_##k113, KC_##k114 }, \ - { KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k210, KC_##k211, KC_##k212, KC_##k213, KC_##k214 }, \ - { KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k310, KC_##k311, KC_##k312, KC_##k313, KC_##k314 } \ - } - #endif diff --git a/keyboards/eco/keymaps/hexwire/keymap.c b/keyboards/eco/keymaps/hexwire/keymap.c deleted file mode 100644 index 3f21eacd3b..0000000000 --- a/keyboards/eco/keymaps/hexwire/keymap.c +++ /dev/null @@ -1,116 +0,0 @@ - -// Default ECO Layout -// KLE here : http://www.keyboard-layout-editor.com/#/gists/0733eca6b4cb88ff9d7de746803f4039 - -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _FN3 3 - -enum eco_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, -}; - -// Fillers to make layering more clear -#define KC_ KC_TRNS - -#define KC_RST RESET -#define KC_DBUG DEBUG -#define KC_LOWR MO(_LOWER) -#define KC_RASE MO(_RAISE) -#define KC_ENTS MT(MOD_LSFT, KC_ENT) -#define KC_ESCC MT(MOD_LCTL, KC_ESC) -#define KC_GRVF LT(_FN3, KC_GRV) -#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen -#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen -#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen -#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen -#define KC_RTOG RGB_TOG -#define KC_RMOD RGB_MOD -#define KC_RHUI RGB_HUI -#define KC_RHUD RGB_HUD -#define KC_RSAI RGB_SAI -#define KC_RSAD RGB_SAD -#define KC_RVAI RGB_VAI -#define KC_RVAD RGB_VAD - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----+----+----+----+----+----+----+----+----. - TAB , Q , W , E , R , T ,LPRN,RPRN, Y , U , I , O , P ,MINS, - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - ESCC, A , S , D , F , G ,LBRC,RBRC, H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B ,LCBR,RCBR, N , M ,COMM,DOT ,SLSH,ENTS, - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - GRVF,LCTL,LALT,LGUI,LOWR,SPC ,SPC ,BSPC,BSPC,RASE,LEFT,DOWN, UP ,RGHT - //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' - ), - - - [_LOWER] = LAYOUT_kc( - //,----+----+----+----+----+----+----+----+----+----+----+----+----+----. - , 1 , 2 , 3 , 4 , 5 ,LPRN,RPRN, 6 , 7 , 8 , 9 , 0 , , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - DEL ,CAPP,LEFT,RGHT, UP ,LBRC,LBRC,RBRC,RBRC, P4 , P5 , P6 ,PLUS,PIPE, - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - ,CPYP, , ,DOWN,LCBR,LCBR,RCBR,RCBR, P1 , P2 , P3 ,MINS, , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - , , , , , , ,DEL ,DEL , , P0 ,PDOT, , - //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' - ), - - [_RAISE] = LAYOUT_kc( - //,----+----+----+----+----+----+----+----+----+----+----+----+----+----. - ,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN, , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, , ,EQL ,HOME, , , ,BSLS, - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - MUTE,MSTP,MPLY,VOLD,PGDN,MINS, , ,PLUS,END , , , , , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - , , , , , , , , , , , , , - //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' - ), - - [_FN3] = LAYOUT_kc( - //,----+----+----+----+----+----+----+----+----+----+----+----+----+----. - F12 , F1 , F2 , F3 , F4 , F5 , , , F6 , F7 , F8 , F9 ,F10 ,F11 , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - RTOG,RMOD,RHUI,RSAI,RVAI, , , , , , , , , , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - RST ,DBUG,RHUD,RSAD,RVAD, , , , , , , , , , - //|----+----+----+----+----+----+----+----+----+----+----+----+----+----| - , , , , , , , , , , , , , - //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' - ), - -}; - -void persistant_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 QWERTY: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_QWERTY); - } - return false; - break; - } - return true; -} - diff --git a/keyboards/eco/keymaps/hexwire/rules.mk b/keyboards/eco/keymaps/hexwire/rules.mk deleted file mode 100644 index 83d1175db9..0000000000 --- a/keyboards/eco/keymaps/hexwire/rules.mk +++ /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 = 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. - -# 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/eggman/keymaps/default/keymap.c b/keyboards/eggman/keymaps/default/keymap.c index fed38de98d..11da71c6c7 100644 --- a/keyboards/eggman/keymaps/default/keymap.c +++ b/keyboards/eggman/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 enum layers{ @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_NAV] = LAYOUT_default( - KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_LCAP, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, @@ -60,7 +60,7 @@ 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 (index == 0) { /* left encoder */ if (clockwise) { tap_code(KC_WH_U); @@ -74,6 +74,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } #ifdef COMBO_ENABLE @@ -91,4 +92,3 @@ combo_t key_combos[COMBO_COUNT] = { [COMBO_DEL] = COMBO(combo_del,KC_DEL) }; #endif - diff --git a/keyboards/epoch80/config.h b/keyboards/epoch80/config.h new file mode 100644 index 0000000000..ba79c4c26c --- /dev/null +++ b/keyboards/epoch80/config.h @@ -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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6463 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER caryworks +#define PRODUCT epoch80 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN E6 +#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 diff --git a/keyboards/epoch80/epoch80.c b/keyboards/epoch80/epoch80.c new file mode 100644 index 0000000000..43aa6ee8c9 --- /dev/null +++ b/keyboards/epoch80/epoch80.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 "epoch80.h" diff --git a/keyboards/epoch80/epoch80.h b/keyboards/epoch80/epoch80.h new file mode 100644 index 0000000000..a21623b1c9 --- /dev/null +++ b/keyboards/epoch80/epoch80.h @@ -0,0 +1,157 @@ +/* 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 + +/* 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, 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, k314, 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, k510, k511, 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, k314, ____, ____, }, \ + { 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, k516, } \ +} + +#define LAYOUT_tkl_ansi( \ + 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, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k510, k511, 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, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_splitbs( \ + 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, k314, 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, k506, k510, k511, 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, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} + +#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, \ + 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, k506, k511, 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, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_tsangan_splitbs( \ + 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, k314, 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, k506, k511, 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, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_wkl( \ + 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, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k502, k506, k511, 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, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_wkl_splitbs( \ + 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, k314, 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, k502, k506, k511, 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, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_iso( \ + 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, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k213, k313, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k510, k511, 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, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} diff --git a/keyboards/epoch80/info.json b/keyboards/epoch80/info.json new file mode 100644 index 0000000000..eaf99df698 --- /dev/null +++ b/keyboards/epoch80/info.json @@ -0,0 +1,736 @@ +{ + "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": [ + {"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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.5, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.5, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_splitbs": { + "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.5, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.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, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_tsangan_splitbs": { + "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.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, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.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, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_wkl_splitbs": { + "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.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, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "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.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "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.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.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.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.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":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.5, "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.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + } + } +} diff --git a/keyboards/epoch80/keymaps/default/keymap.c b/keyboards/epoch80/keymaps/default/keymap.c new file mode 100644 index 0000000000..76ac04d1b5 --- /dev/null +++ b/keyboards/epoch80/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* 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, MO(1), KC_RGUI, 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, 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_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 + ) +}; diff --git a/keyboards/epoch80/keymaps/iso/keymap.c b/keyboards/epoch80/keymaps/iso/keymap.c new file mode 100644 index 0000000000..dcf43d76e1 --- /dev/null +++ b/keyboards/epoch80/keymaps/iso/keymap.c @@ -0,0 +1,36 @@ +/* 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_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, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_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, 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_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 + ) +}; diff --git a/keyboards/epoch80/keymaps/tsangan/keymap.c b/keyboards/epoch80/keymaps/tsangan/keymap.c new file mode 100644 index 0000000000..a0595a0d77 --- /dev/null +++ b/keyboards/epoch80/keymaps/tsangan/keymap.c @@ -0,0 +1,36 @@ +/* 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_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, + KC_CAPS, KC_A, KC_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_TRNS, 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_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_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 + ) +}; diff --git a/keyboards/epoch80/keymaps/via/keymap.c b/keyboards/epoch80/keymaps/via/keymap.c new file mode 100644 index 0000000000..cf2aeb3ca9 --- /dev/null +++ b/keyboards/epoch80/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* 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_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_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_APP, 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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/epoch80/keymaps/via/rules.mk b/keyboards/epoch80/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/epoch80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/epoch80/keymaps/wkl/keymap.c b/keyboards/epoch80/keymaps/wkl/keymap.c new file mode 100644 index 0000000000..30b7126908 --- /dev/null +++ b/keyboards/epoch80/keymaps/wkl/keymap.c @@ -0,0 +1,36 @@ +/* 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_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_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, 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_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 + ) +}; diff --git a/keyboards/epoch80/readme.md b/keyboards/epoch80/readme.md new file mode 100644 index 0000000000..a78f9ce87b --- /dev/null +++ b/keyboards/epoch80/readme.md @@ -0,0 +1,20 @@ +# Epoch 80 / Dolch.CR 80 + +![epoch80](https://i.imgur.com/xNvEKBOl.png) + +Dolch PAC inspired TKL keyboard designed by Cary Works and made by KBDFans. +The board was also sold in a zFrontier groupbuy under the name Dolch.CR 80. + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Epoch 80 / Dolch.CR 80 PCB +* Hardware Availability: https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard + +Make example for this keyboard (after setting up your build environment): + + make epoch80:default + +Flashing example for this keyboard: + + make epoch80: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/epoch80/rules.mk b/keyboards/epoch80/rules.mk new file mode 100644 index 0000000000..277cde08e2 --- /dev/null +++ b/keyboards/epoch80/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 = 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 = 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/ergo42.c b/keyboards/ergo42/ergo42.c index e42dcb2261..bd7a7ffe19 100644 --- a/keyboards/ergo42/ergo42.c +++ b/keyboards/ergo42/ergo42.c @@ -2,7 +2,7 @@ #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +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}}, {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}}, diff --git a/keyboards/ergo42/ergo42.h b/keyboards/ergo42/ergo42.h index ced1709d3e..656b211308 100644 --- a/keyboards/ergo42/ergo42.h +++ b/keyboards/ergo42/ergo42.h @@ -5,19 +5,3 @@ #ifdef KEYBOARD_ergo42_rev1 #include "rev1.h" #endif - -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc_ortho_4x14( \ - 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 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36 \ - ) - -#define LAYOUT_kc LAYOUT_kc_ortho_4x14 diff --git a/keyboards/ergo42/info.json b/keyboards/ergo42/info.json index cac5a46a14..6489e25a80 100644 --- a/keyboards/ergo42/info.json +++ b/keyboards/ergo42/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 4, "layouts": { - "LAYOUT": { + "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/ergoarrows/info.json b/keyboards/ergoarrows/info.json index b3e7434067..fca43fcd2d 100644 --- a/keyboards/ergoarrows/info.json +++ b/keyboards/ergoarrows/info.json @@ -7,81 +7,82 @@ "layouts": { "LAYOUT": { "layout": [ - {"label":"#", "x":3.5, "y":0}, - {"label":"*", "x":12.25, "y":0}, - {"label":"@", "x":2.5, "y":0.125}, - {"label":"$", "x":4.5, "y":0.125}, - {"label":"&", "x":11.25, "y":0.13}, - {"label":"(", "x":13.25, "y":0.13}, - {"label":"%", "x":5.5, "y":0.25}, - {"label":"^", "x":10.25, "y":0.25}, - {"label":"!", "x":1.5, "y":0.375}, {"label":"Esc", "x":0.5, "y":0.38}, - {"label":")", "x":14.25, "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}, - {"x":6.5, "y":0.5}, {"x":9.25, "y":0.5}, - {"label":"E", "x":3.5, "y":1}, - {"label":"I", "x":12.25, "y":1}, - {"label":"W", "x":2.5, "y":1.125}, - {"label":"R", "x":4.5, "y":1.125}, - {"label":"U", "x":11.25, "y":1.13}, - {"label":"O", "x":13.25, "y":1.13}, - {"label":"T", "x":5.5, "y":1.25}, - {"label":"Y", "x":10.25, "y":1.25}, - {"label":"Q", "x":1.5, "y":1.375}, {"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":"\u2019", "x":15.25, "y":1.38}, - {"label":"[", "x":6.5, "y":1.5}, - {"label":"]", "x":9.25, "y":1.5}, - {"label":"D", "x":3.5, "y":2}, - {"label":"K", "x":12.25, "y":2}, - {"label":"S", "x":2.5, "y":2.125}, - {"label":"F", "x":4.5, "y":2.125}, - {"label":"J", "x":11.25, "y":2.13}, - {"label":"L", "x":13.25, "y":2.13}, - {"label":"G", "x":5.5, "y":2.25}, - {"label":"H", "x":10.25, "y":2.25}, - {"label":"A", "x":1.5, "y":2.375}, + {"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":"(", "x":6.5, "y":2.5}, - {"label":")", "x":9.25, "y":2.5}, - {"label":"C", "x":3.5, "y":3}, - {"label":"<", "x":12.25, "y":3}, - {"label":"X", "x":2.5, "y":3.125}, - {"label":"V", "x":4.5, "y":3.125}, - {"label":"M", "x":11.25, "y":3.13}, - {"label":">", "x":13.25, "y":3.13}, - {"label":"B", "x":5.5, "y":3.25}, - {"label":"N", "x":10.25, "y":3.25}, - {"label":"Z", "x":1.5, "y":3.375}, {"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}, - {"x":6.5, "y":3.5}, - {"x":9.25, "y":3.5}, - {"label":"Ctrl", "x":0.5, "y":4.375}, + {"label":"Ctrl", "x":0.5, "y":4.38}, {"label":"Win", "x":1.5, "y":4.38}, - {"label":"\u7121\u5909", "x":3.75, "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":"Spc", "x":11, "y":4.38}, - {"label":"\u5909\u63db", "x":12, "y":4.38}, - {"label":"Alt", "x":14.25, "y":4.38}, - {"label":"App", "x":15.25, "y":4.38}, - {"label":"\u2191", "x":2.625, "y":4.505}, - {"label":"\u2191", "x":13.13, "y":4.51}, {"label":"BS", "x":5.85, "y":4.6}, - {"label":"Del", "x":9.9, "y":4.6}, {"label":"Del", "x":6.9, "y":5.15}, {"label":"BS", "x":8.85, "y":5.15}, - {"label":"\u2190", "x":1.625, "y":5.505}, - {"label":"\u2193", "x":2.625, "y":5.505}, - {"label":"\u2192", "x":3.625, "y":5.505}, - {"label":"\u2190", "x":12.13, "y":5.51}, - {"label":"\u2193", "x":13.13, "y":5.51}, - {"label":"\u2192", "x":14.13, "y":5.51}] + {"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}] } } } \ No newline at end of file diff --git a/keyboards/ergodash/ergodash.h b/keyboards/ergodash/ergodash.h index 83c7859307..5fba70e75d 100644 --- a/keyboards/ergodash/ergodash.h +++ b/keyboards/ergodash/ergodash.h @@ -1,44 +1,11 @@ -#ifndef ERGODASH_H -#define ERGODASH_H +#pragma once #include "quantum.h" #ifdef KEYBOARD_ergodash_rev1 #include "rev1.h" - - // Used to create a keymap using only KC_ prefixed keys - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \ - L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \ - L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \ - L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \ - L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, \ - KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, KC_##R46 \ - ) #endif // #ifdef KEYBOARD_ergodash_rev1 #ifdef KEYBOARD_ergodash_mini #include "mini.h" - - // Used to create a keymap using only KC_ prefixed keys - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \ - L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \ - L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \ - L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36 \ - ) -#endif // #ifdef KEYBOARD_ergodash_mini - #endif diff --git a/keyboards/ergodone/config.h b/keyboards/ergodone/config.h index 5256d03a64..39e0ae8c75 100644 --- a/keyboards/ergodone/config.h +++ b/keyboards/ergodone/config.h @@ -4,8 +4,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED // You may want to use 0x47EC for "KTEC", which doesn't seem to be in official use as of October 2017. -#define PRODUCT_ID 0xE60D // For "EGOD"/"ErgoDone". +#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. diff --git a/keyboards/ergodone/keymaps/via/config.h b/keyboards/ergodone/keymaps/via/config.h new file mode 100644 index 0000000000..fc7744c763 --- /dev/null +++ b/keyboards/ergodone/keymaps/via/config.h @@ -0,0 +1,18 @@ + /* Copyright HarshitGoel96 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 . + */ + //Keymap specific config.h +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 \ No newline at end of file diff --git a/keyboards/ergodone/keymaps/via/keymap.c b/keyboards/ergodone/keymaps/via/keymap.c new file mode 100644 index 0000000000..f155a4b51d --- /dev/null +++ b/keyboards/ergodone/keymaps/via/keymap.c @@ -0,0 +1,196 @@ + /* Copyright HarshitGoel96 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 layer_names { + QRTY, // qwerty above workman to make sure transparent does not catch unwanted keycode + SYMB, // symbols + MDIA, // media keys + EXTRA, // added extra layer for via +}; + +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_* + +[QRTY] = 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 + * + * ,---------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | EEP_RST | | | | | | | . | 0 | = | | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Animat| | |Toggle|Solid | + * ,------|------|------| |------+------+------. + * |Bright|Bright| | | |Hue- |Hue+ | + * |ness- |ness+ |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = LAYOUT_ergodox( + // left hand + KC_TRNS, 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, + EEP_RST ,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_M_P , + 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 +), +[EXTRA] = 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 +) +}; + +// Runs constantly in the background, in a loop. + +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(); + switch (get_highest_layer(state)) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + return state; +} diff --git a/keyboards/ergodone/keymaps/via/readme.md b/keyboards/ergodone/keymaps/via/readme.md new file mode 100644 index 0000000000..223cb892ba --- /dev/null +++ b/keyboards/ergodone/keymaps/via/readme.md @@ -0,0 +1,5 @@ + +## Changelog +HarshitGoel96 + +I love my ergodone, but it needed via, so here it is. Flash using HIDBOOTLOADER as described in keyboard root read.md and enjoy via on ergodone. \ No newline at end of file diff --git a/keyboards/ergodone/keymaps/via/rules.mk b/keyboards/ergodone/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/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/rules.mk b/keyboards/ergodone/rules.mk index f0008e48fd..acd485f2f8 100644 --- a/keyboards/ergodone/rules.mk +++ b/keyboards/ergodone/rules.mk @@ -16,7 +16,7 @@ BOOTLOADER = caterina # CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone UNICODE_ENABLE = yes # Unicode -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index e6f48c49fb..4d35675211 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -220,7 +220,7 @@ uint8_t ergodox_left_leds_update(void) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { /* Left hand, matrix positions */ {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}}, {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}}, diff --git a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py index b96e4c96cd..f55bdaf2d7 100755 --- a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py +++ b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py @@ -164,7 +164,16 @@ class KeymapBeautifier: key_symbols = [key_symbols[i] for i in self.index_conversion_map_reversed(self.INDEX_CONVERSTION_LAYOUT_ergodox_pretty_to_LAYOUT_ergodox)] padded_key_symbols = self.pad_key_symbols(key_symbols, input_layout) - current_pretty_output_layer = self.pretty_output_layer(layer.name[0].value, padded_key_symbols) + + layer_identifier = None + if hasattr(layer.name[0], "value"): + layer_identifier = layer.name[0].value + elif hasattr(layer.name[0], "name"): + layer_identifier = layer.name[0].name + else: + raise AttributeError("Layer is missing both index and name (e.g., [BASE] = LAYOUT_ergodox(...))") + + current_pretty_output_layer = self.pretty_output_layer(layer_identifier, padded_key_symbols) # strip trailing spaces from padding layer_output.append(re.sub(r" +\n", "\n", current_pretty_output_layer)) @@ -361,6 +370,8 @@ class KeymapBeautifier: args.append(arg.value) elif type(arg) is pycparser.c_ast.ID: args.append(arg.name) + elif type(arg) is pycparser.c_ast.FuncCall: + args.append(self.function_expr(arg)) return "{}({})".format(name, ",".join(args)) def key_expr(self, raw): diff --git a/keyboards/ergodox_infinity/ergodox_infinity.c b/keyboards/ergodox_infinity/ergodox_infinity.c index a9962f96a0..97b628470b 100644 --- a/keyboards/ergodox_infinity/ergodox_infinity.c +++ b/keyboards/ergodox_infinity/ergodox_infinity.c @@ -205,7 +205,7 @@ void ergodox_right_led_3_set(uint8_t n) { #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{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}}, diff --git a/keyboards/ergosaurus/config.h b/keyboards/ergosaurus/config.h index 5519354132..9731897c65 100644 --- a/keyboards/ergosaurus/config.h +++ b/keyboards/ergosaurus/config.h @@ -20,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xBEEF -#define PRODUCT_ID 0xFEED +#define VENDOR_ID 0x434B +#define PRODUCT_ID 0xE590 #define DEVICE_VER 0x0001 #define MANUFACTURER reggalicious #define PRODUCT ergosaurus @@ -58,24 +58,24 @@ along with this program. If not, see . // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 -// #ifdef RGBLIGHT_ENABLE -// #define RGB_DI_PIN B6 -// #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 */ +#ifdef RGBLIGHT_ENABLE +# define RGB_DI_PIN B6 + #define RGBLED_NUM 32 + #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_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_STATIC_GRADIENT // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING // /*== customize breathing effect ==*/ @@ -84,7 +84,7 @@ along with this program. If not, see . // /*==== 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 + #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -198,6 +198,7 @@ along with this program. If not, see . * MIDI options */ + /* enable basic MIDI features: - MIDI notes can be sent when in Music mode is on */ diff --git a/keyboards/ergosaurus/keymaps/default/via/keymap.c b/keyboards/ergosaurus/keymaps/default/via/keymap.c new file mode 100644 index 0000000000..5ae73bfd47 --- /dev/null +++ b/keyboards/ergosaurus/keymaps/default/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 littleferris + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_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_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_ENT, MO(2), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_alice_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_UP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + [3] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/ergosaurus/keymaps/default/via/rules.mk b/keyboards/ergosaurus/keymaps/default/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/ergosaurus/keymaps/default/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ergoslab/rev1/rev1.c b/keyboards/ergoslab/rev1/rev1.c index 0e3e0fe996..115dab51e4 100644 --- a/keyboards/ergoslab/rev1/rev1.c +++ b/keyboards/ergoslab/rev1/rev1.c @@ -2,7 +2,7 @@ #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{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}}, diff --git a/keyboards/ergotravel/ergotravel.h b/keyboards/ergotravel/ergotravel.h index 7201db788d..314775495b 100644 --- a/keyboards/ergotravel/ergotravel.h +++ b/keyboards/ergotravel/ergotravel.h @@ -5,18 +5,3 @@ #endif #include "quantum.h" - -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \ - L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \ - L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \ - ) - diff --git a/keyboards/ergotravel/keymaps/ckofy/keymap.c b/keyboards/ergotravel/keymaps/ckofy/keymap.c deleted file mode 100644 index b9a2c140d8..0000000000 --- a/keyboards/ergotravel/keymaps/ckofy/keymap.c +++ /dev/null @@ -1,179 +0,0 @@ -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -#define _COLEMAK 0 -#define _QWERTY 1 -#define _NUMPAD 2 -#define _LOWER 3 -#define _RAISE 4 -#define _ADJUST 16 - -enum custom_keycodes { - COLEMAK = SAFE_RANGE, - QWERTY, - NUMPAD, - LOWER, - RAISE, - ADJUST, -}; - - -#define KC_ KC_TRNS -#define KC_XXXX KC_NO - -#define KC_CMK COLEMAK -#define KC_QWE QWERTY -#define KC_LOWR LOWER -#define KC_RASE RAISE -#define KC_QRAS QRAISE -#define KC_ADJT ADJUST -#define KC_RST RESET -#define KC_BL_S BL_STEP -#define KC_DBUG DEBUG -#define KC_RTOG RGB_TOG -#define KC_RMOD RGB_MOD -#define KC_RHUI RGB_HUI -#define KC_RHUD RGB_HUD -#define KC_RSAI RGB_SAI -#define KC_RSAD RGB_SAD -#define KC_RVAI RGB_VAI -#define KC_RVAD RGB_VAD -//#define KC_CATDEL LCTL(LALT(KC_DEL)) // Ctrl alt del -#define KC_CPY LCTL(KC_C) -#define KC_PST LCTL(KC_V) -#define KC_SELA LCTL(KC_A) -#define KC_UDO LCTL(KC_Z) -#define KC_CUT LCTL(KC_X) -#define KC_SVE LCTL(KC_S) -#define KC_OSH OSM(MOD_LSFT) -#define KC_OCTL OSM(MOD_LCTL) -#define KC_NUMP TT(_NUMPAD) -#define KC_SHESC MT(MOD_LSFT,KC_ESC) -#define KC_SHENT MT(MOD_RSFT,KC_ENT) -//#define KC_NUMP TG(_NUMPAD) // Toggle layer NUMPAD for use in KC_keymaps -//#define KC_RST RESET - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// Colemak Mod-DH is used. https://colemakmods.github.io/mod-dh/ - [_COLEMAK] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - TAB , Q , W , F , P , B ,LPRN, RPRN, J , L , U , Y ,SCLN,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - BSPC, A , R , S , T , G ,EQL , MINS, K , N , E , I , O ,QUOT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - SHESC, Z , X , C , D , V ,NUMP, ENT, M , H ,COMM,DOT ,SLSH,SHENT, - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - OCTL,LALT,LGUI,DEL ,LOWR, SPC, OSH, RASE,LEFT,RIGHT,RALT,RCTL - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ESC , Q , W , E , R , T ,LBRC, RBRC, Y , U , I , O , P ,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , A , S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B , , , N , M ,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - LCTL,LGUI,LALT,DEL , , SPC, SPC , ,LEFT,DOWN, UP ,RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_NUMPAD] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , , , , , , ,ASTR, P7 , P8 , P9 ,SLSH, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , ,PIPE, P4 , P5 , P6 ,MINS, , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , ,COMM, P1 , P2 , P3 ,PLUS, , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , P0 ,NLCK, , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_LOWER] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ,XXXX,XXXX,XXXX,XXXX,CAPS, , ,PGUP,HOME, UP ,END ,DEL , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,SELA,LALT,LSFT,LCTL,SVE , , ,PGDN,LEFT,DOWN,RGHT,BSPC,INS , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,UDO ,CUT ,CPY ,PST ,XXXX, , ,XXXX,XXXX,COMM,DOT ,SLSH, , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_RAISE] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ,AMPR,PERC,HASH,EXLM,LPRN, , ,ASTR,RPRN, AT ,DLR ,CIRC,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , 7 , 5 , 3 , 1 , 9 ,LBRC, RBRC, 8 , 0 , 2 , 4 , 6 ,BSLS, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , GRV,TILD,XXXX,EQL ,PLUS, , ,UNDS,MINS,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - - [_ADJUST] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , F1 , F2 , F3 , F4 , F5 , F6, F7, F8, F9 ,F10 , F11, F12,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , CMK,QWE , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , ,VOLD,VOLU,MUTE - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ) - -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - - } - return false; - break; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - } - return true; -} diff --git a/keyboards/ergotravel/keymaps/jpconstantineau/keymap.c b/keyboards/ergotravel/keymaps/jpconstantineau/keymap.c deleted file mode 100644 index 764b2b18c7..0000000000 --- a/keyboards/ergotravel/keymaps/jpconstantineau/keymap.c +++ /dev/null @@ -1,128 +0,0 @@ -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 16 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, -}; - -#define KC_ KC_TRNS - -#define KC_LOWR LOWER -#define KC_RASE RAISE -#define KC_ADJT ADJUST -#define KC_RST RESET -#define KC_BL_S BL_STEP -#define KC_DBUG DEBUG -#define KC_RTOG RGB_TOG -#define KC_RMOD RGB_MOD -#define KC_RHUI RGB_HUI -#define KC_RHUD RGB_HUD -#define KC_RSAI RGB_SAI -#define KC_RSAD RGB_SAD -#define KC_RVAI RGB_VAI -#define KC_RVAD RGB_VAD - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ESC , Q , W , E , R , T ,LBRC, RBRC, Y , U , I , O , P ,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , A , S , D , F , G , A, A, H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_LOWER] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - GRAVE, 1 , 2 , 3 , 4 , 5 , A, B, 6 , 7 , 8 , 9 , 0 ,DEL, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , F1 , F2 , F3 , F4 , F5 , F6 , D, Y ,MINS, EQL,LBRC,RBRC,BSLS, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, F7 , F8 , F9 , F10, F11, F12, SPC, N , M ,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_RAISE] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ESC , 1 , 2 , 3 , 4 , 5 , A, B, 6 , 7 , 8 , 9 , 0 ,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , Q , W , E , R , T , C , D, Y , U , I , O , P ,DEL , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_ADJUST] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - ESC , F1 , F2 , F3 , F4 , F5 , F6, F7, F8, F9 ,F10 , F11, F12,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - TAB , Q , W , E , R , T , C , D, Y , U , I , O , P ,DEL , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ) - -}; - - - - - -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 ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - } - return true; -} diff --git a/keyboards/ergotravel/keymaps/rs/keymap.c b/keyboards/ergotravel/keymaps/rs/keymap.c index 0cf1cb3622..f8c6de56bc 100644 --- a/keyboards/ergotravel/keymaps/rs/keymap.c +++ b/keyboards/ergotravel/keymaps/rs/keymap.c @@ -2,37 +2,37 @@ #include "rs.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT( //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - TAB , Q , W , E , R , T , GRV, BSLS, Y , U , I , O , P ,EQL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_GRV, KC_BSLS, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_EQL , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ESCC, A , S , D , F , G ,PIPE, MINS, H , J , K , L ,SCLN,QUOT, + KC_ESCC, KC_A , KC_S , KC_D , KC_F , KC_G ,KC_PIPE, KC_MINS, KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LSFT, Z , X , C , V , B , SPC, BSPC, N , M ,COMM,DOT ,SLSH,ENTS, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_SPC, KC_BSPC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ENTS, //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - FN , ,LCTL,LALT,LGUI, SPC, BSPC, CODE,LEFT, UP ,DOWN,RIGHT + KC_FN ,_______,KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_BSPC, KC_CODE,KC_LEFT, KC_UP ,KC_DOWN,KC_RIGHT //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' ), - [_CODE] = LAYOUT_kc( + [_CODE] = LAYOUT( //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - GRV ,EXLM, AT ,HASH, DLR,PERC, , ,CIRC,LPLT,ASTR,RPGT,NEQL, , + KC_GRV ,KC_EXLM, KC_AT ,KC_HASH, KC_DLR,KC_PERC,_______, _______,KC_CIRC,KC_LPLT,KC_ASTR,KC_RPGT,KC_NEQL,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , 1 , 2 , 3 , 4 , 5 , , ,MINS,LBRC, UP ,RBRC, ,BSLS, + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,_______, _______,KC_MINS,KC_LBRC, KC_UP ,KC_RBRC,_______,KC_BSLS, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , 6 , 7 , 8 , 9 , 0 , DOT, ,AMPR,LEFT,DOWN,RGHT, ,PIPE, + _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DOT, _______,KC_AMPR,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_PIPE, //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ //`----+----+----+----+----/----/ \----\----+----+----+----+----' ), - [_FN] = LAYOUT_kc( + [_FN] = LAYOUT( //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , F1 , F2 , F3 , F4 , F5 , , , F6 , F7 , F8 , F9 , F10,F11 , + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,_______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10,KC_F11 , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , ,BRMU, , , ,PGUP, , , , + _______,_______,_______,_______,_______,_______,KC_BRMU, _______,_______,_______,KC_PGUP,_______,_______,_______, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , RST,BRMD, VOLU, ,CTRA,PGDN,CTRE, , , + _______,_______,_______,_______,_______, KC_RST,KC_BRMD, KC_VOLU,_______,KC_CTRA,KC_PGDN,KC_CTRE,_______,_______, //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , VOLD,MUTE, , , , + _______,_______,_______,_______,_______,_______, KC_VOLD,KC_MUTE,_______,_______,_______,_______ //`----+----+----+----+----/----/ \----\----+----+----+----+----' ), -}; \ No newline at end of file +}; diff --git a/keyboards/ergotravel/keymaps/viet/keymap.c b/keyboards/ergotravel/keymaps/viet/keymap.c deleted file mode 100644 index dd7fffcc69..0000000000 --- a/keyboards/ergotravel/keymaps/viet/keymap.c +++ /dev/null @@ -1,326 +0,0 @@ -#include "ergotravel.h" -#include "action_layer.h" -#include "eeconfig.h" -#include "mousekey.h" -#include "process_unicode.h" -extern keymap_config_t keymap_config; - -#define _QWERTY 0 -#define _NUMBERS 1 -#define _SYMBOLS 2 -#define _CODING 3 -#define _NAVIGATION 4 -#define _ADJUST 16 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - ADJUST, - CODING_SPACE, - NUMBERS_SPACE, - SYMBOLS_SPACE, - NAVIGATE_SPACE, - TABLE_FLIP, - RESET_TABLE, - SHRUG, - LOOK_OF_DISAPPROVAL -}; - -#define KC_ KC_TRNS - -#define KC_ADJT MO(_ADJUST) -#define KC_RST RESET -#define KC_BL_S BL_STEP -#define KC_DBUG DEBUG -#define KC_RTOG RGB_TOG -#define KC_RMOD RGB_MOD -#define KC_RHUI RGB_HUI -#define KC_RHUD RGB_HUD -#define KC_RSAI RGB_SAI -#define KC_RSAD RGB_SAD -#define KC_RVAI RGB_VAI -#define KC_RVAD RGB_VAD - -#define KC_RSEN MT(MOD_RSFT, KC_ENT) // Tap for enter, hold for right shift - -#define KC_LCCA MT(MOD_LCTL, KC_CAPS) // Tap for caps lock, hold for left control -#define KC_SHDE MT(MOD_LSFT, KC_DEL) // Tap for delete, hold for left shift - -#define KC_NAVI MO(_NAVIGATION) - -#define KC_COSP CODING_SPACE -#define KC_NUSP NUMBERS_SPACE -#define KC_SYSP SYMBOLS_SPACE -#define KC_NASP NAVIGATE_SPACE - -#define KC_FLIP TABLE_FLIP -#define KC_TSET RESET_TABLE -#define KC_SRUG SHRUG -#define KC_DISA LOOK_OF_DISAPPROVAL -#define KC_RST RESET - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - TAB , Q , W , E , R , T ,HOME, PGUP, Y , U , I , O , P ,BSPC, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - LCCA, A , S , D , F , G ,END , PGDN, H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - SHDE, Z , X , C , V , B ,LGUI, RALT, N , M ,COMM,DOT ,SLSH,RSEN, - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - ESC ,ADJT,LALT,ENT ,NUSP,NASP, SYSP,COSP,RCTL,NAVI,ADJT,DEL - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_NUMBERS] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - GRAVE, 1 , 2 , 3 , 4 , 5 ,MPLY, VOLU, 6 , 7 , 8 , 9 , 0 , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , ,MNXT, VOLD,FLIP,TSET,SRUG,DISA, , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_SYMBOLS] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - GRAVE,EXLM, AT ,HASH,DLR ,PERC,MPLY, VOLU,CIRC,AMPR,ASTR,LPRN,RPRN,BSLS, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , ,MNXT, VOLD, , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_CODING] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , ,LCBR,RCBR, ,MPLY, VOLU, ,AMPR,PIPE,DLR , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , ,LPRN,RPRN, ,MNXT, VOLD, ,UNDS,MINS,ASTR, , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , ,LBRC,RBRC, , , , ,PLUS,EQL , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_NAVIGATION] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - , , , UP , , ,MPLY, VOLU,WH_U,BTN1,MS_U,BTN1, , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , ,LEFT,DOWN,RGHT, ,MNXT, VOLD,WH_D,MS_L,MS_D,MS_R, , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , , , , , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - - [_ADJUST] = LAYOUT_kc( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - F1 ,F2 ,F3 ,F4 ,F5 ,F6 , , ,F7 ,F8 ,F9 ,F10 ,F11 ,F12 , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,RTOG,RVAI,RHUI,RSAI, , , , , , , , , , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - ,RMOD,RVAD,RHUD,RSAD, , , ,RST , , , , , , - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - , , , , , , , , , , , - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ) - -}; - - -#ifdef AUDIO_ENABLE -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -#endif - -void persistent_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - -uint16_t custom_lt_timer; -keypos_t prv_key_pressed; -// Runs just one time when the keyboard initializes. -void matrix_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) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - if(record->event.pressed) prv_key_pressed = record->event.key; - #define IS_KEYPOS_SAME(keyone,keytwo) ((keyone.col==keytwo.col)&&(keyone.row==keytwo.row)) - #define ANOTHER_KEY_PRESSED (!IS_KEYPOS_SAME(prv_key_pressed, record->event.key)) - - inline void tap(uint16_t keycode) { - register_code(keycode); - unregister_code(keycode); - }; - - inline void swapInput(void) { - register_code(KC_LGUI); - tap(KC_SPC); - unregister_code(KC_LGUI); - }; - - 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 CODING_SPACE: - if (record->event.pressed) { - custom_lt_timer = timer_read(); - layer_on(_CODING); - } else { - layer_off(_CODING); - if (timer_elapsed(custom_lt_timer)<150 && (!ANOTHER_KEY_PRESSED)) { - register_code(KC_SPC); - unregister_code(KC_SPC); - } - } - return false; - break; - case NUMBERS_SPACE: - if (record->event.pressed) { - custom_lt_timer = timer_read(); - layer_on(_NUMBERS); - } else { - layer_off(_NUMBERS); - if (timer_elapsed(custom_lt_timer)<150 && (!ANOTHER_KEY_PRESSED)) { - register_code(KC_SPC); - unregister_code(KC_SPC); - } - } - return false; - break; - case SYMBOLS_SPACE: - if (record->event.pressed) { - custom_lt_timer = timer_read(); - layer_on(_SYMBOLS); - } else { - layer_off(_SYMBOLS); - if (timer_elapsed(custom_lt_timer)<150 && (!ANOTHER_KEY_PRESSED)) { - register_code(KC_SPC); - unregister_code(KC_SPC); - } - } - return false; - break; - case NAVIGATE_SPACE: - if (record->event.pressed) { - custom_lt_timer = timer_read(); - layer_on(_NAVIGATION); - } else { - layer_off(_NAVIGATION); - if (timer_elapsed(custom_lt_timer)<150 && (!ANOTHER_KEY_PRESSED)) { - register_code(KC_SPC); - unregister_code(KC_SPC); - } - } - return false; - break; - case TABLE_FLIP: - if (record->event.pressed) { - swapInput(); - - register_code(KC_RSFT); - tap(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); - unregister_code(KC_RSFT); - process_unicode((0x256F|QK_UNICODE), record); // Arm - tap(KC_SPC); - process_unicode((0x0361|QK_UNICODE), record); // Flippy - tap(KC_SPC); - process_unicode((0x253B|QK_UNICODE), record); // Table - process_unicode((0x2501|QK_UNICODE), record); // Table - process_unicode((0x253B|QK_UNICODE), record); // Table - - swapInput(); - } - return false; - break; - case RESET_TABLE: // ┬──┬ ノ( ゜-゜ノ) - if (record->event.pressed) { - swapInput(); - - process_unicode((0x252C|QK_UNICODE), record); // Table - process_unicode((0x2500|QK_UNICODE), record); // Table - process_unicode((0x2500|QK_UNICODE), record); // Table - process_unicode((0x252C|QK_UNICODE), record); // Table - tap(KC_SPC); - process_unicode((0x30CE|QK_UNICODE), record); // Arm - register_code(KC_RSFT); - tap(KC_9); - unregister_code(KC_RSFT); - tap(KC_SPC); - process_unicode((0x309C|QK_UNICODE), record); // Eye - tap(KC_MINS); - process_unicode((0x309C|QK_UNICODE), record); // Eye - process_unicode((0x30CE|QK_UNICODE), record); // Arm - register_code(KC_RSFT); - tap(KC_0); - unregister_code(KC_RSFT); - - swapInput(); - } - return false; - break; - case SHRUG: // ¯\_(ツ)_/¯ - if (record->event.pressed) { - swapInput(); - - process_unicode((0x00AF|QK_UNICODE), record); // Hand - tap(KC_BSLS); // Arm - register_code(KC_RSFT); - tap(KC_UNDS); // Arm - tap(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 - unregister_code(KC_RSFT); - tap(KC_SLSH); // Arm - process_unicode((0x00AF|QK_UNICODE), record); // Hand - - swapInput(); - } - return false; - break; - case LOOK_OF_DISAPPROVAL: // ಠ_ಠ - if(record->event.pressed){ - swapInput(); - - process_unicode((0x0CA0|QK_UNICODE), record); // Eye - register_code(KC_RSFT); - tap(KC_MINS); - unregister_code(KC_RSFT); - process_unicode((0x0CA0|QK_UNICODE), record); // Eye - - swapInput(); - } - return false; - break; - } - return true; -} diff --git a/keyboards/ergotravel/keymaps/viet/rules.mk b/keyboards/ergotravel/keymaps/viet/rules.mk deleted file mode 100644 index 24963d46b6..0000000000 --- a/keyboards/ergotravel/keymaps/viet/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -RGBLIGHT_ENABLE = yes -BACKLIGHT_ENABLE = no -UNICODE_ENABLE = yes - diff --git a/keyboards/espectro/rules.mk b/keyboards/espectro/rules.mk index 065014b97f..57a846fb3a 100755 --- a/keyboards/espectro/rules.mk +++ b/keyboards/espectro/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/eve/meteor/config.h b/keyboards/eve/meteor/config.h index 1e8c6ca052..a6b2c9b69d 100644 --- a/keyboards/eve/meteor/config.h +++ b/keyboards/eve/meteor/config.h @@ -36,5 +36,7 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/eve/meteor/meteor.c b/keyboards/eve/meteor/meteor.c index 1d080b389c..6bdb117f3a 100644 --- a/keyboards/eve/meteor/meteor.c +++ b/keyboards/eve/meteor/meteor.c @@ -15,19 +15,3 @@ */ #include "meteor.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/evolv/evolv.c b/keyboards/evolv/evolv.c index 276fac26fd..90df449ee2 100644 --- a/keyboards/evolv/evolv.c +++ b/keyboards/evolv/evolv.c @@ -17,12 +17,14 @@ along with this program. If not, see . #include "evolv.h" -__attribute__((weak)) void 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; if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } - } + } + return true; } diff --git a/keyboards/evolv/rules.mk b/keyboards/evolv/rules.mk index 13a44c3c63..b01db8134b 100644 --- a/keyboards/evolv/rules.mk +++ b/keyboards/evolv/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/evyd13/eon75/config.h b/keyboards/evyd13/eon75/config.h index 707665140d..d7d84de2a3 100644 --- a/keyboards/evyd13/eon75/config.h +++ b/keyboards/evyd13/eon75/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B7 +#define LED_CAPS_LOCK_PIN D5 +#define LED_SCROLL_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/eon75/eon75.c b/keyboards/evyd13/eon75/eon75.c index 67e9fe66a2..38620a6362 100644 --- a/keyboards/evyd13/eon75/eon75.c +++ b/keyboards/evyd13/eon75/eon75.c @@ -14,32 +14,3 @@ * along with this program. If not, see . */ #include "eon75.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 and high - setPinOutput(D5); - writePinHigh(D5); - - setPinOutput(B7); - writePinHigh(B7); - - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D5, !led_state.caps_lock); - writePin(B7, !led_state.num_lock); - writePin(B0, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/eon95/config.h b/keyboards/evyd13/eon95/config.h index eb44d8957e..2d9ede3ee2 100644 --- a/keyboards/evyd13/eon95/config.h +++ b/keyboards/evyd13/eon95/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B7 +#define LED_CAPS_LOCK_PIN D5 +#define LED_SCROLL_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/eon95/eon95.c b/keyboards/evyd13/eon95/eon95.c index 5eec86cc11..603d84a139 100644 --- a/keyboards/evyd13/eon95/eon95.c +++ b/keyboards/evyd13/eon95/eon95.c @@ -14,32 +14,3 @@ * along with this program. If not, see . */ #include "eon95.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 and high - setPinOutput(D5); - writePinHigh(D5); - - setPinOutput(B7); - writePinHigh(B7); - - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D5, !led_state.caps_lock); - writePin(B7, !led_state.num_lock); - writePin(B0, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/gh80_1800/config.h b/keyboards/evyd13/gh80_1800/config.h index c230aa9af8..26ad8a8b13 100644 --- a/keyboards/evyd13/gh80_1800/config.h +++ b/keyboards/evyd13/gh80_1800/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN D6 +#define LED_CAPS_LOCK_PIN D7 +#define LED_SCROLL_LOCK_PIN D4 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/gh80_1800/gh80_1800.c b/keyboards/evyd13/gh80_1800/gh80_1800.c index 770c6f78bf..1691b3949e 100644 --- a/keyboards/evyd13/gh80_1800/gh80_1800.c +++ b/keyboards/evyd13/gh80_1800/gh80_1800.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "gh80_1800.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(D6); - setPinOutput(D7); - setPinOutput(D4); - - writePinHigh(D6); - writePinHigh(D7); - writePinHigh(D4); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D6, !led_state.num_lock); - writePin(D7, !led_state.caps_lock); - writePin(D4, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/minitomic/config.h b/keyboards/evyd13/minitomic/config.h index c041e86a2a..f26b4d1d95 100644 --- a/keyboards/evyd13/minitomic/config.h +++ b/keyboards/evyd13/minitomic/config.h @@ -51,6 +51,9 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/minitomic/minitomic.c b/keyboards/evyd13/minitomic/minitomic.c index 8d5f11a50d..15f2829648 100644 --- a/keyboards/evyd13/minitomic/minitomic.c +++ b/keyboards/evyd13/minitomic/minitomic.c @@ -14,37 +14,3 @@ * along with this program. If not, see . */ #include "minitomic.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 matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_init_ports(void) { - //Set led pin as output, then high (off) - writePinHigh(C7); -} - -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(C7, !led_state.caps_lock); - } - return res; -} - diff --git a/keyboards/evyd13/mx5160/config.h b/keyboards/evyd13/mx5160/config.h index 926095a5d2..c65f81b879 100644 --- a/keyboards/evyd13/mx5160/config.h +++ b/keyboards/evyd13/mx5160/config.h @@ -55,6 +55,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/mx5160/mx5160.c b/keyboards/evyd13/mx5160/mx5160.c index c9e412da24..298c44fd49 100644 --- a/keyboards/evyd13/mx5160/mx5160.c +++ b/keyboards/evyd13/mx5160/mx5160.c @@ -14,45 +14,3 @@ * along with this program. If not, see . */ #include "mx5160.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 matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_init_ports(void) { - //Set led pin as output, then high (off) - - //Caps lock - setPinOutput(B1); - writePinHigh(B1); - - //Num lock - setPinOutput(B2); - writePinHigh(B2); - - //Scroll lock - setPinOutput(B3); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(B2, !led_state.num_lock); - writePin(B1, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/evyd13/nt660/config.h b/keyboards/evyd13/nt660/config.h index 0d9bbd3300..8638847142 100644 --- a/keyboards/evyd13/nt660/config.h +++ b/keyboards/evyd13/nt660/config.h @@ -53,6 +53,8 @@ along with this program. If not, see . */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN D0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/nt660/nt660.c b/keyboards/evyd13/nt660/nt660.c index 2a8ebfb46c..f89fa579c3 100644 --- a/keyboards/evyd13/nt660/nt660.c +++ b/keyboards/evyd13/nt660/nt660.c @@ -14,19 +14,3 @@ * along with this program. If not, see . */ #include "nt660.h" -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(D0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D0, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/evyd13/quackfire/config.h b/keyboards/evyd13/quackfire/config.h index 22083e8118..151219a016 100644 --- a/keyboards/evyd13/quackfire/config.h +++ b/keyboards/evyd13/quackfire/config.h @@ -52,6 +52,10 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN F7 +#define LED_SCROLL_LOCK_PIN F6 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/evyd13/quackfire/keymaps/default/keymap.c b/keyboards/evyd13/quackfire/keymaps/default/keymap.c index 79b0a7ebd6..9d84259659 100644 --- a/keyboards/evyd13/quackfire/keymaps/default/keymap.c +++ b/keyboards/evyd13/quackfire/keymaps/default/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ - * │ 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│ │ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ 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│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ */ 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, diff --git a/keyboards/evyd13/quackfire/quackfire.c b/keyboards/evyd13/quackfire/quackfire.c index ab233bd6d4..634d4187c6 100644 --- a/keyboards/evyd13/quackfire/quackfire.c +++ b/keyboards/evyd13/quackfire/quackfire.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "quackfire.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(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(F6); - setPinOutput(F7); - writePinHigh(F6); - writePinHigh(F7); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(F7, !led_state.caps_lock); - writePin(F6, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/ta65/keymaps/default/keymap.c b/keyboards/evyd13/ta65/keymaps/default/keymap.c index 8bb8a14ba0..5791f94057 100644 --- a/keyboards/evyd13/ta65/keymaps/default/keymap.c +++ b/keyboards/evyd13/ta65/keymaps/default/keymap.c @@ -18,7 +18,7 @@ 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) { switch(get_highest_layer(layer_state)){ case 1: //Layer 1 if (!clockwise) { // Remove ! to reverse direction @@ -35,4 +35,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { } break; } + return true; } diff --git a/keyboards/evyd13/ta65/keymaps/via/rules.mk b/keyboards/evyd13/ta65/keymaps/via/rules.mk index 1e5b99807c..43061db1dd 100644 --- a/keyboards/evyd13/ta65/keymaps/via/rules.mk +++ b/keyboards/evyd13/ta65/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/evyd13/wasdat/config.h b/keyboards/evyd13/wasdat/config.h index c064d18a58..75b75a0d2a 100644 --- a/keyboards/evyd13/wasdat/config.h +++ b/keyboards/evyd13/wasdat/config.h @@ -57,6 +57,11 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B0 +#define LED_SCROLL_LOCK_PIN B1 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/wasdat/keymaps/default/keymap.c b/keyboards/evyd13/wasdat/keymaps/default/keymap.c index 89de85c497..f1b11e201f 100644 --- a/keyboards/evyd13/wasdat/keymaps/default/keymap.c +++ b/keyboards/evyd13/wasdat/keymaps/default/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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 │ ; │ ' │  Enter │               │ 4 │ 5 │ 6 │   │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤ - * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ - * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ 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, diff --git a/keyboards/evyd13/wasdat/keymaps/default_iso/keymap.c b/keyboards/evyd13/wasdat/keymaps/default_iso/keymap.c index fdc61cea4b..6a470295bd 100644 --- a/keyboards/evyd13/wasdat/keymaps/default_iso/keymap.c +++ b/keyboards/evyd13/wasdat/keymaps/default_iso/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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 │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │               │ 4 │ 5 │ 6 │   │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤ - * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ - * │Ctrl│GUI │Alt │                        │AlGr│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │AlGr│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 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, diff --git a/keyboards/evyd13/wasdat/keymaps/via/keymap.c b/keyboards/evyd13/wasdat/keymaps/via/keymap.c index 9ad78d60d9..4195194507 100644 --- a/keyboards/evyd13/wasdat/keymaps/via/keymap.c +++ b/keyboards/evyd13/wasdat/keymaps/via/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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 │ ; │ ' │  Enter │               │ 4 │ 5 │ 6 │   │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤ - * │Shft│ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ - * │Ctrl│GUI │Alt │                        │ Alt│ GUI│FnMn│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│FnMn│Ctrl│ │ ← │ ↓ │ → │ │ 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, @@ -43,20 +43,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │Rst│   │   │   │   │   │ │   │   │   │   │ │   │   │   │   │ │   │   │   │ - * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤   │ - * │      │   │   │   │   │   │   │   │   │   │   │   │        │               │   │   │   │   │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │ - * │    │    │    │                        │    │    │    │    │ │   │   │   │ │       │   │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Rst│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ LAYOUT_all( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -69,20 +69,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │   │   │   │   │   │   │ │   │   │   │   │ │   │   │   │   │ │   │   │   │ - * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤   │ - * │      │   │   │   │   │   │   │   │   │   │   │   │        │               │   │   │   │   │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │ - * │    │    │    │                        │    │    │    │    │ │   │   │   │ │       │   │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/evyd13/wasdat/wasdat.c b/keyboards/evyd13/wasdat/wasdat.c index 2d0e999c4e..6aaa1b8427 100644 --- a/keyboards/evyd13/wasdat/wasdat.c +++ b/keyboards/evyd13/wasdat/wasdat.c @@ -14,34 +14,3 @@ * along with this program. If not, see . */ #include "wasdat.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(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B0); - writePinHigh(B0); - setPinOutput(B1); - writePinHigh(B1); - setPinOutput(B2); - writePinHigh(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B0, !led_state.caps_lock); - writePin(B1, !led_state.scroll_lock); - writePin(B2, !led_state.num_lock); - } - - return true; -} diff --git a/keyboards/evyd13/wasdat_code/config.h b/keyboards/evyd13/wasdat_code/config.h index 804839ee9a..4ac77f217d 100644 --- a/keyboards/evyd13/wasdat_code/config.h +++ b/keyboards/evyd13/wasdat_code/config.h @@ -57,6 +57,11 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B3 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/evyd13/wasdat_code/keymaps/default/keymap.c b/keyboards/evyd13/wasdat_code/keymaps/default/keymap.c index c73a2ececb..2a375ff028 100644 --- a/keyboards/evyd13/wasdat_code/keymaps/default/keymap.c +++ b/keyboards/evyd13/wasdat_code/keymaps/default/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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 │ ; │ ' │  Enter │               │ 4 │ 5 │ 6 │   │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤ - * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ - * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ 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, diff --git a/keyboards/evyd13/wasdat_code/keymaps/default_iso/keymap.c b/keyboards/evyd13/wasdat_code/keymaps/default_iso/keymap.c index fdc61cea4b..6a470295bd 100644 --- a/keyboards/evyd13/wasdat_code/keymaps/default_iso/keymap.c +++ b/keyboards/evyd13/wasdat_code/keymaps/default_iso/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │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 │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │               │ 4 │ 5 │ 6 │   │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤ - * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ - * │Ctrl│GUI │Alt │                        │AlGr│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │AlGr│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 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, diff --git a/keyboards/evyd13/wasdat_code/wasdat_code.c b/keyboards/evyd13/wasdat_code/wasdat_code.c index 33551c2d0c..c1cdadea9e 100644 --- a/keyboards/evyd13/wasdat_code/wasdat_code.c +++ b/keyboards/evyd13/wasdat_code/wasdat_code.c @@ -14,34 +14,3 @@ * along with this program. If not, see . */ #include "wasdat_code.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(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B1); - setPinOutput(B2); - setPinOutput(B3); - writePinHigh(B1); - writePinHigh(B2); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B1, !led_state.caps_lock); - writePin(B2, !led_state.scroll_lock); - writePin(B3, !led_state.num_lock); - } - - return true; -} diff --git a/keyboards/evyd13/wonderland/config.h b/keyboards/evyd13/wonderland/config.h index 908c8a7855..c5c7a8b6c6 100644 --- a/keyboards/evyd13/wonderland/config.h +++ b/keyboards/evyd13/wonderland/config.h @@ -43,6 +43,11 @@ along with this program. If not, see . /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + /* Backlight configuration */ #define RGB_DI_PIN B7 diff --git a/keyboards/evyd13/wonderland/wonderland.c b/keyboards/evyd13/wonderland/wonderland.c index 4415443816..f2a53a17a4 100644 --- a/keyboards/evyd13/wonderland/wonderland.c +++ b/keyboards/evyd13/wonderland/wonderland.c @@ -1,34 +1 @@ #include "wonderland.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(); - led_init_ports(); -}; - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; - -__attribute__ ((weak)) -void led_init_ports(void) { - // * Set our LED pins as output - setPinOutput(B1); - setPinOutput(B2); - setPinOutput(B3); -} - -bool led_update_kb(led_t led_state) { - bool runDefault = led_update_user(led_state); - if (runDefault) { - writePin(B1, !led_state.num_lock); - writePin(B2, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return runDefault; -} diff --git a/keyboards/exclusive/e65/config.h b/keyboards/exclusive/e65/config.h index bc0f1a1ed7..1d43011b80 100644 --- a/keyboards/exclusive/e65/config.h +++ b/keyboards/exclusive/e65/config.h @@ -39,6 +39,9 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ #define BACKLIGHT_PIN B7 #ifdef BACKLIGHT_PIN diff --git a/keyboards/exclusive/e65/e65.c b/keyboards/exclusive/e65/e65.c index e01a0614c5..feb0e65438 100644 --- a/keyboards/exclusive/e65/e65.c +++ b/keyboards/exclusive/e65/e65.c @@ -15,24 +15,3 @@ */ #include "e65.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(B6); - writePinHigh(B6); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B6, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/exclusive/e6_rgb/rules.mk b/keyboards/exclusive/e6_rgb/rules.mk index e9db9676b3..7fbd7e81f0 100644 --- a/keyboards/exclusive/e6_rgb/rules.mk +++ b/keyboards/exclusive/e6_rgb/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/exclusive/e6v2/le_bmc/config.h b/keyboards/exclusive/e6v2/le_bmc/config.h index e9e8c9e533..8115f4ae12 100644 --- a/keyboards/exclusive/e6v2/le_bmc/config.h +++ b/keyboards/exclusive/e6v2/le_bmc/config.h @@ -44,6 +44,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c index df79cc5dcf..e36cfd645d 100644 --- a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c +++ b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c @@ -15,19 +15,3 @@ */ #include "le_bmc.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/exclusive/e6v2/oe_bmc/config.h b/keyboards/exclusive/e6v2/oe_bmc/config.h index f4abd2112d..3f2a50cdef 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/config.h +++ b/keyboards/exclusive/e6v2/oe_bmc/config.h @@ -44,6 +44,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c index ea74d87cb1..10dd1a26ed 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c +++ b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c @@ -15,19 +15,3 @@ */ #include "oe_bmc.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/exent/config.h b/keyboards/exent/config.h index 6b37bdd1c8..c6f4452708 100644 --- a/keyboards/exent/config.h +++ b/keyboards/exent/config.h @@ -1,52 +1,85 @@ -/* -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 . -*/ +/* 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 0x5143 // "QC" #define PRODUCT_ID 0x4558 // "EX" #define DEVICE_VER 0x0001 #define MANUFACTURER Quadcube #define PRODUCT Exent -#define RGBLED_NUM 18 - +/* key matrix size */ #define MATRIX_ROWS 7 #define MATRIX_COLS 14 -// 0 1 2 3 4 5 6 7 8 9 A B C D +/* + * 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 } #define MATRIX_COL_PINS { D7, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3, A1, A0 } -#define UNUSED_PINS +#define UNUSED_PINS +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -#define DEBOUNCE 5 + +#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 RGBLED_NUM 18 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + #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) +/* + * 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_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/exent/exent.c b/keyboards/exent/exent.c index a935e9e67f..82066f7e85 100644 --- a/keyboards/exent/exent.c +++ b/keyboards/exent/exent.c @@ -15,23 +15,3 @@ */ #include "exent.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/exent/exent.h b/keyboards/exent/exent.h index 256457c5ce..bfb11c7384 100644 --- a/keyboards/exent/exent.h +++ b/keyboards/exent/exent.h @@ -13,56 +13,57 @@ * 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 XXX KC_NO #define LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k6d, k53, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ - k40, k41, k42, k44, k45, k46, k47, 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, k2d }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ - { k40, k41, k42, ___, k44, k45, k46, k47, k48, k49, ___, k4b, k4c, k4d }, \ - { k50, k51, k52, k53, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6d } \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k6d, k53, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ + k40, k41, k42, k44, k45, k46, k47, 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, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, XXX, k44, k45, k46, k47, k48, k49, XXX, k4b, k4c, k4d }, \ + { k50, k51, k52, k53, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k6d } \ } #define LAYOUT_65_ansi( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k53, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k51, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ - k40, k41, k42, k45, k47, 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, ___, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ - { k40, k41, k42, ___, ___, k45, ___, k47, k48, k49, ___, k4b, k4c, k4d }, \ - { k50, k51, k52, k53, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k53, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k51, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ + k40, k41, k42, k45, k47, 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, XXX, k2d }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, k47, k48, k49, XXX, k4b, k4c, k4d }, \ + { k50, k51, k52, k53, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ } #define LAYOUT_65_iso( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k53, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k52, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ - k40, k41, k42, k45, k47, 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, ___ }, \ - { 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, ___, k47, k48, k49, ___, k4b, k4c, k4d }, \ - { k50, k51, k52, k53, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k53, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k52, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \ + k40, k41, k42, k45, k47, 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, 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, XXX, XXX, k45, XXX, k47, k48, k49, XXX, k4b, k4c, k4d }, \ + { k50, k51, k52, k53, 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/exent/info.json b/keyboards/exent/info.json index 920a9ffe3d..07f7c49320 100644 --- a/keyboards/exent/info.json +++ b/keyboards/exent/info.json @@ -1,20 +1,243 @@ { - "keyboard_name": "Exent", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 5, + "keyboard_name": "Exent", + "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}] - }, + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"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}, - "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}] + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.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} + ] }, + "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}] + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"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/exent/keymaps/default/keymap.c b/keyboards/exent/keymaps/default/keymap.c index 943b1133e7..0a018c77c1 100644 --- a/keyboards/exent/keymaps/default/keymap.c +++ b/keyboards/exent/keymaps/default/keymap.c @@ -1,18 +1,34 @@ +/* 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] = { - /* layer 0: qwerty */ [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_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, 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_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_RGUI, KC_RCTL, 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_DEL, KC_TRNS, - BL_TOGG, BL_STEP, BL_INC, BL_DEC, RESET, 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, - KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, 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_GRV, KC_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_STEP, BL_INC, BL_DEC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/exent/keymaps/default/readme.md b/keyboards/exent/keymaps/default/readme.md deleted file mode 100644 index 9d596e699f..0000000000 --- a/keyboards/exent/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for exent diff --git a/keyboards/exent/keymaps/via/keymap.c b/keyboards/exent/keymaps/via/keymap.c index 7b16375958..6b36e43bd9 100644 --- a/keyboards/exent/keymaps/via/keymap.c +++ b/keyboards/exent/keymaps/via/keymap.c @@ -1,33 +1,48 @@ +/* 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] = { - /* layer 0: qwerty */ [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_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, 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_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_RGUI, KC_RCTL, 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_DEL, KC_TRNS, - BL_TOGG, BL_STEP, BL_INC, BL_DEC, RESET, 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, - KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, 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_GRV, KC_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_STEP, BL_INC, BL_DEC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), [2] = 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), - - + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), [3] = 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/exent/readme.md b/keyboards/exent/readme.md index a98eff5f03..d30bed91a5 100644 --- a/keyboards/exent/readme.md +++ b/keyboards/exent/readme.md @@ -1,6 +1,6 @@ -# exent +# Exent -65% custom keyboard with large bezels. +65% custom keyboard with large bezels. * Keyboard Maintainer: [mechmerlin](https://github.com/mechmerlin) * Hardware Supported: Exent PCB diff --git a/keyboards/exent/rules.mk b/keyboards/exent/rules.mk index 0bafc86814..12aec0f594 100644 --- a/keyboards/exent/rules.mk +++ b/keyboards/exent/rules.mk @@ -2,23 +2,22 @@ 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 = no -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = yes +# 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 = yes # Commands for debug and configuration +# 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 LAYOUTS = 65_ansi 65_iso diff --git a/keyboards/eyeohdesigns/babyv/babyv.c b/keyboards/eyeohdesigns/babyv/babyv.c new file mode 100644 index 0000000000..5a01ea2c91 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/babyv.c @@ -0,0 +1,17 @@ +/* Copyright 2020 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 "babyv.h" diff --git a/keyboards/eyeohdesigns/babyv/babyv.h b/keyboards/eyeohdesigns/babyv/babyv.h new file mode 100644 index 0000000000..749e16f353 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/babyv.h @@ -0,0 +1,71 @@ +/* Copyright 2020 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" + +#define LAYOUT_1u( \ + 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, 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, KC_NO, KC_NO, k33, k34, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \ + } + +#define LAYOUT_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, 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, KC_NO, KC_NO, k33, KC_NO, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \ + } + +#define LAYOUT_1u_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, k33, k34, 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, KC_NO, KC_NO, k33, k34, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \ + } +#define LAYOUT_2u_1u( \ + 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, k33, 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, KC_NO, KC_NO, k33, KC_NO, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \ + } + \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/config.h b/keyboards/eyeohdesigns/babyv/config.h new file mode 100644 index 0000000000..c49a039df2 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2020 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 babyv + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + + +#define MATRIX_ROW_PINS { B5, D2, D5, D3 } +#define MATRIX_COL_PINS { D0, D1, B4, D7, D6, D4, B0, B1, B2, F0, F1, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN B7 +#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 */ +// /*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS + + +/* 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/eyeohdesigns/babyv/info.json b/keyboards/eyeohdesigns/babyv/info.json new file mode 100644 index 0000000000..1ff70463a4 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/info.json @@ -0,0 +1,22 @@ +{ + "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}] + }, + "LAYOUT_1u": { + "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}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + }, + "LAYOUT_1u2u": { + "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}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + }, + "LAYOUT_2u1u": { + "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}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"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 new file mode 100644 index 0000000000..ef2c32108b --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2020 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 QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [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 + ), + [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( + KC_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, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c new file mode 100644 index 0000000000..86f4efffe4 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 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 QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [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 + ), + [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( + KC_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, + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_RCTL + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c new file mode 100644 index 0000000000..7963db77eb --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2020 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 QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [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 + ), + [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( + KC_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, + KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c new file mode 100644 index 0000000000..2b071bd854 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 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 QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + QWERTY, + FUNCT, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [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 + ), + [FUNCT] = 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( + KC_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, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_LGUI + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/readme.md b/keyboards/eyeohdesigns/babyv/readme.md new file mode 100644 index 0000000000..b3cd4f7035 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/readme.md @@ -0,0 +1,19 @@ +# babyV + +![babyV](https://i.imgur.com/iRUm9I5l.jpg) + +babyV is a 40% ortholinear take on the EM7/Alice layout. + +* Keyboard Maintainer: [Eye Oh Designs](https://github.com/joedinkle) +* Hardware Supported: babyV ver 1.00 +* Hardware Availability: Groupbuy ran from Nov - Dec 2020 + +Make example for this keyboard (after setting up your build environment): + + make eyeohdesigns/babyv:default + +Flashing example for this keyboard: + + make eyeohdesigns/babyv: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/eyeohdesigns/babyv/rules.mk b/keyboards/eyeohdesigns/babyv/rules.mk new file mode 100644 index 0000000000..b26342b202 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/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 # 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/eyeohdesigns/readme.md b/keyboards/eyeohdesigns/readme.md new file mode 100644 index 0000000000..7710bfc154 --- /dev/null +++ b/keyboards/eyeohdesigns/readme.md @@ -0,0 +1,13 @@ +# eye oh designs + +When I'm not spending time with family, or busy with work, I make keyboards that I hope you'll love. + +Stay up to date with my projects on Instagram: @eyeohdesigns + +I post on reddit and Geekhack as joedinkle + +![Longbow](https://i.imgur.com/nZz3tII.jpg) + +![SPRH](https://imgur.com/DHR0beSl.jpg) + +![S50](https://imgur.com/9aGFOUi.jpg) diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h index 5966429cac..14583dc831 100644 --- a/keyboards/facew/config.h +++ b/keyboards/facew/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/facew/facew.c b/keyboards/facew/facew.c index 2f091ae6bd..373dbc6cd6 100644 --- a/keyboards/facew/facew.c +++ b/keyboards/facew/facew.c @@ -16,21 +16,3 @@ along with this program. If not, see . */ #include "facew.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk index 54fadc8264..b4ed65362c 100644 --- a/keyboards/fc660c/rules.mk +++ b/keyboards/fc660c/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +# 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 diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h index 8400d2cdab..b74ca64a5c 100644 --- a/keyboards/fc980c/config.h +++ b/keyboards/fc980c/config.h @@ -21,11 +21,14 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x4853 #define PRODUCT_ID 0x980C #define DEVICE_VER 0x0100 -#define MANUFACTURER QMK -#define PRODUCT Leopold FC980C with QMK +#define MANUFACTURER Hasu +#define PRODUCT FC980C + +/* Maximum dynamic keymap layers (constrained by EEPROM space) */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 /* key matrix size */ #define MATRIX_ROWS 8 diff --git a/keyboards/fc980c/keymaps/via/keymap.c b/keyboards/fc980c/keymaps/via/keymap.c new file mode 100644 index 0000000000..f498cd43a0 --- /dev/null +++ b/keyboards/fc980c/keymaps/via/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2017 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 . +*/ +#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_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_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, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_APP, _______, KC_HOME, KC_PGDN, KC_END, _______, _______), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/fc980c/keymaps/via/rules.mk b/keyboards/fc980c/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/fc980c/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk index 54fadc8264..b4ed65362c 100644 --- a/keyboards/fc980c/rules.mk +++ b/keyboards/fc980c/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +# 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 diff --git a/keyboards/feels/feels65/config.h b/keyboards/feels/feels65/config.h new file mode 100644 index 0000000000..f311a44834 --- /dev/null +++ b/keyboards/feels/feels65/config.h @@ -0,0 +1,36 @@ +/* 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 0xE965 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Feels65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* default pinout */ +#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 } +#define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/feels/feels65/feels65.c b/keyboards/feels/feels65/feels65.c new file mode 100644 index 0000000000..dc8b7664ab --- /dev/null +++ b/keyboards/feels/feels65/feels65.c @@ -0,0 +1,16 @@ +/* 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 "feels65.h" diff --git a/keyboards/feels/feels65/feels65.h b/keyboards/feels/feels65/feels65.h new file mode 100644 index 0000000000..be11e22ccd --- /dev/null +++ b/keyboards/feels/feels65/feels65.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 "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, 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 } \ +} + +#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, 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 new file mode 100644 index 0000000000..29692c4c07 --- /dev/null +++ b/keyboards/feels/feels65/info.json @@ -0,0 +1,26 @@ +{ + "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} + ] + } + } +} diff --git a/keyboards/feels/feels65/keymaps/default/keymap.c b/keyboards/feels/feels65/keymaps/default/keymap.c new file mode 100644 index 0000000000..480173ee17 --- /dev/null +++ b/keyboards/feels/feels65/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* 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_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_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_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_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 + ), +}; \ No newline at end of file diff --git a/keyboards/feels/feels65/keymaps/via/keymap.c b/keyboards/feels/feels65/keymaps/via/keymap.c new file mode 100644 index 0000000000..144cf061a6 --- /dev/null +++ b/keyboards/feels/feels65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* 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_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_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_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 + ), + [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 + ), + [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 + ), +}; \ No newline at end of file diff --git a/keyboards/feels/feels65/keymaps/via/rules.mk b/keyboards/feels/feels65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/feels/feels65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/feels/feels65/readme.md b/keyboards/feels/feels65/readme.md new file mode 100644 index 0000000000..c7eecc5e73 --- /dev/null +++ b/keyboards/feels/feels65/readme.md @@ -0,0 +1,13 @@ +# Feels65 + +65% Keyboard. Physical Reset button on PCB and bootmagic to enter bootloader + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Feels65 PCB +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make feels/feels65: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/feels/feels65/rules.mk b/keyboards/feels/feels65/rules.mk new file mode 100644 index 0000000000..cb34a6b405 --- /dev/null +++ b/keyboards/feels/feels65/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 = lite # 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 = 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/felix/rules.mk b/keyboards/felix/rules.mk index 01db7a2123..1fcdf216c5 100644 --- a/keyboards/felix/rules.mk +++ b/keyboards/felix/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/ferris/0_1/matrix.c b/keyboards/ferris/0_1/matrix.c index e13c35d358..0dfb150b6c 100644 --- a/keyboards/ferris/0_1/matrix.c +++ b/keyboards/ferris/0_1/matrix.c @@ -72,40 +72,25 @@ uint8_t init_mcp23017(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(IODIRA, I2C_TIMEOUT); - if (mcp23017_status) goto out; // This means: we will read all the bits on GPIOA - mcp23017_status = i2c_write(0b11111111, I2C_TIMEOUT); - if (mcp23017_status) goto out; // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - mcp23017_status = i2c_write(0b11110000, I2C_TIMEOUT); - if (mcp23017_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPPUA, I2C_TIMEOUT); - if (mcp23017_status) goto out; - // This means: we will read all the bits on GPIOA - mcp23017_status = i2c_write(0b11111111, I2C_TIMEOUT); - if (mcp23017_status) goto out; - // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - mcp23017_status = i2c_write(0b11110000, I2C_TIMEOUT); - if (mcp23017_status) goto out; - -out: - i2c_stop(); + uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + if (!mcp23017_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), I2C_TIMEOUT); + } return mcp23017_status; } /* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; // debounced values +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values static matrix_row_t read_cols(uint8_t row); static void init_cols(void); @@ -124,7 +109,7 @@ void matrix_init_custom(void) { // initialize matrix state: all keys off for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; + matrix[i] = 0; } } @@ -217,25 +202,18 @@ static matrix_row_t read_cols(uint8_t row) { if (mcp23017_status) { // if there was an error return 0; } else { - uint8_t data = 0; - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPIOA, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_read_nack(I2C_TIMEOUT); - if (mcp23017_status < 0) goto out; + uint8_t buf[] = {GPIOA}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); // We read all the pins on GPIOA. // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. - data = ~((uint8_t)mcp23017_status); - mcp23017_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); - // return reverse_bits(data, MATRIX_COLS_PER_SIDE); - return data; + uint8_t data[] = {0}; + if (!mcp23017_status) { + mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), I2C_TIMEOUT); + data[0] = ~(data[0]); + } + return data[0]; } } } @@ -266,17 +244,10 @@ static void select_row(uint8_t row) { if (mcp23017_status) { // if there was an error // do nothing } else { - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPIOB, I2C_TIMEOUT); - if (mcp23017_status) goto out; // 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. - mcp23017_status = i2c_write(0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE)), I2C_TIMEOUT); - - if (mcp23017_status) goto out; - out: - i2c_stop(); + uint8_t buf[] = {GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); } } } diff --git a/keyboards/ferris/0_1/readme.md b/keyboards/ferris/0_1/readme.md new file mode 100644 index 0000000000..336ee3863e --- /dev/null +++ b/keyboards/ferris/0_1/readme.md @@ -0,0 +1,17 @@ +# Ferris 0.1 + +![Ferris 0.1 - base, top view](https://i.imgur.com/s6nTn0Ch.jpg) +![Ferris 0.1 - base, bottom view](https://i.imgur.com/Ymlac2Ah.jpg) + +An atmega32u4 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) + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.1: atmega32u4 chip. Comes in 4 variants: base, low, 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. + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_1: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/0_2.c b/keyboards/ferris/0_2/0_2.c new file mode 100644 index 0000000000..519961dd38 --- /dev/null +++ b/keyboards/ferris/0_2/0_2.c @@ -0,0 +1,17 @@ +/* +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 . +*/ +#include "0_2.h" diff --git a/keyboards/ferris/0_2/0_2.h b/keyboards/ferris/0_2/0_2.h new file mode 100644 index 0000000000..4602637ca6 --- /dev/null +++ b/keyboards/ferris/0_2/0_2.h @@ -0,0 +1,43 @@ +/* +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 + +#include "quantum.h" + +// clang-format off + +/* left hand right hand */ +#define LAYOUT(\ + K0_0, K0_1, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9,\ + K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9,\ + K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9,\ + K3_3, K3_4, K3_5, K3_6)\ +/* matrix positions */\ +{\ + {K0_0, K0_1, K0_2, K0_3, K0_4},\ + {K1_0, K1_1, K1_2, K1_3, K1_4},\ + {K2_0, K2_1, K2_2, K2_3, K2_4},\ + {KC_NO, KC_NO, KC_NO, K3_3, K3_4},\ + \ + {K0_5, K0_6, K0_7, K0_8, K0_9},\ + {K1_5, K1_6, K1_7, K1_8, K1_9},\ + {K2_5, K2_6, K2_7, K2_8, K2_9},\ + {K3_5, K3_6, KC_NO, KC_NO, KC_NO}\ +} + +// clang-format on diff --git a/keyboards/durgod/k320/chconf.h b/keyboards/ferris/0_2/chconf.h similarity index 87% rename from keyboards/durgod/k320/chconf.h rename to keyboards/ferris/0_2/chconf.h index 374a030039..c72955f65d 100644 --- a/keyboards/durgod/k320/chconf.h +++ b/keyboards/ferris/0_2/chconf.h @@ -16,15 +16,13 @@ /* * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/durgod/k320/chconf.h -r platforms/chibios/common/configs/chconf.h` + * `qmk chibios-confmigrate -i keyboards/ferris/0_2/chconf.h -r platforms/chibios/common/configs/chconf.h` */ #pragma once #define CH_CFG_ST_FREQUENCY 10000 -#define CH_CFG_ST_TIMEDELTA 0 - #define CH_CFG_OPTIMIZE_SPEED FALSE #define CH_CFG_USE_REGISTRY TRUE @@ -40,4 +38,3 @@ #define CH_CFG_USE_MAILBOXES TRUE #include_next - diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h new file mode 100644 index 0000000000..958cf4356d --- /dev/null +++ b/keyboards/ferris/0_2/config.h @@ -0,0 +1,80 @@ +/* +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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC2AB +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Pierre +#define PRODUCT Ferris the keeb + +/* 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) + +#define UNUSED_MCU 24 +#define UNUSED_MCP 7 + +// wiring +#define MATRIX_ROW_PINS_MCU \ + { B7, B6, B5, A2 } +#define MATRIX_COL_PINS_MCU \ + { B8, B4, B3, A15, A14 } +#define UNUSED_PINS_MCU \ + { A0, A1, A3, A4, A5, A6, A7, A8, A9, A10, A13, B0, B1, B2, B9, B12, B13, B14, B15, C13, C14, C15, F0, F1 } +#define MATRIX_ROW_PINS_MCP \ + { B0, B1, B2, B3 } +#define MATRIX_COL_PINS_MCP \ + { A0, A1, A2, A3, A4 } +#define UNUSED_PINS_MCP \ + { B4, B5, B6, B7, A5, A6, A7 } + +#define MATRIX_ROW_PINS \ + { B7, B6, B5, A2, A0, A0, A0, A0 } +#define MATRIX_COL_PINS \ + { B8, B4, B3, A15, A14, A1, A1, A1, A1, A1 } +#define UNUSED_PINS \ + { A3, A4, A5, A6, A7, A8, A9, A10, A13, B0, B1, B2, B9, B12, B13, B14, B15, C13, C14, C15, F0, F1 } + +/* 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 + +/* 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_TIMINGR_PRESC 2U +#define I2C1_TIMINGR_SCLDEL 1U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 9U +#define I2C1_TIMINGR_SCLL 26U +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 diff --git a/keyboards/function96/halconf.h b/keyboards/ferris/0_2/halconf.h similarity index 87% rename from keyboards/function96/halconf.h rename to keyboards/ferris/0_2/halconf.h index 9a62a78015..037cbbdb40 100644 --- a/keyboards/function96/halconf.h +++ b/keyboards/ferris/0_2/halconf.h @@ -16,12 +16,15 @@ /* * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/function96/halconf.h -r platforms/chibios/common/configs/halconf.h` + * `qmk chibios-confmigrate -i keyboards/ferris/0_2/halconf.h -r platforms/chibios/common/configs/halconf.h` */ #pragma once +#define HAL_USE_I2C TRUE + #define HAL_USE_PWM TRUE -#include_next +#define HAL_USE_SPI TRUE +#include_next diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c new file mode 100644 index 0000000000..afa8a344cd --- /dev/null +++ b/keyboards/ferris/0_2/matrix.c @@ -0,0 +1,255 @@ +/* +Copyright 2013 Oleg Kostyuk + 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 . +*/ + +/* + * 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" +#include + +extern i2c_status_t mcp23017_status; +#define MCP23017_I2C_TIMEOUT 1000 +#define I2C_WRITE 0x00 +#define I2C_READ 0x01 +// For a better understanding of the i2c protocol, this is a good read: +// https://www.robot-electronics.co.uk/i2c-tutorial + +// I2C address: +// See the datasheet, section 3.3.1 on addressing I2C devices and figure 3-6 for an +// illustration +// http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf +// All address pins of the mcp23017 are connected to the ground on the ferris +// | 0 | 1 | 0 | 0 | A2 | A1 | A0 | +// | 0 | 1 | 0 | 0 | 0 | 0 | 0 | +#define I2C_ADDR 0b0100000 +#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE) +#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ) + +// Register addresses +// See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h +#define IODIRA 0x00 // i/o direction register +#define IODIRB 0x01 +#define GPPUA 0x0C // GPIO pull-up resistor register +#define GPPUB 0x0D +#define MCP23017_GPIOA 0x12 // general purpose i/o port register (write modifies OLAT) +#define MCP23017_GPIOB 0x13 +#define OLATA 0x14 // output latch register +#define OLATB 0x15 + +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; + + // I2C subsystem + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized = true; + wait_ms(MCP23017_I2C_TIMEOUT); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000}; + print("before transmit\n"); + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); + uprintf("after transmit %i\n", mcp23017_status); + if (!mcp23017_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), MCP23017_I2C_TIMEOUT); + uprintf("after transmit2 %i\n", mcp23017_status); + } + return mcp23017_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 unselect_row(uint8_t row); +static void unselect_rows(void); +static void unselect_cols(void); +static void select_row(uint8_t row); + +static uint8_t mcp23017_reset_loop; + +static void init_mcu_pins(void) { + unselect_rows(); + unselect_cols(); +} + +void matrix_init_custom(void) { + debug_enable = true; + debug_matrix = true; + dprint("matrix_init_custom\n"); + // initialize row and col + init_mcu_pins(); + mcp23017_status = init_mcp23017(); + + // 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 (mcp23017_status) { // if there was an error + if (++mcp23017_reset_loop == 0) { + // if (++mcp23017_reset_loop >= 1300) { + // since mcp23017_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 mcp23017\n"); + mcp23017_status = init_mcp23017(); + if (mcp23017_status) { + print("right side not responding\n"); + } else { + print("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; + + changed |= store_matrix_row(current_matrix, left_index); + changed |= store_matrix_row(current_matrix, right_index); + + unselect_rows(); + } + + return changed; +} + +static matrix_row_t read_cols(uint8_t row) { + select_row(row); + if (row < MATRIX_ROWS_PER_SIDE) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU; + matrix_row_t current_row_value = 0; + matrix_io_delay(); + // 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); + } + unselect_row(row); + return current_row_value; + } else { + // we don't need a 30us delay anymore, because selecting a + // right-hand row requires more than 30us for i2c. + if (mcp23017_status) { // if there was an error + return 0; + } else { + uint8_t buf[] = {MCP23017_GPIOA}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); + // We read all the pins on GPIOA. + // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. + // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. + // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. + uint8_t data[] = {0}; + if (!mcp23017_status) { + mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), MCP23017_I2C_TIMEOUT); + data[0] = ~(data[0]); + } + return data[0]; + } + } +} + +static void unselect_row(uint8_t row) { + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU; + setPinInputHigh(matrix_row_pins_mcu[row]); +} + +static void unselect_rows(void) { + // no need to unselect on mcp23017, 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_MCU; + for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) { + pin_t pin = matrix_row_pins_mcu[pin_index]; + setPinInputHigh(pin); + } +} +static void unselect_cols(void) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU; + for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) { + pin_t pin = matrix_col_pins_mcu[pin_index]; + setPinInputHigh(pin); + } +} + +static void select_row(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + // select on MCU + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU; + pin_t pin = matrix_row_pins_mcu[row]; + setPinOutput(pin); + writePinLow(pin); + } else { + // select on mcp23017 + if (mcp23017_status) { // if there was an error + // do nothing + } else { + // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. + // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. + uint8_t buf[] = {MCP23017_GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + } + } +} diff --git a/keyboards/ferris/0_2/mcuconf.h b/keyboards/ferris/0_2/mcuconf.h new file mode 100644 index 0000000000..05d37e7bcd --- /dev/null +++ b/keyboards/ferris/0_2/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/ferris/0_2/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C2 +#define STM32_I2C_USE_I2C2 TRUE + +#undef STM32_I2C_USE_DMA +#define STM32_I2C_USE_DMA FALSE + +#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/ferris/0_2/readme.md b/keyboards/ferris/0_2/readme.md new file mode 100644 index 0000000000..bd98ce8ad1 --- /dev/null +++ b/keyboards/ferris/0_2/readme.md @@ -0,0 +1,17 @@ +# 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) + +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) + +* 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. + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2: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/rules.mk b/keyboards/ferris/0_2/rules.mk new file mode 100644 index 0000000000..f1a66061ce --- /dev/null +++ b/keyboards/ferris/0_2/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# 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 +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/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json index 7f7d614e20..5fe1b9e00a 100644 --- a/keyboards/ferris/keymaps/default/keymap.json +++ b/keyboards/ferris/keymaps/default/keymap.json @@ -1,7 +1,7 @@ { "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": "handwired/ferris", + "keyboard": "ferris/0_1", "keymap": "default", "layout": "LAYOUT", "layers": [ diff --git a/keyboards/ferris/keymaps/default/readme.md b/keyboards/ferris/keymaps/default/readme.md index 252f886f52..aa7ba6d13b 100644 --- a/keyboards/ferris/keymaps/default/readme.md +++ b/keyboards/ferris/keymaps/default/readme.md @@ -111,7 +111,7 @@ To edit it, you may: 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/handwired/ferris/keymaps/default/keymap.json`) +* Browse to the location of your keymap (for example, `/keyboards/ferris/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: diff --git a/keyboards/ferris/keymaps/pierrec83/keymap.json b/keyboards/ferris/keymaps/pierrec83/keymap.json index 2372e7e372..1f2c166b9c 100644 --- a/keyboards/ferris/keymaps/pierrec83/keymap.json +++ b/keyboards/ferris/keymaps/pierrec83/keymap.json @@ -1,7 +1,7 @@ { "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": "handwired/ferris", + "keyboard": "ferris/0_1", "keymap": "pierrec83", "layout": "LAYOUT", "layers": [ diff --git a/keyboards/ferris/keymaps/test/config.h b/keyboards/ferris/keymaps/test/config.h new file mode 100644 index 0000000000..f784af4d11 --- /dev/null +++ b/keyboards/ferris/keymaps/test/config.h @@ -0,0 +1,20 @@ +/* +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 + +#define DEBUG_MATRIX_SCAN_RATE diff --git a/keyboards/ferris/keymaps/test/keymap.c b/keyboards/ferris/keymaps/test/keymap.c new file mode 100644 index 0000000000..30e2e9cff1 --- /dev/null +++ b/keyboards/ferris/keymaps/test/keymap.c @@ -0,0 +1,13 @@ +#include QMK_KEYBOARD_H + +void matrix_init_user(void) { + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} + +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_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P0, DEBUG, KC_P2, KC_P3) +}; + diff --git a/keyboards/ferris/keymaps/test/readme.md b/keyboards/ferris/keymaps/test/readme.md new file mode 100644 index 0000000000..c3b3fe90e3 --- /dev/null +++ b/keyboards/ferris/keymaps/test/readme.md @@ -0,0 +1,5 @@ +# A test keymap for the Ferris keyboard + +This keymap is not intended to be used to use the Ferris as a usable keyboard, but rather it is meant to be a very simple keymap used to test the hardware works properly. It can also be used to test firmware being written for new versions with a minimum amount of complexity coming from the keymap itself. + +The keymap is composed of a single qwerty layer with a unique digit bound to each non-alpha key. diff --git a/keyboards/ferris/keymaps/test/rules.mk b/keyboards/ferris/keymaps/test/rules.mk new file mode 100644 index 0000000000..15b7f725b2 --- /dev/null +++ b/keyboards/ferris/keymaps/test/rules.mk @@ -0,0 +1 @@ +CONSOLE_ENABLE = yes diff --git a/keyboards/ferris/readme.md b/keyboards/ferris/readme.md index 74a08a38fe..84ac85b57f 100644 --- a/keyboards/ferris/readme.md +++ b/keyboards/ferris/readme.md @@ -1,19 +1,20 @@ # Ferris -![Ferris, top view](https://imgur.com/V4QuaGs.jpg) -![Ferris, bottom view](https://i.imgur.com/7DJYME8.jpg) +![Ferris, familly pic](https://i.imgur.com/TCjkquRh.jpeg) A 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) * Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) * Hardware Supported: * 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. Make examples for this keyboard (after setting up your build environment): make ferris/0_1:default + make ferris/0_2: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/readme.md b/keyboards/ferris/sweep/readme.md new file mode 100644 index 0000000000..d7102aa1a0 --- /dev/null +++ b/keyboards/ferris/sweep/readme.md @@ -0,0 +1,18 @@ +# Ferris sweep + +![Ferris sweep, top view](https://i.imgur.com/5qCZUv6h.jpg) +![Ferris sweep, bottom view](https://i.imgur.com/ZC47CJth.jpg) + +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 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. + +Make examples for this keyboard (after setting up your build environment): + + 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). diff --git a/keyboards/ffkeebs/siris/config.h b/keyboards/ffkeebs/siris/config.h new file mode 100644 index 0000000000..6b7733b361 --- /dev/null +++ b/keyboards/ffkeebs/siris/config.h @@ -0,0 +1,48 @@ +/* +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 0xE96C +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Siris + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { D2, D1, D0, B7, B3, B2, F0, F1, F4, F5, F6, F7 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define ENCODERS_PAD_A { D3, C6 } +#define ENCODERS_PAD_B { D5, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 diff --git a/keyboards/ffkeebs/siris/info.json b/keyboards/ffkeebs/siris/info.json new file mode 100644 index 0000000000..cc03e69e2f --- /dev/null +++ b/keyboards/ffkeebs/siris/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Siris", + "url": "https: //github.com/swiftrax", + "maintainer": "Swiftrax", + "width": 16, + "height": 5.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"0,0", "x":0, "y":0.375}, + {"label":"0,1", "x":1, "y":0.375}, + {"label":"0,2", "x":2, "y":0.125}, + {"label":"0,3", "x":3, "y":0}, + {"label":"0,4", "x":4, "y":0.125}, + {"label":"0,5", "x":5, "y":0.25}, + {"label":"0,6", "x":10, "y":0.25}, + {"label":"0,7", "x":11, "y":0.125}, + {"label":"0,8", "x":12, "y":0}, + {"label":"0,9", "x":13, "y":0.125}, + {"label":"0,10", "x":14, "y":0.375}, + {"label":"0,11", "x":15, "y":0.375}, + + {"label":"1,0", "x":0, "y":1.375}, + {"label":"1,1", "x":1, "y":1.375}, + {"label":"1,2", "x":2, "y":1.125}, + {"label":"1,3", "x":3, "y":1}, + {"label":"1,4", "x":4, "y":1.125}, + {"label":"1,5", "x":5, "y":1.25}, + {"label":"1,6", "x":10, "y":1.25}, + {"label":"1,7", "x":11, "y":1.125}, + {"label":"1,8", "x":12, "y":1}, + {"label":"1,9", "x":13, "y":1.125}, + {"label":"1,10", "x":14, "y":1.375}, + {"label":"1,11", "x":15, "y":1.375}, + + {"label":"2,0", "x":0, "y":2.375}, + {"label":"2,1", "x":1, "y":2.375}, + {"label":"2,2", "x":2, "y":2.125}, + {"label":"2,3", "x":3, "y":2}, + {"label":"2,4", "x":4, "y":2.125}, + {"label":"2,5", "x":5, "y":2.25}, + {"label":"4,5", "x":6.25, "y":2.625}, + {"label":"4,6", "x":8.75, "y":2.625}, + {"label":"2,6", "x":10, "y":2.25}, + {"label":"2,7", "x":11, "y":2.125}, + {"label":"2,8", "x":12, "y":2}, + {"label":"2,9", "x":13, "y":2.125}, + {"label":"2,10", "x":14, "y":2.375}, + {"label":"2,11", "x":15, "y":2.375}, + + {"label":"3,0", "x":0, "y":3.375}, + {"label":"3,1", "x":1, "y":3.375}, + {"label":"3,2", "x":2, "y":3.125}, + {"label":"3,3", "x":3, "y":3}, + {"label":"3,4", "x":4, "y":3.125}, + {"label":"3,5", "x":5, "y":3.25}, + {"label":"3,6", "x":10, "y":3.25}, + {"label":"3,7", "x":11, "y":3.125}, + {"label":"3,8", "x":12, "y":3}, + {"label":"3,9", "x":13, "y":3.125}, + {"label":"3,10", "x":14, "y":3.375}, + {"label":"3,11", "x":15, "y":3.375}, + + {"label":"4,2", "x":3.75, "y":4.15}, + {"label":"4,3", "x":4.75, "y":4.25}, + {"x":6, "y":4.5, "w":1.5}, + {"x":8.5, "y":4.5, "w":1.5}, + {"label":"4,8", "x":10.25, "y":4.25}, + {"label":"4,0", "x":11.25, "y":4.15} + ] + } + } +} diff --git a/keyboards/ffkeebs/siris/keymaps/default/keymap.c b/keyboards/ffkeebs/siris/keymaps/default/keymap.c new file mode 100644 index 0000000000..b775184152 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/default/keymap.c @@ -0,0 +1,63 @@ +/* +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( + 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_BSPC), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +}; + +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/ffkeebs/siris/keymaps/via/keymap.c b/keyboards/ffkeebs/siris/keymaps/via/keymap.c new file mode 100644 index 0000000000..b775184152 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +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( + 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_BSPC), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +}; + +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/ffkeebs/siris/keymaps/via/rules.mk b/keyboards/ffkeebs/siris/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/readme.md b/keyboards/ffkeebs/siris/readme.md new file mode 100644 index 0000000000..355dc591a5 --- /dev/null +++ b/keyboards/ffkeebs/siris/readme.md @@ -0,0 +1,13 @@ +# Siris + +Hotswap fixed split keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Siris +* Hardware Availability: https://ffkeebs.com/ + +Make example for this keyboard (after setting up your build environment): + + make ffkeebs/siris: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/ffkeebs/siris/rules.mk b/keyboards/ffkeebs/siris/rules.mk new file mode 100644 index 0000000000..912413f26c --- /dev/null +++ b/keyboards/ffkeebs/siris/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 = 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 +ENCODER_ENABLE = yes # Rotary Encoder \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/siris.c b/keyboards/ffkeebs/siris/siris.c new file mode 100644 index 0000000000..cfd505773a --- /dev/null +++ b/keyboards/ffkeebs/siris/siris.c @@ -0,0 +1,17 @@ +/* +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 "siris.h" diff --git a/keyboards/ffkeebs/siris/siris.h b/keyboards/ffkeebs/siris/siris.h new file mode 100644 index 0000000000..13956bcceb --- /dev/null +++ b/keyboards/ffkeebs/siris/siris.h @@ -0,0 +1,37 @@ +/* +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 "quantum.h" + +// readability +#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, \ + K20, K21, K22, K23, K24, K25, K45, K46, K26, K27, K28, K29, K2A, K2B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K42, K43, K44, 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 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B }, \ + { XXX, XXX, K42, K43, K44, K45, K46, K47, K48, K49, XXX, XXX } \ +} diff --git a/keyboards/fjlabs/bks65solder/bks65solder.c b/keyboards/fjlabs/bks65solder/bks65solder.c new file mode 100644 index 0000000000..0ebf9000df --- /dev/null +++ b/keyboards/fjlabs/bks65solder/bks65solder.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 "bks65solder.h" diff --git a/keyboards/fjlabs/bks65solder/bks65solder.h b/keyboards/fjlabs/bks65solder/bks65solder.h new file mode 100644 index 0000000000..1a238c50da --- /dev/null +++ b/keyboards/fjlabs/bks65solder/bks65solder.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" + +/* 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 \ +) { \ + { K00, K01, K02, K03, K04, 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, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/fjlabs/bks65solder/config.h b/keyboards/fjlabs/bks65solder/config.h new file mode 100644 index 0000000000..94bb5157e6 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/config.h @@ -0,0 +1,108 @@ +/* +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 // FJLabs +#define PRODUCT_ID 0x0099 // BKS65 Solder +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT BKS65 Solder + +/* 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 RGB Underglow */ +#define RGB_DI_PIN B0 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS +/* #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/bks65solder/info.json b/keyboards/fjlabs/bks65solder/info.json new file mode 100644 index 0000000000..3dc952347c --- /dev/null +++ b/keyboards/fjlabs/bks65solder/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "BKS65 Solder", + "url": "https://www.bolsakeyboardsupply.com", + "maintainer": "FJLabs", + "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}, + {"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, "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/fjlabs/bks65solder/keymaps/default/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c new file mode 100644 index 0000000000..15133a2eed --- /dev/null +++ b/keyboards/fjlabs/bks65solder/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_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 + ), + + [_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 + ) +}; diff --git a/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c new file mode 100644 index 0000000000..032e879b0a --- /dev/null +++ b/keyboards/fjlabs/bks65solder/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_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 + ), + + [_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 + ), + + [_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 + ), + + [_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 + ), + +}; diff --git a/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk b/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/bks65solder/readme.md b/keyboards/fjlabs/bks65solder/readme.md new file mode 100644 index 0000000000..736a6ba3c3 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/readme.md @@ -0,0 +1,19 @@ +# BKS65 Solder + +The following is the QMK Firmware for the [BolsaKeyboardSupply](https://www.bolsakeyboardsupply.com) BKS65 Solder PCB, a universal, tray mount 65% solder PCB. + +The PCB will feature: +* QMK & VIA compatibility +* Underglow +* Some cool bolsa branding + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: BKS65 Solder + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/bks65solder: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/fjlabs/bks65solder/rules.mk b/keyboards/fjlabs/bks65solder/rules.mk new file mode 100644 index 0000000000..5f75863ba6 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.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/midway60/config.h b/keyboards/fjlabs/midway60/config.h new file mode 100644 index 0000000000..d5a39c89c0 --- /dev/null +++ b/keyboards/fjlabs/midway60/config.h @@ -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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1002 // Midway60 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT Midway60 + +/* 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 { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 } +#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/midway60/info.json b/keyboards/fjlabs/midway60/info.json new file mode 100644 index 0000000000..c398eab1ec --- /dev/null +++ b/keyboards/fjlabs/midway60/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Midway60", + "url": "https://www.bolsakeyboardsupply.com", + "maintainer": "FJLabs", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_60": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"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}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/midway60/keymaps/default/keymap.c b/keyboards/fjlabs/midway60/keymaps/default/keymap.c new file mode 100644 index 0000000000..3ef29c17bc --- /dev/null +++ b/keyboards/fjlabs/midway60/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_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 + ), + + [_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_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 + ) +}; diff --git a/keyboards/fjlabs/midway60/keymaps/via/keymap.c b/keyboards/fjlabs/midway60/keymaps/via/keymap.c new file mode 100644 index 0000000000..38eef49274 --- /dev/null +++ b/keyboards/fjlabs/midway60/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_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 + ), + + [_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_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_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 + ), + + [_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 + ), + +}; diff --git a/keyboards/fjlabs/midway60/keymaps/via/rules.mk b/keyboards/fjlabs/midway60/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/midway60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/midway60/midway60.c b/keyboards/fjlabs/midway60/midway60.c new file mode 100644 index 0000000000..10d8088a29 --- /dev/null +++ b/keyboards/fjlabs/midway60/midway60.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 "midway60.h" diff --git a/keyboards/fjlabs/midway60/midway60.h b/keyboards/fjlabs/midway60/midway60.h new file mode 100644 index 0000000000..2311f983e7 --- /dev/null +++ b/keyboards/fjlabs/midway60/midway60.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" + +/* Midway60 Keymap Definitions */ +#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, K3C, K3D, \ + 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 }, \ + { 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, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/midway60/readme.md b/keyboards/fjlabs/midway60/readme.md new file mode 100644 index 0000000000..ca99f9f307 --- /dev/null +++ b/keyboards/fjlabs/midway60/readme.md @@ -0,0 +1,20 @@ +# Midway60 + +The following is the QMK Firmware for the [BolsaKeyboardSupply](https://www.bolsakeyboardsupply.com) Midway60 PCB. + +The PCB will feature: +* QMK & VIA compatibility +* Some cool bolsa branding + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: Midway60 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/midway60: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 can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file diff --git a/keyboards/fjlabs/midway60/rules.mk b/keyboards/fjlabs/midway60/rules.mk new file mode 100644 index 0000000000..622c26a3a1 --- /dev/null +++ b/keyboards/fjlabs/midway60/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 = 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 = 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/polaris/config.h b/keyboards/fjlabs/polaris/config.h new file mode 100644 index 0000000000..d622778ce0 --- /dev/null +++ b/keyboards/fjlabs/polaris/config.h @@ -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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLaboratories +#define PRODUCT_ID 0x9001 // Polaris HS and Solder +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLaboratories +#define PRODUCT Polaris + +/* 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 { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 } +#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/polaris/info.json b/keyboards/fjlabs/polaris/info.json new file mode 100644 index 0000000000..a9e9f4bb4b --- /dev/null +++ b/keyboards/fjlabs/polaris/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Polaris Hotswap and Solder", + "url": "http://www.fjlaboratories.com/projects/", + "maintainer": "FJLabs", + "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} + ] + } + } +} diff --git a/keyboards/fjlabs/polaris/keymaps/default/keymap.c b/keyboards/fjlabs/polaris/keymaps/default/keymap.c new file mode 100644 index 0000000000..63db51de27 --- /dev/null +++ b/keyboards/fjlabs/polaris/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_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_TRNS, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RGUI, 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_BSPC, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/polaris/keymaps/via/keymap.c b/keyboards/fjlabs/polaris/keymaps/via/keymap.c new file mode 100644 index 0000000000..f1d6bccfd1 --- /dev/null +++ b/keyboards/fjlabs/polaris/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_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_TRNS, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RGUI, 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_BSPC, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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 + ), + + [_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 + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/polaris/keymaps/via/rules.mk b/keyboards/fjlabs/polaris/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/polaris/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/polaris/polaris.c b/keyboards/fjlabs/polaris/polaris.c new file mode 100644 index 0000000000..ff9357769c --- /dev/null +++ b/keyboards/fjlabs/polaris/polaris.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 "polaris.h" diff --git a/keyboards/fjlabs/polaris/polaris.h b/keyboards/fjlabs/polaris/polaris.h new file mode 100644 index 0000000000..e29545f3d1 --- /dev/null +++ b/keyboards/fjlabs/polaris/polaris.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" + +/* Polaris HS and Solder Keymap Definitions */ +#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, K3C, K3D, \ + K40, K41, K42, K43, K46, K48, 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, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, K43, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/polaris/readme.md b/keyboards/fjlabs/polaris/readme.md new file mode 100644 index 0000000000..e611430f4d --- /dev/null +++ b/keyboards/fjlabs/polaris/readme.md @@ -0,0 +1,14 @@ +# Polaris-Compatible Hotswap and Solder PCB's + +The following is the QMK Firmware for the Polaris-Compatible Hotswap and Solder PCB's developed by FJLaboratories (FJLabs). +* Keyboard Maintainer: FJLabs +* Hardware Supported: Polaris Hotswap and Solder + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/polaris: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 can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file diff --git a/keyboards/fjlabs/polaris/rules.mk b/keyboards/fjlabs/polaris/rules.mk new file mode 100644 index 0000000000..622c26a3a1 --- /dev/null +++ b/keyboards/fjlabs/polaris/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 = 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 = 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/flehrad/numbrero/rules.mk b/keyboards/flehrad/numbrero/rules.mk index 969dd0b507..d834071397 100644 --- a/keyboards/flehrad/numbrero/rules.mk +++ b/keyboards/flehrad/numbrero/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/flehrad/snagpad/rules.mk b/keyboards/flehrad/snagpad/rules.mk index 566a398feb..fbc918ba4d 100644 --- a/keyboards/flehrad/snagpad/rules.mk +++ b/keyboards/flehrad/snagpad/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/flehrad/tradestation/rules.mk b/keyboards/flehrad/tradestation/rules.mk index d3612c3c29..cf6c47d74b 100644 --- a/keyboards/flehrad/tradestation/rules.mk +++ b/keyboards/flehrad/tradestation/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/fleuron/rules.mk b/keyboards/fleuron/rules.mk index 36e2f74657..b18c5723ae 100644 --- a/keyboards/fleuron/rules.mk +++ b/keyboards/fleuron/rules.mk @@ -30,4 +30,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 RGBLIGHT_ENABLE = yes -LAYOUTS = ortho_6x16 + +#LAYOUTS = ortho_6x16 # Disabled because layouts directory does not have an ortho_6x16 layout set up. diff --git a/keyboards/flxlb/zplit/config.h b/keyboards/flxlb/zplit/config.h new file mode 100644 index 0000000000..83fe084844 --- /dev/null +++ b/keyboards/flxlb/zplit/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2021 fluxlab +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 0x7076 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER fluxlab +#define PRODUCT zplit + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, F5, F4, F1 } +#define MATRIX_COL_PINS { B2, B3, D6, D7, B4, B5 } +// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order + +#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 + +/* configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 +#define SELECT_SOFT_SERIAL_SPEED 1 +// #define USE_I2C +#define SPLIT_USB_DETECT +#define SPLIT_USB_TIMEOUT 500 + +#define ENCODERS_PAD_A { B0 } +#define ENCODERS_PAD_B { D2 } + +/* 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 D3 +#define RGBLED_NUM 16 +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8} +#define RGBLED_SPLIT { 8, 8 } +#define RGBLIGHT_SPLIT +#define RGBLIGHT_ANIMATIONS + +/* + * 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/flxlb/zplit/info.json b/keyboards/flxlb/zplit/info.json new file mode 100644 index 0000000000..7cf3f0078a --- /dev/null +++ b/keyboards/flxlb/zplit/info.json @@ -0,0 +1,12 @@ +{ + "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}] + } + } +} diff --git a/keyboards/keebio/levinson/keymaps/jyh/config.h b/keyboards/flxlb/zplit/keymaps/via/config.h similarity index 88% rename from keyboards/keebio/levinson/keymaps/jyh/config.h rename to keyboards/flxlb/zplit/keymaps/via/config.h index d3e598bd09..a157047f7a 100644 --- a/keyboards/keebio/levinson/keymaps/jyh/config.h +++ b/keyboards/flxlb/zplit/keymaps/via/config.h @@ -17,13 +17,12 @@ GNU General Public License 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 - -/* Tap Dance timing */ -#define TAPPING_TERM 150 - -/* Toggling layer requires # taps */ -#define TAPPING_TOGGLE 2 +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/flxlb/zplit/keymaps/via/keymap.c b/keyboards/flxlb/zplit/keymaps/via/keymap.c new file mode 100644 index 0000000000..6c5651be4d --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +/* 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/readme.md b/keyboards/flxlb/zplit/readme.md new file mode 100644 index 0000000000..e5f88c9df5 --- /dev/null +++ b/keyboards/flxlb/zplit/readme.md @@ -0,0 +1,13 @@ +# fluxlab zplit + +![zplit](https://i.imgur.com/eN4aSG1l.png) + +Zplit is a 40% split keyboard inspired by the Zlant and similar to Zinc. It has a symmetrical layout to provide a more natural typing experience. + +* Keyboard Maintainer: [flxlb](https://flxlb.ca) + +Make example for this keyboard (after setting up your build environment): + + make flxlb/zplit: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/flxlb/zplit/rules.mk b/keyboards/flxlb/zplit/rules.mk new file mode 100644 index 0000000000..121bba1dfc --- /dev/null +++ b/keyboards/flxlb/zplit/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 # 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 = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.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/flxlb/zplit/zplit.c b/keyboards/flxlb/zplit/zplit.c new file mode 100644 index 0000000000..25956640a7 --- /dev/null +++ b/keyboards/flxlb/zplit/zplit.c @@ -0,0 +1,17 @@ +/* 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 "zplit.h" diff --git a/keyboards/flxlb/zplit/zplit.h b/keyboards/flxlb/zplit/zplit.h new file mode 100644 index 0000000000..6a90efa8af --- /dev/null +++ b/keyboards/flxlb/zplit/zplit.h @@ -0,0 +1,37 @@ + /* 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 . + */ + +#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, 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 } \ + } diff --git a/keyboards/foostan/cornelius/info.json b/keyboards/foostan/cornelius/info.json index cc98321691..3df1269e94 100644 --- a/keyboards/foostan/cornelius/info.json +++ b/keyboards/foostan/cornelius/info.json @@ -1,12 +1,61 @@ { - "keyboard_name": "cornelius", - "url": "", - "maintainer": "qmk", - "width": 7.55, - "height": 6.11, - "layouts": { - "LAYOUT": { - "layout": [{"label":"E", "x":2.5, "y":0}, {"label":"R", "x":3.5, "y":0.125}, {"label":"W", "x":1.5, "y":0.25}, {"label":"T", "x":4.5, "y":0.25}, {"label":"Tab", "x":-0.5, "y":0.625}, {"label":"Q", "x":0.5, "y":0.625}, {"label":"D", "x":2.5, "y":1}, {"label":"F", "x":3.5, "y":1.125}, {"label":"S", "x":1.5, "y":1.25}, {"label":"G", "x":4.5, "y":1.25}, {"label":"Esc", "x":-0.5, "y":1.625}, {"label":"A", "x":0.5, "y":1.625}, {"label":"C", "x":2.5, "y":2}, {"label":"V", "x":3.5, "y":2.125}, {"label":"X", "x":1.5, "y":2.25}, {"label":"B", "x":4.5, "y":2.25}, {"label":"Shift", "x":-0.5, "y":2.625}, {"label":"Z", "x":0.5, "y":2.625}, {"label":"Win", "x":1.5, "y":3.25}, {"label":"Alt", "x":3, "y":3.25}, {"label":"Fn", "x":-0.5, "y":3.625}, {"label":"Ctrl", "x":0.5, "y":3.625}, {"label":"Lower", "x":4.97, "y":2.11}, {"x":6.55, "y":0.48}, {"x":-7.55, "y":1.94}, {"label":"Raise", "x":-5.95, "y":3.58}, {"label":"I", "x":-3.5, "y":1.48}, {"label":"U", "x":-4.5, "y":1.605}, {"label":"Y", "x":-5.5, "y":1.73}, {"label":"O", "x":-2.5, "y":1.73}, {"label":"P", "x":-1.5, "y":2.105}, {"label":"Bksp", "x":-0.5, "y":2.105}, {"label":"K", "x":-3.5, "y":2.48}, {"label":"J", "x":-4.5, "y":2.605}, {"label":"H", "x":-5.5, "y":2.73}, {"label":"L", "x":-2.5, "y":2.73}, {"label":":", "x":-1.5, "y":3.105}, {"label":"\"", "x":-0.5, "y":3.105}, {"label":"<", "x":-3.5, "y":3.48}, {"label":"M", "x":-4.5, "y":3.605}, {"label":"N", "x":-5.5, "y":3.73}, {"label":">", "x":-2.5, "y":3.73}, {"label":"?", "x":-1.5, "y":4.105}, {"label":"Shift", "x":-0.5, "y":4.105}, {"label":"Alt", "x":-4, "y":4.73}, {"label":"Win", "x":-2.5, "y":4.73}, {"label":"Ctrl", "x":-1.5, "y":5.105}, {"label":"Fn", "x":-0.5, "y":5.105}] + "keyboard_name":"cornelius", + "url":"", + "maintainer":"foostan", + "width":14, + "height":8.5, + "layouts":{ + "LAYOUT":{ + "layout":[ + {"label":"Tab", "x":0,"y":0.625}, + {"label":"Q", "x":1,"y":0.625}, + {"label":"W", "x":2,"y":0.25}, + {"label":"E", "x":3,"y":0}, + {"label":"R", "x":4,"y":0.125}, + {"label":"T", "x":5,"y":0.25}, + {"label":"Y", "x":8,"y":0.25}, + {"label":"U", "x":9,"y":0.125}, + {"label":"I", "x":10,"y":0}, + {"label":"O", "x":11,"y":0.25}, + {"label":"P", "x":12,"y":0.625}, + {"label":"Bksp", "x":13,"y":0.625}, + {"label":"Esc", "x":0,"y":1.625}, + {"label":"A", "x":1,"y":1.625}, + {"label":"S", "x":2,"y":1.25}, + {"label":"D", "x":3,"y":1}, + {"label":"F", "x":4,"y":1.125}, + {"label":"G", "x":5,"y":1.25}, + {"label":"H", "x":8,"y":1.25}, + {"label":"J", "x":9,"y":1.125}, + {"label":"K", "x":10,"y":1}, + {"label":"L", "x":11,"y":1.25}, + {"label":":", "x":12,"y":1.625}, + {"label":"\"", "x":13,"y":1.625}, + {"label":"Shift", "x":0,"y":2.625}, + {"label":"Z", "x":1,"y":2.625}, + {"label":"X", "x":2,"y":2.25}, + {"label":"C", "x":3,"y":2}, + {"label":"V", "x":4,"y":2.125}, + {"label":"B", "x":5,"y":2.25}, + {"label":"N", "x":8,"y":2.25}, + {"label":"M", "x":9,"y":2.125}, + {"label":"<", "x":10,"y":2}, + {"label":">", "x":11,"y":2.25}, + {"label":"?", "x":12,"y":2.625}, + {"label":"Shift", "x":13,"y":2.625}, + {"label":"Fn", "x":0,"y":3.625}, + {"label":"Ctrl", "x":1,"y":3.625}, + {"label":"Win", "x":2,"y":3.25}, + {"label":"Alt", "x":3.5,"y":3.25}, + {"label":"Lower", "x":4.5,"y":3.5}, + {"x":5.5,"y":3.75}, + {"x":7.5,"y":3.75}, + {"label":"Raise", "x":8.5,"y":3.5}, + {"label":"Alt", "x":9.5,"y":3.25}, + {"label":"Win", "x":11,"y":3.25}, + {"label":"Ctrl", "x":12,"y":3.625}, + {"label":"Fn", "x":13,"y":3.625} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/forever65/config.h b/keyboards/forever65/config.h new file mode 100644 index 0000000000..4ea906b5a7 --- /dev/null +++ b/keyboards/forever65/config.h @@ -0,0 +1,71 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* 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 + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE diff --git a/keyboards/forever65/info.json b/keyboards/forever65/info.json new file mode 100644 index 0000000000..3615a39310 --- /dev/null +++ b/keyboards/forever65/info.json @@ -0,0 +1,169 @@ +{ + "keyboard_name": "forever65", + "manufacturer": "Nightingale Studios", + "maintainer": "zvecr", + "processor": "STM32F072", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A3", "F1", "F0", "C15", "C14", "C13", "B11", "B10", "B2", "B1", "B0", "A7", "A5", "A6", "A4", "B5"], + "rows": ["B15", "B14", "B13", "B12", "B6"] + }, + "usb": { + "vid": "0x4E53", + "pid": "0x0F65", + "device_ver": "0x0001" + }, + "features": { + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "!", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "@", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "#", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "$", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "%", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "^", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "&", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "*", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "(", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": ")", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "_", "x": 11, "y": 0 }, + { "matrix": [0, 12], "label": "+", "x": 12, "y": 0 }, + { "matrix": [0, 13], "label": "Backspace", "w": 2, "x": 13, "y": 0 }, + { "matrix": [1, 0], "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "Q", "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "label": "W", "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "label": "E", "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "label": "R", "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "label": "T", "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "label": "Y", "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "label": "U", "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "label": "I", "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "label": "O", "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "label": "P", "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "label": "{", "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "label": "}", "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 15], "label": "Delete", "x": 15, "y": 1 }, + { "matrix": [2, 0], "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "A", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "S", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "D", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "F", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "G", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "H", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "J", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "K", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": "L", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": ":", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\"", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 15], "label": "PgUp", "x": 15, "y": 2 }, + { "matrix": [3, 0], "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Z", "x": 2.25, "y": 3 }, + { "matrix": [3, 2], "label": "X", "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "label": "C", "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "label": "V", "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "label": "B", "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "label": "N", "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "label": "M", "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "label": "<", "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "label": ">", "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "label": "?", "x": 11.25, "y": 3 }, + { "matrix": [3, 11], "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "label": "Up", "x": 14, "y": 3 }, + { "matrix": [3, 15], "label": "PgDn", "x": 15, "y": 3 }, + { "matrix": [4, 0], "label": "Ctrl", "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "label": "Win", "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "label": "Alt", "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 4], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "label": "Alt", "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "label": "Ctrl", "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "label": "Left", "x": 13, "y": 4 }, + { "matrix": [4, 13], "label": "Down", "x": 14, "y": 4 }, + { "matrix": [4, 15], "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "!", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "@", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "#", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "$", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "%", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "^", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "&", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "*", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "(", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": ")", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "_", "x": 11, "y": 0 }, + { "matrix": [0, 12], "label": "+", "x": 12, "y": 0 }, + { "matrix": [0, 13], "label": "Backspace", "x": 13, "y": 0 }, + { "matrix": [0, 14], "label": "Backspace", "x": 14, "y": 0 }, + { "matrix": [1, 0], "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "Q", "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "label": "W", "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "label": "E", "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "label": "R", "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "label": "T", "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "label": "Y", "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "label": "U", "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "label": "I", "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "label": "O", "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "label": "P", "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "label": "{", "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "label": "}", "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 15], "label": "Delete", "x": 15, "y": 1 }, + { "matrix": [2, 0], "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "A", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "S", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "D", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "F", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "G", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "H", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "J", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "K", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": "L", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": ":", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\"", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 15], "label": "PgUp", "x": 15, "y": 2 }, + { "matrix": [3, 0], "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Z", "x": 2.25, "y": 3 }, + { "matrix": [3, 2], "label": "X", "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "label": "C", "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "label": "V", "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "label": "B", "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "label": "N", "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "label": "M", "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "label": "<", "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "label": ">", "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "label": "?", "x": 11.25, "y": 3 }, + { "matrix": [3, 11], "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "label": "Up", "x": 14, "y": 3 }, + { "matrix": [3, 15], "label": "PgDn", "x": 15, "y": 3 }, + { "matrix": [4, 0], "label": "Ctrl", "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "label": "Win", "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "label": "Alt", "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 4], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "label": "Alt", "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "label": "Ctrl", "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "label": "Left", "x": 13, "y": 4 }, + { "matrix": [4, 13], "label": "Down", "x": 14, "y": 4 }, + { "matrix": [4, 15], "label": "Right", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/forever65/keymaps/default/keymap.c b/keyboards/forever65/keymaps/default/keymap.c new file mode 100644 index 0000000000..0cb7fcb821 --- /dev/null +++ b/keyboards/forever65/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/forever65/keymaps/via/keymap.c b/keyboards/forever65/keymaps/via/keymap.c new file mode 100644 index 0000000000..3ced93f3e0 --- /dev/null +++ b/keyboards/forever65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/forever65/keymaps/via/rules.mk b/keyboards/forever65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/forever65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/forever65/readme.md b/keyboards/forever65/readme.md new file mode 100644 index 0000000000..0809b0145c --- /dev/null +++ b/keyboards/forever65/readme.md @@ -0,0 +1,15 @@ +# Forever65 + +![Forever65](https://static.wixstatic.com/media/7c76e8_827c433e51c84744a3b505df557ad5f7~mv2.jpg) + +Gasket Mount 65% keyboard + +* Keyboard Maintainer: [zvecr](https://github.com/zvecr) +* Hardware Supported: Forever65 PCB +* Hardware Availability: [Group-Buy](https://geekhack.org/index.php?topic=108809.0) + +Make example for this keyboard (after setting up your build environment): + + make forever65: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/forever65/rules.mk b/keyboards/forever65/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/forever65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/fortitude60/fortitude60.h b/keyboards/fortitude60/fortitude60.h index 61404fa750..0ad157f2d2 100644 --- a/keyboards/fortitude60/fortitude60.h +++ b/keyboards/fortitude60/fortitude60.h @@ -5,19 +5,3 @@ #endif #include "quantum.h" - -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, LT5, RT5, R30, R31, R32, R33, R34, R35, \ - LT0, LT1, LT2, LT3, LT4, RT4, RT3, RT2, RT1, RT0 \ - ) \ - LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##LT5, KC_##RT5, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \ - KC_##LT0, KC_##LT1, KC_##LT2, KC_##LT3, KC_##LT4, KC_##RT4, KC_##RT3, KC_##RT2, KC_##RT1, KC_##RT0 \ - ) diff --git a/keyboards/four_banger/info.json b/keyboards/four_banger/info.json new file mode 100644 index 0000000000..f5ec65cf65 --- /dev/null +++ b/keyboards/four_banger/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Four Banger", + "url": "", + "maintainer": "qmk", + "width": 2, + "height": 2, + "layouts": { + "LAYOUT_ortho_2x2": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1} + ] + } + } +} diff --git a/keyboards/four_banger/rules.mk b/keyboards/four_banger/rules.mk index ae77f0a0e1..b989b893b4 100644 --- a/keyboards/four_banger/rules.mk +++ b/keyboards/four_banger/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/foxlab/key65/hotswap/config.h b/keyboards/foxlab/key65/hotswap/config.h index a5ada6bd01..43f883fce9 100644 --- a/keyboards/foxlab/key65/hotswap/config.h +++ b/keyboards/foxlab/key65/hotswap/config.h @@ -45,6 +45,9 @@ /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_SCROLL_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/foxlab/key65/hotswap/hotswap.c b/keyboards/foxlab/key65/hotswap/hotswap.c index 6b3950d361..31fb011ad5 100644 --- a/keyboards/foxlab/key65/hotswap/hotswap.c +++ b/keyboards/foxlab/key65/hotswap/hotswap.c @@ -15,20 +15,3 @@ */ #include "hotswap.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(E6, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/foxlab/key65/universal/config.h b/keyboards/foxlab/key65/universal/config.h index a3c01cd75b..315af66762 100644 --- a/keyboards/foxlab/key65/universal/config.h +++ b/keyboards/foxlab/key65/universal/config.h @@ -45,6 +45,9 @@ /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_SCROLL_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/foxlab/key65/universal/universal.c b/keyboards/foxlab/key65/universal/universal.c index 361f3ad7f2..5fa9e8f171 100644 --- a/keyboards/foxlab/key65/universal/universal.c +++ b/keyboards/foxlab/key65/universal/universal.c @@ -15,20 +15,3 @@ */ #include "universal.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(E6, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/foxlab/leaf60/hotswap/rules.mk b/keyboards/foxlab/leaf60/hotswap/rules.mk index 6d4bcc7ef0..b8332901cc 100644 --- a/keyboards/foxlab/leaf60/hotswap/rules.mk +++ b/keyboards/foxlab/leaf60/hotswap/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/foxlab/time_re/hotswap/config.h b/keyboards/foxlab/time_re/hotswap/config.h new file mode 100644 index 0000000000..8ca58e4341 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2021 DongXing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x464C // "FL" +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Fox Lab +#define PRODUCT Time 80 Reforged + +/* 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, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN E2 + +#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 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_ANIMATIONS +#endif diff --git a/keyboards/foxlab/time_re/hotswap/hotswap.c b/keyboards/foxlab/time_re/hotswap/hotswap.c new file mode 100644 index 0000000000..b3acfe7b4e --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/hotswap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/foxlab/time_re/hotswap/hotswap.h b/keyboards/foxlab/time_re/hotswap/hotswap.h new file mode 100644 index 0000000000..6f7dda6dfd --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/hotswap.h @@ -0,0 +1,34 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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, 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, 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, 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 }, \ +} diff --git a/keyboards/foxlab/time_re/hotswap/info.json b/keyboards/foxlab/time_re/hotswap/info.json new file mode 100644 index 0000000000..64678e03c1 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Time RE Hotswap", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,F0)", "x":0, "y":0}, + {"label":"K02 (D1,F4)", "x":2, "y":0}, + {"label":"K03 (D1,F5)", "x":3, "y":0}, + {"label":"K04 (D1,F6)", "x":4, "y":0}, + {"label":"K05 (D1,F7)", "x":5, "y":0}, + {"label":"K06 (D1,C7)", "x":6.5, "y":0}, + {"label":"K07 (D1,C6)", "x":7.5, "y":0}, + {"label":"K08 (D1,B6)", "x":8.5, "y":0}, + {"label":"K09 (D1,B5)", "x":9.5, "y":0}, + {"label":"K0A (D1,B4)", "x":11, "y":0}, + {"label":"K0B (D1,D7)", "x":12, "y":0}, + {"label":"K0C (D1,D4)", "x":13, "y":0}, + {"label":"K0D (D1,D6)", "x":14, "y":0}, + {"label":"K0E (D1,D2)", "x":15.25, "y":0}, + {"label":"K0F (D1,D3)", "x":16.25, "y":0}, + {"label":"K0G (D1,D5)", "x":17.25, "y":0}, + {"label":"K10 (D0,F0)", "x":0, "y":1.5}, + {"label":"K11 (D0,F1)", "x":1, "y":1.5}, + {"label":"K12 (D0,F4)", "x":2, "y":1.5}, + {"label":"K13 (D0,F5)", "x":3, "y":1.5}, + {"label":"K14 (D0,F6)", "x":4, "y":1.5}, + {"label":"K15 (D0,F7)", "x":5, "y":1.5}, + {"label":"K16 (D0,C7)", "x":6, "y":1.5}, + {"label":"K17 (D0,C6)", "x":7, "y":1.5}, + {"label":"K18 (D0,B6)", "x":8, "y":1.5}, + {"label":"K19 (D0,B5)", "x":9, "y":1.5}, + {"label":"K1A (D0,B4)", "x":10, "y":1.5}, + {"label":"K1B (D0,D7)", "x":11, "y":1.5}, + {"label":"K1C (D0,D4)", "x":12, "y":1.5}, + {"label":"K1D (D0,D6)", "x":13, "y":1.5}, + {"label":"K3E (B0,D2)", "x":14, "y":1.5}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1.5}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1.5}, + {"label":"K1G (D0,D5)", "x":17.25, "y":1.5}, + {"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (B3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (B3,F4)", "x":2.5, "y":2.5}, + {"label":"K23 (B3,F5)", "x":3.5, "y":2.5}, + {"label":"K24 (B3,F6)", "x":4.5, "y":2.5}, + {"label":"K25 (B3,F7)", "x":5.5, "y":2.5}, + {"label":"K26 (B3,C7)", "x":6.5, "y":2.5}, + {"label":"K27 (B3,C6)", "x":7.5, "y":2.5}, + {"label":"K28 (B3,B6)", "x":8.5, "y":2.5}, + {"label":"K29 (B3,B5)", "x":9.5, "y":2.5}, + {"label":"K2A (B3,B4)", "x":10.5, "y":2.5}, + {"label":"K2B (B3,D7)", "x":11.5, "y":2.5}, + {"label":"K2C (B3,D4)", "x":12.5, "y":2.5}, + {"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (B3,D2)", "x":15.25, "y":2.5}, + {"label":"K2F (B3,D3)", "x":16.25, "y":2.5}, + {"label":"K2G (B3,D5)", "x":17.25, "y":2.5}, + {"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (B0,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (B0,F4)", "x":2.75, "y":3.5}, + {"label":"K33 (B0,F5)", "x":3.75, "y":3.5}, + {"label":"K34 (B0,F6)", "x":4.75, "y":3.5}, + {"label":"K35 (B0,F7)", "x":5.75, "y":3.5}, + {"label":"K36 (B0,C7)", "x":6.75, "y":3.5}, + {"label":"K37 (B0,C6)", "x":7.75, "y":3.5}, + {"label":"K38 (B0,B6)", "x":8.75, "y":3.5}, + {"label":"K39 (B0,B5)", "x":9.75, "y":3.5}, + {"label":"K3A (B0,B4)", "x":10.75, "y":3.5}, + {"label":"K3B (B0,D7)", "x":11.75, "y":3.5}, + {"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (B2,F1)", "x":1.25, "y":4.5}, + {"label":"K42 (B2,F4)", "x":2.25, "y":4.5}, + {"label":"K43 (B2,F5)", "x":3.25, "y":4.5}, + {"label":"K44 (B2,F6)", "x":4.25, "y":4.5}, + {"label":"K45 (B2,F7)", "x":5.25, "y":4.5}, + {"label":"K46 (B2,C7)", "x":6.25, "y":4.5}, + {"label":"K47 (B2,C6)", "x":7.25, "y":4.5}, + {"label":"K48 (B2,B6)", "x":8.25, "y":4.5}, + {"label":"K49 (B2,B5)", "x":9.25, "y":4.5}, + {"label":"K4A (B2,B4)", "x":10.25, "y":4.5}, + {"label":"K4B (B2,D7)", "x":11.25, "y":4.5}, + {"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (B2,D6)", "x":14, "y":4.5}, + {"label":"K4F (B2,D3)", "x":16.25, "y":4.5}, + {"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (B1,D2)", "x":15.25, "y":5.5}, + {"label":"K5F (B1,D3)", "x":16.25, "y":5.5}, + {"label":"K5G (B1,D5)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c b/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c new file mode 100644 index 0000000000..b9250fac4b --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_SPC, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c b/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c new file mode 100644 index 0000000000..a6236d1942 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_SPC, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk b/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/foxlab/time_re/hotswap/readme.md b/keyboards/foxlab/time_re/hotswap/readme.md new file mode 100644 index 0000000000..f9d987f08c --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/readme.md @@ -0,0 +1,19 @@ +# Foxlab Time 80 Reforged Hotswap + +![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg) + +Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view. + +* Keyboard Maintainer: QMK +* Hardware Supported: Time 80 Reforged Hotswap PCB +* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330) + +This version is for the hotswap variant with the layouts below available: +![PCB Layout](https://imgur.com/D8cQCwb.png) +![Plate Layout](https://imgur.com/aR1UnhK.png) + +Make example for this keyboard (after setting up your build environment): + + make foxlab/time_re/hotswap: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/foxlab/time_re/hotswap/rules.mk b/keyboards/foxlab/time_re/hotswap/rules.mk new file mode 100644 index 0000000000..77b7c43fff --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/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 = 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/time_re/universal/config.h b/keyboards/foxlab/time_re/universal/config.h new file mode 100644 index 0000000000..8ca58e4341 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2021 DongXing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x464C // "FL" +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Fox Lab +#define PRODUCT Time 80 Reforged + +/* 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, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN E2 + +#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 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_ANIMATIONS +#endif diff --git a/keyboards/foxlab/time_re/universal/info.json b/keyboards/foxlab/time_re/universal/info.json new file mode 100644 index 0000000000..77bb4a7694 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Time RE Universal", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,F0)", "x":0, "y":0}, + {"label":"K02 (D1,F4)", "x":2, "y":0}, + {"label":"K03 (D1,F5)", "x":3, "y":0}, + {"label":"K04 (D1,F6)", "x":4, "y":0}, + {"label":"K05 (D1,F7)", "x":5, "y":0}, + {"label":"K06 (D1,C7)", "x":6.5, "y":0}, + {"label":"K07 (D1,C6)", "x":7.5, "y":0}, + {"label":"K08 (D1,B6)", "x":8.5, "y":0}, + {"label":"K09 (D1,B5)", "x":9.5, "y":0}, + {"label":"K0A (D1,B4)", "x":11, "y":0}, + {"label":"K0B (D1,D7)", "x":12, "y":0}, + {"label":"K0C (D1,D4)", "x":13, "y":0}, + {"label":"K0D (D1,D6)", "x":14, "y":0}, + {"label":"K0E (D1,D2)", "x":15.25, "y":0}, + {"label":"K0F (D1,D3)", "x":16.25, "y":0}, + {"label":"K0G (D1,D5)", "x":17.25, "y":0}, + {"label":"K10 (D0,F0)", "x":0, "y":1.5}, + {"label":"K11 (D0,F1)", "x":1, "y":1.5}, + {"label":"K12 (D0,F4)", "x":2, "y":1.5}, + {"label":"K13 (D0,F5)", "x":3, "y":1.5}, + {"label":"K14 (D0,F6)", "x":4, "y":1.5}, + {"label":"K15 (D0,F7)", "x":5, "y":1.5}, + {"label":"K16 (D0,C7)", "x":6, "y":1.5}, + {"label":"K17 (D0,C6)", "x":7, "y":1.5}, + {"label":"K18 (D0,B6)", "x":8, "y":1.5}, + {"label":"K19 (D0,B5)", "x":9, "y":1.5}, + {"label":"K1A (D0,B4)", "x":10, "y":1.5}, + {"label":"K1B (D0,D7)", "x":11, "y":1.5}, + {"label":"K1C (D0,D4)", "x":12, "y":1.5}, + {"label":"K1D (D0,D6)", "x":13, "y":1.5}, + {"label":"K3E (B0,D2)", "x":14, "y":1.5}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1.5}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1.5}, + {"label":"K1G (D0,D5)", "x":17.25, "y":1.5}, + {"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (B3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (B3,F4)", "x":2.5, "y":2.5}, + {"label":"K23 (B3,F5)", "x":3.5, "y":2.5}, + {"label":"K24 (B3,F6)", "x":4.5, "y":2.5}, + {"label":"K25 (B3,F7)", "x":5.5, "y":2.5}, + {"label":"K26 (B3,C7)", "x":6.5, "y":2.5}, + {"label":"K27 (B3,C6)", "x":7.5, "y":2.5}, + {"label":"K28 (B3,B6)", "x":8.5, "y":2.5}, + {"label":"K29 (B3,B5)", "x":9.5, "y":2.5}, + {"label":"K2A (B3,B4)", "x":10.5, "y":2.5}, + {"label":"K2B (B3,D7)", "x":11.5, "y":2.5}, + {"label":"K2C (B3,D4)", "x":12.5, "y":2.5}, + {"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (B3,D2)", "x":15.25, "y":2.5}, + {"label":"K2F (B3,D3)", "x":16.25, "y":2.5}, + {"label":"K2G (B3,D5)", "x":17.25, "y":2.5}, + {"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (B0,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (B0,F4)", "x":2.75, "y":3.5}, + {"label":"K33 (B0,F5)", "x":3.75, "y":3.5}, + {"label":"K34 (B0,F6)", "x":4.75, "y":3.5}, + {"label":"K35 (B0,F7)", "x":5.75, "y":3.5}, + {"label":"K36 (B0,C7)", "x":6.75, "y":3.5}, + {"label":"K37 (B0,C6)", "x":7.75, "y":3.5}, + {"label":"K38 (B0,B6)", "x":8.75, "y":3.5}, + {"label":"K39 (B0,B5)", "x":9.75, "y":3.5}, + {"label":"K3A (B0,B4)", "x":10.75, "y":3.5}, + {"label":"K3B (B0,D7)", "x":11.75, "y":3.5}, + {"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (B2,F1)", "x":1.25, "y":4.5}, + {"label":"K42 (B2,F4)", "x":2.25, "y":4.5}, + {"label":"K43 (B2,F5)", "x":3.25, "y":4.5}, + {"label":"K44 (B2,F6)", "x":4.25, "y":4.5}, + {"label":"K45 (B2,F7)", "x":5.25, "y":4.5}, + {"label":"K46 (B2,C7)", "x":6.25, "y":4.5}, + {"label":"K47 (B2,C6)", "x":7.25, "y":4.5}, + {"label":"K48 (B2,B6)", "x":8.25, "y":4.5}, + {"label":"K49 (B2,B5)", "x":9.25, "y":4.5}, + {"label":"K4A (B2,B4)", "x":10.25, "y":4.5}, + {"label":"K4B (B2,D7)", "x":11.25, "y":4.5}, + {"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (B2,D6)", "x":14, "y":4.5}, + {"label":"K4F (B2,D3)", "x":16.25, "y":4.5}, + {"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (B1,D2)", "x":15.25, "y":5.5}, + {"label":"K5F (B1,D3)", "x":16.25, "y":5.5}, + {"label":"K5G (B1,D5)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c b/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c new file mode 100644 index 0000000000..d6d3d8e72c --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_SPC, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c b/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c new file mode 100644 index 0000000000..046225536f --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_SPC, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk b/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/foxlab/time_re/universal/readme.md b/keyboards/foxlab/time_re/universal/readme.md new file mode 100644 index 0000000000..385078585f --- /dev/null +++ b/keyboards/foxlab/time_re/universal/readme.md @@ -0,0 +1,19 @@ +# Foxlab Time 80 Reforged Universal + +![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg) + +Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view. + +* Keyboard Maintainer: QMK +* Hardware Supported: Time 80 Reforged Universal PCB +* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330) + +This version is for the universal variant with the layouts below available: +![PCB Layout](https://imgur.com/D8cQCwb.png) +![Plate Layout](https://imgur.com/RzeVma5.png) + +Make example for this keyboard (after setting up your build environment): + + make foxlab/time_re/universal: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/foxlab/time_re/universal/rules.mk b/keyboards/foxlab/time_re/universal/rules.mk new file mode 100644 index 0000000000..8d3f342f57 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/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 = 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/time_re/universal/universal.c b/keyboards/foxlab/time_re/universal/universal.c new file mode 100644 index 0000000000..286104854b --- /dev/null +++ b/keyboards/foxlab/time_re/universal/universal.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "universal.h" + diff --git a/keyboards/foxlab/time_re/universal/universal.h b/keyboards/foxlab/time_re/universal/universal.h new file mode 100644 index 0000000000..6f7dda6dfd --- /dev/null +++ b/keyboards/foxlab/time_re/universal/universal.h @@ -0,0 +1,34 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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, 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, 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, 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 }, \ +} diff --git a/keyboards/fr4/southpaw75/rules.mk b/keyboards/fr4/southpaw75/rules.mk index e70a8a7d60..bde08efba5 100644 --- a/keyboards/fr4/southpaw75/rules.mk +++ b/keyboards/fr4/southpaw75/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk index d83deb4223..0952b247a7 100755 --- a/keyboards/fractal/rules.mk +++ b/keyboards/fractal/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/freyr/config.h b/keyboards/freyr/config.h index a4e34ea477..d912b3cc1a 100644 --- a/keyboards/freyr/config.h +++ b/keyboards/freyr/config.h @@ -47,6 +47,10 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B7 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_BREATHING diff --git a/keyboards/freyr/freyr.c b/keyboards/freyr/freyr.c index 336b327110..a856521e7f 100644 --- a/keyboards/freyr/freyr.c +++ b/keyboards/freyr/freyr.c @@ -15,22 +15,3 @@ */ #include "freyr.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B3); - setPinOutput(B7); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B3, !led_state.caps_lock); - writePin(B7, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/friedrich/config.h b/keyboards/friedrich/config.h new file mode 100644 index 0000000000..1e4e36f2e4 --- /dev/null +++ b/keyboards/friedrich/config.h @@ -0,0 +1,45 @@ +/* +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 0x6481 +#define PRODUCT_ID 0xB4A2 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb-elmo +#define PRODUCT Friedrich + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { F4, F1, F0, F5, D5 } +#define MATRIX_COL_PINS { F6, F7, E6, B2, B3, D4, D6, D7, B4, C6, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* CAPS LED */ +#define LED_CAPS_LOCK_PIN B1 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/friedrich/friedrich.c b/keyboards/friedrich/friedrich.c new file mode 100644 index 0000000000..5c6995202d --- /dev/null +++ b/keyboards/friedrich/friedrich.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 "friedrich.h" diff --git a/keyboards/friedrich/friedrich.h b/keyboards/friedrich/friedrich.h new file mode 100644 index 0000000000..d4f043b771 --- /dev/null +++ b/keyboards/friedrich/friedrich.h @@ -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 . + */ + +#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( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k210, k011, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k211, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k311, \ + k400, k401, k405, k409, k410 \ +) { \ + { 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, ____, k311 }, \ + { k400, k401, ____, ____, ____, k405, ____, ____, ____, k409, k410, ____ } \ +} diff --git a/keyboards/friedrich/info.json b/keyboards/friedrich/info.json new file mode 100644 index 0000000000..94b9f1a205 --- /dev/null +++ b/keyboards/friedrich/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Friedrich", + "url": "https://github.com/MarvFPV/Friedrich", + "maintainer": "kb-elmo", + "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":6, "y":0}, + {"x":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.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":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":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":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":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":1.125, "y":4}, + {"x":2.125, "y":4, "w":1.25}, + {"x":3.375, "y":4, "w":6.25}, + {"x":9.625, "y":4, "w":1.25}, + {"x":10.875, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/friedrich/keymaps/default/keymap.c b/keyboards/friedrich/keymaps/default/keymap.c new file mode 100644 index 0000000000..31474f4d06 --- /dev/null +++ b/keyboards/friedrich/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( + KC_ESC, KC_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_BSPC, + KC_LCTL, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + 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, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_SLSH, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/friedrich/keymaps/via/keymap.c b/keyboards/friedrich/keymaps/via/keymap.c new file mode 100644 index 0000000000..cbbe87b168 --- /dev/null +++ b/keyboards/friedrich/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( + KC_ESC, KC_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_BSPC, + KC_LCTL, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + 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, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_SLSH, + 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 + ), + [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 + ) +}; diff --git a/keyboards/friedrich/keymaps/via/rules.mk b/keyboards/friedrich/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/friedrich/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/friedrich/readme.md b/keyboards/friedrich/readme.md new file mode 100644 index 0000000000..dbe890bd94 --- /dev/null +++ b/keyboards/friedrich/readme.md @@ -0,0 +1,21 @@ +# Friedrich + +![friedrich](https://i.imgur.com/LH15u37l.jpg) + +A small printer friendly 3D printed 50% keyboard. + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Friedrich PCB by kb-elmo +* Hardware Availability: [Open source project](https://github.com/MarvFPV/Friedrich) + +Make example for this keyboard (after setting up your build environment): + + make friedrich:default + +Flashing example for this keyboard: + + make friedrich:default:flash + +**Bootloader:** Press the physical reset button on the top side of the PCB 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/friedrich/rules.mk b/keyboards/friedrich/rules.mk new file mode 100644 index 0000000000..a90eef1fc6 --- /dev/null +++ b/keyboards/friedrich/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 = 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 = 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/ft/mars80/config.h b/keyboards/ft/mars80/config.h index 3aabc926d8..e56d4439b3 100644 --- a/keyboards/ft/mars80/config.h +++ b/keyboards/ft/mars80/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/ft/mars80/mars80.c b/keyboards/ft/mars80/mars80.c index 2c628a6a23..5c95d04e35 100644 --- a/keyboards/ft/mars80/mars80.c +++ b/keyboards/ft/mars80/mars80.c @@ -15,21 +15,3 @@ */ #include "mars80.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/function96/config.h b/keyboards/function96/v1/config.h similarity index 98% rename from keyboards/function96/config.h rename to keyboards/function96/v1/config.h index 0656d223e4..eaa7183843 100644 --- a/keyboards/function96/config.h +++ b/keyboards/function96/v1/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x672A #define DEVICE_VER 0x0001 #define MANUFACTURER JTM -#define PRODUCT function96 +#define PRODUCT function96v1 /* key matrix size */ #define MATRIX_ROWS 6 diff --git a/keyboards/function96/info.json b/keyboards/function96/v1/info.json similarity index 98% rename from keyboards/function96/info.json rename to keyboards/function96/v1/info.json index 719aa68016..cf2226a1be 100644 --- a/keyboards/function96/info.json +++ b/keyboards/function96/v1/info.json @@ -1,5 +1,5 @@ { - "keyboard_name": "function96", + "keyboard_name": "function96v1", "url": "jtmkeebdesign@gmail.com", "maintainer": "qmk", "width": 19, diff --git a/keyboards/function96/keymaps/default/keymap.c b/keyboards/function96/v1/keymaps/default/keymap.c similarity index 100% rename from keyboards/function96/keymaps/default/keymap.c rename to keyboards/function96/v1/keymaps/default/keymap.c diff --git a/keyboards/function96/keymaps/default/readme.md b/keyboards/function96/v1/keymaps/default/readme.md similarity index 100% rename from keyboards/function96/keymaps/default/readme.md rename to keyboards/function96/v1/keymaps/default/readme.md diff --git a/keyboards/function96/mcuconf.h b/keyboards/function96/v1/mcuconf.h similarity index 86% rename from keyboards/function96/mcuconf.h rename to keyboards/function96/v1/mcuconf.h index 9eb71be2b3..a25879aeff 100644 --- a/keyboards/function96/mcuconf.h +++ b/keyboards/function96/v1/mcuconf.h @@ -16,7 +16,7 @@ /* * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/function96/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + * `qmk chibios-confmigrate -i keyboards/function96/v2/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` */ #pragma once @@ -25,4 +25,3 @@ #undef STM32_PWM_USE_TIM3 #define STM32_PWM_USE_TIM3 TRUE - diff --git a/keyboards/function96/readme.md b/keyboards/function96/v1/readme.md similarity index 91% rename from keyboards/function96/readme.md rename to keyboards/function96/v1/readme.md index 8fde381418..89a17458e0 100644 --- a/keyboards/function96/readme.md +++ b/keyboards/function96/v1/readme.md @@ -3,11 +3,11 @@ This Function96 is a passion project of JTM. It's meant to give the user the maximum usability of the space allocated by the keyboard while also giving the option of using the numpad. * Keyboard Maintainer: The QMK Community -* Hardware Supported: Function96 +* Hardware Supported: Function96v1 * Hardware Availability: Limited Groupbuy that ended on 8/14/2020, https://www.reddit.com/r/mechmarket/comments/i7wwh4/gb_function96_prototype/ Make example for this keyboard (after setting up your build environment): - make function96:default + make function96/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/function96/rules.mk b/keyboards/function96/v1/rules.mk similarity index 94% rename from keyboards/function96/rules.mk rename to keyboards/function96/v1/rules.mk index 48ab62762e..adbe34e7d1 100644 --- a/keyboards/function96/rules.mk +++ b/keyboards/function96/v1/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/function96/function96.c b/keyboards/function96/v1/v1.c similarity index 96% rename from keyboards/function96/function96.c rename to keyboards/function96/v1/v1.c index 86b8a6f704..03cade9261 100644 --- a/keyboards/function96/function96.c +++ b/keyboards/function96/v1/v1.c @@ -14,4 +14,4 @@ * along with this program. If not, see . */ -#include "function96.h" +#include "v1.h" diff --git a/keyboards/function96/function96.h b/keyboards/function96/v1/v1.h similarity index 100% rename from keyboards/function96/function96.h rename to keyboards/function96/v1/v1.h diff --git a/keyboards/function96/v2/config.h b/keyboards/function96/v2/config.h new file mode 100644 index 0000000000..b0e986785a --- /dev/null +++ b/keyboards/function96/v2/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2020 Matt3o + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x2A34 // JT , JTMDesign +#define PRODUCT_ID 0x672B +#define DEVICE_VER 0x0002 +#define MANUFACTURER JTMDesign +#define PRODUCT function96v2 + +/* 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 { A9, A8, B15, B14, B13, B12 } +#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, A14, A15, B3, B4, B5, B6, B7, B8, B9} +#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/function96/v2/info.json b/keyboards/function96/v2/info.json new file mode 100644 index 0000000000..50f2e836ca --- /dev/null +++ b/keyboards/function96/v2/info.json @@ -0,0 +1,21 @@ +{ + "keyboard_name": "function96v2", + "url": "jtmkeebdesign@gmail.com", + "maintainer": "qmk", + "width": 19, + "height": 6, + "layouts": { + "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_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_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_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}] + } + } +} diff --git a/keyboards/function96/v2/keymaps/ansi_splitspace/keymap.c b/keyboards/function96/v2/keymaps/ansi_splitspace/keymap.c new file mode 100644 index 0000000000..25429ed4ad --- /dev/null +++ b/keyboards/function96/v2/keymaps/ansi_splitspace/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_splitspace( + KC_ESC , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSCR, KC_DEL, KC_MPRV, KC_MNXT, 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_MPLY, 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_LWIN, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_ansi_splitspace( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ), + [2] = LAYOUT_ansi_splitspace( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ) +}; diff --git a/keyboards/function96/v2/keymaps/ansi_splitspace/readme.md b/keyboards/function96/v2/keymaps/ansi_splitspace/readme.md new file mode 100644 index 0000000000..72b69e766d --- /dev/null +++ b/keyboards/function96/v2/keymaps/ansi_splitspace/readme.md @@ -0,0 +1,3 @@ +# The ANSI Splitspace Function96v2 Layout + +There are layer buttons assigned as MO(-). Feel free to modify both layers as you choose. diff --git a/keyboards/function96/v2/keymaps/default/keymap.c b/keyboards/function96/v2/keymaps/default/keymap.c new file mode 100644 index 0000000000..6e20c9f439 --- /dev/null +++ b/keyboards/function96/v2/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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_MPRV, KC_MNXT, 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_MPLY, 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_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_default( + _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/function96/v2/keymaps/default/readme.md b/keyboards/function96/v2/keymaps/default/readme.md new file mode 100644 index 0000000000..3a42e3f5f7 --- /dev/null +++ b/keyboards/function96/v2/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The ANSI Function96v2 Layout + +There are layer buttons assigned as MO(-). Feel free to modify both layers as you choose. diff --git a/keyboards/function96/v2/keymaps/iso/keymap.c b/keyboards/function96/v2/keymaps/iso/keymap.c new file mode 100644 index 0000000000..67d76a30f0 --- /dev/null +++ b/keyboards/function96/v2/keymaps/iso/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_PSCR, KC_MPRV, KC_MNXT, 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_MPLY, 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_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_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_P1, KC_P2, KC_P3, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_iso( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ), +}; diff --git a/keyboards/function96/v2/keymaps/iso/readme.md b/keyboards/function96/v2/keymaps/iso/readme.md new file mode 100644 index 0000000000..e1d1003aa6 --- /dev/null +++ b/keyboards/function96/v2/keymaps/iso/readme.md @@ -0,0 +1,3 @@ +# The ISO Function96v2 Layout + +There are layer buttons assigned as MO(-). Feel free to modify both layers as you choose. diff --git a/keyboards/function96/v2/keymaps/iso_splitspace/keymap.c b/keyboards/function96/v2/keymaps/iso_splitspace/keymap.c new file mode 100644 index 0000000000..c3fc6dc75f --- /dev/null +++ b/keyboards/function96/v2/keymaps/iso_splitspace/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_splitspace( + KC_ESC , KC_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_MPRV, KC_MNXT, 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_MPLY, 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_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_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_P1, KC_P2, KC_P3, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(1),KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_iso_splitspace( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ), + [2] = LAYOUT_iso_splitspace( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ), +}; diff --git a/keyboards/function96/v2/keymaps/iso_splitspace/readme.md b/keyboards/function96/v2/keymaps/iso_splitspace/readme.md new file mode 100644 index 0000000000..5433795ab5 --- /dev/null +++ b/keyboards/function96/v2/keymaps/iso_splitspace/readme.md @@ -0,0 +1,3 @@ +# The ISO and Splitspace Function96v2 Layout + +There are layer buttons assigned as MO(-). Feel free to modify both layers as you choose. diff --git a/keyboards/function96/v2/mcuconf.h b/keyboards/function96/v2/mcuconf.h new file mode 100644 index 0000000000..a25879aeff --- /dev/null +++ b/keyboards/function96/v2/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/function96/v2/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/function96/v2/readme.md b/keyboards/function96/v2/readme.md new file mode 100644 index 0000000000..bf7f2966a4 --- /dev/null +++ b/keyboards/function96/v2/readme.md @@ -0,0 +1,13 @@ +# Function96v2 + +This Function96v2 is a passion project of JTM. It's meant to give the user the maximum usability of the space allocated by the keyboard while also giving the option of using the numpad. + +* Keyboard Maintainer: The QMK Community +* Hardware Supported: Function96v2 +* Hardware Availability: Limited Groupbuy that ended on 11/29/2020, https://www.reddit.com/r/mechmarket/comments/jxvokl/gb_function96v2_a_premium_96_layout_nov_20th_nov/ + +Make example for this keyboard (after setting up your build environment): + + make function96/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/function96/v2/rules.mk b/keyboards/function96/v2/rules.mk new file mode 100644 index 0000000000..adbe34e7d1 --- /dev/null +++ b/keyboards/function96/v2/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 = 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 diff --git a/keyboards/function96/v2/v2.c b/keyboards/function96/v2/v2.c new file mode 100644 index 0000000000..0e1ae134d8 --- /dev/null +++ b/keyboards/function96/v2/v2.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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/function96/v2/v2.h b/keyboards/function96/v2/v2.h new file mode 100644 index 0000000000..4e93d99b35 --- /dev/null +++ b/keyboards/function96/v2/v2.h @@ -0,0 +1,104 @@ +/* Copyright 2020 Matt3o + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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, K214, 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, K412, K414, K415, K416, K417, \ + K500, K501, K502, K504, K506, K508, K510, K511, K512, K514, K515, K516, K517, K518 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K114, K115, K116, K117, K118 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, KC_NO }, \ + { K300, KC_NO, 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, KC_NO, K414, K415, K416, K417, KC_NO }, \ + { K500, K501, K502, KC_NO, K504, KC_NO, K506, KC_NO, K508, KC_NO, K510, K511, K512, KC_NO, K514, K515, K516, K517, K518 } \ +} +#define LAYOUT_default( \ + K000, K001, K002, K003, K004, 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, K214, K215, K216, K217, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, K316, K317, K318,\ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, K415, K416, K417, \ + K500, K501, K502, K506, K510, K511, K512, K514, K515, K516, K517, K518\ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K114, K115, K116, K117, K118 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, KC_NO }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315, K316, K317, K318 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, K415, K416, K417, KC_NO }, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, KC_NO, K514, K515, K516, K517, K518 } \ +} +#define LAYOUT_ansi_splitspace( \ + K000, K001, K002, K003, K004, 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, K214, K215, K216, K217, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, K316, K317, K318, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, K415, K416, K417, \ + K500, K501, K502, K504, K506, K508, K510, K511, K512, K514, K515, K516, K517, K518 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K114, K115, K116, K117, K118 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, KC_NO }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315, K316, K317, K318 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, K415, K416, K417, KC_NO }, \ + { K500, K501, K502, KC_NO, K504, KC_NO, K506, KC_NO, K508, KC_NO, K510, K511, K512, KC_NO, K514, K515, K516, K517, K518 } \ +} +#define LAYOUT_iso( \ + K000, K001, K002, K003, K004, 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, K412, K414, K415, K416, K417, \ + K500, K501, K502, K506, K510, K511, K512, K514, K515, K516, K517, K518 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K114, K115, K116, K117, K118 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215, K216, K217, KC_NO }, \ + { K300, KC_NO, 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, KC_NO, K414, K415, K416, K417, KC_NO }, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, KC_NO, K514, K515, K516, K517, K518 } \ +} +#define LAYOUT_iso_splitspace( \ + K000, K001, K002, K003, K004, 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, K412, K414, K415, K416, K417, \ + K500, K501, K502, K504, K506, K508, K510, K511, K512, K514, K515, K516, K517, K518 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K114, K115, K116, K117, K118 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215, K216, K217, KC_NO }, \ + { K300, KC_NO, 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, KC_NO, K414, K415, K416, K417, KC_NO }, \ + { K500, K501, K502, KC_NO, K504, KC_NO, K506, KC_NO, K508, KC_NO, K510, K511, K512, KC_NO, K514, K515, K516, K517, K518 } \ +} diff --git a/keyboards/funky40/rules.mk b/keyboards/funky40/rules.mk index 138ac68e20..c50d7999b7 100644 --- a/keyboards/funky40/rules.mk +++ b/keyboards/funky40/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/geekboards/macropad_v2/rules.mk b/keyboards/geekboards/macropad_v2/rules.mk index 73575b6733..47db87709d 100644 --- a/keyboards/geekboards/macropad_v2/rules.mk +++ b/keyboards/geekboards/macropad_v2/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/geekboards/tester/info.json b/keyboards/geekboards/tester/info.json new file mode 100644 index 0000000000..874ce7d887 --- /dev/null +++ b/keyboards/geekboards/tester/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "Geekboards 8-keys macropad", + "url": "", + "maintainer": "moyi4681", + "width": 4, + "height": 2, + "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/geminate60/geminate60.h b/keyboards/geminate60/geminate60.h index dd8055abe8..7361930a20 100644 --- a/keyboards/geminate60/geminate60.h +++ b/keyboards/geminate60/geminate60.h @@ -15,16 +15,18 @@ along with this program. If not, see . #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 } \ - } +#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, \ + 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, ___ }, \ + { 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, ___ } \ +} diff --git a/keyboards/geminate60/info.json b/keyboards/geminate60/info.json index bbf63d73de..1c9fc8c38a 100644 --- a/keyboards/geminate60/info.json +++ b/keyboards/geminate60/info.json @@ -1,27 +1,31 @@ { "keyboard_name": "geminate60", "url": "", - "maintainer": "qmk", + "maintainer": "Weirdo-F", "width": 15, "height": 5, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "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":"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":"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":"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}, @@ -32,10 +36,11 @@ {"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":"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}, @@ -46,10 +51,11 @@ {"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":"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}, @@ -60,20 +66,20 @@ {"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":"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":"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} + {"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} ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/geminate60/keymaps/default/keymap.c b/keyboards/geminate60/keymaps/default/keymap.c index e7edabfd53..91a6f8c3e2 100644 --- a/keyboards/geminate60/keymaps/default/keymap.c +++ b/keyboards/geminate60/keymaps/default/keymap.c @@ -1,18 +1,18 @@ /* Copyright 2020 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 . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H @@ -23,18 +23,22 @@ enum layer_names { }; 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), + [_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_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_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, 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), // + [_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_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_RGHT + ), }; diff --git a/keyboards/geminate60/keymaps/via/keymap.c b/keyboards/geminate60/keymaps/via/keymap.c index 31af37d0c9..85210835e4 100644 --- a/keyboards/geminate60/keymaps/via/keymap.c +++ b/keyboards/geminate60/keymaps/via/keymap.c @@ -1,18 +1,18 @@ /* Copyright 2020 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 . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H @@ -20,30 +20,39 @@ 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), + [_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_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_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, 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), // + [_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_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_RGHT + ), - [_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,), + [_FN1] = 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 + ), + + [_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 + ), - [_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), }; bool led_update_user(led_t led_state) { diff --git a/keyboards/geminate60/readme.md b/keyboards/geminate60/readme.md index f08e87739e..457c06ce5c 100644 --- a/keyboards/geminate60/readme.md +++ b/keyboards/geminate60/readme.md @@ -2,9 +2,9 @@ ![Geminate60](https://www.hualigs.cn/image/600d9391f16d7.jpg) -A 60% keyboard based on STM32f303 +A 60% keyboard based on STM32F303. -* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361) +* Keyboard Maintainer: [Weirdo](https://github.com/weirdo-f) ([weirdo-f.github.io](https://)) * Hardware Supported: Geminate60 * Hardware Availability: Not yet diff --git a/keyboards/geminate60/rules.mk b/keyboards/geminate60/rules.mk index 56db095205..8fc40411df 100644 --- a/keyboards/geminate60/rules.mk +++ b/keyboards/geminate60/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/generic_panda/panda65_01/rules.mk b/keyboards/generic_panda/panda65_01/rules.mk index cb4e9cc830..b05f306d3c 100644 --- a/keyboards/generic_panda/panda65_01/rules.mk +++ b/keyboards/generic_panda/panda65_01/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/genone/eclipse_65/keymaps/via/keymap.c b/keyboards/genone/eclipse_65/keymaps/via/keymap.c new file mode 100644 index 0000000000..94361dd14f --- /dev/null +++ b/keyboards/genone/eclipse_65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 GEN ONE 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] = { + + // Default layer + [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_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 Layer + [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_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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), + + // Fn3 Layer + [3] = 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/genone/eclipse_65/keymaps/via/rules.mk b/keyboards/genone/eclipse_65/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/genone/eclipse_65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/genone/g1_65/config.h b/keyboards/genone/g1_65/config.h new file mode 100644 index 0000000000..3236160c12 --- /dev/null +++ b/keyboards/genone/g1_65/config.h @@ -0,0 +1,48 @@ +/* Copyright 2020 GEN ONE 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE720 // GEN ONE +#define PRODUCT_ID 0x0001 // G1_65 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GEN ONE LLC +#define PRODUCT G1_65 + +/* 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 { B3, B7, B0, B1, B2 } +#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 + diff --git a/keyboards/genone/g1_65/g1_65.c b/keyboards/genone/g1_65/g1_65.c new file mode 100644 index 0000000000..af2da3de9a --- /dev/null +++ b/keyboards/genone/g1_65/g1_65.c @@ -0,0 +1,17 @@ +/* Copyright 2020 GEN ONE 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 "g1_65.h" diff --git a/keyboards/genone/g1_65/g1_65.h b/keyboards/genone/g1_65/g1_65.h new file mode 100644 index 0000000000..633c6e4477 --- /dev/null +++ b/keyboards/genone/g1_65/g1_65.h @@ -0,0 +1,37 @@ +/* Copyright 2020 GEN ONE 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 . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + +#define LAYOUT_65_ansi( \ + 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, 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, ____, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, ____, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \ +} + diff --git a/keyboards/genone/g1_65/info.json b/keyboards/genone/g1_65/info.json new file mode 100644 index 0000000000..966c2d352a --- /dev/null +++ b/keyboards/genone/g1_65/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/genone/g1_65/keymaps/default/keymap.c new file mode 100644 index 0000000000..a72cc1d23b --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 GEN ONE 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] = { + + // Default layer + [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_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 Layer + [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_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/genone/g1_65/keymaps/via/keymap.c b/keyboards/genone/g1_65/keymaps/via/keymap.c new file mode 100644 index 0000000000..94361dd14f --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 GEN ONE 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] = { + + // Default layer + [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_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 Layer + [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_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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), + + // Fn3 Layer + [3] = 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/genone/g1_65/keymaps/via/rules.mk b/keyboards/genone/g1_65/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/genone/g1_65/readme.md b/keyboards/genone/g1_65/readme.md new file mode 100644 index 0000000000..2ea3e191e6 --- /dev/null +++ b/keyboards/genone/g1_65/readme.md @@ -0,0 +1,18 @@ +# GEN ONE G1_65 + +G1_65 is a keyboard PCB supporting 65% layout. [More info at GEN ONE MERCH](https://genonemerch.com) + +* Keyboard Maintainer: [rojasa1990](https://github.com/rojasa1990) +* Hardware Supported: GEN ONE G1_65 +* Hardware Availability: GEN ONE MERCH + +Make example for this keyboard (after setting up your build environment): + + make genone/g1_65:default + +Flashing example for this keyboard: + + make genone/g1_65: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/genone/g1_65/rules.mk b/keyboards/genone/g1_65/rules.mk new file mode 100644 index 0000000000..a8020aa539 --- /dev/null +++ b/keyboards/genone/g1_65/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 = 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 keybaord RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi diff --git a/keyboards/gergo/gergo.c b/keyboards/gergo/gergo.c index fab8d0f44c..ba359f8145 100644 --- a/keyboards/gergo/gergo.c +++ b/keyboards/gergo/gergo.c @@ -65,7 +65,7 @@ out: return mcp23018_status; } -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { { {0,0}, {0,7}, {2,7}, {3,7} }, { {0,8}, {1,8}, {2,8}, {3,8} }, { {0,9}, {1,9}, {2,9}, {3,9} }, diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c index ecf5f39031..81ff6852d1 100644 --- a/keyboards/gergo/keymaps/drashna/keymap.c +++ b/keyboards/gergo/keymaps/drashna/keymap.c @@ -87,12 +87,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ ), - [_MODS] = LAYOUT_gergo_wrapper( - _______, ___________________BLANK___________________, ___________________BLANK___________________, _______, - _______, ___________________BLANK___________________, _______, _______, ___________________BLANK___________________, _______, - KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT, - _______, _______, _______, _______, _______, _______, _______, _______ - ), [_LOWER] = LAYOUT_gergo_wrapper( KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_PIPE, diff --git a/keyboards/ggkeyboards/genesis/hotswap/config.h b/keyboards/ggkeyboards/genesis/hotswap/config.h new file mode 100644 index 0000000000..d435612f17 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#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 + +/* key matrix size */ +#define MATRIX_ROWS 7 +#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 { 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 new file mode 100644 index 0000000000..b3b7c6508c --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.c @@ -0,0 +1,22 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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" + +// 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 new file mode 100644 index 0000000000..a5ff78cca7 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \ + K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5G, \ + 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 }, \ +} + +// 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 new file mode 100644 index 0000000000..dfb68ce0b5 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Genesis", + "url": "", + "maintainer": "Spooknik", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "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":"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}, + {"label":"K23 (C4,F3)", "x":3, "y":1.5}, + {"label":"K24 (C4,F4)", "x":4, "y":1.5}, + {"label":"K25 (C4,F5)", "x":5, "y":1.5}, + {"label":"K26 (C4,F6)", "x":6, "y":1.5}, + {"label":"K27 (C4,F7)", "x":7, "y":1.5}, + {"label":"K28 (C4,A0)", "x":8, "y":1.5}, + {"label":"K29 (C4,A1)", "x":9, "y":1.5}, + {"label":"K2A (C4,A2)", "x":10, "y":1.5}, + {"label":"K2B (C4,A3)", "x":11, "y":1.5}, + {"label":"K2C (C4,A4)", "x":12, "y":1.5}, + {"label":"K2D (C4,A5)", "x":13, "y":1.5, "w":2}, + {"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}, + {"label":"K33 (C3,F3)", "x":3.5, "y":2.5}, + {"label":"K34 (C3,F4)", "x":4.5, "y":2.5}, + {"label":"K35 (C3,F5)", "x":5.5, "y":2.5}, + {"label":"K36 (C3,F6)", "x":6.5, "y":2.5}, + {"label":"K37 (C3,F7)", "x":7.5, "y":2.5}, + {"label":"K38 (C3,A0)", "x":8.5, "y":2.5}, + {"label":"K39 (C3,A1)", "x":9.5, "y":2.5}, + {"label":"K3A (C3,A2)", "x":10.5, "y":2.5}, + {"label":"K3B (C3,A3)", "x":11.5, "y":2.5}, + {"label":"K3C (C3,A4)", "x":12.5, "y":2.5}, + {"label":"K3D (C3,A5)", "x":13.5, "y":2.5, "w":1.5}, + {"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}, + {"label":"K44 (C2,F4)", "x":3.75, "y":3.5}, + {"label":"K45 (C2,F5)", "x":4.75, "y":3.5}, + {"label":"K46 (C2,F6)", "x":5.75, "y":3.5}, + {"label":"K47 (C2,F7)", "x":6.75, "y":3.5}, + {"label":"K48 (C2,A0)", "x":7.75, "y":3.5}, + {"label":"K49 (C2,A1)", "x":8.75, "y":3.5}, + {"label":"K4A (C2,A2)", "x":9.75, "y":3.5}, + {"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}, + {"label":"K54 (C1,F4)", "x":4.25, "y":4.5}, + {"label":"K55 (C1,F5)", "x":5.25, "y":4.5}, + {"label":"K56 (C1,F6)", "x":6.25, "y":4.5}, + {"label":"K57 (C1,F7)", "x":7.25, "y":4.5}, + {"label":"K58 (C1,A0)", "x":8.25, "y":4.5}, + {"label":"K59 (C1,A1)", "x":9.25, "y":4.5}, + {"label":"K5A (C1,A2)", "x":10.25, "y":4.5}, + {"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}, + {"label":"K66 (C0,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K6A (C0,A2)", "x":10, "y":5.5, "w":1.25}, + {"label":"K6B (C0,A3)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K6C (C0,A4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K6D (C0,A5)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K6F (C0,A7)", "x":15.25, "y":5.5}, + {"label":"K6G (C0,C6)", "x":16.25, "y":5.5}, + {"label":"K6H (C0,C7)", "x":17.25, "y":5.5} + ] + } + } + ,"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 new file mode 100644 index 0000000000..ab009ae58a --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c new file mode 100644 index 0000000000..dd680a8391 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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_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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/readme.md b/keyboards/ggkeyboards/genesis/hotswap/readme.md new file mode 100644 index 0000000000..c93aab1af4 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/readme.md @@ -0,0 +1,15 @@ +# GG Keyboards Hotswap PCB + +A Top mount TKL keyboard from GG Keyboards. + +* Keyboard Maintainer: [Stevem Phillips (spooknik)](https://github.com/spooknik) +* Hardware Supported: Hotswap PCB Rev 1 +* Hardware Availability: Coming Soon! + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and "R" Key simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make ggkeyboards/genesis/hotswap: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/ggkeyboards/genesis/hotswap/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/rules.mk new file mode 100644 index 0000000000..0de06a3443 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = at90usb1286 + +# 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 = 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/ggkeyboards/genesis/solder/config.h b/keyboards/ggkeyboards/genesis/solder/config.h new file mode 100644 index 0000000000..76586262ab --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBB00 +#define PRODUCT_ID 0xD4D2 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GG Keyboards +#define PRODUCT Genesis + +/* key matrix size */ +#define MATRIX_ROWS 7 +#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 { 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/solder/info.json b/keyboards/ggkeyboards/genesis/solder/info.json new file mode 100644 index 0000000000..918f4c2e1b --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Genesis", + "url": "", + "maintainer": "Spooknik", + "width": 17, + "height": 6, + "layouts": { + "LAYOUT": { + "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, "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} + ] + } + } + ,"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 new file mode 100644 index 0000000000..98d778f1d1 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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, + KC_CAPS, KC_A, KC_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, 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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [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 new file mode 100644 index 0000000000..1084a6e220 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_GRV, KC_1, KC_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, + KC_CAPS, KC_A, KC_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, 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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk b/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/readme.md b/keyboards/ggkeyboards/genesis/solder/readme.md new file mode 100644 index 0000000000..edecaa656b --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/readme.md @@ -0,0 +1,15 @@ +# GG Keyboards Solder PCB + +A Top mount TKL keyboard from GG Keyboards. + +* Keyboard Maintainer: [Stevem Phillips (spooknik)](https://github.com/spooknik) +* Hardware Supported: Solder PCB Rev 1 +* Hardware Availability: Coming Soon! + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and "R" Key simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make ggkeyboards/genesis/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). diff --git a/keyboards/ggkeyboards/genesis/solder/rules.mk b/keyboards/ggkeyboards/genesis/solder/rules.mk new file mode 100644 index 0000000000..0de06a3443 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = at90usb1286 + +# 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 = 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/ggkeyboards/genesis/solder/solder.c b/keyboards/ggkeyboards/genesis/solder/solder.c new file mode 100644 index 0000000000..9e1bdeb0ff --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/solder.c @@ -0,0 +1,22 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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" + +// 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 new file mode 100644 index 0000000000..a5a96adf83 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/solder.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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, K3D, \ + 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, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, 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, K41, 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 }, \ +} + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/gh60/revc/keymaps/bluezio/keymap.c b/keyboards/gh60/revc/keymaps/bluezio/keymap.c index c0f650ecc5..98ca935053 100644 --- a/keyboards/gh60/revc/keymaps/bluezio/keymap.c +++ b/keyboards/gh60/revc/keymaps/bluezio/keymap.c @@ -1,7 +1,7 @@ #include QMK_KEYBOARD_H // lshift split, backspace split, full ANSI enter, full right shift -#define KEYMAP_BZIO( \ +#define LAYOUT_BZIO( \ 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, \ @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: HHKB with hyper key where ctrl used to be, and right half of left shift used as a key lock */ - KEYMAP_BZIO( + LAYOUT_BZIO( KC_ESC, KC_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,\ @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 1: spacefn with WASD arrows/navigation block and extra space key for realignment of source code, plus IJKL mouse arrows, volume up/down in <>, and caps lock where it used to be */ - KEYMAP_BZIO( + LAYOUT_BZIO( KC_ESC, KC_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_PGUP, KC_UP, KC_PGDOWN, KC_INSERT, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELETE, KC_MS_BTN1, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, \ diff --git a/keyboards/gh60/satan/keymaps/denolfe/rules.mk b/keyboards/gh60/satan/keymaps/denolfe/rules.mk index 5a8745b689..4e002fc0fb 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 = yes # Virtual DIP switch configuration(+1000) +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 = yes # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk index 7b395f4ccd..071edf30e9 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 = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk index 3d886f14f5..4175ab1373 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/gmmk/pro/keymaps/default/keymap.c b/keyboards/gmmk/pro/keymaps/default/keymap.c index 9e5796ac18..b08400cd8d 100644 --- a/keyboards/gmmk/pro/keymaps/default/keymap.c +++ b/keyboards/gmmk/pro/keymaps/default/keymap.c @@ -55,10 +55,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/gmmk/pro/keymaps/wholesomeducky/keymap.c b/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c new file mode 100644 index 0000000000..fded532562 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c @@ -0,0 +1,57 @@ +/* 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 +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Ct_L A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up Win_R +// 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_MEDIA_PLAY_PAUSE, + KC_GRV, KC_1, KC_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_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_RGUI, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, 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_INS, + 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_TRNS, KC_HOME, + 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_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, RESET, 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_END + ), + +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_MS_WH_RIGHT); + } else { + tap_code(KC_MS_WH_LEFT); + } + return true; +} diff --git a/keyboards/gmmk/pro/keymaps/willwm/keymap.c b/keyboards/gmmk/pro/keymaps/willwm/keymap.c new file mode 100644 index 0000000000..a17f793319 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/willwm/keymap.c @@ -0,0 +1,74 @@ +/* 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/keymaps/willwm/keymap.json b/keyboards/gmmk/pro/keymaps/willwm/keymap.json new file mode 100644 index 0000000000..d2325d2c13 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/willwm/keymap.json @@ -0,0 +1,181 @@ +{ + "version": 1, + "notes": "", + "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": "gmmk/pro", + "keymap": "willwm", + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_F11", + "KC_F12", + "KC_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" + ], + [ + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_INS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_PSCR", + "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", + "RESET", + "KC_NO", + "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_PGUP", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_TRNS", + "KC_NO", + "KC_HOME", + "KC_PGDN", + "KC_END" + ] + ], + "author": "" +} \ No newline at end of file diff --git a/keyboards/gmmk/pro/keymaps/willwm/readme.md b/keyboards/gmmk/pro/keymaps/willwm/readme.md new file mode 100644 index 0000000000..1c169faac6 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/willwm/readme.md @@ -0,0 +1,22 @@ +layer0 +layer1 + +# willwm GMMK Pro Layout + +Based on [gmmk/pro/keymaps/default](../default/keymap.c), with [VIA support](./rules.mk) + +Layer 0 + +* Delete between F12 and rotary encoder (replaces PrtSc) +* Home below rotary encoder (replaces Del) +* MO(1) in default location and Caps Lock location + +Layer 1 + +* Tab -> Caps Lock +* Del -> Insert +* Home -> PrtSc +* Left Arrow -> Home +* Right Arrow -> End +* Up Arrow -> PgUp +* Down Arrow -> PgDn diff --git a/keyboards/gmmk/pro/keymaps/willwm/rules.mk b/keyboards/gmmk/pro/keymaps/willwm/rules.mk new file mode 100644 index 0000000000..511b50e19c --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/willwm/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +UNICODE_ENABLE = yes diff --git a/keyboards/gmmk/pro/rules.mk b/keyboards/gmmk/pro/rules.mk index 307cacfc67..b12d055a3d 100644 --- a/keyboards/gmmk/pro/rules.mk +++ b/keyboards/gmmk/pro/rules.mk @@ -1,6 +1,9 @@ # MCU name MCU = STM32F303 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # @@ -17,4 +20,4 @@ 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 support +ENCODER_ENABLE = yes diff --git a/keyboards/gon/nerd60/info.json b/keyboards/gon/nerd60/info.json index 85e0fe9d54..98634f33ed 100644 --- a/keyboards/gon/nerd60/info.json +++ b/keyboards/gon/nerd60/info.json @@ -5,8 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT_60": { - "key_count": 64, + "LAYOUT_all": { "layout": [ {"label":"K80", "x":0, "y":0}, {"label":"K10", "x":1, "y":0}, @@ -21,7 +20,9 @@ {"label":"K05", "x":10, "y":0}, {"label":"K15", "x":11, "y":0}, {"label":"K06", "x":12, "y":0}, - {"label":"K16", "x":13, "y":0, "w":2}, + {"label":"K17", "x":13, "y":0}, + {"label":"K16", "x":14, "y":0}, + {"label":"K20", "x":0, "y":1, "w":1.5}, {"label":"K30", "x":1.5, "y":1}, {"label":"K21", "x":2.5, "y":1}, @@ -36,6 +37,7 @@ {"label":"K35", "x":11.5, "y":1}, {"label":"K26", "x":12.5, "y":1}, {"label":"K36", "x":13.5, "y":1, "w":1.5}, + {"label":"K40", "x":0, "y":2, "w":1.75}, {"label":"K41", "x":1.75, "y":2}, {"label":"K51", "x":2.75, "y":2}, @@ -48,8 +50,8 @@ {"label":"K45", "x":9.75, "y":2}, {"label":"K55", "x":10.75, "y":2}, {"label":"K46", "x":11.75, "y":2}, - {"label":"K17", "x":12.75, "y":2}, - {"label":"K56", "x":13.75, "y":2, "w":1.25}, + {"label":"K56", "x":12.75, "y":2, "w":2.25}, + {"label":"K70", "x":0, "y":3, "w":1.25}, {"label":"K97", "x":1.25, "y":3}, {"label":"K61", "x":2.25, "y":3}, @@ -64,6 +66,7 @@ {"label":"K75", "x":11.25, "y":3}, {"label":"K66", "x":12.25, "y":3, "w":1.75}, {"label":"K76", "x":14, "y":3}, + {"label":"K60", "x":0, "y":4, "w":1.25}, {"label":"K50", "x":1.25, "y":4, "w":1.25}, {"label":"K87", "x":2.5, "y":4, "w":1.25}, @@ -73,6 +76,288 @@ {"label":"K47", "x":12.5, "y":4, "w":1.25}, {"label":"K57", "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_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_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} + ] } } } diff --git a/keyboards/gon/nerd60/keymaps/default/keymap.c b/keyboards/gon/nerd60/keymaps/default/keymap.c index d205e06de1..a5cec81ef4 100644 --- a/keyboards/gon/nerd60/keymaps/default/keymap.c +++ b/keyboards/gon/nerd60/keymaps/default/keymap.c @@ -2,18 +2,18 @@ // Keymap layers const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60( /* 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, + [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_NUHS, 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_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_60( /* 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, + [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_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, _______, _______, _______, KC_APP, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/gon/nerd60/keymaps/mauin/keymap.c b/keyboards/gon/nerd60/keymaps/mauin/keymap.c index fc553bcf16..78a2eb353c 100644 --- a/keyboards/gon/nerd60/keymaps/mauin/keymap.c +++ b/keyboards/gon/nerd60/keymaps/mauin/keymap.c @@ -1,12 +1,30 @@ +/* Copyright 2017 Marvin Ramin (@Mauin) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 -#define BASE_LAYER 0 -#define FUNCTION_LAYER 1 -#define SYSTEM_LAYER 2 +enum layer_names { + _BS, // Base Layer + _FN, // Function Layer + _SY // System Layer +}; -// Key aliases -#define __x__ KC_NO +enum custom_keycodes { + ESC_GRV = SAFE_RANGE +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layer 0: Default Layer @@ -22,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Ctl|Alt|Gui | Space |Gui |Alt| F2| Ctl | * `-----------------------------------------------------------' */ - [BASE_LAYER] = LAYOUT_60( - 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_TAB, KC_Q, 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, __x__, KC_ENT, \ - KC_LSFT, __x__, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, __x__, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(2), KC_RCTL \ + [_BS] = LAYOUT_all( + ESC_GRV, 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, + 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, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(2), KC_RCTL ), /* Layer 1: Function Layer @@ -43,13 +61,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [FUNCTION_LAYER] = LAYOUT_60( - KC_GRV, KC_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, \ - __x__, KC_MPRV, KC_MPLY, KC_MNXT, __x__, __x__, KC_PGUP, KC_HOME, KC_UP, KC_END, __x__, KC_SLCK, KC_PAUS, __x__, \ - KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, __x__, __x__, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __x__, __x__, __x__, __x__, \ - KC_LSFT, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, __x__, __x__, __x__, __x__ \ - ), + [_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, XXXXXXX, KC_DEL, + XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_SLCK, KC_PAUS, XXXXXXX, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), /* Layer 2: System Layer * ,-----------------------------------------------------------. @@ -64,45 +82,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [SYSTEM_LAYER] = LAYOUT_60( - RESET, __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__, __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__, KC_TRNS, __x__ \ + [_SY] = LAYOUT_all( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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, XXXXXXX ), }; -enum function_id { - ESC_GRV, // Makes Esc behave like `~ when pressed with the left GUI modifier. This is the "switch between windows of the same application" key combination in macOS -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(ESC_GRV), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t esc_grv_mask; - switch (id) { - case ESC_GRV: - esc_grv_mask = get_mods() & MOD_BIT(KC_LGUI); - if (record->event.pressed) { - if (esc_grv_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (esc_grv_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) { + uint8_t esc_grv_mask = get_mods() & MOD_BIT(KC_LGUI); + switch (keycode) { + case ESC_GRV: + if (esc_grv_mask) { + if (record->event.pressed) { + register_code16(G(KC_GRV)); + } else { + unregister_code16(G(KC_GRV)); + } + } else { + if (record->event.pressed) { + register_code(KC_ESC); + } else { + unregister_code(KC_ESC); + } + } + break; + } + return true; } diff --git a/keyboards/gon/nerd60/nerd60.h b/keyboards/gon/nerd60/nerd60.h index 3f8f538e27..03a3ffe907 100644 --- a/keyboards/gon/nerd60/nerd60.h +++ b/keyboards/gon/nerd60/nerd60.h @@ -2,10 +2,86 @@ #include "quantum.h" -#define LAYOUT_60( \ - K80, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ +#define LAYOUT_all( \ + K80, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K17, K16, \ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ - K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K17, K56, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K70, K97, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K60, K50, K87, K07, K27, K37, K47, K57 \ +) { \ + { KC_NO, 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, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO }, \ + { K80, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K97 } \ +} + +#define LAYOUT_60_ansi( \ + K80, 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, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, \ + K60, K50, K87, K07, K27, K37, K47, K57 \ +) { \ + { KC_NO, 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, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, KC_NO }, \ + { K80, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + K80, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K17, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K60, K50, K87, K07, K27, K37, K47, K57 \ +) { \ + { KC_NO, 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, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO }, \ + { K80, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_60_iso( \ + K80, 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, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K36, K56, \ + K70, K97, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, \ + K60, K50, K87, K07, K27, K37, K47, K57 \ +) { \ + { KC_NO, 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, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, KC_NO }, \ + { K80, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K97 } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + K80, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K17, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K36, K56, \ K70, K97, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ K60, K50, K87, K07, K27, K37, K47, K57 \ ) { \ diff --git a/keyboards/gon/nerd60/rules.mk b/keyboards/gon/nerd60/rules.mk index 2401cbea85..b202fac6a2 100644 --- a/keyboards/gon/nerd60/rules.mk +++ b/keyboards/gon/nerd60/rules.mk @@ -5,13 +5,6 @@ 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 @@ -28,7 +21,7 @@ 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 -MIDI_ENABLE = no # MIDI 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_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/config.h b/keyboards/gon/nerdtkl/config.h index 8619cf24a7..74d67f30d4 100644 --- a/keyboards/gon/nerdtkl/config.h +++ b/keyboards/gon/nerdtkl/config.h @@ -3,8 +3,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6965 +#define VENDOR_ID 0x4E45 // NE +#define PRODUCT_ID 0x5244 // RD #define DEVICE_VER 0x0001 #define MANUFACTURER GON #define PRODUCT NerD TKL @@ -22,6 +22,9 @@ #define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 } #define UNUSED_PINS +#define BOOTMAGIC_LITE_ROW 8 +#define BOOTMAGIC_LITE_COLUMN 0 + /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/gon/nerdtkl/keymaps/via/keymap.c b/keyboards/gon/nerdtkl/keymaps/via/keymap.c new file mode 100644 index 0000000000..297c6a091a --- /dev/null +++ b/keyboards/gon/nerdtkl/keymaps/via/keymap.c @@ -0,0 +1,58 @@ + /* Copyright 2020 Michael Kaylan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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_tkl( + KC_ESC, KC_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_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_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( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_tkl( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_tkl( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; diff --git a/keyboards/gon/nerdtkl/keymaps/via/rules.mk b/keyboards/gon/nerdtkl/keymaps/via/rules.mk new file mode 100644 index 0000000000..df7e3909c9 --- /dev/null +++ b/keyboards/gon/nerdtkl/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +BACKLIGHT_ENABLE = yes diff --git a/keyboards/gray_studio/cod67/rules.mk b/keyboards/gray_studio/cod67/rules.mk index 129bd624cc..2e066d9915 100644 --- a/keyboards/gray_studio/cod67/rules.mk +++ b/keyboards/gray_studio/cod67/rules.mk @@ -11,6 +11,9 @@ MCU = atmega32u4 # ATmega328P USBasp BOOTLOADER = lufa-ms +# This board uses the older unsafe 6k version of lufa-ms +BOOTLOADER_SIZE = 6144 + # Build Options # change yes to no to disable # diff --git a/keyboards/gray_studio/hb85/config.h b/keyboards/gray_studio/hb85/config.h index 9309012a41..0e1f0aff42 100644 --- a/keyboards/gray_studio/hb85/config.h +++ b/keyboards/gray_studio/hb85/config.h @@ -34,5 +34,9 @@ along with this program. If not, see . #define RGBLED_NUM 5 #define RGBLIGHT_ANIMATIONS +#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 diff --git a/keyboards/gray_studio/hb85/hb85.c b/keyboards/gray_studio/hb85/hb85.c index 4b3ff64f1e..964234d6b4 100644 --- a/keyboards/gray_studio/hb85/hb85.c +++ b/keyboards/gray_studio/hb85/hb85.c @@ -17,23 +17,3 @@ along with this program. If not, see . */ #include "hb85.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/gray_studio/space65/keymaps/iso/keymap.c b/keyboards/gray_studio/space65/keymaps/iso/keymap.c index 66c69eba8b..a1f8af01b2 100644 --- a/keyboards/gray_studio/space65/keymaps/iso/keymap.c +++ b/keyboards/gray_studio/space65/keymaps/iso/keymap.c @@ -19,16 +19,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_iso_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ ` │ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ ` │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │Del│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │PUp│ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │Del│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PUp│ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ - * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │PDn│ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │PDn│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│LGUI│LAlt│      Spaaaaaaace       │RAlt│ L1 │ │ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * │Ctrl│LGUI│LAlt│ Spaaaaaaace │RAlt│ L1 │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ KC_ESC, KC_1, KC_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_DEL, @@ -39,16 +39,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_65_iso_blocker( /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │ + * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│   │   │   │   │     │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │ + * │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │    │    │    │                        │    │    │ │   │   │   │ - * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ 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_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, diff --git a/keyboards/gray_studio/think65/solder/readme.md b/keyboards/gray_studio/think65/solder/readme.md index 1d7e4450ad..5f0ddfe5d8 100644 --- a/keyboards/gray_studio/think65/solder/readme.md +++ b/keyboards/gray_studio/think65/solder/readme.md @@ -1,10 +1,12 @@ -# Think6.5 Solder (Compatible) +# Think6.5 Solder V1/V2 -65% board with 6.5 degree angle ran by Airpotter and Oldcat. PCB Manufactured by DEMO Studio and Keyboard manufactured by Gray Studio. +65% PCB with center mount USB C ran by Airpotter and Oldcat through Graystudio. -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: Think6.5 Compatible PCB -Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=100166.0) +This firmware is compatible with both V1 and V2 variants of the Think 6.5 PCB. + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: Think6.5 V1 and V2 Compatible PCB +* Hardware Availability: [Geekhack V1 GB](https://geekhack.org/index.php?topic=100166.0), [Graystudio V2 GB](https://graystudio.club/products/gb-think6-5-v2) **Indicator LEDs:** The solder PCB ONLY supports Caps Lock LEDs unlike the Hotswap version that supports Num Lock, Caps Lock, and Scroll Lock. diff --git a/keyboards/gskt00/rules.mk b/keyboards/gskt00/rules.mk index f0bbcad813..0011ec6ce7 100755 --- a/keyboards/gskt00/rules.mk +++ b/keyboards/gskt00/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/gvalchca/ga150/config.h b/keyboards/gvalchca/ga150/config.h new file mode 100644 index 0000000000..c815217702 --- /dev/null +++ b/keyboards/gvalchca/ga150/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Kirill Shkuretskiy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6776 +#define PRODUCT_ID 0x6135 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Gvalchca +#define PRODUCT GA15.0 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {B1,B2,B3,F1,F0} +#define MATRIX_COL_PINS {E6,B7,D5,D6,D7,B4,B5,B6,C6,C7,F7,F6,F5,F4,D3} + +/* 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 E6 // usually COL +#define QMK_ESC_INPUT B1 // usually ROW diff --git a/keyboards/gvalchca/ga150/ga150.c b/keyboards/gvalchca/ga150/ga150.c new file mode 100644 index 0000000000..3f098c4c53 --- /dev/null +++ b/keyboards/gvalchca/ga150/ga150.c @@ -0,0 +1,17 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ga150.h" \ No newline at end of file diff --git a/keyboards/gvalchca/ga150/ga150.h b/keyboards/gvalchca/ga150/ga150.h new file mode 100644 index 0000000000..9d803b5c9f --- /dev/null +++ b/keyboards/gvalchca/ga150/ga150.h @@ -0,0 +1,37 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, 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} \ +} \ No newline at end of file diff --git a/keyboards/gvalchca/ga150/info.json b/keyboards/gvalchca/ga150/info.json new file mode 100644 index 0000000000..494b84af39 --- /dev/null +++ b/keyboards/gvalchca/ga150/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "GA15.0", + "url": "", + "maintainer": "Gvalchca", + "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}, + {"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} + ] + } + } +} diff --git a/keyboards/gvalchca/ga150/keymaps/default/keymap.c b/keyboards/gvalchca/ga150/keymaps/default/keymap.c new file mode 100644 index 0000000000..1f19a80850 --- /dev/null +++ b/keyboards/gvalchca/ga150/keymaps/default/keymap.c @@ -0,0 +1,39 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_MAIN] = 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, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_RCTRL), + +[_FUNC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/gvalchca/ga150/keymaps/default/readme.md b/keyboards/gvalchca/ga150/keymaps/default/readme.md new file mode 100644 index 0000000000..cee1f4cb91 --- /dev/null +++ b/keyboards/gvalchca/ga150/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for GA15.0 \ No newline at end of file diff --git a/keyboards/gvalchca/ga150/keymaps/via/keymap.c b/keyboards/gvalchca/ga150/keymaps/via/keymap.c new file mode 100644 index 0000000000..3b4c4ae84b --- /dev/null +++ b/keyboards/gvalchca/ga150/keymaps/via/keymap.c @@ -0,0 +1,48 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL), + +[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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/gvalchca/ga150/keymaps/via/rules.mk b/keyboards/gvalchca/ga150/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/gvalchca/ga150/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gvalchca/ga150/readme.md b/keyboards/gvalchca/ga150/readme.md new file mode 100644 index 0000000000..4f44095b4a --- /dev/null +++ b/keyboards/gvalchca/ga150/readme.md @@ -0,0 +1,15 @@ +# Gvalchca GA15.0 + +Alps 60% PCB with some weird layouts support. To update the firmware connect the PCB to your computer and enter bootloader by pressing hardware Reset button near the MCU. + +![GA15.0 image](https://i.imgur.com/Z7tNlGDh.jpeg) + +* Keyboard Maintainer: [Gvalchca](https://github.com/Gvalch-ca) +* Hardware Supported: Gvalchca GA15.0 +* Hardware Availability: [KeebMeUp](https://keebmeup.com) + +Make example for this keyboard (after setting up your build environment): + + make gvalchca/ga150: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/gvalchca/ga150/rules.mk b/keyboards/gvalchca/ga150/rules.mk new file mode 100644 index 0000000000..3b26fac668 --- /dev/null +++ b/keyboards/gvalchca/ga150/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 +UNICODE_ENABLE = yes # Unicode +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/config.h b/keyboards/gvalchca/spaccboard/config.h new file mode 100644 index 0000000000..64b13bd9bc --- /dev/null +++ b/keyboards/gvalchca/spaccboard/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Kirill Shkuretskiy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6776 +#define PRODUCT_ID 0x5342 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Gvalchca +#define PRODUCT SpaccBoard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {B1,B2,B3,C7,F0} +#define MATRIX_COL_PINS {E6,B7,D5,D6,D7,B4,B5,B6,C6,F7,F6,F5,F4,F1,D3} + +/* 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 E6 // usually COL +#define QMK_ESC_INPUT B1 // usually ROW diff --git a/keyboards/gvalchca/spaccboard/info.json b/keyboards/gvalchca/spaccboard/info.json new file mode 100644 index 0000000000..051b5e0a20 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/info.json @@ -0,0 +1,214 @@ +{ + "keyboard_name": "SpaccBoard", + "url": "https://keebmeup.com", + "maintainer": "Gvalchca", + "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": 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_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.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_bae": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"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": 1, "w": 2.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} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c b/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c new file mode 100644 index 0000000000..e700e25fbf --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c @@ -0,0 +1,39 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { + _MAIN, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_MAIN] = 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_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_RCTRL), + +[_FUNC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/gvalchca/spaccboard/keymaps/default/readme.md b/keyboards/gvalchca/spaccboard/keymaps/default/readme.md new file mode 100644 index 0000000000..80a375dc05 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for SpaccBoard \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c b/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c new file mode 100644 index 0000000000..ba289f7ed0 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c @@ -0,0 +1,48 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_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_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_RCTRL), + +[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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk b/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/readme.md b/keyboards/gvalchca/spaccboard/readme.md new file mode 100644 index 0000000000..09eaf9314d --- /dev/null +++ b/keyboards/gvalchca/spaccboard/readme.md @@ -0,0 +1,14 @@ +# Gvalchca x Jugizafupe SpaccBoard + +Space Invaders 60% PCB with ANSI and Big Ass Enter support. To update the firmware connect the PCB to your computer and press Reset button. +![SpaccBoard image](https://i.imgur.com/ZYSrQTr.jpeg) + +* Keyboard Maintainer: [Gvalchca](https://github.com/Gvalch-ca) +* Hardware Supported: Gvalchca x Jugizafupe SpaccBoard +* Hardware Availability: [KeebMeUp](https://keebmeup.com) + +Make example for this keyboard (after setting up your build environment): + + make gvalchca/spaccboard: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/gvalchca/spaccboard/rules.mk b/keyboards/gvalchca/spaccboard/rules.mk new file mode 100644 index 0000000000..acd5fbc293 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 +UNICODE_ENABLE = yes # Unicode +LTO_ENABLE = yes diff --git a/keyboards/gvalchca/spaccboard/spaccboard.c b/keyboards/gvalchca/spaccboard/spaccboard.c new file mode 100644 index 0000000000..57d512cc2b --- /dev/null +++ b/keyboards/gvalchca/spaccboard/spaccboard.c @@ -0,0 +1,17 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "spaccboard.h" \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/spaccboard.h b/keyboards/gvalchca/spaccboard/spaccboard.h new file mode 100644 index 0000000000..49afca436e --- /dev/null +++ b/keyboards/gvalchca/spaccboard/spaccboard.h @@ -0,0 +1,66 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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( \ + k00, k01, k02, k03, k04, 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, \ + k40, k42, k43, k47, 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, ___, ___ }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} + +#define LAYOUT_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, \ + k40, k42, k43, k47, 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, ___ }, \ + { 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, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} + +#define LAYOUT_bae( \ + k00, k01, k02, k03, 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, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k42, k43, k47, 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, ___, ___ }, \ + { 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, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} diff --git a/keyboards/hadron/hadron.h b/keyboards/hadron/hadron.h index 426face6f4..c11774729f 100644 --- a/keyboards/hadron/hadron.h +++ b/keyboards/hadron/hadron.h @@ -1,16 +1,17 @@ #ifndef HADRON_H #define HADRON_H -#ifdef SUBPROJECT_ver0 +#include "quantum.h" + +#ifdef KEYBOARD_hadron_ver0 #include "ver0.h" #endif -#ifdef SUBPROJECT_ver2 +#ifdef KEYBOARD_hadron_ver2 #include "ver2.h" #endif -#ifdef SUBPROJECT_ver3 +#ifdef KEYBOARD_hadron_ver3 #include "ver3.h" #endif -#include "quantum.h" #define LAYOUT( \ diff --git a/keyboards/hadron/ver3/rules.mk b/keyboards/hadron/ver3/rules.mk index 62d7fb09e5..ef839977ea 100644 --- a/keyboards/hadron/ver3/rules.mk +++ b/keyboards/hadron/ver3/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # @@ -22,4 +25,3 @@ HAPTIC_ENABLE += DRV2605L QWIIC_ENABLE = yes QWIIC_DRIVERS += MICRO_OLED ENCODER_ENABLER = yes -# SERIAL_LINK_ENABLE = yes diff --git a/keyboards/hadron/ver3/ver3.c b/keyboards/hadron/ver3/ver3.c index 1491caba43..0664bf4b0e 100644 --- a/keyboards/hadron/ver3/ver3.c +++ b/keyboards/hadron/ver3/ver3.c @@ -18,6 +18,7 @@ #include "action_layer.h" #include "haptic.h" + #ifdef RGB_MATRIX_ENABLE #include "rgb_matrix.h" @@ -181,9 +182,13 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_user(keycode, record); } -void encoder_update_kb(uint8_t index, bool clockwise) { +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 diff --git a/keyboards/hadron/ver3/ver3.h b/keyboards/hadron/ver3/ver3.h index 95926469bf..1ad44b871f 100644 --- a/keyboards/hadron/ver3/ver3.h +++ b/keyboards/hadron/ver3/ver3.h @@ -15,4 +15,4 @@ */ #pragma once -#include "hadron.h" \ No newline at end of file +#include "hadron.h" diff --git a/keyboards/hand88/config.h b/keyboards/hand88/config.h new file mode 100755 index 0000000000..7e013224dd --- /dev/null +++ b/keyboards/hand88/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 0x3838 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Hand 88 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_ROW_PINS { A2, A14, A15, B3, B4, B5 } +#define MATRIX_COL_PINS { A1, B9, A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14, B15, A8 } + +/* 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/hand88/hand88.c b/keyboards/hand88/hand88.c new file mode 100755 index 0000000000..ad182b4809 --- /dev/null +++ b/keyboards/hand88/hand88.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 "hand88.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/hand88/hand88.h b/keyboards/hand88/hand88.h new file mode 100644 index 0000000000..efe24866f1 --- /dev/null +++ b/keyboards/hand88/hand88.h @@ -0,0 +1,36 @@ +/* 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, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, 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, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, KOG }, \ + { 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, XXX, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E, K5F, K5G } \ +} diff --git a/keyboards/hand88/info.json b/keyboards/hand88/info.json new file mode 100755 index 0000000000..ca20b87e58 --- /dev/null +++ b/keyboards/hand88/info.json @@ -0,0 +1,12 @@ +{ + "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/keymaps/default/keymap.c b/keyboards/hand88/keymaps/default/keymap.c new file mode 100644 index 0000000000..95068e13f9 --- /dev/null +++ b/keyboards/hand88/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* 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_ESC, KC_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_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_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_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT) +}; diff --git a/keyboards/hand88/keymaps/default/readme.md b/keyboards/hand88/keymaps/default/readme.md new file mode 100755 index 0000000000..9b30674419 --- /dev/null +++ b/keyboards/hand88/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Hand 88. VIA support disabled. + +![Layer 0](https://i.imgur.com/IhbvSZ1.png) diff --git a/keyboards/hand88/keymaps/via/keymap.c b/keyboards/hand88/keymaps/via/keymap.c new file mode 100644 index 0000000000..16c139fd64 --- /dev/null +++ b/keyboards/hand88/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* 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_ESC, KC_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_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_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_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = 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, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/hand88/keymaps/via/readme.md b/keyboards/hand88/keymaps/via/readme.md new file mode 100755 index 0000000000..32bb1fcc26 --- /dev/null +++ b/keyboards/hand88/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Hand 88. VIA support enabled. + +![Layer 0](https://i.imgur.com/IhbvSZ1.png) diff --git a/keyboards/hand88/keymaps/via/rules.mk b/keyboards/hand88/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/hand88/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/hand88/readme.md b/keyboards/hand88/readme.md new file mode 100755 index 0000000000..d3cca8e21a --- /dev/null +++ b/keyboards/hand88/readme.md @@ -0,0 +1,32 @@ +# Hand 88 + +This is a standard TKL layout PCB. 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.hand.engineering + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make hand88: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 hand88::flash`) diff --git a/keyboards/hand88/rules.mk b/keyboards/hand88/rules.mk new file mode 100755 index 0000000000..36088f03f7 --- /dev/null +++ b/keyboards/hand88/rules.mk @@ -0,0 +1,28 @@ +# 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 = 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 +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/handwired/2x5keypad/info.json b/keyboards/handwired/2x5keypad/info.json new file mode 100644 index 0000000000..2cc66f366b --- /dev/null +++ b/keyboards/handwired/2x5keypad/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "2x5keypad", + "url": "", + "maintainer": "jmcameron", + "width": 5, + "height": 2, + "layouts": { + "LAYOUT": { + "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} + ] + } + } +} diff --git a/keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c b/keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c index 23614a9b78..d567c9febd 100644 --- a/keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c +++ b/keyboards/handwired/2x5keypad/keymaps/default_tapdance/keymap.c @@ -17,36 +17,36 @@ enum tap_codes { A_Y, I_I, O_C, U_U }; -#define FR_A_GRAVE "00E0" -#define FR_A_HAT "00E2" +#define FR_A_GRAVE 0x00E0 // à +#define FR_A_HAT 0x00E2 // â -#define FR_C_CIRCUM "00E7" +#define FR_C_CIRCUM 0x00E7 // ç -#define FR_E_AIGU "00E9" -#define FR_E_GRAVE "00E8" -#define FR_E_HAT "00EA" -#define FR_E_UMLAUT "00EB" +#define FR_E_AIGU 0x00E9 // é +#define FR_E_GRAVE 0x00E8 // è +#define FR_E_HAT 0x00EA // ê +#define FR_E_UMLAUT 0x00EB // ë -#define FR_I_HAT "00EE" -#define FR_I_UMLAUT "00EF" +#define FR_I_HAT 0x00EE // î +#define FR_I_UMLAUT 0x00EF // ï -#define FR_O_HAT "00F4" +#define FR_O_HAT 0x00F4 // ô -#define FR_U_GRAVE "00F9" -#define FR_U_HAT "00FB" -#define FR_U_UMLAUT "00FC" +#define FR_U_GRAVE 0x00F9 // ù +#define FR_U_HAT 0x00FB // û +#define FR_U_UMLAUT 0x00FC // ü -#define FR_Y_UMLAUT "00FF" +#define FR_Y_UMLAUT 0x00FF // ÿ -#define FR_L_QUOTE "00AB" -#define FR_R_QUOTE "00BB" +#define FR_L_QUOTE 0x00AB // « +#define FR_R_QUOTE 0x00BB // » -void send_french_unicode_char(uint8_t count, char *once, char *twice) +void send_french_unicode_char(uint8_t count, uint32_t once, uint32_t twice) { if (count <= 1) - send_unicode_hex_string(once); + register_unicode(once); else - send_unicode_hex_string(twice); + register_unicode(twice); } void dance_a_q(qk_tap_dance_state_t *state, void *user_data) diff --git a/keyboards/handwired/2x5keypad/rules.mk b/keyboards/handwired/2x5keypad/rules.mk index 997c9c0e98..52f64eb3f3 100644 --- a/keyboards/handwired/2x5keypad/rules.mk +++ b/keyboards/handwired/2x5keypad/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina AUDIO_ENABLE = no BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE= no # Console for debug EXTRAKEY_ENABLE = yes # Audio control and System control diff --git a/keyboards/handwired/412_64/info.json b/keyboards/handwired/412_64/info.json new file mode 100644 index 0000000000..8d0d14ef90 --- /dev/null +++ b/keyboards/handwired/412_64/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "412-64", + "url": "", + "maintainer": "fateeverywhere", + "width": 16, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x16": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"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} + ] + } + } +} diff --git a/keyboards/handwired/42/info.json b/keyboards/handwired/42/info.json new file mode 100644 index 0000000000..0d5b56561a --- /dev/null +++ b/keyboards/handwired/42/info.json @@ -0,0 +1,58 @@ +{ + "keyboard_name": "42", + "url": "", + "maintainer": "nglgzz", + "width": 14.5, + "height": 5.417, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.625}, + {"x":1, "y":0.417}, + {"x":2, "y":0.208}, + {"x":3, "y":0}, + {"x":4, "y":0.208}, + {"x":5, "y":0.417}, + {"x":8.5, "y":0.417}, + {"x":9.5, "y":0.208}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0.208}, + {"x":12.5, "y":0.417}, + {"x":13.5, "y":0.625}, + + {"x":0, "y":1.625}, + {"x":1, "y":1.417}, + {"x":2, "y":1.208}, + {"x":3, "y":1}, + {"x":4, "y":1.208}, + {"x":5, "y":1.417}, + {"x":8.5, "y":1.417}, + {"x":9.5, "y":1.208}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1.208}, + {"x":12.5, "y":1.417}, + {"x":13.5, "y":1.625}, + + {"x":0, "y":2.625}, + {"x":1, "y":2.417}, + {"x":2, "y":2.208}, + {"x":3, "y":2}, + {"x":4, "y":2.208}, + {"x":5, "y":2.417}, + {"x":8.5, "y":2.417}, + {"x":9.5, "y":2.208}, + {"x":10.5, "y":2}, + {"x":11.5, "y":2.208}, + {"x":12.5, "y":2.417}, + {"x":13.5, "y":2.625}, + + {"x":4, "y":3.208}, + {"x":5, "y":3.417}, + {"x":5.75, "y":4.417}, + {"x":7.75, "y":4.417}, + {"x":8.5, "y":3.417}, + {"x":9.5, "y":3.208} + ] + } + } +} diff --git a/keyboards/handwired/aek64/keymaps/default/keymap.c b/keyboards/handwired/aek64/keymaps/default/keymap.c index 5b9115902d..9ddb156914 100644 --- a/keyboards/handwired/aek64/keymaps/default/keymap.c +++ b/keyboards/handwired/aek64/keymaps/default/keymap.c @@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ Ctrl │ Alt │ Gui │ Space │ Gui │ Alt │ Ctrl │ * └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘ * - * Hidden features :  + * Hidden features : * - Left Shift is also Home on a single tap. * - Left Ctrl is also End on a single tap. * - Right Shift is also page-up on a single tap. diff --git a/keyboards/handwired/aek64/rules.mk b/keyboards/handwired/aek64/rules.mk index 52c3061306..e5a1d648a0 100644 --- a/keyboards/handwired/aek64/rules.mk +++ b/keyboards/handwired/aek64/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # change to no to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/amigopunk/amigopunk.c b/keyboards/handwired/amigopunk/amigopunk.c new file mode 100644 index 0000000000..dbb70415ac --- /dev/null +++ b/keyboards/handwired/amigopunk/amigopunk.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "amigopunk.h" diff --git a/keyboards/handwired/amigopunk/amigopunk.h b/keyboards/handwired/amigopunk/amigopunk.h new file mode 100644 index 0000000000..273cd09e3f --- /dev/null +++ b/keyboards/handwired/amigopunk/amigopunk.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0G, \ + 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, \ + K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ + K51, K53, K57, K5B, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F, KC_NO }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO }, \ + { KC_NO, K51, KC_NO, K53, KC_NO, KC_NO, KC_NO, K57, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/handwired/amigopunk/config.h b/keyboards/handwired/amigopunk/config.h new file mode 100644 index 0000000000..29141234d4 --- /dev/null +++ b/keyboards/handwired/amigopunk/config.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1805 +#define DEVICE_VER 0x0001 +#define MANUFACTURER haesbaert +#define PRODUCT amigopunk + +/* Key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* Key matrix pins */ +#define MATRIX_ROW_PINS { C0, C1, C2, C3, C4, C5 } +#define MATRIX_COL_PINS { B6, B5, B4, B3, B2, B1, B0, E7, E6, F0, F1, F2, F3, F4, F5, F6, F7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Encoder setup */ +#ifdef ENCODER_ENABLE +#define ENCODERS_PAD_A { E0 } +#define ENCODERS_PAD_B { E1 } +#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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/amigopunk/info.json b/keyboards/handwired/amigopunk/info.json new file mode 100644 index 0000000000..ac9aec8f56 --- /dev/null +++ b/keyboards/handwired/amigopunk/info.json @@ -0,0 +1,93 @@ +{ + "keyboard_name": "amigopunk", + "url": "www.haesbaert.org", + "maintainer": "haesbaert", + "width": 17, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (C0,B6)", "x":0, "y":0.25}, + {"label":"K01 (C0,B5)", "x":1, "y":0.25}, + {"label":"K02 (C0,B4)", "x":2, "y":0.25}, + {"label":"K03 (C0,B3)", "x":3, "y":0.25}, + {"label":"K04 (C0,B2)", "x":4, "y":0.25}, + {"label":"K05 (C0,B1)", "x":5, "y":0.25}, + {"label":"K06 (C0,B0)", "x":6, "y":0.25}, + {"label":"K07 (C0,E7)", "x":7, "y":0.25}, + {"label":"K08 (C0,E6)", "x":8, "y":0.25}, + {"label":"K09 (C0,F0)", "x":9, "y":0.25}, + {"label":"K0A (C0,F1)", "x":10, "y":0.25}, + {"label":"K0B (C0,F2)", "x":11, "y":0.25}, + {"label":"K0C (C0,F3)", "x":12, "y":0.25}, + {"label":"K0D (C0,F4)", "x":13, "y":0.25}, + {"label":"K0E (C0,F5)", "x":14, "y":0.25}, + {"label":"K0G (C0,F7)", "x":16, "y":0.25}, + {"label":"K10 (C1,B6)", "x":0, "y":1.25}, + {"label":"K11 (C1,B5)", "x":1, "y":1.25}, + {"label":"K12 (C1,B4)", "x":2, "y":1.25}, + {"label":"K13 (C1,B3)", "x":3, "y":1.25}, + {"label":"K14 (C1,B2)", "x":4, "y":1.25}, + {"label":"K15 (C1,B1)", "x":5, "y":1.25}, + {"label":"K16 (C1,B0)", "x":6, "y":1.25}, + {"label":"K17 (C1,E7)", "x":7, "y":1.25}, + {"label":"K18 (C1,E6)", "x":8, "y":1.25}, + {"label":"K19 (C1,F0)", "x":9, "y":1.25}, + {"label":"K1A (C1,F1)", "x":10, "y":1.25}, + {"label":"K1B (C1,F2)", "x":11, "y":1.25}, + {"label":"K1C (C1,F3)", "x":12, "y":1.25}, + {"label":"K1E (C1,F5)", "x":13, "y":1.25, "w":2}, + {"label":"K1F (C1,F6)", "x":15, "y":1.25}, + {"label":"K20 (C2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K22 (C2,B4)", "x":1.5, "y":2.25}, + {"label":"K23 (C2,B3)", "x":2.5, "y":2.25}, + {"label":"K24 (C2,B2)", "x":3.5, "y":2.25}, + {"label":"K25 (C2,B1)", "x":4.5, "y":2.25}, + {"label":"K26 (C2,B0)", "x":5.5, "y":2.25}, + {"label":"K27 (C2,E7)", "x":6.5, "y":2.25}, + {"label":"K28 (C2,E6)", "x":7.5, "y":2.25}, + {"label":"K29 (C2,F0)", "x":8.5, "y":2.25}, + {"label":"K2A (C2,F1)", "x":9.5, "y":2.25}, + {"label":"K2B (C2,F2)", "x":10.5, "y":2.25}, + {"label":"K2C (C2,F3)", "x":11.5, "y":2.25}, + {"label":"K2D (C2,F4)", "x":12.5, "y":2.25}, + {"label":"K2E (C2,F5)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2F (C2,F6)", "x":15, "y":2.25}, + {"label":"K30 (C3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K32 (C3,B4)", "x":1.75, "y":3.25}, + {"label":"K33 (C3,B3)", "x":2.75, "y":3.25}, + {"label":"K34 (C3,B2)", "x":3.75, "y":3.25}, + {"label":"K35 (C3,B1)", "x":4.75, "y":3.25}, + {"label":"K36 (C3,B0)", "x":5.75, "y":3.25}, + {"label":"K37 (C3,E7)", "x":6.75, "y":3.25}, + {"label":"K38 (C3,E6)", "x":7.75, "y":3.25}, + {"label":"K39 (C3,F0)", "x":8.75, "y":3.25}, + {"label":"K3A (C3,F1)", "x":9.75, "y":3.25}, + {"label":"K3B (C3,F2)", "x":10.75, "y":3.25}, + {"label":"K3C (C3,F3)", "x":11.75, "y":3.25}, + {"label":"K3D (C3,F4)", "x":12.75, "y":3.25, "w":2.25}, + {"label":"K41 (C4,B5)", "x":0, "y":4.25, "w":2.25}, + {"label":"K42 (C4,B4)", "x":2.25, "y":4.25}, + {"label":"K43 (C4,B3)", "x":3.25, "y":4.25}, + {"label":"K44 (C4,B2)", "x":4.25, "y":4.25}, + {"label":"K45 (C4,B1)", "x":5.25, "y":4.25}, + {"label":"K46 (C4,B0)", "x":6.25, "y":4.25}, + {"label":"K47 (C4,E7)", "x":7.25, "y":4.25}, + {"label":"K48 (C4,E6)", "x":8.25, "y":4.25}, + {"label":"K49 (C4,F0)", "x":9.25, "y":4.25}, + {"label":"K4A (C4,F1)", "x":10.25, "y":4.25}, + {"label":"K4B (C4,F2)", "x":11.25, "y":4.25}, + {"label":"K4D (C4,F4)", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F (C4,F6)", "x":15, "y":4.25}, + {"label":"K51 (C5,B5)", "x":1, "y":5.25, "w":1.5}, + {"label":"K53 (C5,B3)", "x":2.5, "y":5.25, "w":1.5}, + {"label":"K57 (C5,E7)", "x":4, "y":5.25, "w":7}, + {"label":"K5B (C5,F2)", "x":11, "y":5.25, "w":1.5}, + {"label":"K5D (C5,F4)", "x":12.5, "y":5.25, "w":1.5}, + {"label":"K5E (C5,F5)", "x":14, "y":5.25}, + {"label":"K5F (C5,F6)", "x":15, "y":5.25}, + {"label":"K5G (C5,F7)", "x":16, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/amigopunk/keymaps/default/keymap.c b/keyboards/handwired/amigopunk/keymaps/default/keymap.c new file mode 100644 index 0000000000..cdfe974024 --- /dev/null +++ b/keyboards/handwired/amigopunk/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#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_INS, 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_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_LSFT, KC_UP, + KC_LGUI, KC_LALT, KC_SPC, XXXXXXX, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, KC_PSCR, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + +}; + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index != 0) + return false; + + tap_code(clockwise ? KC_VOLU : KC_VOLD); + return true; +} +#endif + +#ifdef OLED_DRIVER_ENABLE + +static void render_amigopunk_logo(void) { + static const char PROGMEM amigopunk_logo[] = { + 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, 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, 0x80, 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, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x03, 0xff, 0xfc, 0x80, 0x00, 0x00, + 0x00, 0xf8, 0xf8, 0x60, 0x30, 0xf8, 0xf0, 0x20, 0x30, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x38, + 0x38, 0xf9, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x38, 0x18, 0x18, 0xf8, + 0xf8, 0x98, 0x18, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0x38, 0x38, 0x78, 0xf0, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf0, 0x20, 0x30, 0x78, 0xf8, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xf0, 0xf8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0x7f, 0x0f, 0x0e, 0x0e, 0x0e, 0x7f, 0xff, 0xf0, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xe0, + 0xe0, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xfd, 0xe7, 0xe6, 0xe6, 0xe3, + 0xe3, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x78, 0xe0, 0xe0, 0xf0, 0x7f, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x60, 0x20, 0x30, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x7f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 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 + }; + oled_write_raw_P(amigopunk_logo, sizeof(amigopunk_logo)); +} +void oled_task_user(void) { + render_amigopunk_logo(); + /* oled_write_P(PSTR("Amigo Punk\n"), false); */ +} +#endif diff --git a/keyboards/handwired/amigopunk/readme.md b/keyboards/handwired/amigopunk/readme.md new file mode 100644 index 0000000000..bad49bd53f --- /dev/null +++ b/keyboards/handwired/amigopunk/readme.md @@ -0,0 +1,19 @@ +# amigopunk + +![amigopunk](https://i.imgur.com/7uVsX1vh.jpeg) + +A 75% handwired with rotary encoder and OLED using matias clicky ALPS. + +* Keyboard Maintainer: [haesbaert](https://github.com/haesbaert) +* Hardware Supported: Teensy 2.0++ +* Hardware Availability: haesbaert@haesbaert.org + +Make example for this keyboard (after setting up your build environment): + + make handwired/amigopunk:default + +Flashing example for this keyboard: + + make handwired/amigopunk: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/amigopunk/rules.mk b/keyboards/handwired/amigopunk/rules.mk new file mode 100644 index 0000000000..d62975bc9f --- /dev/null +++ b/keyboards/handwired/amigopunk/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 +ENCODER_ENABLE = yes +OLED_DRIVER_ENABLE = yes diff --git a/keyboards/handwired/aplx2/info.json b/keyboards/handwired/aplx2/info.json new file mode 100644 index 0000000000..6ca10a44f8 --- /dev/null +++ b/keyboards/handwired/aplx2/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Aplx2", + "url": "", + "maintainer": "Aplyard", + "width": 2, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk index d2403c9ecb..702538af38 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 = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = full # 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) diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk index b305f8482a..12c8208393 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 = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = full # 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) diff --git a/keyboards/handwired/arrow_pad/rules.mk b/keyboards/handwired/arrow_pad/rules.mk index 65fc42a062..e1eb35c517 100644 --- a/keyboards/handwired/arrow_pad/rules.mk +++ b/keyboards/handwired/arrow_pad/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h index e2e8510b62..a53c267424 100644 --- a/keyboards/handwired/atreus50/atreus50.h +++ b/keyboards/handwired/atreus50/atreus50.h @@ -18,19 +18,6 @@ { k30, k31, k32, k33, k34, k35, km1, k36, k37, k38, k39, k3a, k3b } \ } -#define LAYOUT_kc( \ - 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 \ -) \ -{ \ - { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \ - { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \ - { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##km0, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \ - { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##km1, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b } \ -} - #define KC_ KC_TRNS #endif diff --git a/keyboards/crkbd/rev1/common/common.c b/keyboards/handwired/axon/axon.c similarity index 87% rename from keyboards/crkbd/rev1/common/common.c rename to keyboards/handwired/axon/axon.c index ddc0b5fe91..e5d7122138 100644 --- a/keyboards/crkbd/rev1/common/common.c +++ b/keyboards/handwired/axon/axon.c @@ -1,6 +1,5 @@ /* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Robin Liu This 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,4 +15,4 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "common.h" +#include "axon.h" diff --git a/keyboards/handwired/axon/axon.h b/keyboards/handwired/axon/axon.h new file mode 100644 index 0000000000..0d3a5c90b7 --- /dev/null +++ b/keyboards/handwired/axon/axon.h @@ -0,0 +1,85 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* +* Default layout: +* 2.75u - 2.25u spacebar +*/ +#define LAYOUT_default( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K304, K306, 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, K304, KC_NO, K306, KC_NO, K308, K309, K310 } \ +} + +/* +* Spaceswap layout: +* Electrically identical to default +* 2.25u - 2.75u spacebar +*/ +#define LAYOUT_spaceswap( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K304, K306, 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, K304, KC_NO, K306, KC_NO, K308, K309, K310 } \ +} + +/* +* 6.25u spacebar layout: +* 6.25u spacebar +*/ +#define LAYOUT_space6p25u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K306, 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, KC_NO, K306, KC_NO, KC_NO, K309, K310 } \ +} + +/* +* 7u spacebar layout: +* 7u spacebar +*/ +#define LAYOUT_space7u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K304, 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, K304, KC_NO, KC_NO, KC_NO, KC_NO, K309, K310 } \ +} diff --git a/keyboards/handwired/axon/config.h b/keyboards/handwired/axon/config.h new file mode 100644 index 0000000000..ef015194e8 --- /dev/null +++ b/keyboards/handwired/axon/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the 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 RobinL +#define PRODUCT Axon + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D5, D6, D4, D0 } +#define MATRIX_COL_PINS { B0, D7, B1, B2, C0, C1, C2, C3, C4, C5, 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 diff --git a/keyboards/handwired/axon/info.json b/keyboards/handwired/axon/info.json new file mode 100644 index 0000000000..70048a8640 --- /dev/null +++ b/keyboards/handwired/axon/info.json @@ -0,0 +1,192 @@ +{ + "keyboard_name": "Axon", + "url": "https://github.com/thatfellarobin/axon", + "maintainer": "Robin L.", + "width": 12, + "height": 4, + "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": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3, "w": 1.25}, + {"x": 3.75, "y": 3, "w": 2.75}, + {"x": 6.5, "y": 3, "w": 2.25}, + {"x": 8.75, "y": 3}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_spaceswap": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 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": 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}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_space6p25u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 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": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3, "w": 6.25}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_space7u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 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": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3, "w": 7}, + {"x": 9.5, "y": 3, "w": 1.25} + ] + } + } +} diff --git a/keyboards/handwired/axon/keymaps/default/keymap.c b/keyboards/handwired/axon/keymaps/default/keymap.c new file mode 100644 index 0000000000..2afa56ef3c --- /dev/null +++ b/keyboards/handwired/axon/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the 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_default(//Layer 0 + 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_COMMA, KC_DOT, MO(2), + KC_LALT, KC_LCTL, KC_SPACE, MO(1), KC_RCTL, KC_RALT + ), + + LAYOUT_default(//Layer 1 + 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_MINS, KC_EQL, KC_SCLN, KC_QUOT, KC_HOME, KC_END, KC_NO, KC_UP, KC_TRNS, KC_ENTER, + KC_LSFT, KC_LBRC, KC_RBRC, KC_SLSH, KC_NUBS, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, + KC_LALT, KC_LGUI, KC_SPACE, KC_TRNS, KC_RGUI, KC_RALT + ), + + LAYOUT_default(//Layer 2 + KC_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_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD + ), + +}; diff --git a/keyboards/handwired/axon/readme.md b/keyboards/handwired/axon/readme.md new file mode 100644 index 0000000000..ca422130ef --- /dev/null +++ b/keyboards/handwired/axon/readme.md @@ -0,0 +1,23 @@ +# Axon + +![Axon](https://i.imgur.com/VRVv9i9h.jpeg) + +Axon v1.0 built with Durock T1 and GMK Bento + +Axon is a compact 40% which uses through-hole components. Hardware repo can be found at https://github.com/thatfellarobin/axon. + +* Keyboard Maintainer: [Robin Liu](https://github.com/thatfellarobin) + +Make example for this keyboard (after setting up your build environment): + + make handwired/axon:default + +## To reset into bootloader mode: + +1. While plugged in, press and hold `BOOT` switch +2. While holding `BOOT`, press `RESET` and hold it for a second or two +3. Release `RESET` +4. Release `BOOT` +5. The keyboard should now be recognized as a USBasp programmer device. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/axon/rules.mk b/keyboards/handwired/axon/rules.mk new file mode 100644 index 0000000000..e9a5cac276 --- /dev/null +++ b/keyboards/handwired/axon/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# 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/keyboards/handwired/bento/keymaps/cbc02009/keymap.c b/keyboards/handwired/bento/keymaps/cbc02009/keymap.c index 169e0f1dd3..57c107b9fc 100644 --- a/keyboards/handwired/bento/keymaps/cbc02009/keymap.c +++ b/keyboards/handwired/bento/keymaps/cbc02009/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_ENABLE #include "encoder.h" -void encoder_update_user(int8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -37,5 +37,6 @@ void encoder_update_user(int8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } #endif diff --git a/keyboards/handwired/bento/keymaps/default/keymap.c b/keyboards/handwired/bento/keymaps/default/keymap.c index 6a2cfa682f..dc074c4205 100644 --- a/keyboards/handwired/bento/keymaps/default/keymap.c +++ b/keyboards/handwired/bento/keymaps/default/keymap.c @@ -39,7 +39,7 @@ 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 (index == _ENCODER) { if (clockwise) { tap_code(KC_VOLU); @@ -47,4 +47,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/handwired/bento/keymaps/mac/keymap.c b/keyboards/handwired/bento/keymaps/mac/keymap.c index 29a7e809fc..bb584c9a5b 100644 --- a/keyboards/handwired/bento/keymaps/mac/keymap.c +++ b/keyboards/handwired/bento/keymaps/mac/keymap.c @@ -41,7 +41,7 @@ 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 (index == _ENCODER) { if (clockwise) { tap_code(KC_VOLU); @@ -49,6 +49,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } - - diff --git a/keyboards/handwired/bolek/bolek.c b/keyboards/handwired/bolek/bolek.c new file mode 100644 index 0000000000..413f7166c6 --- /dev/null +++ b/keyboards/handwired/bolek/bolek.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Mikołaj Biel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bolek.h" diff --git a/keyboards/handwired/bolek/bolek.h b/keyboards/handwired/bolek/bolek.h new file mode 100644 index 0000000000..4fc0f5a2fd --- /dev/null +++ b/keyboards/handwired/bolek/bolek.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Mikołaj Biel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, K405, K406, K407, K408, K409, \ + K100, K101, K102, K103, K104, K505, K506, K507, K508, K509, \ + K200, K201, K202, K203, K204, K605, K606, K607, K608, K609, \ + K302, K303, K304, K705, K706, K707 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K100, K101, K102, K103, K104, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K200, K201, K202, K203, K204, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, K302, K303, K304, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K405, K406, K407, K408, K409 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K505, K506, K507, K508, K509 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K605, K606, K607, K608, K609 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K705, K706, K707, KC_NO, KC_NO } \ +} diff --git a/keyboards/handwired/bolek/config.h b/keyboards/handwired/bolek/config.h new file mode 100644 index 0000000000..ecf0b0de36 --- /dev/null +++ b/keyboards/handwired/bolek/config.h @@ -0,0 +1,150 @@ +/* +Copyright 2021 Mikołaj Biel + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the 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 0x3708 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mikołaj Biel +#define PRODUCT bolek + +/* key matrix size */ +#define MATRIX_ROWS 8 +#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, F5, F6, B5, D3, D2, D1, B4 } +#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, E6, D7, C6, D0, D4 } +#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 + +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/handwired/bolek/info.json b/keyboards/handwired/bolek/info.json new file mode 100644 index 0000000000..c4cf179096 --- /dev/null +++ b/keyboards/handwired/bolek/info.json @@ -0,0 +1,49 @@ +{ + "keyboard_name": "bolek", + "url": "https://github.com/klausweiss/bolek", + "maintainer": "klausweiss", + "height": 5.25, + "width": 12.75, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Q", "x": 0, "y": 0.25 }, + { "label": "W", "x": 1, "y": 0 }, + { "label": "E", "x": 2, "y": 0 }, + { "label": "R", "x": 3, "y": 0.25 }, + { "label": "T", "x": 4, "y": 0.5 }, + { "label": "Y", "x": 7.75, "y": 0.5 }, + { "label": "U", "x": 8.75, "y": 0.25 }, + { "label": "I", "x": 9.75, "y": 0 }, + { "label": "O", "x": 10.75, "y": 0 }, + { "label": "P", "x": 11.75, "y": 0.25 }, + { "label": "A", "x": 0, "y": 1.25 }, + { "label": "S", "x": 1, "y": 1 }, + { "label": "D", "x": 2, "y": 1 }, + { "label": "F", "x": 3, "y": 1.25 }, + { "label": "G", "x": 4, "y": 1.5 }, + { "label": "H", "x": 7.75, "y": 1.5 }, + { "label": "J", "x": 8.75, "y": 1.25 }, + { "label": "K", "x": 9.75, "y": 1 }, + { "label": "L", "x": 10.75, "y": 1 }, + { "label": ";", "x": 11.75, "y": 1.25 }, + { "label": "Z", "x": 0, "y": 2.25 }, + { "label": "X", "x": 1, "y": 2 }, + { "label": "C", "x": 2, "y": 2 }, + { "label": "V", "x": 3, "y": 2.25 }, + { "label": "B", "x": 4, "y": 2.5 }, + { "label": "N", "x": 7.75, "y": 2.5 }, + { "label": "M", "x": 8.75, "y": 2.25 }, + { "label": ",", "x": 9.75, "y": 2 }, + { "label": ".", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2.25 }, + { "label": "ESC", "x": 3.25, "y": 3.75 }, + { "label": "SPC", "x": 4.25, "y": 4 }, + { "label": "TAB", "x": 5.25, "y": 4.25 }, + { "label": "RET", "x": 6.5, "y": 4.25 }, + { "label": "BSPC", "x": 7.5, "y": 4 }, + { "label": "RESET", "x": 8.5, "y": 3.75 } + ] + } + } +} diff --git a/keyboards/handwired/bolek/keymaps/default/keymap.c b/keyboards/handwired/bolek/keymaps/default/keymap.c new file mode 100644 index 0000000000..31d3ac0456 --- /dev/null +++ b/keyboards/handwired/bolek/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Mikołaj Biel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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_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_EQL, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_MINS, + KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, RESET + ) +}; diff --git a/keyboards/handwired/bolek/keymaps/default/readme.md b/keyboards/handwired/bolek/keymaps/default/readme.md new file mode 100644 index 0000000000..eccf85e3a0 --- /dev/null +++ b/keyboards/handwired/bolek/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bolek diff --git a/keyboards/handwired/bolek/readme.md b/keyboards/handwired/bolek/readme.md new file mode 100644 index 0000000000..b1781af468 --- /dev/null +++ b/keyboards/handwired/bolek/readme.md @@ -0,0 +1,17 @@ +# bolek + +Low-profile 36% 3d-printed keyboard designed to go with pro micro and kailh chocs + +* Keyboard Maintainer: [klausweiss](https://github.com/klausweiss) +* Repository: https://github.com/klausweiss/bolek +* Hardware Supported: Pro Micro + +Make example for this keyboard (after setting up your build environment): + + make handwired/bolek:default + +Flashing example for this keyboard: + + make handwired/bolek: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/bolek/rules.mk b/keyboards/handwired/bolek/rules.mk new file mode 100644 index 0000000000..fd76a52478 --- /dev/null +++ b/keyboards/handwired/bolek/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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/brain/info.json b/keyboards/handwired/brain/info.json new file mode 100644 index 0000000000..37454b5bc0 --- /dev/null +++ b/keyboards/handwired/brain/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Brain", + "url": "", + "maintainer": "Klackygears", + "width": 15, + "height": 6.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":1}, + {"x":2, "y":0.5}, + {"x":3, "y":0}, + {"x":4, "y":0.5}, + {"x":5, "y":0.75}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":0.75}, + {"x":10, "y":0.5}, + {"x":11, "y":0}, + {"x":12, "y":0.5}, + {"x":13, "y":1}, + + {"x":0, "y":2.25}, + {"x":1, "y":2}, + {"x":2, "y":1.5}, + {"x":3, "y":1}, + {"x":4, "y":1.5}, + {"x":5, "y":1.75}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":1.75}, + {"x":10, "y":1.5}, + {"x":11, "y":1}, + {"x":12, "y":1.5}, + {"x":13, "y":2}, + {"x":14, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3}, + {"x":2, "y":2.5}, + {"x":3, "y":2}, + {"x":4, "y":2.5}, + {"x":5, "y":2.75}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":2.75}, + {"x":10, "y":2.5}, + {"x":11, "y":2}, + {"x":12, "y":2.5}, + {"x":13, "y":3}, + {"x":14, "y":3.25}, + + {"x":1, "y":4}, + {"x":2, "y":3.5}, + {"x":3.5, "y":4.25}, + {"x":4.5, "y":4.25}, + {"x":5.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":12, "y":3.5}, + {"x":13, "y":4}, + + {"x":3.5, "y":5.25}, + {"x":4.5, "y":5.25}, + {"x":5.5, "y":5.25}, + {"x":8.5, "y":5.25}, + {"x":9.5, "y":5.25}, + {"x":10.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/cans12er/info.json b/keyboards/handwired/cans12er/info.json new file mode 100644 index 0000000000..640e6a4475 --- /dev/null +++ b/keyboards/handwired/cans12er/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "Cans12er", + "url": "", + "maintainer": "canbaytok", + "width": 4, + "height": 3, + "layouts": { + "LAYOUT_ortho_3x4": { + "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} + ] + } + } +} diff --git a/keyboards/handwired/ck4x4/info.json b/keyboards/handwired/ck4x4/info.json new file mode 100644 index 0000000000..e1f31582df --- /dev/null +++ b/keyboards/handwired/ck4x4/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "CK4x4", + "url": "", + "maintainer": "awkannan", + "width": 4, + "height": 4, + "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}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk index 0709f341bf..4bad1b8a5d 100644 --- a/keyboards/handwired/ck4x4/rules.mk +++ b/keyboards/handwired/ck4x4/rules.mk @@ -1,16 +1,19 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#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 +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover CUSTOM_MATRIX = no # Custom matrix file diff --git a/keyboards/handwired/co60/rev1/rules.mk b/keyboards/handwired/co60/rev1/rules.mk index ae50334a36..0986bed208 100644 --- a/keyboards/handwired/co60/rev1/rules.mk +++ b/keyboards/handwired/co60/rev1/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/co60/rev6/config.h b/keyboards/handwired/co60/rev6/config.h index 79c64e7353..c142d10f29 100644 --- a/keyboards/handwired/co60/rev6/config.h +++ b/keyboards/handwired/co60/rev6/config.h @@ -25,12 +25,6 @@ #define MANUFACTURER John M Daly #define PRODUCT CO60 rev6 -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 15 diff --git a/keyboards/handwired/co60/rev6/rules.mk b/keyboards/handwired/co60/rev6/rules.mk index f4e7ae924d..5c26d9a30d 100644 --- a/keyboards/handwired/co60/rev6/rules.mk +++ b/keyboards/handwired/co60/rev6/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h index 20e62472b7..16fa7cb4c5 100644 --- a/keyboards/handwired/co60/rev7/config.h +++ b/keyboards/handwired/co60/rev7/config.h @@ -26,12 +26,6 @@ along with this program. If not, see . #define MANUFACTURER John M Daly #define PRODUCT CO60 rev7 -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 15 diff --git a/keyboards/handwired/co60/rev7/rules.mk b/keyboards/handwired/co60/rev7/rules.mk index 3e15f073ff..25e7a2bf1b 100644 --- a/keyboards/handwired/co60/rev7/rules.mk +++ b/keyboards/handwired/co60/rev7/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Use SPI for RGB underglow: WS2812_DRIVER = spi diff --git a/keyboards/handwired/colorlice/rules.mk b/keyboards/handwired/colorlice/rules.mk index 77e6d03d63..077b197ef7 100644 --- a/keyboards/handwired/colorlice/rules.mk +++ b/keyboards/handwired/colorlice/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/concertina/64key/info.json b/keyboards/handwired/concertina/64key/info.json index a7dd42b112..68125f8c64 100644 --- a/keyboards/handwired/concertina/64key/info.json +++ b/keyboards/handwired/concertina/64key/info.json @@ -8,29 +8,29 @@ "LAYOUT_64key": { "key_count": 64, "layout": [ - {"x":2, "y":0.5}, {"x":3, "y":0}, {"x":4, "y":0.3}, - {"x":8, "y":0.7}, {"x":9, "y":0.3}, {"x":10, "y":0}, + {"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}, - {"x":2, "y":1.5}, {"x":3, "y":1}, {"x":4, "y":1.3}, {"x":5, "y":0.7}, - {"x":8, "y":0.7}, {"x":9, "y":1.3}, {"x":10, "y":1}, {"x":11, "y":1.5}, + {"x":2.5, "y":1.4}, {"x":3.5, "y":1}, {"x":4.5, "y":1.3}, {"x":5.5, "y":0.9}, + {"x":7.5, "y":0.9}, {"x":8.5, "y":1.3}, {"x":9.5, "y":1}, {"x":10.5, "y":1.4}, - {"x":3, "y":2}, {"x":4, "y":2.3}, {"x":5, "y":1.7}, - {"x":8, "y":1.7}, {"x":9, "y":2.3}, {"x":10, "y":2}, + {"x":3.5, "y":2}, {"x":4.5, "y":2.3}, {"x":5.5, "y":1.9}, + {"x":7.5, "y":1.9}, {"x":8.5, "y":2.3}, {"x":9.5, "y":2}, - {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, - {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, + {"x":2, "y":4}, {"x":3, "y":3.8}, {"x":4, "y":4}, {"x":5, "y":4.3}, + {"x":8, "y":4.3}, {"x":9, "y":4}, {"x":10, "y":3.8}, {"x":11, "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":8, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, {"x":11, "y":5}, {"x":12, "y":5}, {"x":13, "y":5}, + {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5}, {"x":3, "y":4.8}, {"x":4, "y":5}, {"x":5, "y":5.3}, + {"x":8, "y":5.3}, {"x":9, "y":5}, {"x":10, "y":4.8}, {"x":11, "y":5}, {"x":12, "y":5}, {"x":13, "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":8, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, {"x":12, "y":6}, {"x":13, "y":6}, + {"x":0, "y":6}, {"x":1, "y":6}, {"x":2, "y":6}, {"x":3, "y":5.8}, {"x":4, "y":6}, {"x":5, "y":6.3}, + {"x":8, "y":6.3}, {"x":9, "y":6}, {"x":10, "y":5.8}, {"x":11, "y":6}, {"x":12, "y":6}, {"x":13, "y":6}, - {"x":0, "y":7}, {"x":1, "y":7}, {"x":2, "y":7}, {"x":3, "y":7}, {"x":4, "y":7}, - {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7}, {"x":12, "y":7}, {"x":13, "y":7}, + {"x":0, "y":7}, {"x":1, "y":7}, {"x":2, "y":7}, {"x":3, "y":6.8}, {"x":4, "y":7}, + {"x":9, "y":7}, {"x":10, "y":6.8}, {"x":11, "y":7}, {"x":12, "y":7}, {"x":13, "y":7}, - {"x":3, "y":8}, - {"x":10, "y":8} + {"x":3, "y":7.8}, + {"x":10, "y":7.8} ] } } diff --git a/keyboards/handwired/concertina/64key/readme.md b/keyboards/handwired/concertina/64key/readme.md index 069eb6b7e5..27ac67e033 100644 --- a/keyboards/handwired/concertina/64key/readme.md +++ b/keyboards/handwired/concertina/64key/readme.md @@ -1,32 +1,48 @@ # Concertina 64-key -![Concertina 64-key](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/handwired/concertina/64key/concertina-1-side-view.jpg) +A diploid, concave, columnar keyboard, with vertical finger clusters +beneath large horizontal thumb clusters. -A diploid, concave, columnar keyboard. +![Side view](https://viktor.eikman.se/image/concertina-1-side-view/display) -This folder represents the keyboard configuration identified as -`concertina_64key` in the DMOTE application’s list of GNU make targets, as of -version 0.7.0 of that application. The QMK code is fully compatible back to -version 0.6.0, which introduced the Concertina. +## Hardware -The default keymap for this layout has a QWERTY base layer but is intended for -running Colemak on the OS side. It has a separate key layer that forces Colemak -from the QMK side in case the keyboard has to be used with a computer that does -not run Colemak. +* Keyboard maintainer: [Viktor Eikman](https://github.com/veikman) +* Hardware supported: Concertina 64-key case, Pro Micro (ATmega32U4) +* Hardware availability: [viktor.eikman.se](https://viktor.eikman.se/article/the-concertina/) + +This QMK model represents the printable keyboard shape identified as +`concertina_64key` in the DMOTE application’s list of GNU make +targets, available [here](https://github.com/veikman/dactyl-keyboard), +as of version 0.7.0 of that application. The QMK code is fully +compatible back to version 0.6.0, which introduced the Concertina. A full set of printable caps to match the keymap is available in the -`dmote-keycap` application, [here](https://github.com/veikman/dmote-keycap). +`dmote-keycap` application, +[here](https://github.com/veikman/dmote-keycap). -* Keyboard Maintainer: [Viktor Eikman](https://github.com/veikman) -* Hardware Supported: Concertina 64-key case, Pro Micro (ATmega32U4) -* Hardware Availability: [viktor.eikman.se](https://viktor.eikman.se/article/the-concertina/) +## Firmware -Make example for this keyboard (after setting up your build environment): +Brand new to QMK? Start [here](https://docs.qmk.fm/#/newbs). + +The default keymap for this layout has a QWERTY base layer (0) but is +intended for running Colemak on the OS side. It has a separate key +layer (1) that forces Colemak from the QMK side in case the keyboard +has to be used with a computer that does not run Colemak. Layer 2 +flips the navigation clusters around. Layer 3 is numbers and mouse +control. + +### Building from the CLI + +See the general [build +environment](https://docs.qmk.fm/#/getting_started_build_tools) and +[make instructions](https://docs.qmk.fm/#/getting_started_make_guide) +to get set up. + +To build firmware for the Concertina without the `qmk` utility: make handwired/concertina/64key:default -Flashing example for this keyboard: +To also flash a connected Concertina: make handwired/concertina/64key: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/curiosity/rules.mk b/keyboards/handwired/curiosity/rules.mk index dace27ef32..d410771e85 100644 --- a/keyboards/handwired/curiosity/rules.mk +++ b/keyboards/handwired/curiosity/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/d48/info.json b/keyboards/handwired/d48/info.json new file mode 100644 index 0000000000..540a9e3228 --- /dev/null +++ b/keyboards/handwired/d48/info.json @@ -0,0 +1,67 @@ +{ + "keyboard_name": "D48", + "url": "", + "maintainer": "and3rson", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":8, "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/handwired/d48/keymaps/anderson/keymap.c b/keyboards/handwired/d48/keymaps/anderson/keymap.c index 25837a3591..f63bf54ea6 100644 --- a/keyboards/handwired/d48/keymaps/anderson/keymap.c +++ b/keyboards/handwired/d48/keymaps/anderson/keymap.c @@ -229,7 +229,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (!alpha_pressed) { tap_code(clockwise ? KC_VOLD : KC_VOLU); @@ -243,6 +243,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(clockwise ? KC_PGUP : KC_PGDN); } } + return true; } #ifdef OLED_DRIVER_ENABLE diff --git a/keyboards/handwired/d48/keymaps/default/keymap.c b/keyboards/handwired/d48/keymaps/default/keymap.c index b7914f3bcd..08bb906032 100644 --- a/keyboards/handwired/d48/keymaps/default/keymap.c +++ b/keyboards/handwired/d48/keymaps/default/keymap.c @@ -174,7 +174,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return taphold_process(keycode, record); } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (!alpha_pressed) { tap_code(clockwise ? KC_VOLD : KC_VOLU); @@ -188,6 +188,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(clockwise ? KC_PGUP : KC_PGDN); } } + return true; } #ifdef OLED_DRIVER_ENABLE diff --git a/keyboards/handwired/d48/rules.mk b/keyboards/handwired/d48/rules.mk index 41a6cc5220..60a9f089d1 100644 --- a/keyboards/handwired/d48/rules.mk +++ b/keyboards/handwired/d48/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/dactyl/dactyl.c b/keyboards/handwired/dactyl/dactyl.c index 81b9dce0f9..ff9b4e08af 100644 --- a/keyboards/handwired/dactyl/dactyl.c +++ b/keyboards/handwired/dactyl/dactyl.c @@ -4,7 +4,7 @@ #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{0,11}, {0,10}, {0,9}, {0,8}, {0,7}, {0,6}, {0,5}, {0,4}, {0,3}, {0,2}, {0,1}, {0,0}}, {{1,11}, {1,11}, {1,9}, {1,8}, {1,7}, {1,6}, {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {1,0}}, {{2,11}, {2,12}, {2,9}, {2,8}, {2,7}, {2,6}, {2,5}, {2,4}, {2,3}, {2,2}, {2,1}, {2,0}}, diff --git a/keyboards/handwired/dactyl/keymaps/default/rules.mk b/keyboards/handwired/dactyl/keymaps/default/rules.mk new file mode 100644 index 0000000000..ae24ba373c --- /dev/null +++ b/keyboards/handwired/dactyl/keymaps/default/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = yes diff --git a/keyboards/handwired/dactyl/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl/keymaps/dvorak/rules.mk new file mode 100644 index 0000000000..ae24ba373c --- /dev/null +++ b/keyboards/handwired/dactyl/keymaps/dvorak/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/4x5/4x5.h b/keyboards/handwired/dactyl_manuform/4x5/4x5.h index a70f52f3e1..3d2d986bbc 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/4x5.h +++ b/keyboards/handwired/dactyl_manuform/4x5/4x5.h @@ -45,8 +45,8 @@ 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 \ + L43, L44, R40, R41, \ + L41, L42, R42, R43 \ ) \ { \ { R04, R03, R02, R01, R00 }, \ diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c new file mode 100644 index 0000000000..0d1ffd84df --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jan Christoph Ebersbach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public 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_2_5.h" 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 new file mode 100644 index 0000000000..c41037ce6b --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Jan Christoph Ebersbach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for 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" + +#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 } \ +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h new file mode 100644 index 0000000000..029f1723b5 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h @@ -0,0 +1,61 @@ +/* +Copyright 2020 Jan Christoph Ebersbach + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You 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 0x0003 +#define PRODUCT Dactyl-Manuform (5x6+2) +// #define PRODUCT Dactyl-Manuform (5x6+2) BLE + +/* 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 } + +// // 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 + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define BOOTMAGIC_LITE_ROW_RIGHT 6 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +// WS2812 RGB LED strip input and number of LEDs +// #define RGB_DI_PIN D3 +// #define RGBLED_NUM 12 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json new file mode 100644 index 0000000000..ad227d5f5d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json @@ -0,0 +1,86 @@ +{ + "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}, + + {"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":5, "y":4}, + {"label":"L45", "x":6, "y":4}, + {"label":"L53", "x":7, "y":4}, + + {"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}, + + {"label":"L54", "x":6, "y":5}, + {"label":"L52", "x":7, "y":5}, + + {"label":"R53", "x":9, "y":5}, + {"label":"R51", "x":10, "y":5} + ] + } + } +} diff --git a/keyboards/crkbd/rev1/legacy/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h similarity index 92% rename from keyboards/crkbd/rev1/legacy/config.h rename to keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h index e95f49125a..c4fb3742d9 100644 --- a/keyboards/crkbd/rev1/legacy/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h @@ -1,6 +1,5 @@ /* 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 @@ -18,5 +17,8 @@ along with this program. If not, see . #pragma once -#include "serial_config.h" +#define USE_SERIAL +#define EE_HANDS + +#define KINETIC_SPEED diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json new file mode 100644 index 0000000000..f8628a403d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json @@ -0,0 +1,525 @@ +{ + "version": 1, + "notes": "", + "author": "Jan Christoph Ebersbach", + "keyboard": "handwired/dactyl_manuform/5x6_2_5", + "keymap": "jceb", + "layout": "LAYOUT_5x6_2_5", + "layers": [ + [ + "KC_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", + + "KC_LCTL", + "KC_LALT", + "KC_LGUI", + "KC_LALT", + "TT(2)", + + "LT(6,KC_SPC)", + "LT(4,KC_DEL)", + "LT(4,KC_ENT)", + "KC_SPC", + + "LT(2,KC_BSPC)", + "LALT_T(KC_RALT)", + "KC_RGUI", + "KC_RALT", + "KC_RCTL", + + "LCTL_T(KC_LBRC)", + "KC_LSPO", + "KC_RSPC", + "RCTL_T(KC_RBRC)" + ], + [ + "KC_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_F", + "KC_P", + "KC_G", + "KC_J", + "KC_L", + "KC_U", + "KC_Y", + "KC_SCLN", + "KC_LBRC", + + "LCTL_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_LSPO", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_K", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_RSPC", + + "KC_LCTL", + "KC_LALT", + "KC_LGUI", + "KC_LALT", + "TT(2)", + "LT(6,KC_SPC)", + "LT(4,KC_DEL)", + + "LT(4,KC_ENT)", + "KC_SPC", + "LT(2,KC_BSPC)", + "LALT_T(KC_RALT)", + "KC_RGUI", + + "KC_RALT", + "KC_RCTL", + "LCTL_T(KC_LBRC)", + "KC_LSPO", + "KC_RSPC", + "RCTL_T(KC_RBRC)" + ], + [ + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_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_7", + "KC_8", + "KC_9", + "KC_TRNS", + "KC_RBRC", + + "KC_TRNS", + "DF(0)", + "DF(1)", + "KC_NO", + "MO(3)", + "MO(3)", + "KC_4", + "KC_4", + "KC_5", + "KC_6", + "KC_MINS", + "KC_EQL", + + "KC_TRNS", + "MO(5)", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_1", + "KC_1", + "KC_2", + "KC_3", + "KC_BSLS", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_0", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(2)", + "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_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_F7", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_NO", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "MO(3)", + "MO(3)", + "KC_F4", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F11", + "KC_NO", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_F1", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F12", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "TG(3)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_ESC", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_ESC", + "KC_NO", + "LCTL(KC_W)", + "LCTL(KC_T)", + "LCTL(KC_PGDN)", + "LCTL(KC_PGDN)", + "KC_PGDN", + "KC_HOME", + "KC_UP", + "KC_INS", + "LSFT(KC_INS)", + "KC_ESC", + + "KC_TRNS", + "KC_CAPS", + "LGUI(KC_LEFT)", + "LGUI(KC_TAB)", + "LGUI(KC_RGHT)", + "LGUI(KC_RGHT)", + "KC_LEFT", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT", + "KC_END", + "KC_PSCR", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "LCTL(KC_PGUP)", + "LCTL(KC_PGUP)", + "KC_PGUP", + "KC_TRNS", + "KC_DOWN", + "KC_NO", + "KC_APP", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "TG(4)", + "KC_TRNS", + "KC_TRNS", + "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_TRNS", + "KC_NO", + "KC_MPLY", + "KC_VOLU", + "KC_VOLU", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "RESET", + "KC_PWR", + + "KC_TRNS", + "KC_NO", + "KC_MPRV", + "KC_MUTE", + "KC_MNXT", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_SLEP", + + "KC_TRNS", + "MO(5)", + "KC_NO", + "KC_VOLD", + "KC_VOLD", + "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_SPC", + + "KC_DEL", + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(5)", + "KC_TRNS", + "KC_TRNS", + "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_TRNS", + "KC_ACL1", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_WH_U", + "KC_WH_L", + "KC_MS_U", + "KC_WH_R", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_ACL2", + "KC_BTN2", + "KC_BTN3", + "KC_BTN1", + "KC_BTN1", + "KC_MS_L", + "KC_MS_L", + "KC_MS_D", + "KC_MS_R", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_ACL0", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_WH_D", + "KC_NO", + "KC_MS_D", + "KC_NO", + "KC_NO", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(6)", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS" + ] + ] +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md b/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md new file mode 100644 index 0000000000..d67f940611 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md @@ -0,0 +1,13 @@ +# Dactyl ManuForm Mini + +The Dactyl ManuForm Mini is a fork of the [Dactyl ManuForm](https://github.com/tshort/dactyl-keyboard). The Dactyl ManuForm is a fork of the [Dactyl](https://github.com/adereth/dactyl-keyboard) with the thumb cluster from [ManuForm](https://github.com/jeffgran/ManuForm). + +This [specific version](https://github.com/jceb/dactyl-manuform-mini-keyboard) of the Dactyl ManuForm Mini adds to additional keys to each side, CTRL and ALT, that are missing in the default configuration of the mini keyboard. In addition, a thumb cluster with 5 keys is enabled. + +The keyboard is custom built and handwired. There multiple build guides available. + +Make example for this keyboard (after setting up your build environment): + + make handwired/dactyl_manuform/5x6_2_5: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/dactyl_manuform/5x6_2_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk new file mode 100644 index 0000000000..d5ba60f2ad --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk @@ -0,0 +1,14 @@ +BOOTMAGIC_ENABLE = lite +COMMAND_ENABLE = no + +# # Pro-Micro +# NKRO_ENABLE = yes + +# # # Adafruit Feather +# # NKRO_ENABLE = no +# # # Processor frequency +# F_CPU = 8000000 +# F_USB = $(F_CPU) +# # # BLUETOOTH_ENABLE = no +# # BLUETOOTH = AdafruitBLE +# # CONSOLE_DEBUG = yes 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 f9b5ca6dff..fd8c16420e 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c @@ -561,7 +561,7 @@ void oled_task_user(void) { } } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { // On the left, control the volume. On the right, scroll the page if (index == 0) { if (clockwise) { @@ -576,4 +576,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLD); } } + return true; } diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h new file mode 100644 index 0000000000..0a38c8aefb --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h @@ -0,0 +1,59 @@ +// 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 + +#undef SOFT_SERIAL_PIN +#undef DIODE_DIRECTION +#undef MATRIX_ROW_PINS +#undef MATRIX_COL_PINS +#undef BOOTMAGIC_LITE_ROW +#undef BOOTMAGIC_LITE_COLUMN +#undef BOOTMAGIC_LITE_ROW_RIGHT +#undef BOOTMAGIC_LITE_COLUMN_RIGHT + + +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 +#define EE_HANDS +#define SPLIT_USB_DETECT + +// wiring of each half +// ../../../../docs/proton_c_conversion.md +#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7, F6, F5 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4 } + +#define DIODE_DIRECTION ROW2COL + +#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 diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c new file mode 100644 index 0000000000..0d8fd05425 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c @@ -0,0 +1,153 @@ +// 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 SYM MO(_SYMBOL) +#define ADJ MO(_ADJUST) + +#define QWERT DF(_QWERTY) +#define COLEM DF(_COLEMAK) + +enum layer_names { + _QWERTY, + _COLEMAK, + _SYMBOL, + _ADJUST +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_5x6_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 | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | N | M | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ | + * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | | + * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_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, + ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_COLEMAK] = LAYOUT_5x6_5( + /* COLEMAK + * .-----------------------------------------. .-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | K | M | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ | + * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | | + * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , 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_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, + ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_SYMBOL] = LAYOUT_5x6_5( + /* SYMBOL + * .-----------------------------------------. .-----------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | ! | @ | [ | ] | + | | | | up | | | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | & | | | ( | ) | - | | | left | down | 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 , + XXXXXXX, KC_EXLM, KC_AT , KC_LBRC, KC_RBRC, KC_PPLS, XXXXXXX, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_F12 , + _______, KC_AMPR, KC_PIPE, KC_LPRN, KC_RPRN, KC_MINS, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX, + _______, KC_ASTR, KC_SLSH, KC_LCBR, KC_RCBR, KC_PEQL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_5x6_5( + /* ADJUST + * .-----------------------------------------. .-----------------------------------------. + * | RST | | | | | QWERT| |COLEM | | | | | RST | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | + | | B + | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | - | | B - | << | play | >> | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | = | | | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * | | | / /---------------. .---------------\ \ | | | + * | | | / / / / \ \ \ \ | | | + * '-------------' '-------/ / / \ \ \-------' '-------------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT , COLEM , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , + 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, XXXXXXX, XXXXXXX + ) +}; + +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CM_SPAR: + return true; + default: + return false; + } +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk new file mode 100644 index 0000000000..5a8c85453a --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk @@ -0,0 +1,6 @@ +BOOTMAGIC_ENABLE = lite +EXTRAKEY_ENABLE = yes +COMMAND_ENABLE = yes +MOUSEKEY_ENABLE = no +LTO_ENABLE = no +NKRO_ENABLE = 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 index 69f7500957..4048fb233c 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c @@ -167,8 +167,11 @@ void pointing_device_task(void) { 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) { @@ -206,7 +209,7 @@ void pointing_device_send(void) { #endif #ifdef SWAP_HANDS_ENABLE -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +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}}, diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h index 042432184c..bc6d66bb9d 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h @@ -36,13 +36,13 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW // WS2812 RGB LED strip input and number of LEDs -#define RGB_DI_PIN D3 -#define RGBLED_NUM 8 +#define RGB_DI_PIN E7 +#define RGBLED_NUM 58 #define RGBLIGHT_SPLIT -#define RGBLED_SPLIT { 0 , 8 } +#define RGBLED_SPLIT { 30 , 28 } #define RGBLIGHT_SLEEP -#define RGBW -#define RGBLIGHT_LIMIT_VAL 150 +// #define RGBW +#define RGBLIGHT_LIMIT_VAL 100 /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST 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 index 41b2e07c70..dedd1f5fe2 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h @@ -25,9 +25,7 @@ #define TRACKBALL_DPI_OPTIONS \ { 1200, 1800, 2600, 3400 } -#define RGBLIGHT_EFFECT_TWINKLE_LIFE 50 -#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1/63 -#define RGBLIGHT_MAX_BRIGHTNESS 100 +#define RGBLIGHT_MAX_BRIGHTNESS 60 #undef DEBOUNCE #define DEBOUNCE 10 @@ -36,6 +34,6 @@ #define SOLENOID_DEFAULT_DWELL 8 #define OLED_DISPLAY_128X64 -#define OLED_BRIGHTNESS 100 +#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 index 5a1bb79fe2..b3300daa9c 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c @@ -30,8 +30,8 @@ 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, TT(_MOUSE), KC_ENT, \ - BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \ + 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__) @@ -88,8 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MOUSE] = LAYOUT_5x6_right_trackball( _______, _______, _______, _______, _______, _______, DPI_CONFIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_BTN4, KC_BTN5, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, _______, + _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -97,9 +97,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_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_WH_U, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, KC_BTN4, KC_BTN5, _______, _______, _______, + 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, _______, @@ -107,13 +107,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_Q, 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_NO, KC_N, KC_M, KC_NO, 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, - SFT_T(KC_SPC), KC_F, _______, - ALT_T(KC_Q), KC_J, _______, - KC_DIABLO_CLEAR, KC_LGUI, _______, _______ + 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, @@ -157,7 +157,7 @@ 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) && timer_elapsed(mouse_debounce_timer) > 125) { + if (!layer_state_is(_MOUSE) && !(layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO)) && timer_elapsed(mouse_debounce_timer) > 125) { layer_on(_MOUSE); } } @@ -167,7 +167,7 @@ void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { # else if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM # endif - || layer_state_is(_GAMEPAD)) { + || (layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO))) { mouse_report->x = x; mouse_report->y = y; } @@ -218,11 +218,33 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t* record) { default: if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { layer_off(_MOUSE); - mouse_keycode_tracker = 0; } + 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 index 9999c0ddf4..754f0e45de 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk @@ -1,5 +1,4 @@ RGBLIGHT_STARTUP_ANIMATION = yes -HAPTIC_ENABLE = SOLENOID COMMAND_ENABLE = no AUDIO_ENABLE = yes TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c index 8007fecef6..59e3495127 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c @@ -16,13 +16,14 @@ * 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" -#ifdef CONSOLE_ENABLE -# include "print.h" -#endif bool _inBurst = false; #ifndef PMW_CPI @@ -35,10 +36,7 @@ bool _inBurst = false; # define ROTATIONAL_TRANSFORM_ANGLE 0x00 #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 - bool spi_start_adv(void) { bool status = spi_start(SPI_SS_PIN, false, 3, SPI_DIVISOR); @@ -172,9 +170,7 @@ bool pmw_check_signature(void) { report_pmw_t pmw_read_burst(void) { if (!_inBurst) { -#ifdef CONSOLE_ENABLE dprintf("burst on"); -#endif spi_write_adv(REG_Motion_Burst, 0x00); _inBurst = true; } @@ -199,14 +195,12 @@ report_pmw_t pmw_read_burst(void) { spi_stop(); -#ifdef CONSOLE_ENABLE 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; @@ -223,3 +217,5 @@ report_pmw_t pmw_read_burst(void) { return data; } + +#endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c index 5df90258bb..1a9aeb2e32 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c @@ -21,6 +21,7 @@ #include QMK_KEYBOARD_H #define ROWS_PER_HAND (MATRIX_ROWS / 2) +#define SYNC_TIMER_OFFSET 2 #ifdef RGBLIGHT_ENABLE # include "rgblight.h" @@ -36,6 +37,13 @@ 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; @@ -51,6 +59,12 @@ static int8_t split_mouse_x = 0, split_mouse_y = 0; # 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; @@ -77,14 +91,22 @@ typedef struct _I2C_slave_buffer_t { bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; - bool is_rgb_matrix_suspended; +# 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_START offsetof(I2C_slave_buffer_t, mmatrix) +# 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) @@ -97,7 +119,10 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re # 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_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended) +# 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 @@ -106,9 +131,11 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re # endif // Get rows from other half over i2c -bool transport_master(matrix_row_t matrix[]) { - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_START, (void *)matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); - +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; @@ -206,21 +233,34 @@ bool transport_master(matrix_row_t matrix[]) { } # endif -# ifdef RGB_MATRIX_ENABLE - bool sus_state = rgb_matrix_get_suspend_state(); - if (sus_state != i2c_buffer->is_rgb_matrix_suspended) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) { - i2c_buffer->is_rgb_matrix_suspended = sus_state; - } - } +# 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 matrix[]) { +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 *)matrix, sizeof(i2c_buffer->smatrix)); + 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 @@ -281,8 +321,13 @@ void transport_slave(matrix_row_t matrix[]) { } # endif -# ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended); +# 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 } @@ -313,7 +358,10 @@ typedef struct _Serial_m2s_buffer_t { # endif # endif # ifndef DISABLE_SYNC_TIMER - uint32_t 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; @@ -325,7 +373,14 @@ typedef struct _Serial_m2s_buffer_t { bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; - bool is_rgb_matrix_suspended; +# 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) @@ -402,7 +457,7 @@ void transport_rgblight_slave(void) { # define transport_rgblight_slave() # endif -bool transport_master(matrix_row_t matrix[]) { +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; @@ -416,7 +471,10 @@ bool transport_master(matrix_row_t matrix[]) { // TODO: if MATRIX_COLS > 8 change to unpack() for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[i] = serial_s2m_buffer.smatrix[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 @@ -457,19 +515,32 @@ bool transport_master(matrix_row_t matrix[]) { serial_m2s_buffer.oled_on = is_oled_on(); # endif -# ifdef RGB_MATRIX_ENABLE - serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state(); +# 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 matrix[]) { +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] = matrix[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 @@ -518,8 +589,13 @@ void transport_slave(matrix_row_t matrix[]) { } # endif -# ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended); +# 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 } @@ -534,7 +610,7 @@ void trackball_set_cpi(uint16_t cpi) { if (!is_keyboard_left()) { pmw_set_cpi(cpi); } else { - device_cpi = cpi * 1.5; + device_cpi = cpi; } } #endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk index 99275c15ae..3fb9ab2a84 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk @@ -11,17 +11,18 @@ 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 +COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover +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 diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h index 7352b5e838..1b6b105ece 100644 --- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h +++ b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h @@ -8,6 +8,8 @@ #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 diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json new file mode 100644 index 0000000000..8e54b8db4d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json @@ -0,0 +1,90 @@ +{ + "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":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":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.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":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":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, "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} + ] + } + } +} + diff --git a/keyboards/handwired/daishi/info.json b/keyboards/handwired/daishi/info.json new file mode 100644 index 0000000000..52a67b3de9 --- /dev/null +++ b/keyboards/handwired/daishi/info.json @@ -0,0 +1,136 @@ +{ + "keyboard_name": "Daishi", + "url": "", + "maintainer": "Croktopus", + "width": 19.5, + "height": 7.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":9.75, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14.25, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":18.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.33, "y":1.25}, + {"x":5.33, "y":1.25}, + {"x":6.33, "y":1.25}, + {"x":7.33, "y":1.25}, + {"x":8.67, "y":1.25}, + {"x":9.67, "y":1.25}, + {"x":10.67, "y":1.25}, + {"x":11.67, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.5, "y":1.25}, + {"x":18.5, "y":1.25}, + + {"x":0, "y":2.5}, + {"x":1, "y":2.5}, + {"x":2, "y":2.5}, + {"x":3, "y":2.5}, + {"x":4, "y":2.5}, + {"x":5, "y":2.5}, + {"x":6, "y":2.5}, + {"x":7, "y":2.5}, + {"x":8, "y":2.5}, + {"x":9, "y":2.5}, + {"x":10, "y":2.5}, + {"x":11, "y":2.5}, + {"x":12, "y":2.5}, + {"x":13, "y":2.5, "w":2}, + {"x":15.25, "y":2.25}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":18.5, "y":2.5}, + + {"x":0, "y":3.5, "w":1.5}, + {"x":1.5, "y":3.5}, + {"x":2.5, "y":3.5}, + {"x":3.5, "y":3.5}, + {"x":4.5, "y":3.5}, + {"x":5.5, "y":3.5}, + {"x":6.5, "y":3.5}, + {"x":7.5, "y":3.5}, + {"x":8.5, "y":3.5}, + {"x":9.5, "y":3.5}, + {"x":10.5, "y":3.5}, + {"x":11.5, "y":3.5}, + {"x":12.5, "y":3.5}, + {"x":13.5, "y":3.5, "w":1.5}, + {"x":15.5, "y":3.5}, + {"x":16.5, "y":3.5}, + {"x":17.5, "y":3.5}, + {"x":18.5, "y":3.5}, + + {"x":0, "y":4.5, "w":1.75}, + {"x":1.75, "y":4.5}, + {"x":2.75, "y":4.5}, + {"x":3.75, "y":4.5}, + {"x":4.75, "y":4.5}, + {"x":5.75, "y":4.5}, + {"x":6.75, "y":4.5}, + {"x":7.75, "y":4.5}, + {"x":8.75, "y":4.5}, + {"x":9.75, "y":4.5}, + {"x":10.75, "y":4.5}, + {"x":11.75, "y":4.5}, + {"x":12.75, "y":4.5, "w":2.25}, + {"x":15.5, "y":4.5}, + {"x":16.5, "y":4.5}, + {"x":17.5, "y":4.5}, + {"x":18.5, "y":4.5}, + + {"x":0, "y":5.5, "w":2.25}, + {"x":2.25, "y":5.5}, + {"x":3.25, "y":5.5}, + {"x":4.25, "y":5.5}, + {"x":5.25, "y":5.5}, + {"x":6.25, "y":5.5}, + {"x":7.25, "y":5.5}, + {"x":8.25, "y":5.5}, + {"x":9.25, "y":5.5}, + {"x":10.25, "y":5.5}, + {"x":11.25, "y":5.5}, + {"x":12.25, "y":5.5, "w":1.75}, + {"x":14.25, "y":5.75}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5}, + {"x":18.5, "y":5.5, "h":2}, + + {"x":0, "y":6.5, "w":1.25}, + {"x":1.25, "y":6.5, "w":1.25}, + {"x":2.5, "y":6.5, "w":1.25}, + {"x":3.75, "y":6.5, "w":6.25}, + {"x":10, "y":6.5, "w":1.5}, + {"x":11.5, "y":6.5, "w":1.5}, + {"x":13.25, "y":6.75}, + {"x":14.25, "y":6.75}, + {"x":15.25, "y":6.75}, + {"x":16.5, "y":6.5}, + {"x":17.5, "y":6.5} + ] + } + } +} diff --git a/keyboards/handwired/daishi/keymaps/default/keymap.c b/keyboards/handwired/daishi/keymaps/default/keymap.c index eef82dd9b9..5214e8b6f4 100644 --- a/keyboards/handwired/daishi/keymaps/default/keymap.c +++ b/keyboards/handwired/daishi/keymaps/default/keymap.c @@ -36,7 +36,7 @@ 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_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_EQL , KC_LSFT, KC_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 + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT ), /* FN @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | | | | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------------------------' */ - + [_FN] = LAYOUT( /* Function */ RESET , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_F21 , DM_REC1, DM_REC2, DM_RSTP, _______, _______, _______, MO(_FN), DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; @@ -73,23 +73,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch(keycode) { case M_EXAMPLE1: SEND_STRING("This is an example macro!"SS_TAP(X_ENTER)); //prints "This is an example macro!" and hits Enter - return false; + return false; case M_EXAMPLE2: SEND_STRING("This is a another example!"SS_TAP(X_ENTER)); //prints "This is a another example!" and hits Enter - return false; + return false; } } return true; }; -void encoder_update(bool clockwise) { +bool encoder_update(bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } + return true; } - + void matrix_init_user(void) { // Call the keymap level matrix init. @@ -115,4 +116,4 @@ void led_set_kb(uint8_t usb_led) { } else { writePinHigh(C6); } -} \ No newline at end of file +} diff --git a/keyboards/handwired/datahand/info.json b/keyboards/handwired/datahand/info.json new file mode 100644 index 0000000000..9160be2409 --- /dev/null +++ b/keyboards/handwired/datahand/info.json @@ -0,0 +1,96 @@ +{ + "keyboard_name": "Handwired DataHand", + "url": "", + "maintainer": "qmk", + "width": 23, + "height": 7.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"lpn", "x":1, "y":2.75}, + + {"label":"lrn", "x":3.25, "y":1.25}, + + {"label":"lmn", "x":5.75, "y":0}, + + {"label":"lin", "x":9, "y":0.75}, + + {"label":"rin", "x":13, "y":0.75}, + + {"label":"rmn", "x":16.25, "y":0}, + + {"label":"rrn", "x":18.75, "y":1.25}, + + {"label":"rpn", "x":21, "y":2.75}, + + {"label":"lpw", "x":0, "y":3.75}, + {"label":"lpc", "x":1, "y":3.75}, + {"label":"lpe", "x":2, "y":3.75}, + + {"label":"lrw", "x":2.25, "y":2.25}, + {"label":"lrc", "x":3.25, "y":2.25}, + {"label":"lre", "x":4.25, "y":2.25}, + + {"label":"lmw", "x":4.75, "y":1}, + {"label":"lmc", "x":5.75, "y":1}, + {"label":"lme", "x":6.75, "y":1}, + + {"label":"liw", "x":8, "y":1.75}, + {"label":"lic", "x":9, "y":1.75}, + {"label":"lie", "x":10, "y":1.75}, + + {"label":"riw", "x":12, "y":1.75}, + {"label":"ric", "x":13, "y":1.75}, + {"label":"rie", "x":14, "y":1.75}, + + {"label":"rmw", "x":15.25, "y":1}, + {"label":"rmc", "x":16.25, "y":1}, + {"label":"rme", "x":17.25, "y":1}, + + {"label":"rrw", "x":17.75, "y":2.25}, + {"label":"rrc", "x":18.75, "y":2.25}, + {"label":"rre", "x":19.75, "y":2.25}, + + {"label":"rpw", "x":20, "y":3.75}, + {"label":"rpc", "x":21, "y":3.75}, + {"label":"rpe", "x":22, "y":3.75}, + + {"label":"lps", "x":1, "y":4.75}, + + {"label":"lrs", "x":3.25, "y":3.25}, + + {"label":"lms", "x":5.75, "y":2}, + + {"label":"lis", "x":9, "y":2.75}, + + {"label":"ris", "x":13, "y":2.75}, + + {"label":"rms", "x":16.25, "y":2}, + + {"label":"rrs", "x":18.75, "y":3.25}, + + {"label":"rps", "x":21, "y":4.75}, + + {"label":"ltp", "x":8, "y":4.75}, + {"label":"ltn", "x":10, "y":4.75}, + + {"label":"rtn", "x":12, "y":4.75}, + {"label":"rtp", "x":14, "y":4.75}, + + {"label":"ltc", "x":9, "y":5.25}, + + {"label":"rtc", "x":13, "y":5.25}, + + {"label":"ltl", "x":9, "y":6.25}, + + {"label":"rtl", "x":13, "y":6.25}, + + {"label":"ltu", "x":8, "y":6.75}, + {"label":"ltk", "x":10, "y":6.75}, + + {"label":"rtk", "x":12, "y":6.75}, + {"label":"rtu", "x":14, "y":6.75} + ] + } + } +} diff --git a/keyboards/handwired/ddg_56/rules.mk b/keyboards/handwired/ddg_56/rules.mk index dfbb0959f9..56c9007128 100644 --- a/keyboards/handwired/ddg_56/rules.mk +++ b/keyboards/handwired/ddg_56/rules.mk @@ -2,11 +2,14 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-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 = yes # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug @@ -15,4 +18,4 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: h BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode \ No newline at end of file +UNICODE_ENABLE = no # Unicode diff --git a/keyboards/handwired/eagleii/rules.mk b/keyboards/handwired/eagleii/rules.mk index e45af67e51..aeee86d3af 100644 --- a/keyboards/handwired/eagleii/rules.mk +++ b/keyboards/handwired/eagleii/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes +BOOTMAGIC_ENABLE = full MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/handwired/ergocheap/chconf.h b/keyboards/handwired/ergocheap/chconf.h new file mode 100644 index 0000000000..feaf02b017 --- /dev/null +++ b/keyboards/handwired/ergocheap/chconf.h @@ -0,0 +1,57 @@ +/* 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/handwired/ergocheap/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_TM FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +#define CH_CFG_USE_MEMPOOLS FALSE + +#define CH_CFG_USE_OBJ_FIFOS FALSE + +#define CH_CFG_USE_PIPES FALSE + +#define CH_CFG_USE_DYNAMIC FALSE + +#define CH_CFG_USE_FACTORY FALSE + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE + +#define CH_CFG_FACTORY_SEMAPHORES FALSE + +#define CH_CFG_FACTORY_MAILBOXES FALSE + +#define CH_CFG_FACTORY_OBJ_FIFOS FALSE + +#define CH_CFG_FACTORY_PIPES FALSE + +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +#include_next + diff --git a/keyboards/handwired/ergocheap/config.h b/keyboards/handwired/ergocheap/config.h new file mode 100644 index 0000000000..f563036642 --- /dev/null +++ b/keyboards/handwired/ergocheap/config.h @@ -0,0 +1,67 @@ +/* +Copyright 2021 xSteins + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License 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 0xFEDE //0xFEED +#define PRODUCT_ID 0x6942 //0x6465 +#define DEVICE_VER 0x0001 +#define MANUFACTURER xSteins +#define PRODUCT ERGOCHEAP + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A8, A9, B14, B12, B13, B15, B3, B11, A4, A5, A6, A7, B0, B1, B10 } +#define MATRIX_ROW_PINS { B5, B6, B7, B9, B8 } + +#define DIODE_DIRECTION COL2ROW + +/* key led setting */ +//#define BACKLIGHT_PIN A8 +//#define BACKLIGHT_PWM_DRIVER PWMD1 +//#define BACKLIGHT_PWM_CHANNEL 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 +#define TAPPING_TERM 500 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/ergocheap/ergocheap.c b/keyboards/handwired/ergocheap/ergocheap.c new file mode 100644 index 0000000000..ab5cf8a0a7 --- /dev/null +++ b/keyboards/handwired/ergocheap/ergocheap.c @@ -0,0 +1,16 @@ + /* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ergocheap.h" \ No newline at end of file diff --git a/keyboards/handwired/ergocheap/ergocheap.h b/keyboards/handwired/ergocheap/ergocheap.h new file mode 100644 index 0000000000..72f3775618 --- /dev/null +++ b/keyboards/handwired/ergocheap/ergocheap.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 xSteins + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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 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, 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, 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/halconf.h b/keyboards/handwired/ergocheap/halconf.h new file mode 100644 index 0000000000..930fa15a27 --- /dev/null +++ b/keyboards/handwired/ergocheap/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-confupdate -i keyboards/handwired/ergocheap/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_SERIAL_USB FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/handwired/ergocheap/info.json b/keyboards/handwired/ergocheap/info.json new file mode 100644 index 0000000000..2bf09653aa --- /dev/null +++ b/keyboards/handwired/ergocheap/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Ergocheap", + "url": "", + "maintainer": "xSteins", + "width": 17.8, + "height": 11.85, + "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}] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/ergocheap/keymaps/default/keymap.c b/keyboards/handwired/ergocheap/keymaps/default/keymap.c new file mode 100644 index 0000000000..dc70f4f278 --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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, +}; + +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) + ), + [_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, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/ergocheap/keymaps/via/keymap.c b/keyboards/handwired/ergocheap/keymaps/via/keymap.c new file mode 100644 index 0000000000..6f56f52f65 --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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_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) + ), + [_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, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/ergocheap/keymaps/via/rules.mk b/keyboards/handwired/ergocheap/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/ergocheap/mcuconf.h b/keyboards/handwired/ergocheap/mcuconf.h new file mode 100644 index 0000000000..fb353433ef --- /dev/null +++ b/keyboards/handwired/ergocheap/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/handwired/ergocheap/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE + diff --git a/keyboards/handwired/ergocheap/readme.md b/keyboards/handwired/ergocheap/readme.md new file mode 100644 index 0000000000..ca30d4f50a --- /dev/null +++ b/keyboards/handwired/ergocheap/readme.md @@ -0,0 +1,15 @@ +# Ergocheap handwired keyboard + +Ergocheap is an ergonomic keyboard with layout forked from adelheid with some minor adjustment in 13-15th row and standard keycaps size + +![Ergocheap](https://i.imgur.com/II3aBYgl.jpg) + +* Keyboard Maintainer: [xSteins](https://github.com/xSteins) +* Hardware Supported: bluepill +* Hardware Availability: [case files](https://github.com/xSteins/Mechanical-Keyboard/tree/master/ErgoCheap/CASE) + +Make example for this keyboard (after setting up your build environment): + + make handwired/ergocheap: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/ergocheap/rules.mk b/keyboards/handwired/ergocheap/rules.mk new file mode 100644 index 0000000000..b126207bc6 --- /dev/null +++ b/keyboards/handwired/ergocheap/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# 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 = 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 diff --git a/keyboards/handwired/fc200rt_qmk/rules.mk b/keyboards/handwired/fc200rt_qmk/rules.mk index fb1748db03..55a0887717 100644 --- a/keyboards/handwired/fc200rt_qmk/rules.mk +++ b/keyboards/handwired/fc200rt_qmk/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/floorboard/rules.mk b/keyboards/handwired/floorboard/rules.mk index 131e8fb26d..be14c2e65d 100644 --- a/keyboards/handwired/floorboard/rules.mk +++ b/keyboards/handwired/floorboard/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/frankie_macropad/config.h b/keyboards/handwired/frankie_macropad/config.h new file mode 100644 index 0000000000..5047972d18 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/config.h @@ -0,0 +1,155 @@ +/* +Copyright 2021 Eric Wood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF00D +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Eric Wood +#define PRODUCT frankie_macropad + +/* 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 { B0, B1, B2 } +#define MATRIX_COL_PINS { B3, B4, B5, B6 } +#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 2 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define ENCODERS_PAD_A { D0, D2 } +#define ENCODERS_PAD_B { D1, D3 } diff --git a/keyboards/handwired/frankie_macropad/frankie_macropad.c b/keyboards/handwired/frankie_macropad/frankie_macropad.c new file mode 100644 index 0000000000..5f89811e7a --- /dev/null +++ b/keyboards/handwired/frankie_macropad/frankie_macropad.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "frankie_macropad.h" diff --git a/keyboards/handwired/frankie_macropad/frankie_macropad.h b/keyboards/handwired/frankie_macropad/frankie_macropad.h new file mode 100644 index 0000000000..cfd3124ba1 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/frankie_macropad.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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( \ + k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23 \ +) { \ + { ___, ___, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 } \ +} diff --git a/keyboards/handwired/frankie_macropad/info.json b/keyboards/handwired/frankie_macropad/info.json new file mode 100644 index 0000000000..ac8b65e28e --- /dev/null +++ b/keyboards/handwired/frankie_macropad/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "frankie_macropad", + "url": "https://github.com/eric-wood/macro-pad", + "maintainer": "eric-wood", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"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} + ] + } + } +} diff --git a/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c b/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c new file mode 100644 index 0000000000..b85d66c4c8 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the 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_HOME, KC_MUTE, + KC_BRID, KC_BRIU, KC_NO, KC_NO, + KC_MPRV, KC_MPLY, KC_MNXT, KC_NO + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/handwired/frankie_macropad/keymaps/default/readme.md b/keyboards/handwired/frankie_macropad/keymaps/default/readme.md new file mode 100644 index 0000000000..f29affb872 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for handwired/frankie_macropad diff --git a/keyboards/handwired/frankie_macropad/readme.md b/keyboards/handwired/frankie_macropad/readme.md new file mode 100644 index 0000000000..edd6965b51 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/readme.md @@ -0,0 +1,21 @@ +# frankie_macropad + +![frankie_macropad](https://i.imgur.com/X46CSH7h.jpg) + +A simple 8-key macropad with two rotary encoders. + +* Keyboard Maintainer: [Eric Wood](https://github.com/eric-wood) +* Hardware Supported: atmega16u2 +* Hardware Availability: https://github.com/eric-wood/macro-pad + +Make example for this keyboard (after setting up your build environment): + + make handwired/frankie_macropad:default + +To switch to bootloader mode, unplug the keyboard and plug it back in while holding down the bottom left key. + +Flashing example for this keyboard: + + make handwired/frankie_macropad: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/frankie_macropad/rules.mk b/keyboards/handwired/frankie_macropad/rules.mk new file mode 100644 index 0000000000..b5b6e39779 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega16u2 + +# 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 = 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/hexon38/info.json b/keyboards/handwired/hexon38/info.json new file mode 100644 index 0000000000..5c141ac656 --- /dev/null +++ b/keyboards/handwired/hexon38/info.json @@ -0,0 +1,54 @@ +{ + "keyboard_name": "hexon38", + "url": "", + "maintainer": "cellularmitosis", + "width": 18, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "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":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + {"x":17, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + {"x":17, "y":2}, + + {"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} + ] + } + } +} diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk index fb5e1b0c9b..93b7a11764 100644 --- a/keyboards/handwired/hexon38/rules.mk +++ b/keyboards/handwired/hexon38/rules.mk @@ -12,7 +12,7 @@ MCU = atmega32u4 BOOTLOADER = halfkay # Enabled build options: -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/hnah108/keymaps/default/keymap.c b/keyboards/handwired/hnah108/keymaps/default/keymap.c index 682ca0812a..d4d4cde4b6 100644 --- a/keyboards/handwired/hnah108/keymaps/default/keymap.c +++ b/keyboards/handwired/hnah108/keymaps/default/keymap.c @@ -46,7 +46,7 @@ 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 (index == 0) { if (IS_LAYER_ON(_FN)) { if (clockwise) { @@ -62,6 +62,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { } } } + return true; } void rgb_matrix_indicators_user(void) { diff --git a/keyboards/handwired/jot50/info.json b/keyboards/handwired/jot50/info.json new file mode 100644 index 0000000000..c144d684cb --- /dev/null +++ b/keyboards/handwired/jot50/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Jot50", + "url": "", + "maintainer": "jotix", + "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/handwired/jotanck/info.json b/keyboards/handwired/jotanck/info.json new file mode 100644 index 0000000000..a5d13876ea --- /dev/null +++ b/keyboards/handwired/jotanck/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Jotanck", + "url": "", + "maintainer": "jotix", + "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":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":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}, + {"x":10, "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":10, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/jotpad16/info.json b/keyboards/handwired/jotpad16/info.json new file mode 100644 index 0000000000..feea7575cf --- /dev/null +++ b/keyboards/handwired/jotpad16/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "JotPad16", + "url": "", + "maintainer": "jotix", + "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/handwired/k8split/info.json b/keyboards/handwired/k8split/info.json new file mode 100644 index 0000000000..026edfe710 --- /dev/null +++ b/keyboards/handwired/k8split/info.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "k8split", + "url": "", + "maintainer": "Ckath", + "width": 10, + "height": 6, + "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":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":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":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":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":0, "y":5, "w":1.5}, + {"x":1.5, "y":5}, + {"x":2.5, "y":5}, + {"x":3.5, "y":5, "w":1.25}, + {"x":4.75, "y":5, "w":2.25}, + {"x":7, "y":5}, + {"x":8, "y":5}, + {"x":9, "y":5} + ] + } + } +} diff --git a/keyboards/handwired/lagrange/config.h b/keyboards/handwired/lagrange/config.h new file mode 100644 index 0000000000..309603ad39 --- /dev/null +++ b/keyboards/handwired/lagrange/config.h @@ -0,0 +1,48 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 0xFEED +#define PRODUCT_ID 0x2718 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Dimitris Papavasiliou +#define PRODUCT Lagrange + +#define EE_HANDS +#define SPLIT_USB_DETECT + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +/* pin-out */ +#define MATRIX_ROW_PINS { E6, F1, F0, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B4, B5, D7, B6, C6, D6 } +#define MATRIX_ROW_PINS_RIGHT { B5, B4, D7, B6, C6, D6, D4 } +#define MATRIX_COL_PINS_RIGHT { C7, F7, F6, F5, F4, F1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D2 diff --git a/keyboards/handwired/lagrange/info.json b/keyboards/handwired/lagrange/info.json new file mode 100644 index 0000000000..1c94d32019 --- /dev/null +++ b/keyboards/handwired/lagrange/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "Lagrange", + "url": "https://github.com/dpapavas/lagrange-keyboard", + "maintainer": "dpapavas", + "width": 19, + "height": 8.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.75, "w":1.5}, + {"x":1.5, "y":0.75}, + {"x":2.5, "y":0.375}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0.5}, + {"x":5.5, "y":0.5}, + {"x":12.5, "y":0.5}, + {"x":13.5, "y":0.5}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0.375}, + {"x":16.5, "y":0.75}, + {"x":17.5, "y":0.75, "w":1.5}, + + {"x":0, "y":1.75, "w":1.5}, + {"x":1.5, "y":1.75}, + {"x":2.5, "y":1.375}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1.5}, + {"x":5.5, "y":1.5}, + {"x":12.5, "y":1.5}, + {"x":13.5, "y":1.5}, + {"x":14.5, "y":1}, + {"x":15.5, "y":1.375}, + {"x":16.5, "y":1.75}, + {"x":17.5, "y":1.75, "w":1.5}, + + {"x":0, "y":2.75, "w":1.5}, + {"x":1.5, "y":2.75}, + {"x":2.5, "y":2.375}, + {"x":3.5, "y":2}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5}, + {"x":14.5, "y":2}, + {"x":15.5, "y":2.375}, + {"x":16.5, "y":2.75}, + {"x":17.5, "y":2.75, "w":1.5}, + + {"x":0, "y":3.75, "w":1.5}, + {"x":1.5, "y":3.75}, + {"x":2.5, "y":3.375}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3.5}, + {"x":5.5, "y":3.5}, + {"x":12.5, "y":3.5}, + {"x":13.5, "y":3.5}, + {"x":14.5, "y":3}, + {"x":15.5, "y":3.375}, + {"x":16.5, "y":3.75}, + {"x":17.5, "y":3.75, "w":1.5}, + + {"x":0, "y":4.75, "w":1.5}, + {"x":2.5, "y":4.375}, + {"x":3.5, "y":4}, + {"x":5, "y":5, "h":1.25}, + {"x":6, "y":5, "h":1.5}, + {"x":7, "y":5, "h":1.5}, + {"x":8, "y":5.5}, + {"x":10, "y":5.5}, + {"x":11, "y":5, "h":1.5}, + {"x":12, "y":5, "h":1.5}, + {"x":13, "y":5, "h":1.25}, + {"x":14.5, "y":4}, + {"x":15.5, "y":4.5}, + {"x":17.5, "y":4.75, "w":1.5}, + + {"x":5, "y":7}, + {"x":6, "y":6.5}, + {"x":7, "y":7}, + {"x":11, "y":7}, + {"x":12, "y":6.5}, + {"x":13, "y":7}, + + {"x":6, "y":7.5}, + {"x":12, "y":7.5} + ] + } + } +} diff --git a/keyboards/handwired/lagrange/keymaps/default/keymap.c b/keyboards/handwired/lagrange/keymaps/default/keymap.c new file mode 100644 index 0000000000..5f86239a0b --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 + +#define EQL_ALT MT(MOD_RALT, KC_EQL) +#define MINS_ALT MT(MOD_LALT, KC_MINS) +#define HOME_GUI MT(MOD_LGUI, KC_HOME) +#define RGHT_GUI MT(MOD_RGUI, KC_RGHT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, TT(1), + 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, + + KC_LCPO, KC_INS, KC_LBRC, MINS_ALT, KC_BSPC, KC_DEL, KC_PSCR, KC_PAUSE, KC_ENT, KC_SPC, EQL_ALT, KC_RBRC, KC_DEL, KC_RCPC, + HOME_GUI, KC_PGUP, KC_END, KC_LEFT, KC_UP, RGHT_GUI, + KC_PGDN, KC_DOWN + ), + + [1] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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, RESET, 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 + ), +}; diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/config.h b/keyboards/handwired/lagrange/keymaps/dpapavas/config.h new file mode 100644 index 0000000000..049ba598a9 --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/config.h @@ -0,0 +1,23 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 + +#undef TAPPING_TERM +#define TAPPING_TERM 175 +#define TAPPING_TERM_PER_KEY +#define PERMISSIVE_HOLD_PER_KEY +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c new file mode 100644 index 0000000000..bbcb83913f --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c @@ -0,0 +1,202 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 + +#define CAPS_SFT MT(MOD_LSFT, KC_CAPS) +#define QUOT_SFT MT(MOD_RSFT, KC_QUOT) +#define PSCR_SFT MT(MOD_LSFT, KC_PSCR) +#define PAUSE_SFT MT(MOD_RSFT, KC_PAUSE) +#define F_SFT MT(MOD_LSFT, KC_F) +#define J_SFT MT(MOD_RSFT, KC_J) +#define PGUP_GUI MT(MOD_LGUI, KC_PGUP) +#define END_GUI MT(MOD_LGUI, KC_END) +#define UP_GUI MT(MOD_RGUI, KC_UP) +#define LEFT_GUI MT(MOD_RGUI, KC_LEFT) +#define EQL_CTL MT(MOD_RCTL, KC_EQL) +#define MINS_CTL MT(MOD_LCTL, KC_MINS) +#define BSPC_ALT LALT_T(KC_BSPC) +#define ENT_ALT LALT_T(KC_ENT) +#define SPC_ALT RALT_T(KC_SPC) +#define DEL_ALT RALT_T(KC_DEL) + +enum tapdance_keycodes { + TD_LEFT, + TD_RGHT, + TD_C_X +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + CAPS_SFT, KC_A, KC_S, KC_D, F_SFT, KC_G, KC_H, J_SFT, KC_K, KC_L, KC_SCLN, QUOT_SFT, + PSCR_SFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, PAUSE_SFT, + + TD(TD_LEFT), KC_INS, KC_LBRC, MINS_CTL, BSPC_ALT, DEL_ALT, TD(TD_C_X), TD(TD_C_X), ENT_ALT, SPC_ALT, EQL_CTL, KC_RBRC, KC_DEL, TD(TD_RGHT), + KC_HOME, PGUP_GUI, END_GUI, LEFT_GUI, UP_GUI, KC_RGHT, + KC_PGDN, KC_DOWN + ), + + [1] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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, RESET, 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 + ), +}; + +/* The following helper macros define tap dances that support + * separated press, release, tap and double-tap functions. */ + +#define STEPS(DANCE) [DANCE] = ACTION_TAP_DANCE_FN_ADVANCED( \ + NULL, \ + dance_ ## DANCE ## _finished, \ + dance_ ## DANCE ## _reset) + +#define CHOREOGRAPH(DANCE, PRESS, RELEASE, TAP, DOUBLETAP) \ + static bool dance_ ## DANCE ## _pressed; \ + \ + void dance_ ## DANCE ## _finished(qk_tap_dance_state_t *state, void *user_data) { \ + if (state->count == 1) { \ + if (state->pressed) { \ + dance_ ## DANCE ## _pressed = true; \ + PRESS; \ + } else { \ + TAP; \ + } \ + } else if (state->count == 2) { \ + if (!state->pressed) { \ + DOUBLETAP; \ + } \ + } \ + } \ + \ + void dance_ ## DANCE ## _reset(qk_tap_dance_state_t *state, void *user_data) { \ + if (state->count == 1) { \ + if (dance_ ## DANCE ## _pressed) { \ + RELEASE; \ + dance_ ## DANCE ## _pressed = false; \ + } \ + } \ + } + +/* Define dance for left palm key. */ + +CHOREOGRAPH(TD_LEFT, + layer_invert(1), /* Temporarily toggle layer when held. */ + layer_invert(1), + + /* Press and release both shifts on tap, to change + * keyboard layout (i.e. language). */ + + SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_RSFT) + SS_UP(X_LSFT) SS_UP(X_RSFT)), + + layer_invert(1)); /* Toggle layer (permanently) on + * double-tap. */ + +/* Define dance for right palm key. */ + +CHOREOGRAPH(TD_RGHT, + layer_invert(1), /* Same as above */ + layer_invert(1), + /* Send a complex macro: C-x C-s Mod-t up. (Save in + * Emacs, switch to terminal and recall previous command, + * hopefully a compile command.) */ + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X) SS_TAP(X_S) SS_UP(X_LCTRL) + SS_DOWN(X_LGUI) SS_TAP(X_T) SS_UP(X_LGUI) SS_TAP(X_UP)), + layer_invert(1)); + +/* This facilitates C-x chords in Emacs. Used as a modifier along + * with, say, the s-key, it saves, by sending C-x C-s. When tapped it + * just sends C-x. */ + +CHOREOGRAPH(TD_C_X, + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X)), + SEND_STRING(SS_UP(X_LCTRL)), + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X) SS_UP(X_LCTRL)),); + +qk_tap_dance_action_t tap_dance_actions[] = { + STEPS(TD_LEFT), STEPS(TD_RGHT), STEPS(TD_C_X) +}; + +/* Set a longer tapping term for palm keys to allow comfortable + * permanent layer toggle. Also set an essentially infinite tapping + * term for certain mod-tap keys one tends to keep pressed (such as + * space, backspace, etc.). This prevents sending the modifier + * keycode by accident (allowing re-tap to get repeated key-press) + * and, in combination with permissive hold, they can still be used + * fine as modifiers. */ + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_LEFT): + case TD(TD_RGHT): + return 250; + case BSPC_ALT: + case UP_GUI: + case LEFT_GUI: + return 5000; + default: + return TAPPING_TERM; + } +} + +bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_LEFT): + case TD(TD_RGHT): + case BSPC_ALT: + case UP_GUI: + case LEFT_GUI: + return true; + default: + return false; + } +} + +/* Use the first LED to indicate the active layer. */ + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(D0, (get_highest_layer(state) > 0)); + + return state; +} + +/* Cycle through the LEDs after initialization. */ + +void keyboard_post_init_user(void) { + const pin_t pins[] = {D0, D1, D2}; + uint8_t i, j; + + for (i = 0 ; i < sizeof(pins) / sizeof(pins[0]) + 2 ; i += 1) { + for (j = 0 ; j < sizeof(pins) / sizeof(pins[0]) ; j += 1) { + setPinOutput(pins[j]); + writePin(pins[j], (j == i || j == i - 1)); + } + + wait_ms(100); + } +} diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk b/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk new file mode 100644 index 0000000000..42f42f627a --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk @@ -0,0 +1,4 @@ +# Enable additional features. + +DEBOUNCE_TYPE = sym_defer_pk +TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/lagrange/lagrange.c b/keyboards/handwired/lagrange/lagrange.c new file mode 100644 index 0000000000..0c76512c57 --- /dev/null +++ b/keyboards/handwired/lagrange/lagrange.c @@ -0,0 +1,59 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 "lagrange.h" + +#ifndef SPLIT_USB_TIMEOUT_POLL +# define SPLIT_USB_TIMEOUT_POLL 10 +#endif + +/* Instead of timing out, the slave waits indefinitely for the other + * side to signal that it has become master. This avoids both sides + * assuming the slave role when the USB port is powered but not + * otherwise active (e.g. when the host is turned off, or suspended). + * The SPI SS line is used for signaling. On power-up it is + * configured as input with pull-up enabled. When one side assumes + * the master role, it reconfigures the line for SPI, and pulls it low + * to select the slave, which doubles as the signal. */ + +bool is_keyboard_master(void) { + static int8_t is_master = -1; + + if (is_master < 0) { + while (readPin(SPI_SS_PIN)) { + if (USB_Device_IsAddressSet()) { + is_master = 1; + return is_master; + } + wait_ms(SPLIT_USB_TIMEOUT_POLL); + } + + is_master = 0; + + USB_Disable(); + USB_DeviceState = DEVICE_STATE_Unattached; + } + + return is_master; +} + +void keyboard_pre_init_kb(void) { + setPinInputHigh(SPI_SS_PIN); + + keyboard_pre_init_user(); +} diff --git a/keyboards/handwired/lagrange/lagrange.h b/keyboards/handwired/lagrange/lagrange.h new file mode 100644 index 0000000000..6f808ba8e4 --- /dev/null +++ b/keyboards/handwired/lagrange/lagrange.h @@ -0,0 +1,53 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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" + +#if !defined(SPI_SS_PIN) +# define SPI_SS_PIN B0 +#endif + +#define SPI_SCK_PIN B1 +#define SPI_MOSI_PIN B2 +#define SPI_MISO_PIN B3 + +#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, \ + l30, l31, l32, l33, l34, l35, r35, r34, r33, r32, r31, r30, \ + l40, l42, l43, l44, l45, l46, l47, r47, r46, r45, r44, r43, r42, r40, \ + l50, l51, l52, r52, r51, r50, \ + l70, r70) \ + { \ + {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, KC_NO, l42, l43, l44, l45}, \ + {KC_NO, KC_NO, KC_NO, l50, l51, l46}, \ + {KC_NO, KC_NO, KC_NO, l70, l52, l47}, \ + \ + {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, KC_NO, r42, r43, r44, r45}, \ + {KC_NO, KC_NO, KC_NO, r50, r51, r46}, \ + {KC_NO, KC_NO, KC_NO, r70, r52, r47} \ + } diff --git a/keyboards/handwired/lagrange/readme.md b/keyboards/handwired/lagrange/readme.md new file mode 100644 index 0000000000..5d7f5bb08e --- /dev/null +++ b/keyboards/handwired/lagrange/readme.md @@ -0,0 +1,21 @@ +# Lagrange + +An ergonomic, split, concave keyboard, with convex thumb pads. See the [project page](https://github.com/dpapavas/lagrange-keyboard) for more info. + +![Lagrange](https://github.com/dpapavas/lagrange-keyboard/blob/master/doc/lagrange_keyboard.png?raw=true) + +* Keyboard Maintainer: [Dimitris Papavasiliou](https://github.com/dpapavas) +* Hardware Supported: Lagrange PCB Rev A +* Hardware Availability: See the build guide on the [project page](https://github.com/dpapavas/lagrange-keyboard). + +Make example for this keyboard (after setting up your build environment): + + make handwired/lagrange:default + +Flashing example for this keyboard: + + make handwired/lagrange:default:flash + +To program the keyboard you'll need to reset it. This can be accomplished, either through the reset button, accessible via a hole in the bottom cover, or, if you've assigned the `RESET` keycode to a key, by pressing that 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). diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk new file mode 100644 index 0000000000..ea7413b97b --- /dev/null +++ b/keyboards/handwired/lagrange/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 = 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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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 +SPLIT_TRANSPORT = custom + +SRC += transport.c spi_master.c diff --git a/keyboards/handwired/lagrange/transport.c b/keyboards/handwired/lagrange/transport.c new file mode 100644 index 0000000000..8f6973925f --- /dev/null +++ b/keyboards/handwired/lagrange/transport.c @@ -0,0 +1,208 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can 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 "quantum.h" +#include "split_util.h" +#include "transport.h" +#include "timer.h" + +#include "lagrange.h" + +struct led_context { + led_t led_state; + layer_state_t layer_state; +}; + +uint8_t transceive(uint8_t b) { + for (SPDR = b ; !(SPSR & _BV(SPIF)) ; ); + return SPDR; +} + +/* The SPI bus, doesn't have any form of protocol built in, so when + * the other side isn't present, any old noise on the line will appear + * as matrix data. To avoid interpreting data as keystrokes, we do a + * simple n-way (8-way here) handshake before each scan, where each + * side sends a prearranged sequence of bytes. */ + +bool shake_hands(bool master) { + const uint8_t m = master ? 0xf8 : 0; + const uint8_t a = 0xa8 ^ m, b = 0x50 ^ m; + bool synchronized = true; + + uint8_t i; + + i = SPSR; + i = SPDR; + + do { + /* Cycling the SS pin on each attempt is necessary, as it + * resets the AVR's SPI core and guarantees proper + * alignment. */ + + if (master) { + writePinLow(SPI_SS_PIN); + } + + for (i = 0 ; i < 8 ; i += 1) { + if (transceive(a + i) != b + i) { + synchronized = false; + break; + } + } + + if (master) { + writePinHigh(SPI_SS_PIN); + } + } while (i < 8); + + return synchronized; +} + +bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + const struct led_context context = { + host_keyboard_led_state(), + layer_state + }; + + uint8_t i; + + /* We shake hands both before and after transmitting the matrix. + * Doing it before transmitting is necessary to ensure + * synchronization: Due to the master-slave nature of the SPI bus, + * the master calls the shots. If we just go ahead and start + * clocking bits, the slave side might be otherwise engaged at + * that moment, so we'll initially read zeros, or garbage. Then + * when the slave gets around to transmitting its matrix, we'll + * misinterpret the keys it sends, leading to spurious + * keypresses. */ + + /* The handshake forces the master to wait for the slave to be + * ready to start transmitting. */ + + do { + shake_hands(true); + + /* Receive the matrix from the other side, while transmitting + * LED and layer states. */ + + spi_start(SPI_SS_PIN, 0, 0, 4); + + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + spi_status_t x; + + x = spi_write(i < sizeof(struct led_context) ? + ((uint8_t *)&context)[i] : 0); + + if (x == SPI_STATUS_TIMEOUT) { + return false; + } + + ((uint8_t *)slave_matrix)[i] = (uint8_t)x; + } + + spi_stop(); + + /* In case of errors during the transmission, e.g. if the + * cable was disconnected and since there is no inherent + * error-checking protocol, we would simply interpret noise as + * data. */ + + /* To avoid this, both sides shake hands after transmitting. + * If synchronization was lost during transmission, the (first) + * handshake will fail. In that case we go around and + * re-transmit. */ + + } while (!shake_hands(true)); + + return true; +} + +void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static struct led_context context; + struct led_context new_context; + + uint8_t i; + + /* Do the reverse of master above. Note that timing is critical, + * so interrupts must be turned off. */ + + cli(); + shake_hands(false); + + do { + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + uint8_t b; + + b = transceive(((uint8_t *)slave_matrix)[i]); + + if (i < sizeof(struct led_context)) { + ((uint8_t *)&new_context)[i] = b; + } + } + } while (!shake_hands(false)); + + sei(); + + /* Update the layer and LED state if necessary. */ + + if (!isLeftHand) { + if (context.led_state.raw != new_context.led_state.raw) { + context.led_state.raw = new_context.led_state.raw; + led_update_kb(context.led_state); + } + + if (context.layer_state != new_context.layer_state) { + context.layer_state = new_context.layer_state; + layer_state_set_kb(context.layer_state); + } + } +} + +void transport_master_init(void) { + /* We need to set the SS pin as output as the handshake logic + * above depends on it and the SPI master driver won't do it + * before we call spi_start(). */ + + writePinHigh(SPI_SS_PIN); + setPinOutput(SPI_SS_PIN); + + spi_init(); + + shake_hands(true); +} + +void transport_slave_init(void) { + /* The datasheet isn't very clear on whether the internal pull-up + * is selectable when the SS pin is used by the SPI slave, but + * experimentations shows that it is, at least on the ATMega32u4. + * We enable the pull-up to guard against the case where both + * halves end up as slaves. In that case the SS pin would + * otherwise be floating and free to fluctuate due to picked up + * noise, etc. When reading low it would make both halves think + * they're asserted making the MISO pin an output on both ends and + * leading to potential shorts. */ + + setPinInputHigh(SPI_SS_PIN); + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinOutput(SPI_MISO_PIN); + + SPCR = _BV(SPE); + + shake_hands(false); +} diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h new file mode 100644 index 0000000000..d960287937 --- /dev/null +++ b/keyboards/handwired/marauder/config.h @@ -0,0 +1,70 @@ +/* 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D52 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER BB-66 +#define PRODUCT Minshara Marauder + +/* 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 { D0, 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 +#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 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 + +// 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 new file mode 100644 index 0000000000..f8a0429b2f --- /dev/null +++ b/keyboards/handwired/marauder/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Minshara Marauder", + "url": "https://imgur.com/a/TvsXpq5", + "maintainer": "BB-66", + "width": 19.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D0,B6)", "x":0, "y":0}, + {"label":"K01 (D0,B2)", "x":2, "y":0}, + {"label":"K02 (D0,B3)", "x":3, "y":0}, + {"label":"K03 (D0,B1)", "x":4, "y":0}, + {"label":"K04 (D0,F7)", "x":5, "y":0}, + {"label":"K05 (D0,F6)", "x":6.5, "y":0}, + {"label":"K06 (D0,F5)", "x":7.5, "y":0}, + {"label":"K07 (D0,F4)", "x":8.5, "y":0}, + {"label":"K08 (D0,B0)", "x":9.5, "y":0}, + {"label":"K68 (B5,B0)", "x":11, "y":0}, + {"label":"K67 (B5,F4)", "x":12, "y":0}, + {"label":"K66 (B5,F5)", "x":13, "y":0}, + {"label":"K65 (B5,F6)", "x":14, "y":0}, + {"label":"K63 (B5,B1)", "x":15.25, "y":0}, + {"label":"K62 (B5,B3)", "x":16.25, "y":0}, + {"label":"K61 (B5,B2)", "x":17.25, "y":0}, + {"label":"K60 (B5,B6)", "x":18.25, "y":0}, + {"label":"K10 (D4,B6)", "x":0, "y":1.5}, + {"label":"K11 (D4,B2)", "x":1, "y":1.5}, + {"label":"K12 (D4,B3)", "x":2, "y":1.5}, + {"label":"K13 (D4,B1)", "x":3, "y":1.5}, + {"label":"K14 (D4,F7)", "x":4, "y":1.5}, + {"label":"K15 (D4,F6)", "x":5, "y":1.5}, + {"label":"K16 (D4,F5)", "x":6, "y":1.5}, + {"label":"K17 (D4,F4)", "x":7, "y":1.5}, + {"label":"K18 (D4,B0)", "x":8, "y":1.5}, + {"label":"K78 (B7,B0)", "x":9, "y":1.5}, + {"label":"K77 (B7,F4)", "x":10, "y":1.5}, + {"label":"K76 (B7,F5)", "x":11, "y":1.5}, + {"label":"K75 (B7,F6)", "x":12, "y":1.5}, + {"label":"K74 (B7,F7)", "x":13, "y":1.5, "w":2}, + {"label":"K73 (B7,B1)", "x":15.25, "y":1.5}, + {"label":"K72 (B7,B3)", "x":16.25, "y":1.5}, + {"label":"K71 (B7,B2)", "x":17.25, "y":1.5}, + {"label":"K70 (B7,B6)", "x":18.25, "y":1.5}, + {"label":"K20 (C6,B6)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (C6,B2)", "x":1.5, "y":2.5}, + {"label":"K22 (C6,B3)", "x":2.5, "y":2.5}, + {"label":"K23 (C6,B1)", "x":3.5, "y":2.5}, + {"label":"K24 (C6,F7)", "x":4.5, "y":2.5}, + {"label":"K25 (C6,F6)", "x":5.5, "y":2.5}, + {"label":"K26 (C6,F5)", "x":6.5, "y":2.5}, + {"label":"K27 (C6,F4)", "x":7.5, "y":2.5}, + {"label":"K28 (C6,B0)", "x":8.5, "y":2.5}, + {"label":"K88 (D5,B0)", "x":9.5, "y":2.5}, + {"label":"K87 (D5,F4)", "x":10.5, "y":2.5}, + {"label":"K86 (D5,F5)", "x":11.5, "y":2.5}, + {"label":"K85 (D5,F6)", "x":12.5, "y":2.5}, + {"label":"K84 (D5,F7)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K83 (D5,B1)", "x":15.25, "y":2.5}, + {"label":"K82 (D5,B3)", "x":16.25, "y":2.5}, + {"label":"K81 (D5,B2)", "x":17.25, "y":2.5}, + {"label":"K80 (D5,B6)", "x":18.25, "y":2.5, "h":2}, + {"label":"K30 (D7,B6)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (D7,B2)", "x":1.75, "y":3.5}, + {"label":"K32 (D7,B3)", "x":2.75, "y":3.5}, + {"label":"K33 (D7,B1)", "x":3.75, "y":3.5}, + {"label":"K34 (D7,F7)", "x":4.75, "y":3.5}, + {"label":"K35 (D7,F6)", "x":5.75, "y":3.5}, + {"label":"K36 (D7,F5)", "x":6.75, "y":3.5}, + {"label":"K37 (D7,F4)", "x":7.75, "y":3.5}, + {"label":"K38 (D7,B0)", "x":8.75, "y":3.5}, + {"label":"K98 (C7,B0)", "x":9.75, "y":3.5}, + {"label":"K97 (C7,F4)", "x":10.75, "y":3.5}, + {"label":"K96 (C7,F5)", "x":11.75, "y":3.5}, + {"label":"K95 (C7,F6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K93 (C7,B1)", "x":15.25, "y":3.5}, + {"label":"K92 (C7,B3)", "x":16.25, "y":3.5}, + {"label":"K91 (C7,B2)", "x":17.25, "y":3.5}, + {"label":"K40 (E6,B6)", "x":0, "y":4.5, "w":2.25}, + {"label":"K41 (E6,B2)", "x":2.25, "y":4.5}, + {"label":"K42 (E6,B3)", "x":3.25, "y":4.5}, + {"label":"K43 (E6,B1)", "x":4.25, "y":4.5}, + {"label":"K44 (E6,F7)", "x":5.25, "y":4.5}, + {"label":"K45 (E6,F6)", "x":6.25, "y":4.5}, + {"label":"K46 (E6,F5)", "x":7.25, "y":4.5}, + {"label":"K47 (E6,F4)", "x":8.25, "y":4.5}, + {"label":"K48 (E6,B0)", "x":9.25, "y":4.5}, + {"label":"KA8 (F1,B0)", "x":10.25, "y":4.5}, + {"label":"KA7 (F1,F4)", "x":11.25, "y":4.5}, + {"label":"KA6 (F1,F5)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"KA3 (F1,B1)", "x":15.25, "y":4.5}, + {"label":"KA2 (F1,B3)", "x":16.25, "y":4.5}, + {"label":"KA1 (F1,B2)", "x":17.25, "y":4.5}, + {"label":"KA0 (F1,B6)", "x":18.25, "y":4.5, "h":2}, + {"label":"K50 (B4,B6)", "x":0, "y":5.5, "w":1.5}, + {"label":"K51 (B4,B2)", "x":1.5, "y":5.5}, + {"label":"K52 (B4,B3)", "x":2.5, "y":5.5, "w":1.5}, + {"label":"K56 (B4,F5)", "x":4, "y":5.5, "w":7}, + {"label":"KB7 (F0,F4)", "x":11, "y":5.5, "w":1.5}, + {"label":"KB6 (F0,F5)", "x":12.5, "y":5.5}, + {"label":"KB4 (F0,F7)", "x":13.5, "y":5.5, "w":1.5}, + {"label":"KB3 (F0,B1)", "x":15.25, "y":5.5, "w":2}, + {"label":"KB1 (F0,B2)", "x":17.25, "y":5.5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/handwired/marauder/keymaps/default/keymap.c b/keyboards/handwired/marauder/keymaps/default/keymap.c new file mode 100644 index 0000000000..932138e27c --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* 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 + ), + +}; diff --git a/keyboards/handwired/marauder/marauder.c b/keyboards/handwired/marauder/marauder.c new file mode 100644 index 0000000000..2b2039f105 --- /dev/null +++ b/keyboards/handwired/marauder/marauder.c @@ -0,0 +1,20 @@ +/* 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 "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 new file mode 100644 index 0000000000..fc97b1d642 --- /dev/null +++ b/keyboards/handwired/marauder/marauder.h @@ -0,0 +1,44 @@ +/* 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 . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K66, K65, K63, K62, K61, K60, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K76, K75, K74, K73, K72, K71, K70, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K86, K85, K84, K83, K82, K81, K80, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K96, K95, K93, K92, K91, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA6, KA3, KA2, KA1, KA0, \ + K50, K51, K52, K56, KB7, KB6, KB4, KB3, KB1 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { 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, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO }, \ + { K60, K61, K62, K63, KC_NO, K65, K66, K67, K68 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77, K78 }, \ + { K80, K81, K82, K83, K84, K85, K86, K87, K88 }, \ + { KC_NO, K91, K92, K93, KC_NO, K95, K96, K97, K98 }, \ + { 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 new file mode 100644 index 0000000000..1a0150159f --- /dev/null +++ b/keyboards/handwired/marauder/readme.md @@ -0,0 +1,18 @@ +# Marauder + +90% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. + +[Build Log](https://imgur.com/a/TvsXpq5) + +* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/BB-66) +* Hardware Supported: Elite-C, Razer Marauder + +Make example for this keyboard (after setting up your build environment): + + make handwired/marauder:default + +Flashing example for this keyboard: + + make handwired/marauder: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/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk new file mode 100644 index 0000000000..1619f95374 --- /dev/null +++ b/keyboards/handwired/marauder/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 = lite # 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 = 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/minorca/rules.mk b/keyboards/handwired/minorca/rules.mk index 64837b88ee..f3f1502de5 100644 --- a/keyboards/handwired/minorca/rules.mk +++ b/keyboards/handwired/minorca/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/myskeeb/info.json b/keyboards/handwired/myskeeb/info.json new file mode 100644 index 0000000000..617fbc441b --- /dev/null +++ b/keyboards/handwired/myskeeb/info.json @@ -0,0 +1,88 @@ +{ + "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}, + {"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":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":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":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} + ] + } + } +} + diff --git a/keyboards/handwired/nicekey/info.json b/keyboards/handwired/nicekey/info.json new file mode 100644 index 0000000000..1f099534b2 --- /dev/null +++ b/keyboards/handwired/nicekey/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "nicekey handwired", + "url": "", + "maintainer": "spydon", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/not_so_minidox/keymaps/mtdjr/config.h b/keyboards/handwired/not_so_minidox/keymaps/mtdjr/config.h deleted file mode 100644 index c3c4a1b697..0000000000 --- a/keyboards/handwired/not_so_minidox/keymaps/mtdjr/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define SOLENOID_ENABLE -#define SOLENOID_PIN F6 -#define SOLENOID_ACTIVE true diff --git a/keyboards/handwired/not_so_minidox/keymaps/mtdjr/keymap.c b/keyboards/handwired/not_so_minidox/keymaps/mtdjr/keymap.c deleted file mode 100644 index 01c64d8701..0000000000 --- a/keyboards/handwired/not_so_minidox/keymaps/mtdjr/keymap.c +++ /dev/null @@ -1,56 +0,0 @@ -#include QMK_KEYBOARD_H -#include "mtdjr.h" - -extern keymap_config_t keymap_config; - -#define KC_LOCK TD(TD_ALTLOCK) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kc( - // ,----+-----+-----+-----+-----+-----, ,----+-----+-----+-----+-----+-----, - TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, - // |----+-----+-----+-----+-----+-----|-, ,-|----+-----+-----+-----+-----+-----| - LGUI, LOWR, SPC, SPC, RASE, LOCK - // `----+-----+-----` `----+-----+-----` - ), - - [_LOWER] = LAYOUT_kc( - // ,----+-----+-----+-----+-----+-----, ,----+-----+-----+-----+-----+-----, - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - , , , , , , , , , LCBR, RCBR, BSLS, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - , , , XCPY, XINS, , , , , , , , - // |----+-----+-----+-----+-----+-----|-, ,-|----+-----+-----+-----+-----+-----| - , , , , , - // `----+-----+-----` `----+-----+-----` - ), - - [_RAISE] = LAYOUT_kc( - // ,----+-----+-----+-----+-----+-----, ,----+-----+-----+-----+-----+-----, - GRV, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, DEL, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - , , , , MINS, EQL, , , UP, LBRC, RBRC, PIPE, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - , , , , , , , LEFT, DOWN, RGHT, , , - // |----+-----+-----+-----+-----+-----|-, ,-|----+-----+-----+-----+-----+-----| - , , , , , - // `----+-----+-----` `----+-----+-----` - ), - [_ADJUST] = LAYOUT_kc( - // ,----+-----+-----+-----+-----+-----, ,----+-----+-----+-----+-----+-----, - STOG, xxxx, xxxx, xxxx, RST, xxxx, ROOT, PPLY, PSEF, xxxx, xxxx, CAD, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - SDM, SDP, SBOF, SBON, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, - // |----+-----+-----+-----+-----+-----| |----+-----+-----+-----+-----+-----| - xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, - // |----+-----+-----+-----+-----+-----|-, ,-|----+-----+-----+-----+-----+-----| - xxxx, , xxxx, xxxx, , xxxx - // `----+-----+-----` `----+-----+-----` - ) -}; diff --git a/keyboards/handwired/not_so_minidox/not_so_minidox.h b/keyboards/handwired/not_so_minidox/not_so_minidox.h index 05e7bc4914..c24a515e43 100644 --- a/keyboards/handwired/not_so_minidox/not_so_minidox.h +++ b/keyboards/handwired/not_so_minidox/not_so_minidox.h @@ -21,22 +21,4 @@ { KC_NO, KC_NO, KC_NO, RT1, RT2, RT3 }, \ } -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc( \ - 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 \ - ) \ - { \ - { KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05 }, \ - { KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15 }, \ - { KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25 }, \ - { KC_NO, KC_NO, KC_NO, KC_##LT1, KC_##LT2, KC_##LT3 }, \ - { KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05 }, \ - { KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15 }, \ - { KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25 }, \ - { KC_NO, KC_NO, KC_NO, KC_##RT1, KC_##RT2, KC_##RT3 }, \ - } - #endif diff --git a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c index 1854894e56..5a30f5c578 100644 --- a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c +++ b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P1, KC_P2, KC_P3, \ KC_P0, KC_PDOT, KC_PENT \ ), - + /* Keymap ONE: Util Layer * * ,---. ,---. @@ -371,7 +371,7 @@ void oled_task_user(void) { } #endif -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if(IS_LAYER_ON(BASE)) { if (index == 0) { /* First encoder */ if (clockwise) { @@ -432,4 +432,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { } } } + return true; } diff --git a/keyboards/handwired/onekey/blackpill_f401/rules.mk b/keyboards/handwired/onekey/blackpill_f401/rules.mk index 6eb37a581d..9b0a72afb9 100644 --- a/keyboards/handwired/onekey/blackpill_f401/rules.mk +++ b/keyboards/handwired/onekey/blackpill_f401/rules.mk @@ -1,8 +1,8 @@ # MCU name MCU = STM32F401 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/onekey/blackpill_f411/rules.mk b/keyboards/handwired/onekey/blackpill_f411/rules.mk index 7cf886431f..3ded2a2587 100644 --- a/keyboards/handwired/onekey/blackpill_f411/rules.mk +++ b/keyboards/handwired/onekey/blackpill_f411/rules.mk @@ -1,8 +1,8 @@ # MCU name MCU = STM32F411 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/chconf.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/chconf.h new file mode 100644 index 0000000000..3d9a393638 --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/chconf.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 . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h new file mode 100755 index 0000000000..95e99aacc1 --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.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 . + */ + +#pragma once + +#include "config_common.h" + +#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 RGB_DI_PIN A1 + +#define ADC_PIN A0 diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/halconf.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/halconf.h new file mode 100644 index 0000000000..e15870984f --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h new file mode 100755 index 0000000000..ad8aecdb10 --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h @@ -0,0 +1,24 @@ +/* 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" + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM5 +#define STM32_PWM_USE_TIM5 TRUE diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md new file mode 100755 index 0000000000..ff43658f4c --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md @@ -0,0 +1,9 @@ +# f411 blackpill onekey + +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 diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk new file mode 100755 index 0000000000..4d0b1591e2 --- /dev/null +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk @@ -0,0 +1,10 @@ +# MCU name +MCU = STM32F411 + +# Bootloader selection +BOOTLOADER = tinyuf2 + +# Build Options +# change yes to no to disable +# +KEYBOARD_SHARED_EP = yes diff --git a/keyboards/handwired/onekey/info.json b/keyboards/handwired/onekey/info.json new file mode 100644 index 0000000000..ac339ba197 --- /dev/null +++ b/keyboards/handwired/onekey/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "onekey handwired", + "url": "", + "maintainer": "qmk", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT_ortho_1x1": { + "layout": [ + {"x":0, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/onekey/keymaps/oled/keymap.c b/keyboards/handwired/onekey/keymaps/oled/keymap.c index 1c120d01c1..c19b6918c0 100644 --- a/keyboards/handwired/onekey/keymaps/oled/keymap.c +++ b/keyboards/handwired/onekey/keymaps/oled/keymap.c @@ -282,7 +282,7 @@ void test_slow_update(void) { if (++x >= oled_max_chars()) { x = 0; if (++y >= oled_max_lines()) { - // The whole screen was filled - start the next phase. + // The whole screen was filled - start the next phase. ++phase; x = y = 0; } diff --git a/keyboards/handwired/onekey/keymaps/oled/readme.md b/keyboards/handwired/onekey/keymaps/oled/readme.md index 380b3eb522..9854b95804 100644 --- a/keyboards/handwired/onekey/keymaps/oled/readme.md +++ b/keyboards/handwired/onekey/keymaps/oled/readme.md @@ -11,7 +11,7 @@ Available commands using a single key: Available test patterns: - QMK logo (clipped to fit on the display). - Fill the whole screen with as much unique characters as possible (all 94 printable ASCII characters are used, and if the display has more character positions available, the same characters are printed again, but inverted). -- “Slow update” test — instead of updating the whole screen at once, draw things piece by piece to uncover display update bugs. The drawing sequence used by this test: +- “Slow update” test — instead of updating the whole screen at once, draw things piece by piece to uncover display update bugs. The drawing sequence used by this test: - Fill the whole screen with printable ASCII characters (similar to the previous test, but characters are drawn one by one with 250 ms intervals between them, and inverted characters are not used to avoid obscuring the next phases). - Draw a frame along the screen edges, starting from the top left corner and going down along the left edge, then along the bottom, right and top edges, with 50 ms delay after every pixel. - Repeat the same sequence again, but with the character sequence shifted by 1 character (so that the updates would be visible). diff --git a/keyboards/handwired/onekey/proton_c/rules.mk b/keyboards/handwired/onekey/proton_c/rules.mk index 4e157baeda..7a846816d1 100644 --- a/keyboards/handwired/onekey/proton_c/rules.mk +++ b/keyboards/handwired/onekey/proton_c/rules.mk @@ -1,3 +1,6 @@ # MCU name MCU = STM32F303 BOARD = QMK_PROTON_C + +# Bootloader selection +BOOTLOADER = stm32-dfu diff --git a/keyboards/handwired/onekey/rules.mk b/keyboards/handwired/onekey/rules.mk index 259050d553..df2ec1ecf4 100644 --- a/keyboards/handwired/onekey/rules.mk +++ b/keyboards/handwired/onekey/rules.mk @@ -7,9 +7,9 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # 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 = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover +NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) diff --git a/keyboards/handwired/onekey/stm32f0_disco/rules.mk b/keyboards/handwired/onekey/stm32f0_disco/rules.mk index d8928e9ec8..6b37928327 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/rules.mk +++ b/keyboards/handwired/onekey/stm32f0_disco/rules.mk @@ -1,6 +1,8 @@ # MCU name MCU = STM32F072 +# 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/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h index a43fc76ae6..bd34925a9a 100644 --- a/keyboards/handwired/ortho5x13/ortho5x13.h +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -16,18 +16,3 @@ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b, k3c }, \ { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ } - -#define LAYOUT_kc( \ - 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, k47, k48, k49, k4a, k4b, k4c \ -) \ -{ \ - { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, KC_##k0c }, \ - { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, KC_##k1c }, \ - { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, KC_##k2c }, \ - { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ - { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ -} diff --git a/keyboards/handwired/p1800fl/rules.mk b/keyboards/handwired/p1800fl/rules.mk index b85602bb9d..cde197a0db 100644 --- a/keyboards/handwired/p1800fl/rules.mk +++ b/keyboards/handwired/p1800fl/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/p65rgb/rules.mk b/keyboards/handwired/p65rgb/rules.mk index 7e8ac8d55e..00d15f090f 100644 --- a/keyboards/handwired/p65rgb/rules.mk +++ b/keyboards/handwired/p65rgb/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/pill60/blackpill_f401/rules.mk b/keyboards/handwired/pill60/blackpill_f401/rules.mk index 8c514309df..9b0a72afb9 100644 --- a/keyboards/handwired/pill60/blackpill_f401/rules.mk +++ b/keyboards/handwired/pill60/blackpill_f401/rules.mk @@ -1,12 +1,8 @@ # MCU name MCU = STM32F401 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 - -# 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 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/pill60/blackpill_f411/rules.mk b/keyboards/handwired/pill60/blackpill_f411/rules.mk index 84dd584e85..1243557019 100644 --- a/keyboards/handwired/pill60/blackpill_f411/rules.mk +++ b/keyboards/handwired/pill60/blackpill_f411/rules.mk @@ -1,12 +1,8 @@ # MCU name MCU = STM32F411 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 - -# 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 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/pill60/keymaps/default/keymap.c b/keyboards/handwired/pill60/keymaps/default/keymap.c index d9f0fa727c..55996c0189 100644 --- a/keyboards/handwired/pill60/keymaps/default/keymap.c +++ b/keyboards/handwired/pill60/keymaps/default/keymap.c @@ -1,18 +1,18 @@ - /* Copyright 2020 Imam Rafii - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 Imam Rafii + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 { @@ -74,7 +74,7 @@ void oled_task_user(void) { #ifdef ENCODER_ENABLE -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_A); @@ -82,6 +82,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_B); } } + return true; } #endif diff --git a/keyboards/handwired/postageboard/info.json b/keyboards/handwired/postageboard/info.json new file mode 100644 index 0000000000..6389470867 --- /dev/null +++ b/keyboards/handwired/postageboard/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Postage Board", + "url": "", + "maintainer": "LifeIsOnTheWire", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/prkl30/feather/rules.mk b/keyboards/handwired/prkl30/feather/rules.mk index 27df4272a7..366e53cf7e 100644 --- a/keyboards/handwired/prkl30/feather/rules.mk +++ b/keyboards/handwired/prkl30/feather/rules.mk @@ -18,7 +18,7 @@ BOOTLOADER = caterina # change yes to no to disable # BLUETOOTH = AdafruitBLE -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration ENCODER_ENABLE = yes MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control diff --git a/keyboards/handwired/prkl30/keymaps/default/keymap.c b/keyboards/handwired/prkl30/keymaps/default/keymap.c index ce60a41933..be032739f4 100644 --- a/keyboards/handwired/prkl30/keymaps/default/keymap.c +++ b/keyboards/handwired/prkl30/keymaps/default/keymap.c @@ -81,12 +81,13 @@ 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_TAB); } else { tap_code(KC_PGUP); } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c b/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c index 4b01c9e09e..71e5ed529b 100644 --- a/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c +++ b/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c @@ -81,12 +81,13 @@ 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_code16(LCTL(KC_RIGHT)); } else { tap_code16(LCTL(KC_LEFT)); } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/handwired/pterodactyl/pterodactyl.c b/keyboards/handwired/pterodactyl/pterodactyl.c index 736b0a62c4..f379569f5a 100644 --- a/keyboards/handwired/pterodactyl/pterodactyl.c +++ b/keyboards/handwired/pterodactyl/pterodactyl.c @@ -3,7 +3,7 @@ #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{0,11}, {0,10}, {0,9}, {0,8}, {0,7}, {0,6}, {0,5}, {0,4}, {0,3}, {0,2}, {0,1}, {0,0}}, {{1,11}, {1,11}, {1,9}, {1,8}, {1,7}, {1,6}, {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {1,0}}, {{2,11}, {2,12}, {2,9}, {2,8}, {2,7}, {2,6}, {2,5}, {2,4}, {2,3}, {2,2}, {2,1}, {2,0}}, diff --git a/keyboards/handwired/pteron/keymaps/alzafacon/config.h b/keyboards/handwired/pteron/keymaps/alzafacon/config.h new file mode 100644 index 0000000000..3bc36a62ae --- /dev/null +++ b/keyboards/handwired/pteron/keymaps/alzafacon/config.h @@ -0,0 +1,22 @@ + /* Copyright 2021 Fidel Coria + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* override diode direction from keyboard config */ +/* COL2ROW or ROW2COL */ +#undef DIODE_DIRECTION +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c b/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c new file mode 100644 index 0000000000..bbb77fa87c --- /dev/null +++ b/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c @@ -0,0 +1,120 @@ + /* Copyright 2021 Fidel Coria + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 pteron_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * +-----------------------------------------+ +-----------------------------------------+ + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | + * +-------------+------+------+------+------| |------+------+------+------+-------------+ + * |Lower | SPC | Alt | GUI | | Alt | GUI | SPC |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, + 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RALT, KC_RGUI, KC_SPC, RAISE +), + +/* Lower + * +-----------------------------------------+ +-----------------------------------------+ + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | | F12 |ISO ~ |ISO | | | | | + * +-------------+------+------+------+------| |------+------+------+------+-------------+ + * | | | | | | Next | Vol- | Vol+ | Play | + * +---------------------------+ +---------------------------+ + */ +[_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_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 / | | | | + * +-------------+------+------+------+------| |------+------+------+------+-------------+ + * | | | | | | Next | Vol- | Vol+ | Play | + * +---------------------------+ +---------------------------+ + */ +[_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_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| | | | | | | | | | | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | |Aud on|AudOff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn| |MidOff| | | | | | + * +-------------+------+------+------+------| |------+------+------+------+-------------+ + * | | | | | | | | | | + * +---------------------------+ +---------------------------+ + */ +[_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, + _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +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/keymaps/alzafacon/readme.md b/keyboards/handwired/pteron/keymaps/alzafacon/readme.md new file mode 100644 index 0000000000..0bc5f2704f --- /dev/null +++ b/keyboards/handwired/pteron/keymaps/alzafacon/readme.md @@ -0,0 +1,4 @@ +# alzafacon pteron layout + +This keymap is for builds with elite-c controllers. +Also notice `DIODE_DIRECTION COL2ROW`. I prefer to hand-wire this way. diff --git a/keyboards/handwired/pteron/keymaps/alzafacon/rules.mk b/keyboards/handwired/pteron/keymaps/alzafacon/rules.mk new file mode 100644 index 0000000000..03323308e7 --- /dev/null +++ b/keyboards/handwired/pteron/keymaps/alzafacon/rules.mk @@ -0,0 +1,2 @@ +# for elite-c +BOOTLOADER = atmel-dfu diff --git a/keyboards/handwired/pytest/has_template/keymaps/nocpp/keymap.c b/keyboards/handwired/pytest/has_template/keymaps/nocpp/keymap.c index 4e06bb11ec..65cd4cebea 100644 --- a/keyboards/handwired/pytest/has_template/keymaps/nocpp/keymap.c +++ b/keyboards/handwired/pytest/has_template/keymaps/nocpp/keymap.c @@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT(KC_ENTER) }; -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_UP); @@ -19,5 +19,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_DOWN); } } - + return true; }; diff --git a/keyboards/handwired/qc60/qc60.h b/keyboards/handwired/qc60/qc60.h index 55c83aca5e..944ec10f5e 100644 --- a/keyboards/handwired/qc60/qc60.h +++ b/keyboards/handwired/qc60/qc60.h @@ -7,20 +7,4 @@ #include "proto.h" #endif - -// Used to create a keymap using only KC_ prefixed keys -#define LAYOUT_kc( \ - LA1, LA2, LA3, LA4, LA5, LA6, RA1, RA2, RA3, RA4, RA5, RA6, RA7, \ - LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB7, \ - LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC3, RC4, RC5, RC6, RC7, \ - LD1, LD2, LD3, LD4, LD5, RD1, RD4, RD5, RD6, RD7 \ - ) \ - LAYOUT( \ - KC_##LA1, KC_##LA2, KC_##LA3, KC_##LA4, KC_##LA5, KC_##LA6, KC_##RA1, KC_##RA2, KC_##RA3, KC_##RA4, KC_##RA5, KC_##RA6, KC_##RA7, \ - KC_##LB1, KC_##LB2, KC_##LB3, KC_##LB4, KC_##LB5, KC_##LB6, KC_##RB1, KC_##RB2, KC_##RB3, KC_##RB4, KC_##RB5, KC_##RB7, \ - KC_##LC1, KC_##LC2, KC_##LC3, KC_##LC4, KC_##LC5, KC_##LC6, KC_##RC1, KC_##RC3, KC_##RC4, KC_##RC5, KC_##RC6, KC_##RC7, \ - KC_##LD1, KC_##LD2, KC_##LD3, KC_##LD4, KC_##LD5, KC_##RD1, KC_##RD4, KC_##RD5, KC_##RD6, KC_##RD7 \ - ) - - #endif diff --git a/keyboards/handwired/retro_refit/rules.mk b/keyboards/handwired/retro_refit/rules.mk index 04db510d13..1506838a42 100644 --- a/keyboards/handwired/retro_refit/rules.mk +++ b/keyboards/handwired/retro_refit/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/riblee_f401/info.json b/keyboards/handwired/riblee_f401/info.json new file mode 100644 index 0000000000..ddf13abc93 --- /dev/null +++ b/keyboards/handwired/riblee_f401/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Handwired Preonic (Blackpill F401)", + "url": "", + "maintainer": "riblee", + "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/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk index efe2522ee2..0291ca04f3 100644 --- a/keyboards/handwired/riblee_f401/rules.mk +++ b/keyboards/handwired/riblee_f401/rules.mk @@ -1,8 +1,8 @@ # MCU name MCU = STM32F401 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/riblee_f411/info.json b/keyboards/handwired/riblee_f411/info.json new file mode 100644 index 0000000000..e318e8bd6a --- /dev/null +++ b/keyboards/handwired/riblee_f411/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Handwired Preonic (Blackpill F411)", + "url": "", + "maintainer": "riblee", + "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/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk index a44b2b058b..8b029be69d 100644 --- a/keyboards/handwired/riblee_f411/rules.mk +++ b/keyboards/handwired/riblee_f411/rules.mk @@ -1,8 +1,8 @@ # MCU name MCU = STM32F411 -# Address of the bootloader in system memory -STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/rs60/info.json b/keyboards/handwired/rs60/info.json new file mode 100644 index 0000000000..a3b32aec18 --- /dev/null +++ b/keyboards/handwired/rs60/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "rs60", + "url": "", + "maintainer": "rs", + "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/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c index 9fea769d05..7c61964330 100644 --- a/keyboards/handwired/rs60/keymaps/default/keymap.c +++ b/keyboards/handwired/rs60/keymaps/default/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QWERTY] = LAYOUT( \ +[_QWERTY] = 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_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_COLEMAK] = LAYOUT( \ +[_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, \ @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DVORAK] = LAYOUT( \ +[_DVORAK] = 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_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, 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, \ @@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LOWER] = LAYOUT( \ +[_LOWER] = LAYOUT_ortho_5x12( \ 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, \ @@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RAISE] = LAYOUT( \ +[_RAISE] = 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_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, \ @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ADJUST] = LAYOUT( \ +[_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, \ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ diff --git a/keyboards/handwired/rs60/rs60.h b/keyboards/handwired/rs60/rs60.h index f2113f05c3..294149729e 100644 --- a/keyboards/handwired/rs60/rs60.h +++ b/keyboards/handwired/rs60/rs60.h @@ -18,7 +18,7 @@ along with this program. If not, see . #include "quantum.h" -#define LAYOUT( \ +#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, \ @@ -32,5 +32,3 @@ along with this program. If not, see . { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ } - -#define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/handwired/selene/rules.mk b/keyboards/handwired/selene/rules.mk index bfb967f9a5..842675b758 100644 --- a/keyboards/handwired/selene/rules.mk +++ b/keyboards/handwired/selene/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/sick_pad/rules.mk b/keyboards/handwired/sick_pad/rules.mk index 28578f0824..4fe7d9aff7 100644 --- a/keyboards/handwired/sick_pad/rules.mk +++ b/keyboards/handwired/sick_pad/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/space_oddity/rules.mk b/keyboards/handwired/space_oddity/rules.mk index a2e63690bd..97f9cfd80a 100644 --- a/keyboards/handwired/space_oddity/rules.mk +++ b/keyboards/handwired/space_oddity/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/handwired/split89/config.h b/keyboards/handwired/split89/config.h new file mode 100644 index 0000000000..d78535a201 --- /dev/null +++ b/keyboards/handwired/split89/config.h @@ -0,0 +1,163 @@ +/* Copyright 2021 jurassic73 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the 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 jurassic73 +#define PRODUCT split89 + +/* + * 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 size +ROWS = total count of rows for both sides - this is broken out accordingly in split.h +COLS = number of cols per side which curently needs to be equal so there are blank columns for the left side in the split89.h file + */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 10 + +/* Left side matrix */ +#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 } +#define MATRIX_COL_PINS { F5, F4, B5, B4, E6, D7, C6, D4, D2, D3 } +/* Right side matrix */ +#define MATRIX_ROW_PINS_RIGHT { F6, F7, B1, B3, B2, B6 } +#define MATRIX_COL_PINS_RIGHT { F5, F4, B5, B4, E6, D7, C6, D4, D2, D3 } + +/* this will be tied to high (VCC with a 2k to 10k resistor) on the left keyboard half and tied to low (GND using a wire jumper only) on the right keyboard half. This allows a user to plug in a USB cable to either side and function correctly with or without a TRS/TRRS cable with a single hex file. */ +#define SPLIT_HAND_PIN D1 + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* handedness */ +/* + * 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 USE_SERIAL + +//#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/split89/info.json b/keyboards/handwired/split89/info.json new file mode 100644 index 0000000000..bbdf48966e --- /dev/null +++ b/keyboards/handwired/split89/info.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000000..3b60ef4f68 --- /dev/null +++ b/keyboards/handwired/split89/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 jurassic73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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, + AUD, +}; +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 + ), + /* 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_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 + ), +}; diff --git a/keyboards/handwired/split89/keymaps/default/readme.md b/keyboards/handwired/split89/keymaps/default/readme.md new file mode 100644 index 0000000000..086d8977a0 --- /dev/null +++ b/keyboards/handwired/split89/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# The default keymap for split89 + +A 2nd layer is configured and activated while holding down the Aud key. + +![image](https://i.imgur.com/h1C4d9t.png) + diff --git a/keyboards/handwired/split89/readme.md b/keyboards/handwired/split89/readme.md new file mode 100644 index 0000000000..c3caf6a7fd --- /dev/null +++ b/keyboards/handwired/split89/readme.md @@ -0,0 +1,18 @@ +# split89 + +![split89](https://i.imgur.com/OExxlQx.jpeg) + +An 89-key split TKL with 3d printed case and powered with Pro Micro controllers. + +* Full build documented here: [https://github.com/jurassic73/split89](https://github.com/jurassic73/split89) + +* Keyboard Maintainer: [jurassic73](https://github.com/jurassic73) +* Hardware Supported: ATmega32U4 Pro Micro +* Hardware Availability: see [Bill of Materials](https://github.com/jurassic73/split89#bill-of-materials). + + +Make example for this keyboard (after setting up your build environment): + + make handwired/split89: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/split89/rules.mk b/keyboards/handwired/split89/rules.mk new file mode 100644 index 0000000000..9b916f556e --- /dev/null +++ b/keyboards/handwired/split89/rules.mk @@ -0,0 +1,24 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/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.c b/keyboards/handwired/split89/split89.c new file mode 100644 index 0000000000..8cceee9c59 --- /dev/null +++ b/keyboards/handwired/split89/split89.c @@ -0,0 +1,17 @@ +/* Copyright 2021 jurassic73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "split89.h" diff --git a/keyboards/handwired/split89/split89.h b/keyboards/handwired/split89/split89.h new file mode 100644 index 0000000000..d04f0296d7 --- /dev/null +++ b/keyboards/handwired/split89/split89.h @@ -0,0 +1,50 @@ +/* Copyright 2021 jurassic73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 minus blanks in the matrix. + * + * The second converts the arguments into a two-dimensional array which + * 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 \ + ) \ + { \ + { KC_NO, KC_NO, KC_NO, KC_NO, k00, k01, k02, k03, k04, k05 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k16, k17, k18, k19, k20, k21 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k32, k33, k34, k35, k36, k37 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k48, k49, k50, k51, k52, k53 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k61, k62, k63, k64, k65, k66, }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k74, k75, k76, k77, k78, k79, }, \ + { k06, k07, k08, k09, k10, k11, k12, k13, k14, k15 }, \ + { k22, k23, k24, k25, k26, k27, k28, k29, k30, k31 }, \ + { k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 }, \ + { k54, k55, k56, k57, k58, k59, k60, KC_NO, KC_NO, KC_NO }, \ + { k67, k68, k69, k70, k71, KC_NO, k72, KC_NO, k73, KC_NO }, \ + { k80, k81, KC_NO, k82, k83, k84, k85, k86, k87, k88 } \ +} diff --git a/keyboards/handwired/splittest/info.json b/keyboards/handwired/splittest/info.json new file mode 100644 index 0000000000..fb7dce7b1c --- /dev/null +++ b/keyboards/handwired/splittest/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Split Tester", + "url": "", + "maintainer": "nooges", + "width": 2, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0} + ] + } + } +} diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h index e877484b94..18a6690c25 100644 --- a/keyboards/handwired/steamvan/rev1/config.h +++ b/keyboards/handwired/steamvan/rev1/config.h @@ -26,12 +26,6 @@ along with this program. If not, see . #define MANUFACTURER John M Daly #define PRODUCT SteamVan rev1 -/* 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 - */ -#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800 - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 12 diff --git a/keyboards/handwired/steamvan/rev1/rules.mk b/keyboards/handwired/steamvan/rev1/rules.mk index 30c74d2ece..99edf7c17f 100644 --- a/keyboards/handwired/steamvan/rev1/rules.mk +++ b/keyboards/handwired/steamvan/rev1/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Use SPI for RGB underglow: WS2812_DRIVER = spi diff --git a/keyboards/handwired/swiftrax/equator/config.h b/keyboards/handwired/swiftrax/equator/config.h new file mode 100644 index 0000000000..325cdde3c7 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/config.h @@ -0,0 +1,44 @@ +/* +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 0xE984 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Equator +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B2, B3, C7, B4, B5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, 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 diff --git a/keyboards/handwired/swiftrax/equator/equator.c b/keyboards/handwired/swiftrax/equator/equator.c new file mode 100644 index 0000000000..b2981689b9 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/equator.c @@ -0,0 +1,17 @@ +/* +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 "equator.h" diff --git a/keyboards/handwired/swiftrax/equator/equator.h b/keyboards/handwired/swiftrax/equator/equator.h new file mode 100644 index 0000000000..3f0350ef2b --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/equator.h @@ -0,0 +1,51 @@ +/* +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 "quantum.h" + +#define K_NO KC_NO + +#define LAYOUT_unified_bs_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, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K404, K407, 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, K_NO, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K_NO}, \ + { K400, K401, K402, K_NO, K404, K_NO, K_NO, K407, K_NO, K409, K_NO, K411, K412, K413 } \ +} + +#define LAYOUT_split_bs_rshift( \ + 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, K113, \ + 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, K407, 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, K_NO, K404, K_NO, K_NO, K407, K_NO, K409, K_NO, K411, K412, K413 } \ +} diff --git a/keyboards/handwired/swiftrax/equator/info.json b/keyboards/handwired/swiftrax/equator/info.json new file mode 100644 index 0000000000..e7d67de80c --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/info.json @@ -0,0 +1,15 @@ +{ + "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}] + }, + "LAYOUT_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":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/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c new file mode 100644 index 0000000000..fab6858a66 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +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_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_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_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_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c new file mode 100644 index 0000000000..dbe208f2f8 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2020 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_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_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_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_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/equator/readme.md b/keyboards/handwired/swiftrax/equator/readme.md new file mode 100644 index 0000000000..46ae3d0caf --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/readme.md @@ -0,0 +1,13 @@ +# Equator + +Meridian Layout Keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Equator +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make handwired/swiftrax/equator: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/equator/rules.mk b/keyboards/handwired/swiftrax/equator/rules.mk new file mode 100644 index 0000000000..5c0d8f307c --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/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 = 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/keyboards/handwired/swiftrax/joypad/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/joypad/keymaps/default/keymap.c index c5fd1b7d4e..9ba0b61098 100644 --- a/keyboards/handwired/swiftrax/joypad/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/joypad/keymaps/default/keymap.c @@ -27,10 +27,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/handwired/swiftrax/joypad/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/joypad/keymaps/via/keymap.c index 11a2e0125e..254da6ac8b 100644 --- a/keyboards/handwired/swiftrax/joypad/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/joypad/keymaps/via/keymap.c @@ -42,10 +42,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; -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/handwired/swiftrax/nodu/info.json b/keyboards/handwired/swiftrax/nodu/info.json index ed394602e4..3cc75836b3 100644 --- a/keyboards/handwired/swiftrax/nodu/info.json +++ b/keyboards/handwired/swiftrax/nodu/info.json @@ -4,9 +4,12 @@ "maintainer": "Swiftrax", "width": 15, "height": 5, + "layout_aliases": { + "LAYOUT": "LAYOUT_60_ansi_split_bs_rshift" + }, "layouts": { - "LAYOUT": { + "LAYOUT_60_ansi_split_bs_rshift": { "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,A", "x":10, "y":0}, {"label":"0,B", "x":11, "y":0}, {"label":"0,C", "x":12, "y":0}, {"label":"0,D", "x":13, "y":0}, {"label":"2,D", "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,A", "x":10.5, "y":1}, {"label":"1,B", "x":11.5, "y":1}, {"label":"1,C", "x":12.5, "y":1}, {"label":"1,D", "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,A", "x":10.75, "y":2}, {"label":"2,B", "x":11.75, "y":2}, {"label":"2,C", "x":12.75, "y":2, "w":2.25}, {"label":"3,0", "x":0, "y":3, "w":2.25}, {"label":"3,1", "x":2.25, "y":3}, {"label":"3,2", "x":3.25, "y":3}, {"label":"3,3", "x":4.25, "y":3}, {"label":"3,4", "x":5.25, "y":3}, {"label":"3,5", "x":6.25, "y":3}, {"label":"3,6", "x":7.25, "y":3}, {"label":"3,7", "x":8.25, "y":3}, {"label":"3,8", "x":9.25, "y":3}, {"label":"3,9", "x":10.25, "y":3}, {"label":"3,A", "x":11.25, "y":3}, {"label":"3,B", "x":12.25, "y":3, "w":1.75}, {"label":"3,C", "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,8", "x":10, "y":4, "w":1.25}, {"label":"4,9", "x":11.25, "y":4, "w":1.25}, {"label":"4,A", "x":12.5, "y":4, "w":1.25}, {"label":"4,B", "x":13.75, "y":4, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c index d74fc381f1..617c1434aa 100644 --- a/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c @@ -17,14 +17,14 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [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 ), - [1] = LAYOUT( + [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_UP , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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 e263efa662..6672ad7cc8 100644 --- a/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c @@ -17,21 +17,21 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [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 ), - [1] = LAYOUT( + [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_UP , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( + [2] = LAYOUT_60_ansi_split_bs_rshift( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/handwired/swiftrax/nodu/nodu.h b/keyboards/handwired/swiftrax/nodu/nodu.h index baca1265d9..d9024237af 100644 --- a/keyboards/handwired/swiftrax/nodu/nodu.h +++ b/keyboards/handwired/swiftrax/nodu/nodu.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "quantum.h" -#define LAYOUT( \ +#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, \ diff --git a/keyboards/handwired/swiftrax/nodu/rules.mk b/keyboards/handwired/swiftrax/nodu/rules.mk index 5c0d8f307c..f4b86c5997 100644 --- a/keyboards/handwired/swiftrax/nodu/rules.mk +++ b/keyboards/handwired/swiftrax/nodu/rules.mk @@ -20,3 +20,5 @@ 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/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c index 11e770921e..3dd8992279 100644 --- a/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c @@ -37,13 +37,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; -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); } -} \ No newline at end of file + return true; +} diff --git a/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c index 38e455becb..877411206e 100644 --- a/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c @@ -22,25 +22,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_DEL, 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_END, KC_P1, KC_P2, KC_P3, KC_PENT, 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_HOME, - KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), 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_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; -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); } -} \ No newline at end of file + return true; +} diff --git a/keyboards/handwired/swiftrax/walter/config.h b/keyboards/handwired/swiftrax/walter/config.h new file mode 100644 index 0000000000..8cf2d0d833 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/config.h @@ -0,0 +1,51 @@ +/* +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 0xE964 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Walter +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B2, B1, F4, F1, F0 } +#define MATRIX_COL_PINS { F5, C6, F6, F7, C7, B6, B5, B4, 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 + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B7 } + +#define RGB_DI_PIN E6 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/info.json b/keyboards/handwired/swiftrax/walter/info.json new file mode 100644 index 0000000000..b13fbcc867 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/info.json @@ -0,0 +1,317 @@ +{ + "keyboard_name": "walter", + "url": "https://github.com/swiftrax", + "maintainer": "swiftrax", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"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, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"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}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_splitbs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"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, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_splitbs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"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}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c new file mode 100644 index 0000000000..fb35e695e2 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* +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_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, KC_RGUI, 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_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_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = 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_PGUP, 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/swiftrax/walter/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c new file mode 100644 index 0000000000..74d650bf5e --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* +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_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, KC_RGUI, 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_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_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = 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_PGUP, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_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 + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) + tap_code16(KC_VOLU); + else + tap_code16(KC_VOLD); + return true; +} diff --git a/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/readme.md b/keyboards/handwired/swiftrax/walter/readme.md new file mode 100644 index 0000000000..e151b44d1b --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/readme.md @@ -0,0 +1,13 @@ +# Walter + +A 65% keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Walter +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make handwired/swiftrax/walter: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/walter/rules.mk b/keyboards/handwired/swiftrax/walter/rules.mk new file mode 100644 index 0000000000..89bd1be0ae --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/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 = 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 = 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/swiftrax/walter/walter.c b/keyboards/handwired/swiftrax/walter/walter.c new file mode 100644 index 0000000000..43d328fa11 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/walter.c @@ -0,0 +1,17 @@ +/* +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 "walter.h" diff --git a/keyboards/handwired/swiftrax/walter/walter.h b/keyboards/handwired/swiftrax/walter/walter.h new file mode 100644 index 0000000000..e761797866 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/walter.h @@ -0,0 +1,78 @@ +/* +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 "quantum.h" + + + #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, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, 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, K2D,KC_NO,K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } + + #define LAYOUT_65_iso( \ + 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, 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, 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, K2D, K1F }, \ + { K20, KC_NO, 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, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } + #define LAYOUT_65_ansi_splitbs( \ + 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, 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, 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, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } +#define LAYOUT_65_iso_splitbs( \ + 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, 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, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K20, KC_NO, 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, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } diff --git a/keyboards/handwired/symmetry60/rules.mk b/keyboards/handwired/symmetry60/rules.mk index 905b15699e..f41c45ffff 100644 --- a/keyboards/handwired/symmetry60/rules.mk +++ b/keyboards/handwired/symmetry60/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/t111/rules.mk b/keyboards/handwired/t111/rules.mk index 1c391242ba..558598d74f 100644 --- a/keyboards/handwired/t111/rules.mk +++ b/keyboards/handwired/t111/rules.mk @@ -1,3 +1,4 @@ +# MCU name MCU = STM32F103 # Bootloader selection diff --git a/keyboards/handwired/tennie/keymaps/default/readme.md b/keyboards/handwired/tennie/keymaps/default/readme.md deleted file mode 100644 index 1fbaa7f463..0000000000 --- a/keyboards/handwired/tennie/keymaps/default/readme.md +++ /dev/null @@ -1,68 +0,0 @@ -# Default keymap - -This keymap is to serve as an example of how you could make a multi-layer keymap. - -#### keymap - -``` -[base] = LAYOUT_kc( -// ┌────────┬────────┬────────┐ - - DEL , SPC , ENT , - -// ├────────┼────────┼────────┼────────┼ - - LEFT , DOWN , UP , RGHT , - -// ├────────┼────────┼────────┼────────┼ - - SHRK , OGRE , TCP - -// └────────┴────────┴────────┘ -), -[shrek] = LAYOUT_kc( -// ┌────────┬────────┬────────┐ - - MPRV , MPLY , MNXT , - -// ├────────┼────────┼────────┼────────┼ - - BRID , VOLD , VOLU , BRIU , - -// ├────────┼────────┼────────┼────────┼ - - _______, _______, _______ - -// └────────┴────────┴────────┘ -), -[ogre] = LAYOUT_kc( -// ┌────────┬────────┬────────┐ - - RGB_MOD, RGB_TOG, RGB_RMOD - -// ├────────┼────────┼────────┼────────┼ - - F13 , F14 , F15 , F16 , - -// ├────────┼────────┼────────┼────────┼ - - _______, _______, _______ - -// └────────┴────────┴────────┘ -), -[tcp] = LAYOUT_kc( -// ┌────────┬────────┬────────┐ - - WBAK , WREF , WFWD , - -// ├────────┼────────┼────────┼────────┼ - - XXXXXXX , PGDN , PGUP , XXXXXXX , - -// ├────────┼────────┼────────┼────────┼ - - _______, _______, _______ - -// └────────┴────────┴────────┘ -), -``` diff --git a/keyboards/handwired/trackpoint/info.json b/keyboards/handwired/trackpoint/info.json new file mode 100644 index 0000000000..d1dcb39d62 --- /dev/null +++ b/keyboards/handwired/trackpoint/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Trackpoint", + "url": "", + "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/handwired/traveller/info.json b/keyboards/handwired/traveller/info.json new file mode 100644 index 0000000000..0a13fab77a --- /dev/null +++ b/keyboards/handwired/traveller/info.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "traveller", + "url": "", + "maintainer": "qmk", + "width": 1, + "height": 1, + "layouts": { + "KEYMAP": { + "layout": [ + {"x":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":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} + ] + } + } +} diff --git a/keyboards/handwired/traveller/traveller.h b/keyboards/handwired/traveller/traveller.h index 972a1a94a6..acf2ee7028 100644 --- a/keyboards/handwired/traveller/traveller.h +++ b/keyboards/handwired/traveller/traveller.h @@ -16,7 +16,7 @@ // 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 KEYMAP( \ +#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, \ diff --git a/keyboards/handwired/tritium_numpad/config.h b/keyboards/handwired/tritium_numpad/config.h index a53c27d43b..1424c6b491 100644 --- a/keyboards/handwired/tritium_numpad/config.h +++ b/keyboards/handwired/tritium_numpad/config.h @@ -36,6 +36,9 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F4, F6, B1, B2 } #define UNUSED_PINS +#define LED_NUM_LOCK_PIN D5 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 /* COL2ROW or ROW2COL */ diff --git a/keyboards/handwired/tritium_numpad/tritium_numpad.c b/keyboards/handwired/tritium_numpad/tritium_numpad.c index 7193a934d6..c9f86eda7e 100644 --- a/keyboards/handwired/tritium_numpad/tritium_numpad.c +++ b/keyboards/handwired/tritium_numpad/tritium_numpad.c @@ -1,29 +1 @@ #include "tritium_numpad.h" -#include "led.h" - -void keyboard_pre_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - keyboard_pre_init_user(); - led_init_ports(); -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; - -void led_init_ports(void) { - // * Set our LED pins as output - // Numlock LED - setPinOutput(D5); -} - -void led_set_kb(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - writePinLow(D5); - } else { - writePinHigh(D5); - } -} diff --git a/keyboards/handwired/unicomp_mini_m/config.h b/keyboards/handwired/unicomp_mini_m/config.h new file mode 100644 index 0000000000..41676ec805 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/config.h @@ -0,0 +1,59 @@ +/* +Copyright 2021 stevendlander + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the 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 stevendlander +#define PRODUCT Unicomp Mini M + +/* key matrix size */ +#define MATRIX_ROWS 12 +#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, F3, F2, F1, F0, E6, E7, B0, B1 } +#define MATRIX_COL_PINS { C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, B7, D5, D4, D3, D2 } +#define UNUSED_PINS + +#define LED_PIN_ON_STATE 0 +#define LED_NUM_LOCK_PIN B6 +#define LED_CAPS_LOCK_PIN B5 +#define LED_SCROLL_LOCK_PIN B4 + +/* 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 Mini M has no diodes */ +#define MATRIX_HAS_GHOST diff --git a/keyboards/handwired/unicomp_mini_m/info.json b/keyboards/handwired/unicomp_mini_m/info.json new file mode 100644 index 0000000000..4b5390779a --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/info.json @@ -0,0 +1,462 @@ +{ + "keyboard_name": "Unicomp Mini M", + "url": "", + "maintainer": "stevendlander", + "width": 15.5, + "height": 7.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.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 + } + ] + } + } +} diff --git a/keyboards/handwired/unicomp_mini_m/keymaps/default/keymap.c b/keyboards/handwired/unicomp_mini_m/keymaps/default/keymap.c new file mode 100644 index 0000000000..068c6c4b60 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/keymaps/default/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2021 stevendlander + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more 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 shortcuts +enum custom_layers { + _QWERTY, + _NUMPAD, +}; + +enum custom_keycodes { + NUMSLCK = SAFE_RANGE, // Num Lock on shift, Scroll Lock regularly + PAUSRST, // Resets keyboard on shift, Pause|break regularly + PSCSYSR, // Sends SYSREQ on alt, Print Screen regularly +}; + +// Mod key detection +#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) +#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) + +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, KC_F9, KC_F10, KC_F11, KC_F12, PSCSYSR, NUMSLCK, PAUSRST, + KC_GRV, KC_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_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_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, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_NUMPAD] = 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, NUMSLCK, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_TRNS, KC_PMNS, 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_TRNS, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PAST, 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_TRNS, KC_PDOT, KC_PSLS, KC_TRNS, KC_TRNS, 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 NUMSLCK: { + if (record->event.pressed) { + if (keyboard_report->mods & MODS_SHIFT_MASK) { + tap_code(KC_NLCK); + } else { + register_code(KC_SLCK); + } + } else { + unregister_code(KC_SLCK); + } + break; + } + case PAUSRST: { + if (record->event.pressed) { + if (keyboard_report->mods & MODS_SHIFT_MASK) { + reset_keyboard(); + } else { + register_code(KC_PAUS); + } + } else { + unregister_code(KC_PAUS); + } + break; + } + case PSCSYSR: { + if (record->event.pressed) { + if (keyboard_report->mods & MODS_ALT_MASK) { + tap_code(KC_SYSREQ); + } else { + register_code(KC_PAUS); + } + } else { + unregister_code(KC_PAUS); + } + break; + } + } + return true; +} + +bool led_update_user(led_t led_state) { + static bool num_state = false; + if (num_state != led_state.num_lock) { + if (led_state.num_lock) { + layer_on(_NUMPAD); + } else { + layer_off(_NUMPAD); + } + num_state = led_state.num_lock; + } + return true; +} diff --git a/keyboards/handwired/unicomp_mini_m/keymaps/default/readme.md b/keyboards/handwired/unicomp_mini_m/keymaps/default/readme.md new file mode 100644 index 0000000000..f15b1b50d3 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for unicomp\_mini\_m diff --git a/keyboards/handwired/unicomp_mini_m/readme.md b/keyboards/handwired/unicomp_mini_m/readme.md new file mode 100644 index 0000000000..0640fbb250 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/readme.md @@ -0,0 +1,127 @@ +## Unicomp Mini M with Teensy2.0++ controller & QMK Firmware + +### Overview + +#### Goals + +The goal of this project was to replace the stock control board of the Unicomp Mini M with a programmable one. The Mini +M was released by [Unicomp](https://www.pckeyboard.com) in Q1 of 2021 and is a re-release of The IBM Model M Space +Saving Keyboard (SSK) with some enhancements. + +This guide strives to achieve the following: + +* Make completely reversable changes, or in other words, no permanent modifications to the Mini M +* Allow full programmability of the Mini M via QMK +* Be able to flash firmware without having to take the board apart to hit the reset button +* Create a default keymap that works just like the stock keymap shipped from Unicomp, including the toggle-able number + pad +* Support all LEDs as normal + +My guide will go a few steps further: + +* Convert the wired connection from USB-A to USB-C +* Install a potentiometer to dim the LEDs if desired + +#### Credits + +The following resources were instrumental to the success of this project: + +* Model M 101/102 write-up located in `qmk_firmware/keyboards/converter/modelm` +* [Model M Subreddit](https://modelm.reddit.com) +* Model M Discord + +### Hardware + +##### Parts + +For a working Mini M with QMK *without* LEDs working, the following parts are necessary: + +* 1 Adafruit Perma-Proto Full Sized Breadboard. Luckily, this board is a perfect fit for the Mini M case! +* 1 Teensy2.0++, with headers soldered on if you can find it + * 2 20-row x 1 column headers, if you can't find a Teensy with headers already soldered on +* 2 16-pin Ribbon connectors, PCB mount +* Hookup wire. I used 30AWG wire and while it worked, I should have used 1 gauge (or more) thicker +* A panel mount male USB-B to female USB-C extender + +To get the Mini M working with LEDs, you will need: + +* 3 1kOhm through-hole resistors + +##### Tools + +The following were absolutely critical for the project: + +* Soldering iron, preferably one with a narrow tip for small connections +* Drill, preferably a hand-held rotary tool (such as a Dremel) +* Wire strippers/cutters +* A sharp knife + +Optional, but worth having around: + +* Helping-hands, PCB holder, preferably both +* Multi-meter for testing continuity of your connections +* Hot-glue gun for mounting the USB extender to the Perma-Proto + +### Assembly + +#### Solder Teensy to the Perma-Proto + +1. Solder headers to Teensy +2. Solder headers to Perma-Proto + +#### Solder ribbon connectors + +* Rows on the Perma-Proto that line up with membrane ribbons +* Trim excess under board +* Test continuity + +#### Solder in hookup wires + +* Ribbon connector used for the right ribbon will need hookup wire to establish connections to the Teensy +* 12 required, 16 if you want full functionality + +#### Optional: Solder in resistors + +#### Caveat: D6 pin on the Teensy + +There are a few ways to mount the Teensy to the Perma-Proto board. I chose to connect my 16 pin ribbon connector to the +Teensy pins starting at C7 and ending at D2. If you do this, beware that pin D6 will not work for the purposes of this +project. It is possible to modify it to make it so, but that is beyond the scope of this guide. + +Bypassing D6 is necessary if you mount your ribbon connector as I have just described. Luckily, it is a simple process! +First, with a sharp knife, sever the connection between your ribbon connector pin that is connected to Teensy D6 pin. I +would recommend doing this at the closest possible point to the Teensy on the underside of the Perma-Proto board. Once +that is done, use a remaining point on the Perma-Proto bus for that ribbon connection (that was previously connected to +D6) to add a jumper wire connected to pin B7. If you are using the firmware files provided in this repository, +everything is already set for this configuration. + +### Testing + +### Software + +#### Build firmware + +See qmk documentation on getting your build environment working. + +Compile the Mini M firmware files with the default keymap. It allows for the Mini M to be used with the same +functionality as shipped from the manufacturer. + +```bash +$ qmk compile -kb unicomp/mini_m -km default +``` + +While plugged in, press the reset button on your Teensy and then: + +```bash +$ qmk flash -kb unicomp/mini_m -km default +``` + +If everything works to this point, congratulations! You now have a programmable Mini M. If you are using the default +keymap, you can reset your Teensy by pressing Shift+Pause together, eliminating the need to take apart the case in order +to do so. + +#### Keymaps + +To build your own keymap, create a new directory in `keyboards/unicomp/mini_m/keymaps/`, copy the files from +`keyboards/unicomp/mini_m/default` into your new directory, and edit them as you wish. When you are ready to flash your +new keymap to the Mini M, the command will be `qmk flash -kb unicomp/mini_m -kb `. diff --git a/keyboards/handwired/unicomp_mini_m/rules.mk b/keyboards/handwired/unicomp_mini_m/rules.mk new file mode 100644 index 0000000000..92cbe9b134 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 = 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/unicomp_mini_m/unicomp_mini_m.c b/keyboards/handwired/unicomp_mini_m/unicomp_mini_m.c new file mode 100644 index 0000000000..e8249df251 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/unicomp_mini_m.c @@ -0,0 +1,16 @@ +/* Copyright 2021 stevendlander + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "unicomp_mini_m.h" diff --git a/keyboards/handwired/unicomp_mini_m/unicomp_mini_m.h b/keyboards/handwired/unicomp_mini_m/unicomp_mini_m.h new file mode 100644 index 0000000000..8e426da051 --- /dev/null +++ b/keyboards/handwired/unicomp_mini_m/unicomp_mini_m.h @@ -0,0 +1,49 @@ +/* Copyright 2021 stevendlander + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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, K4R, \ + 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, K1O, \ + K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K \ +) \ +{ \ +/* 00 */ { K4A, K5A, K4F, K1M, K5C, K5D, K5E, K3K, KC_NO, KC_NO, KC_NO, KC_NO, K0C, K2N, KC_NO, KC_NO }, \ +/* 01 */ { K2A, K1B, K3B, KC_NO, KC_NO, KC_NO, KC_NO, K4G, K5F, KC_NO, KC_NO, KC_NO, KC_NO, K2M, K0H, K1N, }, \ +/* 02 */ { K2C, K2D, K5B, K2E, K2F, K1C, K1E, KC_NO, K1D, K1F, K1G, K2B, K3A, KC_NO, KC_NO, KC_NO }, \ +/* 03 */ { KC_NO, KC_NO, K4B, KC_NO, KC_NO, KC_NO, KC_NO, K3G, K5G, KC_NO, KC_NO, K0B, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* 04 */ { KC_NO, KC_NO, K4E, KC_NO, KC_NO, KC_NO, KC_NO, K3J, K5H, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K0A, K1A, }, \ +/* 05 */ { KC_NO, KC_NO, K3C, KC_NO, KC_NO, KC_NO, KC_NO, K4H, K5I, K3L, K0F, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* 06 */ { KC_NO, KC_NO, K4C, KC_NO, KC_NO, KC_NO, KC_NO, K3H, K5J, K4M, K5K, K5L, K4L, K5N, KC_NO, KC_NO }, \ +/* 07 */ { KC_NO, KC_NO, K4D, KC_NO, KC_NO, KC_NO, KC_NO, K3I, KC_NO, KC_NO, KC_NO, K5M, K4N, K5O, KC_NO, KC_NO }, \ +/* 08 */ { KC_NO, KC_NO, K3F, KC_NO, KC_NO, KC_NO, KC_NO, K4K, KC_NO, K4O, K1O, K3P, K4P, KC_NO, KC_NO, KC_NO }, \ +/* 09 */ { KC_NO, KC_NO, K3E, K0E, K0I, KC_NO, KC_NO, K4J, KC_NO, K3N, KC_NO, KC_NO, KC_NO, K4Q, KC_NO, KC_NO }, \ +/* 0A */ { K0D, KC_NO, K3D, KC_NO, K0G, KC_NO, KC_NO, K4I, KC_NO, K3M, K0K, K0J, K4R, K3Q, KC_NO, KC_NO }, \ +/* 0B */ { K1I, K1J, KC_NO, K1K, K1L, K2G, K2I, KC_NO, K2H, K2J, K2K, K1H, K2L, K3O, KC_NO, K5P, }, \ +} +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk index 96bfe18dde..83f0d7f48f 100644 --- a/keyboards/handwired/wulkan/rules.mk +++ b/keyboards/handwired/wulkan/rules.mk @@ -2,11 +2,14 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/handwired/z150/rules.mk b/keyboards/handwired/z150/rules.mk index d86e9f6e46..b9b242568f 100644 --- a/keyboards/handwired/z150/rules.mk +++ b/keyboards/handwired/z150/rules.mk @@ -1,3 +1,4 @@ +# MCU name MCU = STM32F103 # Bootloader selection diff --git a/keyboards/hecomi/hecomi.h b/keyboards/hecomi/hecomi.h index ef90a8ead9..9586e83947 100644 --- a/keyboards/hecomi/hecomi.h +++ b/keyboards/hecomi/hecomi.h @@ -67,23 +67,3 @@ Right hand: {K80, K81, K82, K83, K84, K85, K86, K87},\ {KC_NO, KC_NO, K92, K93, K94, K95, K96, K97}\ } - -#define LAYOUT_kc(\ -K00, K01, K02, K03, K04, K05, K06, K50, K51, K52, K53, K54, K55, K56, K57, \ -K10, K11, K12, K13, K14, K15, K16, K60, K61, K62, K63, K64, K65, K66, K67, \ -K20, K21, K22, K23, K24, K25, K71, K72, K73, K74, K75, K76, K77,\ -K30, K31, K32, K33, K34, K35, K80, K81, K82, K83, K84, K85, K86, K87, \ - K40, K41, K42, K43, K44, K45, K92, K93, K94, K95, K96, K97\ -) {\ -{KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_NO},\ -{KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_NO},\ -{KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO, KC_NO},\ -{KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_NO, KC_NO},\ -{KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_NO, KC_NO},\ -{KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57},\ -{KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67},\ -{KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77},\ -{KC_##K80, KC_##K81, KC_##K82, KC_##K83, KC_##K84, KC_##K85, KC_##K86, KC_##K87},\ -{KC_NO, KC_NO, KC_##K92, KC_##K93, KC_##K94, KC_##K95, KC_##K96, KC_##K97}\ -} - diff --git a/keyboards/hecomi/rules.mk b/keyboards/hecomi/rules.mk index 75686f9226..f91432cadd 100644 --- a/keyboards/hecomi/rules.mk +++ b/keyboards/hecomi/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c index 27bf062433..728ef0eb5f 100644 --- a/keyboards/helix/pico/keymaps/mtei/keymap.c +++ b/keyboards/helix/pico/keymaps/mtei/keymap.c @@ -14,6 +14,9 @@ #include #endif +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define kc5(a,b,c,d,e) KC_##a, KC_##b, KC_##c, KC_##d, KC_##e + extern keymap_config_t keymap_config; #ifdef RGBLIGHT_ENABLE @@ -46,43 +49,33 @@ enum custom_keycodes { EUCALYN, NUML, NUMR, - KC_xEISU, - KC_xKANA, - KC_ZERO2, + xEISU, + xKANA, + ZERO2, RGBRST }; +// clang-format off + //Macros -#define KC_LOWER MO(_LOWER) -#define KC_NUML LT(_NUML,KC_SPC) -#define KC_NUMR LT(_NUMR,KC_SPC) -#define KC_RABS LT(_RAISE,KC_BSPC) -#define KC_RAEN LT(_RAISE,KC_ENT) -#define KC_____ _______ -#define KC_XXXX XXXXXXX -#define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define KC_LSGR LSFT(KC_GRV) -#define KC_LSQT LSFT(KC_QUOT) +#define LT_NUML_SP LT(_NUML,KC_SPC) +#define LT_NUMR_SP LT(_NUMR,KC_SPC) +#define LT_RA_BSPC LT(_RAISE,KC_BSPC) +#define LT_RA_ENT LT(_RAISE,KC_ENT) #define ___ _______ -#define KC_S0 LSFT(KC_0) -#define KC_S1 LSFT(KC_1) -#define KC_S2 LSFT(KC_2) -#define KC_S3 LSFT(KC_3) -#define KC_S4 LSFT(KC_4) -#define KC_S5 LSFT(KC_5) -#define KC_S6 LSFT(KC_6) -#define KC_S7 LSFT(KC_7) -#define KC_S8 LSFT(KC_8) -#define KC_S9 LSFT(KC_9) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T kc5( Q, W, E, R, T ) +#define Y_____U_____I_____O_____P kc5( Y, U, I, O, P ) +#define A_____S_____D_____F_____G kc5( A, S, D, F, G ) +#define H_____J_____K_____L__SCLN kc5( H, J, K, L, SCLN ) +#define Z_____X_____C_____V_____B kc5( Z, X, C, V, B ) +#define N_____M__COMM___DOT__SLSH kc5( N, M, COMM, DOT, SLSH ) +#define LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS MO(_LOWER), MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, LT_NUML_SP, LT_RA_BSPC +#define RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER LT_RA_ENT, LT_NUMR_SP, KC_RGUI, KC_RALT, KC_APP, MO(_LOWER), MO(_LOWER) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | Ctrl | @@ -92,15 +85,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_QWERTY] = LAYOUT_kc( \ - ESC, Q, W, E, R, T, Y, U, I, O, P, BSLS, \ - LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCTL, \ - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L__SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, N_____M__COMM___DOT__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Colemak - * ,-----------------------------------------. ,-----------------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G kc5( Q, W, F, P, G ) +#define J_____L_____U_____Y__SCLN kc5( J, L, U, Y, SCLN ) +#define A_____R_____S_____T_____D kc5( A, R, S, T, D ) +#define H_____N_____E_____I_____O kc5( H, N, E, I, O ) +#define K_____M__COMM___DOT__SLSH kc5( K, M, COMM, DOT, SLSH ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | R | S | T | D | | H | N | E | I | O | Ctrl | @@ -110,15 +108,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_COLEMAK] = LAYOUT_kc( \ - ESC, Q, W, F, P, G, J, L, U, Y, SCLN, BSLS, \ - LCTL, A, R, S, T, D, H, N, E, I, O, RCTL, \ - LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, Q_____W_____F_____P_____G, J_____L_____U_____Y__SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, K_____M__COMM___DOT__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Dvorak - * ,-----------------------------------------. ,-----------------------------------------. + /* Dvorak */ +#define QUOT__COMM___DOT_____P_____Y kc5( QUOT, COMM, DOT, P, Y ) +#define F_____G_____C_____R_____L kc5( F, G, C, R, L ) +#define A_____O_____E_____U_____I kc5( A, O, E, U, I ) +#define D_____H_____T_____N_____S kc5( D, H, T, N, S ) +#define SCLN_____Q_____J_____K_____X kc5( SCLN, Q, J, K, X ) +#define B_____M_____W_____V_____Z kc5( B, M, W, V, Z ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | ' | , | . | P | Y | | F | G | C | R | L | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | O | E | U | I | | D | H | T | N | S | Ctrl | @@ -128,15 +132,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_DVORAK] = LAYOUT_kc( \ - ESC, QUOT, COMM, DOT, P, Y, F, G, C, R, L, BSLS, \ - LCTL, A, O, E, U, I, D, H, T, N, S, RCTL, \ - LSFT, SCLN, Q, J, K, X, B, M, W, V, Z, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, QUOT__COMM___DOT_____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN_____Q_____J_____K_____X, B_____M_____W_____V_____Z, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------------. ,-----------------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W__COMM___DOT__SCLN kc5( Q, W, COMM, DOT, SCLN ) +#define M_____R_____D_____Y_____P kc5( M, R, D, Y, P ) +#define A_____O_____E_____I_____U kc5( A, O, E, I, U ) +#define G_____T_____K_____S_____N kc5( G, T, K, S, N ) +#define Z_____X_____C_____V_____F kc5( Z, X, C, V, F ) +#define B_____H_____J_____L__SLSH kc5( B, H, J, L, SLSH ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | , | . | ; | | M | R | D | Y | P | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | O | E | I | U | | G | T | K | S | N | Ctrl | @@ -146,15 +156,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_EUCALYN] = LAYOUT_kc( \ - ESC, Q, W, COMM, DOT, SCLN, M, R, D, Y, P, BSLS, \ - LCTL, A, O, E, I, U, G, T, K, S, N, RCTL, \ - LSFT, Z, X, C, V, F, B, H, J, L, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, Q_____W__COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, B_____H_____J_____L__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Num - * ,-----------------------------------------. ,-----------------------------------------. + /* Num */ +#define EXLM__AT__HASH___DLR__PERC kc5( EXLM, AT, HASH, DLR, PERC ) +#define CIRC_AMPR_ASTR__LPRN__RPRN kc5( CIRC, AMPR, ASTR, LPRN, RPRN ) +#define _1_____2_____3_____4_____5 kc5( 1, 2, 3, 4, 5 ) +#define _6_____7_____8_____9_____0 kc5( 6, 7, 8, 9, 0 ) +#define F1____F2____F3____F4____F5 kc5( F1, F2, F3, F4, F5 ) +#define F6____F7____F8____F9___F10 kc5( F6, F7, F8, F9, F10 ) +#define ____z_____z_____z_____z _______, _______, _______, _______ +#define ____z_____z_____z _______, _______, _______ +#define ____z_____z _______, _______ + /* ,-----------------------------------------. ,-----------------------------------------. * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | @@ -164,40 +183,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_NUML] = LAYOUT_kc( \ - ____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \ - ____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \ - ____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \ - ____, ____, ____, ____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____ \ - ), - - [_NUMR] = LAYOUT_kc( \ - ____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \ - ____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \ - ____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \ - ____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____, ____, ____, ____ \ - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + [_NUML] = LAYOUT_wrapper( + _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, + _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, + _______, F1____F2____F3____F4____F5, F6____F7____F8____F9___F10, KC_F11, + _______, ____z_____z_____z_____z,____z_____z_____z,KC_SPC, ____z_____z_____z_____z, _______ + ), + [_NUMR] = LAYOUT_wrapper( + _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, + _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, + _______, F1____F2____F3____F4____F5, F6____F7____F8____F9___F10, KC_F11, + _______, ____z_____z_____z_____z,KC_SPC, ____z_____z_____z,____z_____z_____z_____z, _______ + ), + /* Lower */ +#define XXXX__PAUS__SLCK___INS__XXXX XXXXXXX, KC_PAUS, KC_SLCK, KC_INS, XXXXXXX +#define XXXX___INS__SLCK__PAUS__XXXX XXXXXXX, KC_INS, KC_SLCK, KC_PAUS, XXXXXXX +#define HOME__XXXX____UP___DEL__PGUP KC_HOME, XXXXXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL____UP__XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXXXXX, KC_HOME +#define END___LEFT__DOWN__RGHT__PGDN kc5( END, LEFT, DOWN, RGHT, PGDN ) +#define PGDN__LEFT__DOWN__RGHT___END kc5( PGDN, LEFT, DOWN, RGHT, END ) +#define ______PSCR__________________ _______, KC_PSCR, _______, _______, _______ +#define __________________PSCR______ _______, _______, _______, KC_PSCR, _______ +#define ADJ___ADJ MO(_ADJUST), MO(_ADJUST) + /* ,-----------------------------------------. ,-----------------------------------------. * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End | | End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn | | PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | |Adjust|Adjust| | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ - [_LOWER] = LAYOUT_kc( \ - XXXX, XXXX, PAUS, SLCK, INS, XXXX, XXXX, INS, SLCK, PAUS, XXXX, ____, \ - ____, HOME, XXXX, UP, DEL, PGUP, PGUP, DEL, UP, XXXX, HOME, ____, \ - ____, END, LEFT, DOWN, RGHT, PGDN, PGDN, LEFT, DOWN, RGHT, END, ____, \ - ____, ____, PSCR, ____, ____, ____, ADJ, ADJ, ____, ____, ____, PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + [_LOWER] = LAYOUT_wrapper( + XXXXXXX, XXXX__PAUS__SLCK___INS__XXXX, XXXX___INS__SLCK__PAUS__XXXX, _______, + _______, HOME__XXXX____UP___DEL__PGUP, PGUP___DEL____UP__XXXX__HOME, _______, + _______, END___LEFT__DOWN__RGHT__PGDN, PGDN__LEFT__DOWN__RGHT___END, _______, + _______, ______PSCR__________________, ADJ___ADJ, __________________PSCR______, _______ + ), + /* Raise */ +#define XXXX__XXXX__XXXX__UNDS__MINS XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_MINS +#define EQL__PLUS__XXXX__XXXX__XXXX KC_EQL, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX__XXXX__XXXX__LCBR__LBRC XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC +#define RBRC__RCBR__XXXX__XXXX__XXXX KC_RBRC, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX__XXXX__XXXX__TILD___GRV XXXXXXX, XXXXXXX, XXXXXXX, KC_TILD, KC_GRV +#define QUOT___DQT__XXXX__XXXX__XXXX KC_QUOT, KC_DQT, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX______________XXXX XXXXXXX, _______, _______, XXXXXXX + /* ,-----------------------------------------. ,-----------------------------------------. * | TAB | | | | _ | - | | = | + | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | EISU | | | | { | [ | | ] | } | | | | KANA | @@ -207,13 +239,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_RAISE] = LAYOUT_kc( \ - TAB, XXXX, XXXX, XXXX, LSMI, MINS, EQL, LSEQ, XXXX, XXXX, XXXX, XXXX, \ - xEISU, XXXX, XXXX, XXXX, LSLB, LBRC, RBRC, LSRB, XXXX, XXXX, XXXX, xKANA, \ - XXXX, XXXX, XXXX, XXXX, LSGR, GRV, QUOT, LSQT, XXXX, XXXX, XXXX, XXXX, \ - ADJ, ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ, ADJ \ - ), - + [_RAISE] = LAYOUT_wrapper( + KC_TAB, XXXX__XXXX__XXXX__UNDS__MINS, EQL__PLUS__XXXX__XXXX__XXXX, XXXXXXX, + xEISU, XXXX__XXXX__XXXX__LCBR__LBRC, RBRC__RCBR__XXXX__XXXX__XXXX, xKANA, + XXXXXXX, XXXX__XXXX__XXXX__TILD___GRV, QUOT___DQT__XXXX__XXXX__XXXX, XXXXXXX, + ADJ___ADJ, XXXX______________XXXX, ____z_____z, XXXX______________XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win | |Qwerty|Euclyn|Colemk|Dvorak| @@ -226,10 +257,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT( \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \ + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ ) }; @@ -302,7 +333,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_xEISU: + case xEISU: if (record->event.pressed) { if(keymap_config.swap_lalt_lgui==false){ register_code(KC_LANG2); @@ -314,7 +345,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_xKANA: + case xKANA: if (record->event.pressed) { if(keymap_config.swap_lalt_lgui==false){ register_code(KC_LANG1); diff --git a/keyboards/helix/pico/pico.h b/keyboards/helix/pico/pico.h index 60a5078ed4..5fa5f72958 100644 --- a/keyboards/helix/pico/pico.h +++ b/keyboards/helix/pico/pico.h @@ -50,15 +50,3 @@ extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to { R36, R30, R31, R32, R33, R34, R35 }, \ } #endif - -#define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35 \ -) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \ -) diff --git a/keyboards/helix/rev1/rev1.h b/keyboards/helix/rev1/rev1.h index b3a525554e..7db27bcca0 100644 --- a/keyboards/helix/rev1/rev1.h +++ b/keyboards/helix/rev1/rev1.h @@ -127,42 +127,3 @@ #else #error "expected HELIX_ROWS 3 or 4 or 5" #endif - -// Used to create a keymap using only KC_ prefixed keys -#if MATRIX_ROWS == 6 // HELIX_ROWS == 3 - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25 \ - ) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25 \ - ) -#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4 - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ - ) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \ - ) -#else // HELIX_ROWS == 5 - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45 \ - ) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \ - KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45 \ - ) -#endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h index cd0568f61e..ca3b73aa29 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/config.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/config.h @@ -1,5 +1,4 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once #define SWAP_SCLN @@ -12,15 +11,13 @@ // Selection of RGBLIGHT MODE to use. #if defined(LED_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 - -#endif /* CONFIG_USER_H */ +//# 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 // LED_ANIMATIONS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c index 9fba5072c4..5de00cb14c 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c @@ -1,38 +1,24 @@ #include QMK_KEYBOARD_H #include "split_util.h" #include "keymap_xrows.h" -#ifdef SSD1306OLED - #include "oled.h" -#endif // keymaps definitions are moved to keymap_Xrows.c. -#ifdef SSD1306OLED -void matrix_init_keymap(void) { - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h - iota_gfx_init(!has_usb()); // turns on the display -} - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} -#endif - #ifdef RGBLIGHT_ENABLE uint32_t layer_state_set_keymap(uint32_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_blue(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c index f2befc03b5..246c2a9fd2 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c @@ -1,41 +1,42 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c index 642ba8c635..6f2a4d371a 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c @@ -1,47 +1,48 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - ESC ,EXLM, AT ,HASH , DLR ,PERC, CIRC,AMPR ,ASTR ,LPRN ,RPRN,BSPC, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - TAB ,SCLN, X , C , V , Z , NO , NO , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + 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_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - PSCR, , , , , , , , , , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , HOME , PGDN , PGUP ,END , , ,LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----| |----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - PSCR, , , , , , , , , , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , ,HOME ,PGDN ,PGUP ,END , , ,LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h index d9561d0b70..aae83fc7a8 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h @@ -1,5 +1,4 @@ -#ifndef KEYMAP_XROWS_H -#define KEYMAP_XROWS_H +#pragma once #include "edvorakjp.h" /* @@ -8,14 +7,7 @@ * }; */ -#define KC_ KC_TRNS +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) - -#endif +#define __KC_TRNS_x4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c index b931b72b7c..4bbab1dc4b 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c @@ -1,72 +1,68 @@ +#include #include #include "oled.h" -static void render_logo(struct CharacterMatrix *matrix) { +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { + char led_state_str[24]; + uint8_t leds = host_keyboard_leds(); - static char logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, - 0}; - matrix_write(matrix, logo); + bool is_num_lock_enabled = leds & (1 << USB_LED_NUM_LOCK); + bool is_caps_lock_enabled = leds & (1 << USB_LED_CAPS_LOCK); + bool is_scroll_lock_enabled = leds & (1 << USB_LED_SCROLL_LOCK); + + snprintf(led_state_str, sizeof(led_state_str), "NL:%s CL:%s SL:%s", is_num_lock_enabled ? "on" : "- ", is_caps_lock_enabled ? "on" : "- ", is_scroll_lock_enabled ? "on" : "- "); + oled_write(led_state_str, false); } -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } +void render_layer_state(void) { + char layer_name[17]; + oled_write_P(PSTR("Layer: "), false); + + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); + oled_write_ln(layer_name, false); + } } -void render_status(struct CharacterMatrix *matrix) { - - // Render to mode icon - static char logo[][2][3] = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - int mode_number = get_enable_kc_lang() ? 0 : 1; - matrix_write(matrix, logo[mode_number][0]); - matrix_write(matrix, "\n"); - matrix_write(matrix, logo[mode_number][1]); - - // 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("\nLayer: ")); - switch (biton32(layer_state)) { - case L_BASE: - matrix_write_P(matrix, PSTR("Default")); - break; - case _RAISE: - matrix_write_P(matrix, PSTR("Raise")); - break; - case _LOWER: - matrix_write_P(matrix, PSTR("Lower")); - 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<. // If you need more program area, try select and reduce rgblight modes to use. +#define DISABLE_SYNC_TIMER + // Selection of RGBLIGHT MODE to use. #undef RGBLIGHT_ANIMATIONS #undef RGBLIGHT_EFFECT_BREATHING diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c index a2ec108624..16eff49244 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c +++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c @@ -42,6 +42,8 @@ enum custom_keycodes { RGBRST }; +// clang-format off + #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) //Macros @@ -49,24 +51,26 @@ enum custom_keycodes { #define XXXX XXXXXXX #define ____ _______ #define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 -#define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 -#define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ +#define _1_____2_____3_____4_____5 KC_1, KC_2, KC_3, KC_4, KC_5 +#define _6_____7_____8_____9_____0 KC_6, KC_7, KC_8, KC_9, KC_0 +#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ +#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER - +#define GRV__QUOT KC_GRV, KC_QUOT #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------. ,-----------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T KC_Q, KC_W, KC_E, KC_R, KC_T +#define Y_____U_____I_____O_____P KC_Y, KC_U, KC_I, KC_O, KC_P +#define A_____S_____D_____F_____G KC_A, KC_S, KC_D, KC_F, KC_G +#define H_____J_____K_____L____SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define N_____M____COMM__DOT___SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | @@ -78,23 +82,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T -#define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P -#define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G -#define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - [_QWERTY] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ - KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Colemak - * ,-----------------------------------. ,-----------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G KC_Q, KC_W, KC_F, KC_P, KC_G +#define J_____L_____U_____Y____SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define A_____R_____S_____T_____D KC_A, KC_R, KC_S, KC_T, KC_D +#define H_____N_____E_____I_____O KC_H, KC_N, KC_E, KC_I, KC_O +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define K_____M____COMM__DOT___SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | @@ -106,23 +109,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G -#define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D -#define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_COLEMAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ - KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Dvorak - * ,-----------------------------------. ,-----------------------------------. + /* Dvorak */ +#define QUOT_COMM___DOT____P_____Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define F_____G_____C_____R_____L KC_F, KC_G, KC_C, KC_R, KC_L +#define A_____O_____E_____U_____I KC_A, KC_O, KC_E, KC_U, KC_I +#define D_____H_____T_____N_____S KC_D, KC_H, KC_T, KC_N, KC_S +#define SCLN___Q_____J_____K_____X KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define B_____M_____W_____V_____Z KC_B, KC_M, KC_W, KC_V, KC_Z +#define GRV__SLSH KC_GRV, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | @@ -134,23 +137,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L -#define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I -#define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S -#define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z - - [_DVORAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ - KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ - KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------. ,-----------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W___COMM___DOT__SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define M_____R_____D_____Y_____P KC_M, KC_R, KC_D, KC_Y, KC_P +#define A_____O_____E_____I_____U KC_A, KC_O, KC_E, KC_I, KC_U +#define G_____T_____K_____S_____N KC_G, KC_T, KC_K, KC_S, KC_N +#define Z_____X_____C_____V_____F KC_Z, KC_X, KC_C, KC_V, KC_F +#define B_____H_____J_____L____SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | @@ -162,23 +164,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P -#define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U -#define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N -#define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F -#define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_EUCALYN] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ - KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Keypad - * ,-----------------------------------. ,-----------------------------------. + /* Keypad */ +#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST +#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 +#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 +#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 +#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT +#define F1___F6 KC_F1, KC_F6 +#define F2___F7 KC_F2, KC_F7 +#define F3___F8 KC_F3, KC_F8 +#define F4___F9 KC_F4, KC_F9 +#define F5__F10 KC_F5, KC_F10 +#define FF12 LT(_PADFUNC,KC_F12) + /* ,-----------------------------------. ,-----------------------------------. * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | @@ -190,25 +196,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | * `-----------------------------------------------------------------------------------' */ -#define KP_TOP KC_TAB, KC_PSLS, KC_PAST -#define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP_BTM KC_KP_0, KC_COMM, KC_PDOT -#define F_1_6 KC_F1, KC_F6 -#define F_2_7 KC_F2, KC_F7 -#define F_3_8 KC_F3, KC_F8 -#define F_4_9 KC_F4, KC_F9 -#define F_510 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - - [_KEYPAD] = LAYOUT_wrapper( \ - KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ - KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ - KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ - KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ - KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ - ), + [_KEYPAD] = LAYOUT_wrapper( + KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, + KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, + KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, + KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, + KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT + ), /* AUX modifier key layer * ,-----------------------------------. ,-----------------------------------. @@ -223,16 +217,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | 00 | | | | | | | | | | | 00 | | * `-----------------------------------------------------------------------------------' */ - [_KAUX] = LAYOUT( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ + [_KAUX] = LAYOUT( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ ), - /* Keypad function layer - * ,-----------------------------------------. ,-----------------------------------------. + /* Keypad function layer */ +#define PAUS__SLCK__PSCR KC_PAUS, KC_SLCK, KC_PSCR +#define PSCR__SLCK__PAUS KC_PSCR, KC_SLCK, KC_PAUS +#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP +#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME +#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT +#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL +#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | @@ -244,55 +245,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR -#define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS -#define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP -#define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME -#define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - - [_PADFUNC] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ - XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ - XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ + [_PADFUNC] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, + XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, + XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX ), - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + /* Lower */ +#define F1____F2____F3____F4____F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define F6____F7____F8____F9____F10 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 +#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SLCK, KC_INS +#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SLCK, KC_PAUS, XXXX +#define ADJ___ADJ KC_ADJ, KC_ADJ +#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME +#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN +#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + /* ,-----------------------------------------. ,-----------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | | | | | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ -#define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 -#define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS -#define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS -#define _ADJ_ADJ KC_ADJ, KC_ADJ -#define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP -#define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP -#define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + [_LOWER] = LAYOUT_wrapper( + XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, + XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, + ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, + ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, + ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ + ), - [_LOWER] = LAYOUT_wrapper( \ - XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ - XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ - ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ - ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ - ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + /* Raise */ +#define UNDS__MINS KC_UNDS, KC_MINS +#define EQL___PLUS KC_EQL, KC_PLUS +#define LCBR__LBRC KC_LCBR, KC_LBRC +#define RBRC__RCBR KC_RBRC, KC_RCBR +#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +#define EISU__EISU xEISU, xEISU +#define KANA__KANA xKANA, xKANA + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | _ | - | | = | + | | | | | @@ -304,19 +303,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _LSMI_MINS KC_LSMI, KC_MINS -#define _EQL_LSEQ KC_EQL, KC_LSEQ -#define _LSLB_LBRC KC_LSLB, KC_LBRC -#define _RBRC_LSRB KC_RBRC, KC_LSRB -#define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - - [_RAISE] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ - ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ - ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ - _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ - ), + [_RAISE] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, + ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, + ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, + ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. @@ -331,16 +324,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_ADJUST] = LAYOUT( \ - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ + [_ADJUST] = LAYOUT( + XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, + XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ ), - /* AUX modifier key layer - * ,-----------------------------------------. ,-----------------------------------------. + /* AUX modifier key layer */ +#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | | | | | | | | | | @@ -352,14 +346,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | BS | Enter| | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) - [_AUX] = LAYOUT_wrapper( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ - ) + [_AUX] = LAYOUT_wrapper( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ + ) }; #else diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk index fbde2fe6a6..58b7ef4efc 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk +++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk @@ -35,6 +35,20 @@ ifneq ($(strip $(HELIX)),) LED_BACK_ENABLE = no LED_UNDERGLOW_ENABLE = no endif + ifneq ($(filter nooled no-oled,$(strip $1)),) + OLED_ENABLE = no + endif + ifeq ($(strip $1),oled) + OLED_ENABLE = yes + endif + ifneq ($(filter core-oled core_oled newoled new-oled olednew oled-new,$(strip $1)),) + OLED_ENABLE = yes + OLED_SELECT = core + endif + ifneq ($(filter local-oled local_oled oldoled old-oled oledold oled-old,$(strip $1)),) + OLED_ENABLE = yes + OLED_SELECT = local + endif ifeq ($(strip $1),console) CONSOLE_ENABLE = yes endif @@ -79,10 +93,10 @@ ifeq ($(strip $(DEBUG_CONFIG)), yes) OPT_DEFS += -DDEBUG_CONFIG endif -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. -include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) - 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/rev2.h b/keyboards/helix/rev2/rev2.h index bab841fe39..787b6c67bb 100644 --- a/keyboards/helix/rev2/rev2.h +++ b/keyboards/helix/rev2/rev2.h @@ -99,32 +99,3 @@ extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to } #endif #endif - -// Used to create a keymap using only KC_ prefixed keys -#if MATRIX_ROWS == 8 // HELIX_ROWS == 4 - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35 \ - ) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \ - ) -#else // HELIX_ROWS == 5 - #define LAYOUT_kc( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \ - L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \ - ) LAYOUT( \ - KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \ - KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \ - KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \ - KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \ - KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45 \ - ) -#endif diff --git a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c index a9a2c4acca..1544a4fffe 100644 --- a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c @@ -111,7 +111,7 @@ 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 (index == 0) { /* Left side encoder */ if (clockwise) { tap_code(KC_PGDN); @@ -125,6 +125,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } + return true; } layer_state_t layer_state_set_user(layer_state_t state) { diff --git a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c index 5611c96b34..2cfb1152c0 100644 --- a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c +++ b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c @@ -111,7 +111,7 @@ 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 (index == 0) { /* Left side encoder */ if (clockwise) { tap_code(KC_PGDN); @@ -125,6 +125,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c index 18b5591373..6dde7fed52 100644 --- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c @@ -121,7 +121,7 @@ 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 (index == 0) { /* Left side encoder */ if (clockwise) { tap_code(KC_PGDN); @@ -135,6 +135,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } + return true; } layer_state_t layer_state_set_user(layer_state_t state) { diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h index 205867e5b7..b9961f5c48 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h @@ -22,19 +22,21 @@ along with this program. If not, see . #ifndef CONFIG_USER_H #define CONFIG_USER_H -#undef OLED_UPDATE_INTERVAL -#define OLED_UPDATE_INTERVAL 50 - #undef TAPPING_TERM #define TAPPING_TERM 300 #define PERMISSIVE_HOLD /* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD. see tmk_core/common/action_tapping.c */ +#undef OLED_UPDATE_INTERVAL +#define OLED_UPDATE_INTERVAL 50 + // place overrides here // If you need more program area, try select and reduce rgblight modes to use. +#define DISABLE_SYNC_TIMER + // Selection of RGBLIGHT MODE to use. #undef RGBLIGHT_ANIMATIONS #undef RGBLIGHT_EFFECT_BREATHING diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c index a2ec108624..16eff49244 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c @@ -42,6 +42,8 @@ enum custom_keycodes { RGBRST }; +// clang-format off + #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) //Macros @@ -49,24 +51,26 @@ enum custom_keycodes { #define XXXX XXXXXXX #define ____ _______ #define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 -#define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 -#define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ +#define _1_____2_____3_____4_____5 KC_1, KC_2, KC_3, KC_4, KC_5 +#define _6_____7_____8_____9_____0 KC_6, KC_7, KC_8, KC_9, KC_0 +#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ +#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER - +#define GRV__QUOT KC_GRV, KC_QUOT #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------. ,-----------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T KC_Q, KC_W, KC_E, KC_R, KC_T +#define Y_____U_____I_____O_____P KC_Y, KC_U, KC_I, KC_O, KC_P +#define A_____S_____D_____F_____G KC_A, KC_S, KC_D, KC_F, KC_G +#define H_____J_____K_____L____SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define N_____M____COMM__DOT___SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | @@ -78,23 +82,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T -#define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P -#define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G -#define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - [_QWERTY] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ - KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Colemak - * ,-----------------------------------. ,-----------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G KC_Q, KC_W, KC_F, KC_P, KC_G +#define J_____L_____U_____Y____SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define A_____R_____S_____T_____D KC_A, KC_R, KC_S, KC_T, KC_D +#define H_____N_____E_____I_____O KC_H, KC_N, KC_E, KC_I, KC_O +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define K_____M____COMM__DOT___SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | @@ -106,23 +109,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G -#define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D -#define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_COLEMAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ - KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Dvorak - * ,-----------------------------------. ,-----------------------------------. + /* Dvorak */ +#define QUOT_COMM___DOT____P_____Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define F_____G_____C_____R_____L KC_F, KC_G, KC_C, KC_R, KC_L +#define A_____O_____E_____U_____I KC_A, KC_O, KC_E, KC_U, KC_I +#define D_____H_____T_____N_____S KC_D, KC_H, KC_T, KC_N, KC_S +#define SCLN___Q_____J_____K_____X KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define B_____M_____W_____V_____Z KC_B, KC_M, KC_W, KC_V, KC_Z +#define GRV__SLSH KC_GRV, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | @@ -134,23 +137,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L -#define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I -#define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S -#define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z - - [_DVORAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ - KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ - KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------. ,-----------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W___COMM___DOT__SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define M_____R_____D_____Y_____P KC_M, KC_R, KC_D, KC_Y, KC_P +#define A_____O_____E_____I_____U KC_A, KC_O, KC_E, KC_I, KC_U +#define G_____T_____K_____S_____N KC_G, KC_T, KC_K, KC_S, KC_N +#define Z_____X_____C_____V_____F KC_Z, KC_X, KC_C, KC_V, KC_F +#define B_____H_____J_____L____SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | @@ -162,23 +164,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P -#define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U -#define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N -#define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F -#define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_EUCALYN] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ - KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Keypad - * ,-----------------------------------. ,-----------------------------------. + /* Keypad */ +#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST +#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 +#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 +#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 +#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT +#define F1___F6 KC_F1, KC_F6 +#define F2___F7 KC_F2, KC_F7 +#define F3___F8 KC_F3, KC_F8 +#define F4___F9 KC_F4, KC_F9 +#define F5__F10 KC_F5, KC_F10 +#define FF12 LT(_PADFUNC,KC_F12) + /* ,-----------------------------------. ,-----------------------------------. * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | @@ -190,25 +196,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | * `-----------------------------------------------------------------------------------' */ -#define KP_TOP KC_TAB, KC_PSLS, KC_PAST -#define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP_BTM KC_KP_0, KC_COMM, KC_PDOT -#define F_1_6 KC_F1, KC_F6 -#define F_2_7 KC_F2, KC_F7 -#define F_3_8 KC_F3, KC_F8 -#define F_4_9 KC_F4, KC_F9 -#define F_510 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - - [_KEYPAD] = LAYOUT_wrapper( \ - KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ - KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ - KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ - KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ - KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ - ), + [_KEYPAD] = LAYOUT_wrapper( + KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, + KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, + KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, + KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, + KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT + ), /* AUX modifier key layer * ,-----------------------------------. ,-----------------------------------. @@ -223,16 +217,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | 00 | | | | | | | | | | | 00 | | * `-----------------------------------------------------------------------------------' */ - [_KAUX] = LAYOUT( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ + [_KAUX] = LAYOUT( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ ), - /* Keypad function layer - * ,-----------------------------------------. ,-----------------------------------------. + /* Keypad function layer */ +#define PAUS__SLCK__PSCR KC_PAUS, KC_SLCK, KC_PSCR +#define PSCR__SLCK__PAUS KC_PSCR, KC_SLCK, KC_PAUS +#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP +#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME +#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT +#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL +#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | @@ -244,55 +245,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR -#define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS -#define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP -#define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME -#define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - - [_PADFUNC] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ - XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ - XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ + [_PADFUNC] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, + XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, + XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX ), - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + /* Lower */ +#define F1____F2____F3____F4____F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define F6____F7____F8____F9____F10 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 +#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SLCK, KC_INS +#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SLCK, KC_PAUS, XXXX +#define ADJ___ADJ KC_ADJ, KC_ADJ +#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME +#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN +#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + /* ,-----------------------------------------. ,-----------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | | | | | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ -#define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 -#define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS -#define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS -#define _ADJ_ADJ KC_ADJ, KC_ADJ -#define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP -#define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP -#define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + [_LOWER] = LAYOUT_wrapper( + XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, + XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, + ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, + ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, + ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ + ), - [_LOWER] = LAYOUT_wrapper( \ - XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ - XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ - ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ - ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ - ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + /* Raise */ +#define UNDS__MINS KC_UNDS, KC_MINS +#define EQL___PLUS KC_EQL, KC_PLUS +#define LCBR__LBRC KC_LCBR, KC_LBRC +#define RBRC__RCBR KC_RBRC, KC_RCBR +#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +#define EISU__EISU xEISU, xEISU +#define KANA__KANA xKANA, xKANA + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | _ | - | | = | + | | | | | @@ -304,19 +303,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _LSMI_MINS KC_LSMI, KC_MINS -#define _EQL_LSEQ KC_EQL, KC_LSEQ -#define _LSLB_LBRC KC_LSLB, KC_LBRC -#define _RBRC_LSRB KC_RBRC, KC_LSRB -#define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - - [_RAISE] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ - ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ - ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ - _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ - ), + [_RAISE] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, + ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, + ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, + ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. @@ -331,16 +324,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_ADJUST] = LAYOUT( \ - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ + [_ADJUST] = LAYOUT( + XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, + XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ ), - /* AUX modifier key layer - * ,-----------------------------------------. ,-----------------------------------------. + /* AUX modifier key layer */ +#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | | | | | | | | | | @@ -352,14 +346,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | BS | Enter| | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) - [_AUX] = LAYOUT_wrapper( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ - ) + [_AUX] = LAYOUT_wrapper( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ + ) }; #else 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 127d80cc7d..689efe4c88 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c @@ -163,6 +163,10 @@ void render_status(void) { } # ifdef SSD1306OLED +# if OLED_UPDATE_INTERVAL > 0 +uint16_t oled_update_timeout; +# endif + void iota_gfx_task_user(void) { struct CharacterMatrix matrix; @@ -172,6 +176,12 @@ void iota_gfx_task_user(void) { } # endif +#if OLED_UPDATE_INTERVAL > 0 + if (timer_elapsed(oled_update_timeout) < OLED_UPDATE_INTERVAL) { + return; + } + oled_update_timeout = timer_read(); +#endif matrix_clear(&matrix); if (is_keyboard_master()) { render_status(&matrix); diff --git a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c index 903e2637de..8097141dd8 100644 --- a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c @@ -121,7 +121,7 @@ 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 (index == 0) { /* Left side encoder */ if (clockwise) { tap_code(KC_PGDN); @@ -135,6 +135,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/hhkb/ansi/rules.mk b/keyboards/hhkb/ansi/rules.mk index a367ef48d1..3ff7170e0d 100644 --- a/keyboards/hhkb/ansi/rules.mk +++ b/keyboards/hhkb/ansi/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/hhkb/jp/rules.mk b/keyboards/hhkb/jp/rules.mk index 774b444c53..f1294ed611 100644 --- a/keyboards/hhkb/jp/rules.mk +++ b/keyboards/hhkb/jp/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/hhkb_lite_2/info.json b/keyboards/hhkb_lite_2/info.json new file mode 100644 index 0000000000..c1c50583c5 --- /dev/null +++ b/keyboards/hhkb_lite_2/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "HHKB Lite 2", + "url": "", + "maintainer": "qmk", + "width": 15, + "height": 5.75, + "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":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4, "w":6}, + {"x":10, "y":4}, + {"x":11, "y":4}, + + {"x":13.167, "y":4, "w":0.916, "h":0.75}, + {"x":12.25, "y":4.75, "w":0.917, "h":0.75}, + {"x":13.167, "y":4.75, "w":0.916, "h":0.75}, + {"x":14.08, "y":4.75, "w":0.917, "h":0.75} + ] + } + } +} diff --git a/keyboards/hhkb_lite_2/rules.mk b/keyboards/hhkb_lite_2/rules.mk index dd02717921..aa224ffe40 100644 --- a/keyboards/hhkb_lite_2/rules.mk +++ b/keyboards/hhkb_lite_2/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/hid_liber/config.h b/keyboards/hid_liber/config.h index f35799b1ac..e0f92dee84 100755 --- a/keyboards/hid_liber/config.h +++ b/keyboards/hid_liber/config.h @@ -34,6 +34,10 @@ // HID Liberation Device uses custom matrix code to accomodate a 74HC238 3 to 8 decoder on pins B1, B2 and B3. //#define DIODE_DIRECTION +#define LED_CAPS_LOCK_PIN B5 +#define LED_SCROLL_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/hid_liber/hid_liber.c b/keyboards/hid_liber/hid_liber.c index 2d2130743f..2e4ddb3293 100755 --- a/keyboards/hid_liber/hid_liber.c +++ b/keyboards/hid_liber/hid_liber.c @@ -16,24 +16,3 @@ * along with this program. If not, see . */ #include "hid_liber.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B5); - setPinOutput(B6); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(B5, !led_state.caps_lock); - writePin(B6, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/hid_liber/keymaps/bakageta/rules.mk b/keyboards/hid_liber/keymaps/bakageta/rules.mk index 0f131bce9b..1697e07c56 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 = yes # Virtual DIP switch configuration(+1000) +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) diff --git a/keyboards/hid_liber/rules.mk b/keyboards/hid_liber/rules.mk index 44833d7555..ea64be00da 100755 --- a/keyboards/hid_liber/rules.mk +++ b/keyboards/hid_liber/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/honeycomb/info.json b/keyboards/honeycomb/info.json new file mode 100644 index 0000000000..1124a8b133 --- /dev/null +++ b/keyboards/honeycomb/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "Honeycomb", + "url": "", + "maintainer": "filoxo", + "width": 4, + "height": 4, + "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}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk index d6f98125ee..a9a01d8673 100755 --- a/keyboards/honeycomb/rules.mk +++ b/keyboards/honeycomb/rules.mk @@ -14,7 +14,7 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration #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 diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk index 95f6c7ec6d..dd175e9f69 100644 --- a/keyboards/hotdox/rules.mk +++ b/keyboards/hotdox/rules.mk @@ -16,7 +16,7 @@ BOOTLOADER = atmel-dfu # CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone UNICODE_ENABLE = yes # Unicode -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +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 diff --git a/keyboards/hp69/rules.mk b/keyboards/hp69/rules.mk index 96ad29a6f2..13e88cfe2d 100644 --- a/keyboards/hp69/rules.mk +++ b/keyboards/hp69/rules.mk @@ -3,7 +3,7 @@ MCU = STM32F303 BOARD = QMK_PROTON_C # Bootloader selection -BOOTLOADER = atmel-dfu +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable @@ -20,4 +20,4 @@ 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 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk index 74889decfb..1a0c1abbd8 100644 --- a/keyboards/hs60/v2/ansi/rules.mk +++ b/keyboards/hs60/v2/ansi/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# 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. @@ -20,7 +23,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no # Audio output on port C6 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in -#SERIAL_LINK_ENABLE = yes CIE1931_CURVE = yes diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk index 561a8cd06a..87d86ccd4c 100644 --- a/keyboards/hs60/v2/hhkb/rules.mk +++ b/keyboards/hs60/v2/hhkb/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# 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. @@ -20,7 +23,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no # Audio output on port C6 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in -#SERIAL_LINK_ENABLE = yes CIE1931_CURVE = yes diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk index 62af70cc05..53b801289d 100644 --- a/keyboards/hs60/v2/iso/rules.mk +++ b/keyboards/hs60/v2/iso/rules.mk @@ -2,6 +2,9 @@ MCU = STM32F303 BOARD = QMK_PROTON_C +# 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. @@ -20,7 +23,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no # Audio output on port C6 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in -#SERIAL_LINK_ENABLE = yes CIE1931_CURVE = yes diff --git a/keyboards/hub16/keymaps/ahk_companion/keymap.c b/keyboards/hub16/keymaps/ahk_companion/keymap.c index bbc2ac09a1..10f641b6f8 100644 --- a/keyboards/hub16/keymaps/ahk_companion/keymap.c +++ b/keyboards/hub16/keymaps/ahk_companion/keymap.c @@ -103,7 +103,7 @@ const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( my_layer5_layer ); -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_MPRV); @@ -117,6 +117,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + return true; } void post_process_record_user(uint16_t keycode, keyrecord_t *record) { // Allow for a preview of changes when modifying RGB diff --git a/keyboards/hub16/keymaps/default/keymap.c b/keyboards/hub16/keymaps/default/keymap.c index e077fe7409..1c1d188f29 100755 --- a/keyboards/hub16/keymaps/default/keymap.c +++ b/keyboards/hub16/keymaps/default/keymap.c @@ -33,7 +33,7 @@ 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 (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -47,4 +47,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MNXT); } } + return true; } diff --git a/keyboards/hub16/keymaps/macro/keymap.c b/keyboards/hub16/keymaps/macro/keymap.c index 3bf8fa31fd..e4cf9da5eb 100755 --- a/keyboards/hub16/keymaps/macro/keymap.c +++ b/keyboards/hub16/keymaps/macro/keymap.c @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Keyboard is setup to 'wrap' the pressed key with an unused Fxx key, // allowing for easy differentiation from a real keyboard. -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) { register_code(KC_WRAP); @@ -76,6 +76,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { unregister_code(KC_WRAP); } } + return true; } // Below stolen from TaranVH (https://github.com/TaranVH/2nd-keyboard/blob/master/HASU_USB/F24/keymap.c) diff --git a/keyboards/hub16/keymaps/peepeetee/config.h b/keyboards/hub16/keymaps/peepeetee/config.h new file mode 100644 index 0000000000..aa9e081c75 --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/config.h @@ -0,0 +1,57 @@ +/* +Copyright 2019 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 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 20 + +// Time out one shot layers after 3 seconds +#define ONESHOT_TIMEOUT 3000 + +// Undef and redefine default brightness to half of 255 +#undef RGBLIGHT_LIMIT_VAL +#define RGBLIGHT_LIMIT_VAL 255 + +//Define a preview timeout for RGB reviews +#define PREVIEW_TIMEOUT 5000 + +// Enable Light Layers implementation +#define RGBLIGHT_LAYERS +// Allow Light Layers to override RGB off configuration +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF diff --git a/keyboards/hub16/keymaps/peepeetee/keymap.c b/keyboards/hub16/keymaps/peepeetee/keymap.c new file mode 100644 index 0000000000..4790feda0a --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/keymap.c @@ -0,0 +1,209 @@ +/* +Copyright 2019 Josh Johnson 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 + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) +static uint32_t rgb_preview_timer = 0; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + // Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3 or Toggle Layer 4) + [0] = LAYOUT( + KC_MPLY, KC_MUTE, + TG(3), TG(2), TG(1), TG(0), + KC_PSCR, KC_SLCK, KC_PAUS, A(KC_F4), + KC_INS, KC_HOME, KC_PGUP, KC_F12, //Transparent to let you go between layers + KC_DEL, A(KC_F4), KC_PGDN, KC_CALCULATOR + + ), + + [1] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F7, KC_F8, KC_F9, KC_F10, + KC_F4, KC_F5, KC_F6, KC_F11, + KC_F1, KC_F2, KC_F3, KC_F12 //Transparent to let you go between layers + ), + + + //Layer 5 - Keyboard Lights, Programming and Special Functions + [2] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + RGB_TOG, EEP_RST, RESET, KC_TRNS + ), + + [3] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + RGB_TOG, EEP_RST, RESET, KC_TRNS + ) + + + //Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3 or Toggle Layer 4) + // [0] = LAYOUT( + // KC_MPLY, 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, + // OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers + // ), + + // [1] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16), + // LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20), + // LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + //Layer 2 - Shift + Function Key Layer + // [2] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16), + // LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20), + // LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 3 - Control + Function Key + // [3] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16), + // LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20), + // LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 4 - Multimedia + // [4] = LAYOUT( + // KC_MPLY, KC_MUTE, + // KC_MPRV, KC_MPLY, KC_U, KC_K, + // KC_NO, KC_NO, KC_ENT, KC_X, + // KC_NO, RESET, LSFT(KC_HASH), KC_J, + // TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 5 - Keyboard Lights, Programming and Special Functions + // [5] = LAYOUT( + // KC_MPLY, KC_MUTE, + // RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + // RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + // RGB_TOG, EEP_RST, RESET, KC_LSHIFT, + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), +}; + +const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_WHITE} + ); +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_ORANGE} + ); + const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_RED} + ); + const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_BLUE} + ); +// const rgblight_segment_t PROGMEM my_layer4_layer[] = RGBLIGHT_LAYER_SEGMENTS( +// {0,16,HSV_WHITE} +// ); +// const rgblight_segment_t PROGMEM my_layer5_layer[] = RGBLIGHT_LAYER_SEGMENTS( +// {0,16,HSV_TEAL} +// ); +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_layer0_layer, + my_layer1_layer, + my_layer2_layer, + my_layer3_layer//, + // my_layer4_layer, + // my_layer5_layer + ); + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* Left Encoder */ + if (clockwise) { + tap_code(KC_MPRV); + } else { + tap_code(KC_MNXT); + } + } else if (index == 1) { /* Right Encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + return true; +} +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + // Allow for a preview of changes when modifying RGB +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) + switch (keycode) { + case RGB_TOG ... VLK_TOG: + for (uint8_t i = 0; i < RGBLIGHT_MAX_LAYERS; i++) { + rgblight_set_layer_state(i, false); + } + rgb_preview_timer = timer_read32(); + break; + } +# endif + return; +} + +//Set the appropriate layer color +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, false); + 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)); + // rgblight_set_layer_state(4, layer_state_cmp(state, 4)); + // rgblight_set_layer_state(5, layer_state_cmp(state, 5)); + return state; +} + +void keyboard_post_init_user(void) { + //Enable the LED layers + rgblight_layers = my_rgb_layers; + layer_state_set_user(layer_state); +} + +void matrix_scan_user(void) { +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) + // Allow preview for + if (rgb_preview_timer && TIMER_DIFF_32(timer_read32(), rgb_preview_timer) > PREVIEW_TIMEOUT) { + rgb_preview_timer = 0; + default_layer_state_set_user(default_layer_state); + layer_state_set_user(layer_state); + led_update_user((led_t) host_keyboard_leds()); + } +# endif +} + +//EEPROM Reset Function +void eeconfig_init_user(void) { + rgblight_enable(); // Enable RGB by default + rgblight_sethsv_orange(); // Set it to orange by default +} diff --git a/keyboards/hub16/keymaps/peepeetee/rules.mk b/keyboards/hub16/keymaps/peepeetee/rules.mk new file mode 100644 index 0000000000..384d149ae2 --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/rules.mk @@ -0,0 +1 @@ +BOOTMAGIC_ENABLE = lite \ No newline at end of file diff --git a/keyboards/hub16/keymaps/via/keymap.c b/keyboards/hub16/keymaps/via/keymap.c index c6f119adb7..c7facf2ed4 100755 --- a/keyboards/hub16/keymaps/via/keymap.c +++ b/keyboards/hub16/keymaps/via/keymap.c @@ -49,7 +49,7 @@ 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 (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -63,4 +63,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MNXT); } } + return true; } diff --git a/keyboards/hub16/readme.md b/keyboards/hub16/readme.md index db2822c872..f2bcf4b0a7 100755 --- a/keyboards/hub16/readme.md +++ b/keyboards/hub16/readme.md @@ -10,6 +10,15 @@ For more information regarding the keyboard, please visit the [Hub16 Website](ht Make example for this keyboard (after setting up your build environment): + make hub16:default + +Flashing example for this keyboard: + make hub16:default:flash +To reset the board into bootloader mode, do one of the following: + +* Press the reset switch between the center two USB-C ports while the board is plugged in +* Hold the top left key while connecting the USB cable (also erases persistent settings) + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/hub16/rules.mk b/keyboards/hub16/rules.mk index b7f940198f..07d286c17f 100755 --- a/keyboards/hub16/rules.mk +++ b/keyboards/hub16/rules.mk @@ -4,7 +4,7 @@ BOOTLOADER = caterina # Build Options CUSTOM_MATRIX = lite # Custom scanning of matrix -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/hub20/config.h b/keyboards/hub20/config.h index 8ebe1f9e2b..f8e5d6be8d 100644 --- a/keyboards/hub20/config.h +++ b/keyboards/hub20/config.h @@ -1,5 +1,6 @@ /* -Copyright 2020 joshajohnson +Copyright 2020 joshajohnson +Copyright 2021 peepeetee This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,29 +42,56 @@ along with this program. If not, see . #define RGB_DI_PIN B15 #define RGBLED_NUM 27 -#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 + +#define DRIVER_LED_TOTAL 27 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 27 +#endif + +#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 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/hub20/hub20.c b/keyboards/hub20/hub20.c index 306ab788d9..f7171c5219 100644 --- a/keyboards/hub20/hub20.c +++ b/keyboards/hub20/hub20.c @@ -1,4 +1,4 @@ -/* Copyright 2020 joshajohnson +/* Copyright 2020 joshajohnson 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 @@ -16,3 +16,156 @@ #include "hub20.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + {NO_LED,NO_LED,NO_LED,NO_LED}, + { 7, 8, 9, 10}, + { 11, 12, 13, 14}, + { 15, 16, 17, 18}, + { 19, 20, 21, 22}, + { 23, 24, 25, 26} + //todo: assign leds to keys differently for the different layouts +}, { + // LED Index to Physical Position + { 190, 50}, { 111, 50}, { 35, 50}, {38, 0}, {38, 35}, {186, 35}, {186, 0}, // UNDERGLOW + //todo: underglow location needs to be recalculated. The top row is above row 4, and for now they have the same y value 0 + { 0, 0}, {75, 0}, {150, 0}, {225, 0}, // row 4 + { 0, 16}, {75, 16}, {150, 16}, {225, 16}, // row 3 + { 0, 32}, {75, 32}, {150, 32}, {225, 32}, // row 2 + { 0, 48}, {75, 48}, {150, 48}, {225, 48}, // row 1 + { 0, 64}, {75, 64}, {150, 64}, {225, 64} // row 0 + +}, { + // LED Index to Flag + LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, // UNDERGLOW + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // row 4 + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // row 3 + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // row 2 + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // row 1 + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT // row 0 + +} }; +#endif + + + +// #if LED_MERGE_NUMPAD_LEFT_HANDED_ENTER && LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO +// #error lower left enter conflicts with lower left zero +// #endif + +// #if LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER && LED_MERGE_NUMPAD_LEFT_HANDED_ZERO +// #error lower right enter conflicts with lower right zero +// #endif + +// /* LAYOUT_left_handed + + +// * ┌───┬───┐ +// * │01 │02 │ +// * ┌───┼───┼───┼───┐ +// * │10 │11 │12 │13 │ +// * ├───┼───┼───┼───┤ +// * │ │21 │22 │23 │ +// * │20 ├───┼───┼───┤ +// * │ │31 │32 │33 │ +// * ├───┼───┼───┼───┤ +// * │ │41 │42 │43 │ +// * │40 ├───┼───┴───┤ +// * │ │51 │ 52 │ +// * └───┴───┴───────┘ +// */ + +// #ifndef LED_MERGE_NUMPAD_LEFT_HANDED_PLUS //key 20 +// #define LED_MERGE_NUMPAD_LEFT_HANDED_PLUS FALSE +// #endif // LED_MERGE_NUMPAD_LEFT_HANDED_PLUS + +// #ifndef LED_MERGE_NUMPAD_LEFT_HANDED_ENTER //key 40 +// #define LED_MERGE_NUMPAD_LEFT_HANDED_ENTER FALSE +// #endif // LED_MERGE_NUMPAD_LEFT_HANDED_ENTER + +// #ifndef LED_MERGE_NUMPAD_LEFT_HANDED_ZERO //key 52 +// #define LED_MERGE_NUMPAD_LEFT_HANDED_ZERO FALSE +// #endif // LED_MERGE_NUMPAD_LEFT_HANDED_ZERO + + +// /* LAYOUT_right_handed + + +// * ┌───┬───┐ +// * │01 │02 │ +// * ┌───┼───┼───┼───┐ +// * │10 │11 │12 │13 │ +// * ├───┼───┼───┼───┤ +// * │20 │21 │22 │ │ +// * ├───┼───┼───┤23 │ +// * │30 │31 │32 │ │ +// * ├───┼───┼───┼───┤ +// * │40 │41 │42 │ │ +// * ├───┴───┼───┤43 │ +// * │ 50 │52 │ │ +// * └───────┴───┴───┘ +// */ +// //LOCATION OF bottom row 0 NOT TESTED, WAITING ENDORSEMENT FROM MANUFACTURER + +// #ifndef LED_MERGE_NUMPAD_RIGHT_HANDED_PLUS // key 23 +// #define LED_MERGE_NUMPAD_RIGHT_HANDED_PLUS FALSE +// #endif // LED_MERGE_NUMPAD_RIGHT_HANDED_PLUS + +// #ifndef LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER // key 43 +// #define LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER FALSE +// #endif // LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER + +// #ifndef LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO // key 50 (confirm with manufacturer) +// #define LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO FALSE +// #endif // LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO + +// uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) { +// // Keys here have 2 leds. Here we add the led that is not bound to the key +// // and the default led would be added +// // by the default code that runs after this in rgb_matrix_map_row_column_to_led + +// uint8_t counter = 0; + +// #if LED_MERGE_NUMPAD_LEFT_HANDED_PLUS //key 20, leds 7 and 11, 7 already bound + +// if (row == 2 && column == 0) { +// led_i[counter] = 11; +// counter ++; +// } +// #endif +// #if LED_MERGE_NUMPAD_LEFT_HANDED_ENTER //key 40, leds 19 and 23, 23 already bound +// if (row == 4 && column == 0) { +// led_i[counter] = 23; +// counter ++; +// } +// #endif +// #if LED_MERGE_NUMPAD_LEFT_HANDED_ZERO //key 52, leds 25 and 26, 26 already bound +// if (row == 5 && column == 2) { +// led_i[counter] = 26; +// counter ++; +// } +// #endif + +// #if LED_MERGE_NUMPAD_RIGHT_HANDED_PLUS // key 23, led 14 and 18, 14 already bound +// if (row == 2 && column == 3) { +// led_i[counter] = 18; +// counter ++; +// } +// #endif +// #if LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER // key 43, led 22 and 26, 22 already bound +// if (row == 4 && column == 3) { +// led_i[counter] = 26; +// counter ++; +// } +// #endif +// #if LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO // key 50 (confirm with manufacturer) +// // LED 23 and 24, 23(?) already bound +// if (row == 5 && column == 0) { +// led_i[counter] = 24; +// counter ++; +// } +// #endif +// return counter; +// } diff --git a/keyboards/hub20/hub20.h b/keyboards/hub20/hub20.h index b4b1c79924..a86cc02c77 100644 --- a/keyboards/hub20/hub20.h +++ b/keyboards/hub20/hub20.h @@ -29,6 +29,24 @@ * represents the switch matrix. */ + + /* LAYOUT_all + + + * ┌───┬───┐ + * │01 │02 │ + * ┌───┼───┼───┼───┐ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ + * │20 │21 │22 │23 │ + * ├───┼───┼───┼───┤ + * │30 │31 │32 │33 │ + * ├───┼───┼───┼───┤ + * │40 │41 │42 │43 │ + * ├───┼───┼───┼───┤ + * │50 │51 │52 │53 │ + * └───┴───┴───┴───┘ + */ #define LAYOUT_all( \ K01, K02, \ K10, K11, K12, K13, \ @@ -45,3 +63,75 @@ { K40, K41, K42, K43, }, \ { K50, K51, K52, K53, }, \ } + + /* LAYOUT_left_handed + + + * ┌───┬───┐ + * │01 │02 │ + * ┌───┼───┼───┼───┐ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ + * │ │21 │22 │23 │ + * │20 ├───┼───┼───┤ + * │ │31 │32 │33 │ + * ├───┼───┼───┼───┤ + * │ │41 │42 │43 │ + * │40 ├───┼───┴───┤ + * │ │51 │ 52 │ + * └───┴───┴───────┘ + */ +#define LAYOUT_left_handed( \ + K01, K02, \ + K10, K11, K12, K13, \ + K21, K22, K23, \ + K20, K31, K32, K33, \ + K41, K42, K43, \ + K40, K51, K52 \ +) \ +{ \ + { ___, K01, K02, ___, }, \ + { K10, K11, K12, K13, }, \ + { K20, K21, K22, K23, }, \ + { ___, K31, K32, K33, }, \ + { K40, K41, K42, K43, }, \ + { ___, K51, K52, ___, }, \ +} + + + /* LAYOUT_right_handed + + + * ┌───┬───┐ + * │01 │02 │ + * ┌───┼───┼───┼───┐ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ + * │20 │21 │22 │ │ + * ├───┼───┼───┤23 │ + * │30 │31 │32 │ │ + * ├───┼───┼───┼───┤ + * │40 │41 │42 │ │ + * ├───┴───┼───┤43 │ + * │ 50(not sure, confirm) │52 │ │ + * └───────┴───┴───┘ + */ + //NOT TESTED, WAITING ENDORSEMENT FROM MANUFACTURER +#define LAYOUT_right_handed( \ + K01, K02, \ + K10, K11, K12, K13, \ + K20, K21, K22, \ + K30, K31, K32, K23, \ + K40, K41, K42, \ + K50, K52, K43 \ +) \ +{ \ + { ___, K01, K02, ___, }, \ + { K10, K11, K12, K13, }, \ + { K20, K21, K22, K23, }, \ + { K30, K31, K32, ___, }, \ + { K40, K41, K42, K43, }, \ + { K50, ___, K52, ___, }, \ +} + + diff --git a/keyboards/hub20/info.json b/keyboards/hub20/info.json index d60212c273..d58294ffbf 100644 --- a/keyboards/hub20/info.json +++ b/keyboards/hub20/info.json @@ -30,6 +30,56 @@ {"label":"0", "x":2, "y":5}, {"label":"0", "x":3, "y":5} ] + }, + "LAYOUT_left_handed": { + "layout": [ + {"label":"Mute", "x":0.5, "y":0}, + {"label":"Play / Pause", "x":2.5, "y":0}, + {"label":"-", "x":0, "y":1}, + {"label":"*", "x":1, "y":1}, + {"label":"/", "x":2, "y":1}, + {"label":"Numlock", "x":3, "y":1}, + {"label":"7", "x":1, "y":2}, + {"label":"8", "x":2, "y":2}, + {"label":"9", "x":3, "y":2}, + {"label":"+", "x":0, "y":2, "h":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":3, "y":5, "w":2} + ] + }, + "LAYOUT_right_handed": { + "layout": [ + {"label":"Mute", "x":0.5, "y":0}, + {"label":"Play / Pause", "x":2.5, "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":"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/hub20/keymaps/default/keymap.c b/keyboards/hub20/keymaps/default/keymap.c index c467312877..a0f048825e 100644 --- a/keyboards/hub20/keymaps/default/keymap.c +++ b/keyboards/hub20/keymaps/default/keymap.c @@ -36,7 +36,7 @@ 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 (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -50,4 +50,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MPRV); } } + return true; } diff --git a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c new file mode 100644 index 0000000000..395ebc15b4 --- /dev/null +++ b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2020 joshajohnson 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 + + + +// #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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_left_handed( + KC_MUTE, KC_MPLY, + KC_PMNS, KC_PAST, KC_PSLS, MO_NLCK, + KC_P7, KC_P8, KC_P9, + KC_PPLS, KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3, + KC_PENT, KC_PDOT, KC_P0 +), + [1] = LAYOUT_left_handed( + RESET, _______, + RGB_TOG, RGB_RMOD, RGB_MOD, _______, + _______, RGB_VAD, RGB_VAI, _______, + RGB_HUD, RGB_HUI, _______, + _______, RGB_SAD, RGB_SAI, _______, + _______, _______ +) +}; + +void 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) { /* Right Encoder */ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } +} + diff --git a/keyboards/hub20/keymaps/macro/keymap.c b/keyboards/hub20/keymaps/macro/keymap.c index 7007a2f0ba..099fff8755 100644 --- a/keyboards/hub20/keymaps/macro/keymap.c +++ b/keyboards/hub20/keymaps/macro/keymap.c @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Keyboard is setup to 'wrap' the pressed key with an unused Fxx key, // allowing for easy differentiation from a real keyboard. -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) { register_code(KC_WRAP); @@ -81,6 +81,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { unregister_code(KC_WRAP); } } + return true; } // Below stolen from TaranVH (https://github.com/TaranVH/2nd-keyboard/blob/master/HASU_USB/F24/keymap.c) diff --git a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c new file mode 100644 index 0000000000..89466d31ba --- /dev/null +++ b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c @@ -0,0 +1,66 @@ +/* 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 + + + +// #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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//NOT TESTED, WAITING ENDORSEMENT FROM MANUFACTURER + [0] = LAYOUT_right_handed( + KC_MUTE, KC_MPLY, + MO_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_right_handed( + RESET, _______, + RGB_TOG, RGB_RMOD, RGB_MOD, _______, + _______, RGB_VAD, RGB_VAI, + _______, RGB_HUD, RGB_HUI, _______, + _______, RGB_SAD, RGB_SAI, + _______, _______, _______ +) +}; + + + + +void 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) { /* Right Encoder */ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } +} + diff --git a/keyboards/hub20/keymaps/via/keymap.c b/keyboards/hub20/keymaps/via/keymap.c index 75a0a927af..3f3f3ebd86 100644 --- a/keyboards/hub20/keymaps/via/keymap.c +++ b/keyboards/hub20/keymaps/via/keymap.c @@ -52,7 +52,7 @@ 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 (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -66,4 +66,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MPRV); } } + return true; } diff --git a/keyboards/hub20/readme.md b/keyboards/hub20/readme.md index e2477b012d..1abfa0dea8 100755 --- a/keyboards/hub20/readme.md +++ b/keyboards/hub20/readme.md @@ -16,4 +16,9 @@ Flashing example for this keyboard: make hub20:default:flash +To reset the board into bootloader mode, do one of the following: + +* Press the reset switch between the center two USB-C ports while the board is plugged in +* Hold the top left key while connecting the USB cable (also erases persistent settings) + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/hub20/rules.mk b/keyboards/hub20/rules.mk index b520ee35af..59a4b8aa15 100644 --- a/keyboards/hub20/rules.mk +++ b/keyboards/hub20/rules.mk @@ -1,22 +1,27 @@ # MCU name MCU = STM32F072 +# Bootloader selection +BOOTLOADER = stm32-dfu + # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.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 +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 ENCODER_ENABLE = yes # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/id80/ansi/keymaps/msf/config.h b/keyboards/id80/ansi/keymaps/msf/config.h new file mode 100644 index 0000000000..4f3cc95f30 --- /dev/null +++ b/keyboards/id80/ansi/keymaps/msf/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 msf@github + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + 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 +*/ +#pragma once + +#define COMBO_COUNT 3 +#define COMBO_TERM 200 diff --git a/keyboards/id80/ansi/keymaps/msf/keymap.c b/keyboards/id80/ansi/keymaps/msf/keymap.c new file mode 100644 index 0000000000..6bb91f0f19 --- /dev/null +++ b/keyboards/id80/ansi/keymaps/msf/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2021 Miguel Filipe + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General 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_VOLD, KC_VOLU, KC_F8, KC_F9, KC_F10, KC_PSTE, KC_PSCR, KC_DEL, 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_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_LSFT, KC_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, KC_CALC, _______, _______, _______, KC_MUTE, KC_F6, KC_F7, KC_MPLY, KC_MSTP, KC_BRID, KC_BRIU, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC, + _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +enum combos { + SLSHDN_PGDN, + SLSHUP_PGUP, + RALTBKSPC_DELETE, +}; + +const uint16_t PROGMEM slashDown_combo[] = {KC_SLSH, KC_DOWN, COMBO_END}; +const uint16_t PROGMEM slashUp_combo[] = {KC_SLSH, KC_UP, COMBO_END}; +const uint16_t PROGMEM raltBackspace_combo[] = {KC_RALT, KC_BSPACE, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [SLSHDN_PGDN] = COMBO(slashDown_combo, KC_PGDN), + [SLSHUP_PGUP] = COMBO(slashUp_combo, KC_PGUP), + [RALTBKSPC_DELETE] = COMBO(raltBackspace_combo, KC_DEL), +}; diff --git a/keyboards/id80/ansi/keymaps/msf/readme.md b/keyboards/id80/ansi/keymaps/msf/readme.md new file mode 100644 index 0000000000..7ab300f672 --- /dev/null +++ b/keyboards/id80/ansi/keymaps/msf/readme.md @@ -0,0 +1,4 @@ +# slightly modified: +- some key combos +- don't use f-keys, +- pgup/down, home/end tweaks diff --git a/keyboards/id80/ansi/keymaps/msf/rules.mk b/keyboards/id80/ansi/keymaps/msf/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/id80/ansi/keymaps/msf/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/id80/info.json b/keyboards/id80/info.json index 7e5a2c4ce6..251ae157c9 100644 --- a/keyboards/id80/info.json +++ b/keyboards/id80/info.json @@ -6,60 +6,145 @@ "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 80, - "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":"Fn", "x":14, "y":0}, {"label":"Insert", "x":15.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":"Home", "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":"Delete", "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":"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":"\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.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}] + "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":"Fn", "x":14, "y":0}, + {"label":"Insert", "x":15.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":"Home", "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":"Delete", "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":"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":"\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.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} + ] }, "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":"Fn", "x":14, "y":0}, - {"label":"Insert", "x":15.25, "y":0}, + {"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":"Fn", "x":14, "y":0}, + {"label":"Insert", "x":15.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":"Home", "x":15.25, "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":"Home", "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":"Delete", "x":15.25, "y":2.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":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"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}, @@ -72,7 +157,7 @@ {"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.5, "y":2.25, "w":1.5, "h":2}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"ISO \\", "x":1.25, "y":4.25}, @@ -93,13 +178,13 @@ {"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.5}, - {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, + {"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} ] - } + } } } diff --git a/keyboards/id80/keymaps/rverst/keymap.c b/keyboards/id80/keymaps/rverst/keymap.c new file mode 100644 index 0000000000..3656f48dfe --- /dev/null +++ b/keyboards/id80/keymaps/rverst/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Robert Verst @rverst + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rverst.h" + +//#define CLOSED_CASE // no underglow RGB visible + +// clang-format off +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 , MO(4) , 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_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_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, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RV_SNAP, 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_MUTE, + RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , RV_RT , RV_TM , KC_TRNS, RV_UUML, KC_TRNS, RV_OUML, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD, + KC_CAPS, RV_AUML, RV_SZ , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, KC_TRNS, RV_SINC, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT + ), + [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_TRNS, MO(4) , 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_VOLU, + 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_VOLD, + 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_LSFT, 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_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(3) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [3] = LAYOUT( + RV_SNAP, 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_MUTE, + RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, RV_UUML, KC_TRNS, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD, + KC_CAPS, RV_AUML, RV_RT , RV_SZ , RV_TM , KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , KC_TRNS, RV_OUML, RV_SINC, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT + ), + [4] = LAYOUT( + DEBUG , RV_SM0 , RV_SM1 , RV_SM2 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , DF(0) , DF(2) , KC_TRNS, MO(5) , + RV_SAYM, RV_SM3 , RV_SM4 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_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, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RGB_TOG, + KC_NO , KC_NO , GUI_ON , KC_NO , KC_NO , RCG_SWP, RGB_RMOD,RGB_M_P, RGB_MOD + ), + [5] = LAYOUT( + RESET , RV_SM0S, RV_SM1S, RV_SM2S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS, + KC_NO , RV_SM3S, RV_SM4S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , GUI_OFF, KC_NO , KC_NO , RCG_NRM, KC_NO , KC_NO , KC_NO + ) +}; +// clang-format on + +void keyboard_post_init_keymap(void) { +#ifdef CLOSED_CASE + if (rgblight_is_enabled()) { + rgblight_disable(); + } +#endif +} diff --git a/keyboards/id80/keymaps/rverst/readme.md b/keyboards/id80/keymaps/rverst/readme.md new file mode 100644 index 0000000000..ba33980edb --- /dev/null +++ b/keyboards/id80/keymaps/rverst/readme.md @@ -0,0 +1,23 @@ +# idobao id80 + +This is my layout for the idobao id80. It depends of my [user files](../../../../users/rverst) +and the main goal is to give an convenient and unified access to some special keys +(umlauts, ß, €) for different operating systems (Mac, Windows and Linux). + +## Overview + +- Layer 0 is the base US-ANSI layout with Mac-style system keys and a OSL-Key for Layer 1 right of the space bar. +- Layer 1 has the special keys and some media-functions like mute, volume up/down etc. +- Layer 2 and 3 are basically the same as Layer 0 and 1 but in Colemak-Layout +- Layer 4 and 5 has some functions like switching the keyboard mode, switching the default layer etc. + + +## Keyboard modes + +- *F1:* Mac Unicode mode (use 'Unicode Hex Input' as input source) +- *F2:* Windows Unicode mode (use [WinCompse](https://github.com/SamHocevar/wincompose) software) +- *F3:* Linux Unicode mode (not tested yet but should work out of the box) +- *1:* Mac legacy mode (uses option-sequences, e.g. `