Compare commits
106 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ec7a9896db | |||
| 072947e573 | |||
| fe50774cb4 | |||
| 39324e642f | |||
| b07a68230d | |||
| dccada95aa | |||
| 380e0c9cad | |||
| 158aaef78c | |||
| 5acc3b2b7b | |||
| 78900720fd | |||
| c67c3d375b | |||
| 75402109e9 | |||
| fa657fef70 | |||
| eb78ca1c1a | |||
| d28a50e176 | |||
| c7662e4f36 | |||
| 73cb6fd89f | |||
| d538451adb | |||
| cf84ea7662 | |||
| 8c35011d0a | |||
| 8c5acdea12 | |||
| 60c5ad821c | |||
| 622dc56250 | |||
| d079372580 | |||
| af70e3759a | |||
| 4bcc80ad46 | |||
| d09c11dc78 | |||
| 82f9019cc9 | |||
| 4e2effc538 | |||
| 8d5517fa63 | |||
| ee1505971f | |||
| b6e1a20950 | |||
| f2c789bb4a | |||
| fab50be817 | |||
| f04fd13dff | |||
| eb60235cd5 | |||
| 2fb9816c77 | |||
| 6fbe91aecd | |||
| a6857872f2 | |||
| 56323f75c6 | |||
| 11031adc1b | |||
| d79f46e408 | |||
| 2ddfd60be7 | |||
| 63ef6516d3 | |||
| 522bf1daf2 | |||
| a763dd5bbd | |||
| c70c99367a | |||
| b5b06f1094 | |||
| caa7599b83 | |||
| c2dbbc060a | |||
| 875eb43a28 | |||
| 2908f0b846 | |||
| a3d938d822 | |||
| 6dfd7ed46f | |||
| 7b5d7907df | |||
| 79ad561b67 | |||
| 5a5f68038e | |||
| 4d4d7b76b0 | |||
| c58c5fa8fa | |||
| 565bb704e0 | |||
| 890909c2d7 | |||
| f15fff3258 | |||
| 7d94db8661 | |||
| 063f1444c6 | |||
| 2e671cfd8b | |||
| 1b8b6801d4 | |||
| cc62eb503d | |||
| 0c4fd514f1 | |||
| 9be6d76c61 | |||
| 3d10171e2c | |||
| e3ef5b2d9d | |||
| f8cf58a512 | |||
| efa5b30cfd | |||
| fb54a59bba | |||
| fbbc71ec34 | |||
| a0bb7ff992 | |||
| 6eb6e3048a | |||
| d08da05cb8 | |||
| 8336b5c72f | |||
| b23ddb9ad8 | |||
| 67d512e639 | |||
| 4fbb395602 | |||
| 300505bd9e | |||
| 38f07e1fd2 | |||
| b82f6ac402 | |||
| be967d42d2 | |||
| af72a58c8f | |||
| 9fb51cfe2b | |||
| 6d21898c14 | |||
| 096dc672c1 | |||
| 8e64ff574a | |||
| 5e2368984e | |||
| 15af5d7d0d | |||
| 62c1787d72 | |||
| 8fe667a1a4 | |||
| 031ccd4887 | |||
| 43fc7b5a4f | |||
| 4ced8d9371 | |||
| 1c6cdb8d74 | |||
| c663f5e9f3 | |||
| 977918982d | |||
| c2f7974c8e | |||
| bc8ac86422 | |||
| 33adb8cba0 | |||
| e754c9f2b4 | |||
| 869b7d9ae6 |
@@ -1,7 +1,7 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: QMK Discord
|
||||
url: https://discord.gg/Uq7gcHh
|
||||
url: https://discord.gg/qmk
|
||||
about: Ask questions, discuss issues and features. Chill.
|
||||
- name: OLKB Subreddit
|
||||
url: https://www.reddit.com/r/olkb
|
||||
|
||||
+46
-36
@@ -1,46 +1,56 @@
|
||||
core:
|
||||
- quantum/**/*
|
||||
- tmk_core/**/*
|
||||
- drivers/**/*
|
||||
- tests/**/*
|
||||
- util/**/*
|
||||
- platforms/**/*
|
||||
- builddefs/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- quantum/**
|
||||
- tmk_core/**
|
||||
- drivers/**
|
||||
- tests/**
|
||||
- util/**
|
||||
- platforms/**
|
||||
- builddefs/*.mk
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
dependencies:
|
||||
- any:
|
||||
- 'lib/**/*'
|
||||
- '!lib/python/**/*'
|
||||
- all:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: lib/**
|
||||
- all-globs-to-all-files: '!lib/python/**'
|
||||
keyboard:
|
||||
- any:
|
||||
- 'keyboards/**/*'
|
||||
- '!keyboards/**/keymaps/**/*'
|
||||
- all:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: keyboards/**
|
||||
- all-globs-to-all-files: '!keyboards/**/keymaps/**'
|
||||
keymap:
|
||||
- users/**/*
|
||||
- layouts/**/*
|
||||
- keyboards/**/keymaps/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- users/**
|
||||
- layouts/**
|
||||
- keyboards/**/keymaps/**
|
||||
via:
|
||||
- keyboards/**/keymaps/via/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- keyboards/**/keymaps/via/*
|
||||
cli:
|
||||
- requirements.txt
|
||||
- lib/python/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- requirements.txt
|
||||
- lib/python/**
|
||||
python:
|
||||
- '**/*.py'
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- '**/*.py'
|
||||
documentation:
|
||||
- docs/**/*
|
||||
translation:
|
||||
- docs/fr-fr/**/*
|
||||
- docs/es/**/*
|
||||
- docs/ja/**/*
|
||||
- docs/he-il/**/*
|
||||
- docs/pt-br/**/*
|
||||
- docs/zh-cn/**/*
|
||||
- docs/de/**/*
|
||||
- docs/ru-ru/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- docs/**
|
||||
- builddefs/docsgen/**
|
||||
CI:
|
||||
- .github/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/**
|
||||
dd:
|
||||
- data/constants/**/*
|
||||
- data/mappings/**/*
|
||||
- data/schemas/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/constants/**
|
||||
- data/mappings/**
|
||||
- data/schemas/**
|
||||
|
||||
@@ -13,8 +13,8 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: mheap/automatic-approve-action@v1
|
||||
- uses: zvecr/automatic-approve-action@safe_files
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
workflows: "format.yml,lint.yml,unit_test.yml"
|
||||
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"
|
||||
workflows: "labeler.yml,lint.yml,docs.yml"
|
||||
safe_files: "keyboards/,docs/"
|
||||
|
||||
@@ -52,9 +52,9 @@ jobs:
|
||||
run: |
|
||||
target_count=$( {
|
||||
qmk find -km default 2>/dev/null
|
||||
qmk find -km via 2>/dev/null
|
||||
# qmk find -km xap 2>/dev/null
|
||||
} | sort | uniq | wc -l)
|
||||
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution as we're splitting default and via
|
||||
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution
|
||||
echo "slice_length=$slice_length" >> $GITHUB_OUTPUT
|
||||
|
||||
build_targets:
|
||||
@@ -63,7 +63,8 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
keymap: [default, via]
|
||||
keymap: [default]
|
||||
# keymap: [default, xap]
|
||||
uses: ./.github/workflows/ci_build_major_branch_keymap.yml
|
||||
with:
|
||||
branch: ${{ inputs.branch || github.ref_name }}
|
||||
@@ -77,44 +78,59 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download firmwares
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: firmware-*
|
||||
path: firmwares
|
||||
path: .
|
||||
merge-multiple: true
|
||||
|
||||
- name: Generate index page
|
||||
run: |
|
||||
python3 -m pip install -r ./util/ci/requirements.txt
|
||||
./util/ci/index_generator.py > index.html
|
||||
./util/ci/firmware_list_generator.py > firmware_list.json
|
||||
|
||||
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks --delete
|
||||
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
|
||||
env:
|
||||
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
|
||||
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
|
||||
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
|
||||
SOURCE_DIR: firmwares
|
||||
SOURCE_DIR: .
|
||||
DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}
|
||||
|
||||
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks --delete
|
||||
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
|
||||
env:
|
||||
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
|
||||
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
|
||||
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
|
||||
SOURCE_DIR: firmwares
|
||||
SOURCE_DIR: .
|
||||
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
|
||||
|
||||
- name: Check if failure marker file exists
|
||||
id: check_failure_marker
|
||||
uses: andstor/file-existence-action@v3
|
||||
with:
|
||||
files: firmwares/.failed
|
||||
files: ./.failed
|
||||
|
||||
- name: Fail build if needed
|
||||
if: steps.check_failure_marker.outputs.files_exists == 'true'
|
||||
|
||||
@@ -172,10 +172,10 @@ jobs:
|
||||
targets-${{ inputs.keymap }}
|
||||
|
||||
- name: 'CI Discord Notification'
|
||||
if: always()
|
||||
if: always() && !cancelled()
|
||||
working-directory: util/ci/
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
|
||||
run: |
|
||||
python3 -m pip install -r requirements.txt
|
||||
python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --sha $(git rev-parse HEAD) --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
|
||||
- name: Deploy
|
||||
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.1
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: gh-pages
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
name: "Pull Request Labeler"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, ready_for_review, locked]
|
||||
- pull_request_target
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
configuration-path: '.github/labeler.yml'
|
||||
- uses: actions/labeler@v5
|
||||
|
||||
+2
-1
@@ -25,7 +25,8 @@
|
||||
*.la
|
||||
*.stackdump
|
||||
*.sym
|
||||
qmk_toolchains*
|
||||
index.html
|
||||
firmware_list.json
|
||||
|
||||
# QMK-specific
|
||||
api_data/v1
|
||||
|
||||
@@ -34,10 +34,13 @@ ifeq ($(strip $(DUMP_CI_METADATA)),yes)
|
||||
endif
|
||||
|
||||
# Force expansion
|
||||
TARGET := $(TARGET)
|
||||
override TARGET := $(TARGET)
|
||||
|
||||
ifneq ($(FORCE_LAYOUT),)
|
||||
TARGET := $(TARGET)_$(FORCE_LAYOUT)
|
||||
override TARGET := $(TARGET)_$(FORCE_LAYOUT)
|
||||
endif
|
||||
ifneq ($(CONVERT_TO),)
|
||||
override TARGET := $(TARGET)_$(CONVERT_TO)
|
||||
endif
|
||||
|
||||
# Object files and generated keymap directory
|
||||
@@ -58,9 +61,6 @@ ifdef SKIP_GIT
|
||||
VERSION_H_FLAGS += --skip-git
|
||||
endif
|
||||
|
||||
# Generate the board's version.h file.
|
||||
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
|
||||
|
||||
# Determine which subfolders exist.
|
||||
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
|
||||
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
|
||||
@@ -218,6 +218,9 @@ endif
|
||||
|
||||
include $(BUILDDEFS_PATH)/converters.mk
|
||||
|
||||
# Generate the board's version.h file.
|
||||
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
|
||||
|
||||
MCU_ORIG := $(MCU)
|
||||
include $(wildcard $(PLATFORM_PATH)/*/mcu_selection.mk)
|
||||
|
||||
|
||||
@@ -32,9 +32,6 @@ ifneq ($(CONVERT_TO),)
|
||||
|
||||
PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2)
|
||||
|
||||
# force setting as value can be from environment
|
||||
override TARGET := $(TARGET)_$(CONVERT_TO)
|
||||
|
||||
# Configure any defaults
|
||||
OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]')
|
||||
OPT_DEFS += -DCONVERTER_TARGET=\"$(CONVERT_TO)\"
|
||||
|
||||
@@ -33,7 +33,7 @@ export default defineConfig(({ mode }) => {
|
||||
},
|
||||
title: 'QMK Firmware',
|
||||
|
||||
nav: [{ text: "Home", link: "./" }],
|
||||
nav: [{ text: "Home", link: "/" }],
|
||||
|
||||
search: {
|
||||
provider: "local",
|
||||
|
||||
@@ -16,12 +16,6 @@
|
||||
"type": "object",
|
||||
"additionalProperties": {"type": "boolean"}
|
||||
},
|
||||
"build_target": {
|
||||
"oneOf": [
|
||||
{"$ref": "#/keyboard_keymap_tuple"},
|
||||
{"$ref": "#/json_file_path"}
|
||||
]
|
||||
},
|
||||
"filename": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
@@ -53,6 +47,19 @@
|
||||
{"$ref": "#/keyboard"},
|
||||
{"$ref": "#/filename"}
|
||||
],
|
||||
"minItems": 2,
|
||||
"maxItems": 2,
|
||||
"unevaluatedItems": false
|
||||
},
|
||||
"keyboard_keymap_env": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{"$ref": "#/keyboard"},
|
||||
{"$ref": "#/filename"},
|
||||
{"$ref": "#/kvp_object"}
|
||||
],
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"unevaluatedItems": false
|
||||
},
|
||||
"keycode": {
|
||||
@@ -87,6 +94,10 @@
|
||||
"maxLength": 7,
|
||||
"pattern": "^[A-Z][A-Zs_0-9]*$"
|
||||
},
|
||||
"kvp_object": {
|
||||
"type": "object",
|
||||
"additionalProperties": {"type": "string"}
|
||||
},
|
||||
"layout_macro": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
"$id": "qmk.user_repo.v1",
|
||||
"title": "User Repository Information",
|
||||
"type": "object",
|
||||
"definitions": {
|
||||
"build_target": {
|
||||
"oneOf": [
|
||||
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
|
||||
{"$ref": "qmk.definitions.v1#/json_file_path"}
|
||||
]
|
||||
},
|
||||
},
|
||||
"required": [
|
||||
"userspace_version",
|
||||
"build_targets"
|
||||
@@ -15,7 +23,7 @@
|
||||
"build_targets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "qmk.definitions.v1#/build_target"
|
||||
"$ref": "#/definitions/build_target"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema#",
|
||||
"$id": "qmk.user_repo.v1_1",
|
||||
"title": "User Repository Information",
|
||||
"type": "object",
|
||||
"definitions": {
|
||||
"build_target": {
|
||||
"oneOf": [
|
||||
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
|
||||
{"$ref": "qmk.definitions.v1#/keyboard_keymap_env"},
|
||||
{"$ref": "qmk.definitions.v1#/json_file_path"}
|
||||
]
|
||||
},
|
||||
},
|
||||
"required": [
|
||||
"userspace_version",
|
||||
"build_targets"
|
||||
],
|
||||
"properties": {
|
||||
"userspace_version": {
|
||||
"type": "string",
|
||||
"enum": ["1.1"]
|
||||
},
|
||||
"build_targets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/build_target"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,4 +31,4 @@ Commenting on your pull request and being responsive to questions, comments, and
|
||||
|
||||
### Ask for Help
|
||||
|
||||
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/Uq7gcHh).
|
||||
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/qmk).
|
||||
|
||||
@@ -11,7 +11,7 @@ Third-party contributions help us grow and improve QMK. We want to make the pull
|
||||
|
||||
## I Don't Want to Read This Whole Thing! I Just Have a Question!
|
||||
|
||||
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/Uq7gcHh).
|
||||
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/qmk).
|
||||
|
||||
Please keep these things in mind:
|
||||
|
||||
@@ -29,7 +29,7 @@ QMK is largely written in C, with specific features and parts written in C++. It
|
||||
|
||||
# Where Can I Go for Help?
|
||||
|
||||
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/Uq7gcHh).
|
||||
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/qmk).
|
||||
|
||||
# How Do I Make a Contribution?
|
||||
|
||||
@@ -128,7 +128,7 @@ We also ask that you follow these guidelines:
|
||||
|
||||
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understanding QMK](understanding_qmk), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
|
||||
|
||||
* [Chat on Discord](https://discord.gg/Uq7gcHh)
|
||||
* [Chat on Discord](https://discord.gg/qmk)
|
||||
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
|
||||
|
||||
Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.
|
||||
|
||||
@@ -184,7 +184,7 @@ Whenever possible you should customize your keyboard by using `process_record_*(
|
||||
|
||||
### Example `matrix_scan_*` Implementation
|
||||
|
||||
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/Uq7gcHh).
|
||||
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/qmk).
|
||||
|
||||
### `matrix_scan_*` Function Documentation
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 'serial' Driver
|
||||
|
||||
The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilites of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
|
||||
The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilities of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
|
||||
|
||||
| Driver | AVR | ARM | Connection between halves |
|
||||
| --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- |
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ That's amazing! We would love to assist you with that!
|
||||
|
||||
In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
|
||||
|
||||
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
|
||||
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/qmk).
|
||||
|
||||
## What Differences Are There Between QMK and TMK?
|
||||
|
||||
|
||||
@@ -85,9 +85,9 @@ Your `keymap.c` will then need an encoder mapping defined (for four layers and t
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
|
||||
[2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
|
||||
[3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
|
||||
[1] = { ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU) },
|
||||
[2] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) },
|
||||
[3] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
|
||||
};
|
||||
#endif
|
||||
```
|
||||
|
||||
+25
-23
@@ -59,30 +59,32 @@ Changing the **Value** sets the overall brightness.<br>
|
||||
|
||||
## Keycodes
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|-------------------|----------|--------------------------------------------------------------------|
|
||||
|`RGB_TOG` | |Toggle RGB lighting on or off |
|
||||
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|
||||
|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
|
||||
|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
|
||||
|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
|
||||
|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
|
||||
|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
|
||||
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|
||||
|`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 |
|
||||
|Key |Aliases |Description |
|
||||
|------------------------------|----------|---------------------------------------------------------------------|
|
||||
|`QK_UNDERGLOW_TOGGLE` |`UG_TOGG` |Toggle RGB lighting on or off |
|
||||
|`QK_UNDERGLOW_MODE_NEXT` |`UG_NEXT` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`QK_UNDERGLOW_MODE_PREVIOUS` |`UG_PREV` |Cycle through modes in reverse, forward direction when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_UP` |`UG_HUEU` |Increase hue, decrease hue when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_DOWN` |`UG_HUED` |Decrease hue, increase hue when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_UP` |`UG_SATU` |Increase saturation, decrease saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_DOWN`|`UG_SATD` |Decrease saturation, increase saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_UP` |`UG_VALU` |Increase value (brightness), decrease value when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_DOWN` |`UG_VALD` |Decrease value (brightness), increase value when Shift is held |
|
||||
|`QK_UNDERGLOW_SPEED_UP` |`UG_SPDU` |Increase effect speed (brightness), decrease speed when Shift is held|
|
||||
|`QK_UNDERGLOW_SPEED_DOWN` |`UG_SPDD` |Decrease effect speed (brightness), increase speed when Shift is held|
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode (deprecated) |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode (deprecated) |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode (deprecated) |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode (deprecated) |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode (deprecated) |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode (deprecated) |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode (deprecated) |
|
||||
|`RGB_MODE_GRADIENT` |`RGB_M_G` |Static gradient animation mode (deprecated) |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode (deprecated) |
|
||||
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode (deprecated) |
|
||||
|
||||
::: tip
|
||||
`RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUI)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
|
||||
These keycodes cannot be used with functions like `tap_code16()` as they are not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
|
||||
:::
|
||||
|
||||
|
||||
@@ -358,7 +360,7 @@ Lighting layers on split keyboards will require layer state synced to the slave
|
||||
|
||||
### 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`.
|
||||
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `UG_TOGG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
|
||||
|
||||
### Retain brightness
|
||||
|
||||
|
||||
+1
-1
@@ -231,7 +231,7 @@ Once you have confirmed that the keyboard is working, if you have used a seperat
|
||||
|
||||
If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
|
||||
|
||||
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/Uq7gcHh) for help!
|
||||
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
|
||||
|
||||
## Links to Other Guides
|
||||
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ There are a lot of ways you can contribute to the QMK Community. The easiest way
|
||||
|
||||
* Help people out on our forums and chat rooms:
|
||||
* [/r/olkb](https://www.reddit.com/r/olkb/)
|
||||
* [Discord Server](https://discord.gg/Uq7gcHh)
|
||||
* [Discord Server](https://discord.gg/qmk)
|
||||
* Contribute to our documentation by clicking "Edit This Page" at the bottom
|
||||
* [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
|
||||
* [Open a Pull Request](contributing)
|
||||
|
||||
+23
-20
@@ -701,26 +701,29 @@ See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
|
||||
|
||||
See also: [RGB Lighting](features/rgblight)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|-------------------|----------|--------------------------------------------------------------------|
|
||||
|`RGB_TOG` | |Toggle RGB lighting on or off |
|
||||
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|
||||
|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
|
||||
|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
|
||||
|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
|
||||
|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
|
||||
|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
|
||||
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|
||||
|`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 |
|
||||
|Key |Aliases |Description |
|
||||
|------------------------------|----------|---------------------------------------------------------------------|
|
||||
|`QK_UNDERGLOW_TOGGLE` |`UG_TOGG` |Toggle RGB lighting on or off |
|
||||
|`QK_UNDERGLOW_MODE_NEXT` |`UG_NEXT` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`QK_UNDERGLOW_MODE_PREVIOUS` |`UG_PREV` |Cycle through modes in reverse, forward direction when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_UP` |`UG_HUEU` |Increase hue, decrease hue when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_DOWN` |`UG_HUED` |Decrease hue, increase hue when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_UP` |`UG_SATU` |Increase saturation, decrease saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_DOWN`|`UG_SATD` |Decrease saturation, increase saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_UP` |`UG_VALU` |Increase value (brightness), decrease value when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_DOWN` |`UG_VALD` |Decrease value (brightness), increase value when Shift is held |
|
||||
|`QK_UNDERGLOW_SPEED_UP` |`UG_SPDU` |Increase effect speed (brightness), decrease speed when Shift is held|
|
||||
|`QK_UNDERGLOW_SPEED_DOWN` |`UG_SPDD` |Decrease effect speed (brightness), increase speed when Shift is held|
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode (deprecated) |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode (deprecated) |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode (deprecated) |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode (deprecated) |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode (deprecated) |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode (deprecated) |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode (deprecated) |
|
||||
|`RGB_MODE_GRADIENT` |`RGB_M_G` |Static gradient animation mode (deprecated) |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode (deprecated) |
|
||||
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode (deprecated) |
|
||||
|
||||
## RGB Matrix Lighting {#rgb-matrix-lighting}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Different keyboards have different ways to enter this special mode. If your PCB
|
||||
* Press the physical `RESET` button, usually located on the underside of the PCB
|
||||
* Locate header pins on the PCB labeled `RESET` and `GND`, and short them together while plugging your PCB in
|
||||
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/qmk) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
|
||||
Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
|
||||
|
||||
@@ -129,4 +129,4 @@ Congrats! Your custom firmware has been programmed to your keyboard and you're r
|
||||
With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong.
|
||||
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
|
||||
|
||||
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/Uq7gcHh).
|
||||
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/qmk).
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.
|
||||
|
||||
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on [Discord](https://discord.gg/Uq7gcHh).
|
||||
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on [Discord](https://discord.gg/qmk).
|
||||
|
||||
## Requirements for all PRs
|
||||
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ Please read our [Code of Conduct](https://qmk.fm/coc/) before participating in a
|
||||
|
||||
## Realtime Chat
|
||||
|
||||
If you need help with something, the best place to get quick support is going to be on our [Discord Server](https://discord.gg/Uq7gcHh). There is usually somebody online, and there are a bunch of very helpful people there.
|
||||
If you need help with something, the best place to get quick support is going to be on our [Discord Server](https://discord.gg/qmk). There is usually somebody online, and there are a bunch of very helpful people there.
|
||||
|
||||
## OLKB Subreddit
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"manufacturer": "4pplet",
|
||||
"keyboard_name": "IBE60 Rev A",
|
||||
"maintainer": "4pplet",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B2", "A5", "A4", "A3", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
|
||||
"rows": ["B14", "A9", "B6", "B5", "B4"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0001",
|
||||
"vid": "0x4448"
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A8"
|
||||
},
|
||||
"community_layouts": ["60_hhkb"],
|
||||
"layouts": {
|
||||
"LAYOUT_60_hhkb": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 9], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
Copyright 2020 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_60_hhkb(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_60_hhkb(
|
||||
QK_BOOT, KC_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)
|
||||
};
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2020 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_60_hhkb(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_60_hhkb(
|
||||
QK_BOOT, KC_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)
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user