* move ISO Enter position to home row
This commit makes the ISO layout macros compatible with QMK's `65_iso_blocker` and `65_iso_blocker_tsangan` community layouts.
* info.json: apply friendly formatting
- add key labels
- add line breaks between physical rows
* enable Community Layout support
* chaos65.h: add matrix diagram
* move USE_I2C and EE_HANDS definitions to keyboard level
Allow this keyboard to be compiled by QMK Configurator.
* remove redundant DEFAULT_FOLDER rule
* [Keyboard] Add labbeminiv1
* Adjust vendor id
The used vendor id was in use
* Remove comment in the rgb keymap
* Update keyboards/labbe/labbeminiv1/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Rename rgb matrix keymap folder
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add base FAve 84H firmware
* Update keyboards/linworks/fave84h/readme.md
Thank you, apologies for the oversight
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/linworks/fave84h/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/linworks/fave84h/keymaps/default/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Move LED config in ifdef
* update read me
* Update Product Name
* Update keyboards/linworks/fave84h/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add Via RGB Matrix Control
* Add base FAve 84H firmware
* Add Via RGB Matrix Control
* fix merge conflict
* reduce max brightness
* remove action macro and action function
Co-authored-by: Joel Challis <git@zvecr.com>
* Remove / update code to work with the build in QMK via hack
* Update Read me
* Add newline at end of rules
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* sync oled code over the keymaps
* put different product ids
* put different product ids for the rest
* put different product ids for the rest
* try to reduce code duplication
* make ifdefs nice and correct
* move the leds code out of keymap
* try to reduce code duplication
* move the rgb code outside the keymaps for reuse
* Update keyboards/mlego/m65/m65.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/mlego/m65/m65.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* move more code outside keymaps for reuse
* add few more xps
* add mic mute
* update to new name of macros for reset
* style for matrix
* clean split
* use tinyuf2 as bootloader
* Update keyboards/mlego/m65/rev4/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* radionalise product id and device version
* add tinyuf2 as default bootloader for stm32f4
* update tinyuf2
* update tinyuf2 and via. f411 remove tinyuf2 since is not really working. make the config more conditional
* sync the keymap with default
* revert via non building with gcc 11
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Handle timeout on UART for Redox Wireless receiver-to-keyboard communication.
- This fixes the issue of a keyboard deadlocking on the first matrix
scan with Redox Wireless keyboards
* Remove an explicit cast.
Co-authored-by: Tomasz Janeczko <tomasz.j@hey.com>
* Add files for alt34 keyboard
* Add link to hardware bill of materials for alt34
* Change keyboard image link to imgur
* Remove platform specific defines from rev1.h
* Remove bluetooth and sleep led rules etc
* Add GPL license header to all source code files
* Shorten comment for NKRO_ENABLE
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Simplify option usage comment in rules.mk
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Set imgur link to largest size option
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Move rules.mk into rev1 folder entirely
* Remove .noci file
* Update keyboards/alt34/rev1/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Fix Caps Word and Unicode Map
* Tests for Caps Word + Auto Shift and Unicode Map.
* Fix formatting
* Add additional keyboard report expectation macros
This commit defines five test utilities, EXPECT_REPORT, EXPECT_UNICODE,
EXPECT_EMPTY_REPORT, EXPECT_ANY_REPORT and EXPECT_NO_REPORT for use with
TestDriver.
EXPECT_REPORT sets a gmock expectation that a given keyboard report will
be sent. For instance,
EXPECT_REPORT(driver, (KC_LSFT, KC_A));
is shorthand for
EXPECT_CALL(driver,
send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A)));
EXPECT_UNICODE sets a gmock expectation that a given Unicode code point
will be sent using UC_LNX input mode. For instance for U+2013,
EXPECT_UNICODE(driver, 0x2013);
expects the sequence of keys:
"Ctrl+Shift+U, 2, 0, 1, 3, space".
EXPECT_EMPTY_REPORT sets a gmock expectation that a given keyboard
report will be sent. For instance
EXPECT_EMPTY_REPORT(driver);
expects a single report without keypresses or modifiers.
EXPECT_ANY_REPORT sets a gmock expectation that a arbitrary keyboard
report will be sent, without matching its contents. For instance
EXPECT_ANY_REPORT(driver).Times(1);
expects a single arbitrary keyboard report will be sent.
EXPECT_NO_REPORT sets a gmock expectation that no keyboard report will
be sent at all.
* Add tap_key() and tap_keys() to TestFixture.
This commit adds a `tap_key(key)` method to TestFixture that taps a
given KeymapKey, optionally with a specified delay between press and
release.
Similarly, the method `tap_keys(key_a, key_b, key_c)` taps a sequence of
KeymapKeys.
* Use EXPECT_REPORT, tap_keys, etc. in most tests.
This commit uses EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT,
EXPECT_NO_REPORT, tap_key() and tap_keys() test utilities from the
previous two commits in most tests. Particularly the EXPECT_REPORT
macro is frequently useful and makes a nice reduction in boilerplate
needed to express many tests.
Co-authored-by: David Kosorin <david@kosorin.net>
This is a minor bug fix for Caps Word. Currently, Caps Word turns off
whenever a non-shift mod becomes active. This is done to avoid
interfering with hotkeys.
This commit makes an exception to continue Caps Word when AltGr (right
Alt) is held. Outside the US, the AltGr key is used to type additional
symbols (https://en.wikipedia.org/wiki/AltGr_key). Depending on the
language, these may include symbols used within words like accented
letters where it would be desirable to continue Caps Word.
* info.json: apply friendly formatting
* rename LAYOUT_all to LAYOUT_tkl_f13_ansi_tsangan
* enable Community Layout support
* refactor keymaps to use grid alignment
* phaseone.h: add matrix diagram
* add QMK Configurator data
* add LAYOUT_65_ansi_blocker_split_bs macro
* add LAYOUT_65_ansi_wkl_split_bs macro
* add LAYOUT_65_iso_blocker macro
* add LAYOUT_65_iso_blocker_split_bs macro
* add LAYOUT_65_iso_wkl macro
* add LAYOUT_65_iso_wkl_split_bs macro
* rename LAYOUT_65_ansi_wkl to LAYOUT_65_ansi_blocker_tsangan_wkl
Differentiates the layout supported here from QMK's `65_ansi_blocker_tsangan` Community Layout, which is equivalent to this but with a 1u GUI key between Left Ctrl and Left Alt.
* rename new layout macros for codebase consistency
- `LAYOUT_65_ansi_wkl_split_bs` -> `LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs`
- `LAYOUT_65_iso_wkl` -> `LAYOUT_65_iso_blocker_tsangan_wkl`
- `LAYOUT_65_iso_wkl_split_bs` -> `LAYOUT_65_iso_blocker_tsangan_wkl_split_bs`
* add reference keymaps
Add keymaps which demonstrate the layout macro implementations.
* info.json: apply friendly formatting
* info.json: remove dead space from rendering
* info.json: insert line breaks between physical rows in layout data
* info.json: fix overlap in key rendering
Fixes an issue where the ANSI Enter key renders on top of the ISO Hash/Tilde key, visually hiding the latter.
* add LAYOUT_ansi_all macro with associated keymap
Duplicates `LAYOUT_all`, but with the ISO Hash/Tilde and ISO Backslash keys removed.
- ANSI Enter and 2.25u Left Shift
- Backspace, Right Shift, Numpad Plus and Numpad Enter all split
- 1.5 / 1 / 1.5 / 6.25 / 1.25 / 1.25 / 1.25 Bottom Row
* add LAYOUT_iso_all macro with associated keymap
Duplicates `LAYOUT_all`, but with the ANSI Backslash key removed.
- ISO Enter and 1.25u Left Shift
- Backspace, Right Shift, Numpad Plus and Numpad Enter all split
- 1.5 / 1 / 1.5 / 6.25 / 1.25 / 1.25 / 1.25 Bottom Row
* Fix platforms/avr/drivers/ws2812.c
`platforms/avr/drivers/ws2812.c` has been changed to use `DDRx_ADDRESS()` and `PORTx_ADDRESS()` instead of `_SFR_IO8()` in #8646. To use them, `#include <pin_defs.h>` is required.
## Error Log
* create new keyboard
```shell
bash-3.2$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
Name Your Keyboard Project
For more infomation, see:
https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject
Keyboard Name? ws2812_test
..................................
36. WB32F3G71
Please enter your choice: [12]
Ψ Created a new keyboard called ws2812_test.
Ψ To start working on things, `cd` into keyboards/ws2812_test,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb ws2812_test -km default.
```
* Enable RGBLIGHT.
```shell
bash-3.2$ echo RGBLIGHT_ENABLE=yes >> ./keyboards/ws2812_test/rules.mk
bash-3.2$ echo '#define RGB_DI_PIN B1' >> ./keyboards/ws2812_test/config.h
bash-3.2$ echo '#define RGBLED_NUM 6' >> ./keyboards/ws2812_test/config.h
```
* Compile
```shell
bash-3.2$ make ws2812_test:default
QMK Firmware 0.16.9
Making ws2812_test with keymap default
avr-gcc (Homebrew AVR GCC 8.4.0_2) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.....................
Compiling: quantum/process_keycode/process_rgb.c [OK]
Compiling: platforms/avr/drivers/ws2812.c platforms/avr/drivers/ws2812.c: In function 'ws2812_setleds':
platforms/avr/drivers/ws2812.c:40:5: error: implicit declaration of function 'DDRx_ADDRESS' [-Werror=implicit-function-declaration]
DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
^~~~~~~~~~~~
In file included from <command-line>:
./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
#define RGB_DI_PIN B1
^~
platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
^~~~~~~~~~
./keyboards/ws2812_test/config.h:21:20: note: each undeclared identifier is reported only once for each function it appears in
#define RGB_DI_PIN B1
^~
platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
^~~~~~~~~~
platforms/avr/drivers/ws2812.c:42:47: error: implicit declaration of function 'PORTx_ADDRESS' [-Werror=implicit-function-declaration]
uint8_t masklo = ~(pinmask(RGB_DI_PIN)) & PORTx_ADDRESS(RGB_DI_PIN);
^~~~~~~~~~~~~
In file included from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/io.h:99,
from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/interrupt.h:38,
from platforms/avr/drivers/ws2812.c:24:
platforms/avr/drivers/ws2812.c: In function 'ws2812_sendarray_mask':
./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
#define RGB_DI_PIN B1
^~
platforms/avr/drivers/ws2812.c:167:69: note: in expansion of macro 'RGB_DI_PIN'
: "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGB_DI_PIN))), "r"(maskhi), "r"(masklo));
^~~~~~~~~~
cc1: all warnings being treated as errors
[ERRORS]
|
|
|
make[1]: *** [.build/obj_ws2812_test_default/ws2812.o] Error 1
make: *** [ws2812_test:default] Error 1
Make finished with errors
```
* change include order
* add users/mtei/key_blocks.h
This change does not alter the binary of the build result.
Moved common macro definitions in the following files to users/mtei/key_blocks.h.
* keyboards/helix/rev2/keymaps/five_rows/keymap.c
* keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c
* remove INIT_HELIX_OLED() in helix:five_rows
This change does not alter the binary of the build result.
* update helix/pico/keymaps/mtei/keymap.c
Changed helix/pico/keymaps/mtei/keymap.c to use users/mtei/key_blocks.h.
This change does not alter the binary of the build result.
* Remove old SSD1306OLED code from users/mtei/oled_display.c
This change does not alter the binary of the build result.
* add options ENABLE_COLEMAK, ENABLE_DVORAK and ENABLE_EUCALYN into five_rows/keymap.c
* add users/mtei/{config.h,rules.mk,user_featues.mk,user_options.mk}
* move layer_names[] from users/mtei/oled_display.c to keymaps/five_rows/keymap.c
* Update keyboards/helix/pico/keymaps/mtei/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/pico/keymaps/mtei/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/pico/keymaps/mtei/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev2/keymaps/five_rows/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev2/keymaps/five_rows/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev2/keymaps/five_rows/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev3_5rows/keymaps/five_rows/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev3_5rows/keymaps/five_rows/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/cpp_map.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/cpp_map.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/debug_config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/debug_config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update users/mtei/layer_number_util.h
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* LAYOUT_iso: move Enter to home row
This commit makes the layout macro compatible with QMK's `tkl_nofrow_iso` Community Layout.
* rename LAYOUT_ansi to LAYOUT_tkl_nofrow_ansi
* rename LAYOUT_iso to LAYOUT_tkl_nofrow_iso
* enable Community Layout support
...when attempting to start a receiving USB transfer. Previously, we would
check on the IN endpoint which is the transmitting part of the USB endpoint.
This is wrong and lead to two USB transfers being started immediately
after each other in case of e.g. RAW HID endpoints:
1. When finishing an OUT transfer the low level USB driver calls the out_cb
callback, which in turn initiates another OUT transfer by calling
qmkusbDataReceived.
2. When the raw hid receive channel runs empty inside the raw_hid task,
another OUT transfer is started to potentially fill the channel again. This
happens by calling ibnotify.
Both events occur directly after each other, thus triggering the bug.
* LAYOUT_tkl_f13_ansi_tsangan support
Renames `LAYOUT_ansi_tsangan` to `LAYOUT_tkl_f13_ansi_tsangan`. Also enables Community Layout support.
* LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift support
* info.json: fix key sequence error
* info.json: fix visual rendering
Clarify the physical locations of the keys.
* info.json: update maintainer field
This field is meant to reference the maintainer's GitHub username.
* add tkl_f13_ansi_split_bs_rshift Community Layout
* add tkl_f13_ansi_tsangan_split_bs_rshift Community Layout
* add tkl_f13_iso_split_bs_rshift Community Layout
* add tkl_f13_iso_tsangan_split_bs_rshift Community Layout
* Fix state updates of one-shot locked modifiers
Activating additional one-shot locked modifiers removed previously enabled locked modifiers from the state.
`get_oneshot_locked_mods` returned zero when two or more one-shot locked modifiers were enabled and then one was disabled.
* Do not delete one-shot locked modifiers on a one-shot layer toggle
Non-locked one-shot modifiers are not removed so this behavior adds inconsistency.
Also the one-shot locked modifiers state was reset without unregistering any modifiers.
* move RGB Matrix rules to keyboard level
* move PERMISSIVE_HOLD config to keyboard level
* annepro2.c: convert tabs to spaces
* refactor rules.mk files
Reformats each version's `rules.mk` file to be arranged more similarly to those of the rest of the keyboards in QMK.
No logic change.
* annepro2.c: allow compilation without RGB Matrix
Wraps the `led_enabled` definition and the `KC_AP_RGB_*` keycodes in `#ifdef RGB_MATRIX_ENABLE`, allowing successful compilation if the user sets `RGB_MATRIX_ENABLE = no`.
* rework readme files
Reworks the main `readme.md` file to be more friendly to GitHub viewing, and removes the single-line version-specific readme files (exposes the main readme to QMK Configurator users).
* info.json: update maintainer value
* info.json: apply friendly formatting
* Add GET_TAPPING_TERM macro to reduce duplicate code
The macro gives the right tapping term depending on whether per-key
tapping terms and/or dynamic tapping terms are enabled. Unnecessary
function calls and variable resolution are avoided.
Fixes#16472.
* Use GET_TAPPING_TERM for Cirque trackpads
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
* Install dependencies before executing unit tests.
* Split out UTF-8 decoder.
* Fixup python formatting rules.
* Add documentation for QGF/QFF and the RLE format used.
* Add CLI commands for converting images and fonts.
* Add stub rules.mk for QP.
* Add stream type.
* Add base driver and comms interfaces.
* Add support for SPI, SPI+D/C comms drivers.
* Include <qp.h> when enabled.
* Add base support for SPI+D/C+RST panels, as well as concrete implementation of ST7789.
* Add support for GC9A01.
* Add support for ILI9341.
* Add support for ILI9163.
* Add support for SSD1351.
* Implement qp_setpixel, including pixdata buffer management.
* Implement qp_line.
* Implement qp_rect.
* Implement qp_circle.
* Implement qp_ellipse.
* Implement palette interpolation.
* Allow for streams to work with either flash or RAM.
* Image loading.
* Font loading.
* QGF palette loading.
* Progressive decoder of pixel data supporting Raw+RLE, 1-,2-,4-,8-bpp monochrome and palette-based images.
* Image drawing.
* Animations.
* Font rendering.
* Check against 256 colours, dump out the loaded palette if debugging enabled.
* Fix build.
* AVR is not the intended audience.
* `qmk format-c`
* Generation fix.
* First batch of docs.
* More docs and examples.
* Review comments.
* Public API documentation.
* create LAYOUT_half() macro into helix/rev2/keymaps/froggy/keymap.c
* Makes QMK standerd OLED driver used by the helix:froggy keymap switchable.
* Change helix:froggy keymap to use split_common
* the size variable was redeclared (hiding the variable of the outside scope) and therefore the while check was always false, so the compiler just removed the do while loop, but it would be better to read all data and only exit the task, after this is done
* Update info.json
Fixed:
-ISO Enter Position
-Up Arrow Position
-PgDn Position
Cause of Error:
-Keyboard Layout Editor Places Iso Enter on R1 Rather Than R2 like the ANSI Enter
* Update info.json
Fixed Compile Error to Previous Change
* Update keyboards/lw67/info.json
* keeb68.h: use QMK 3-character notation
* physically arrange layout macro
Moves the keycodes for Equals and Right Bracket to their proper places on the Number and Tab rows, respectively.
Also refactors the keymaps to use QMK-native keycode aliases, grid alignment, and four-space indent.
* move `keymaps/grv_esc/readme.md` to `keymaps/default/`
The file contents say "default keymap".
* enable Community Layouts support
* add QMK Configurator data
* touch-up `rules.mk`
* CLI: Bump the 'jsonschema' version
Update the used meta-schema from Draft 7 from 2018 to the latest one,
Draft 2020-12.
Currently, the validator falls back to Draft 7 if the newer validator is
not available. Draft 2020-12 support was introduced to 'jsonschema' in
version 4.0.0.
* Fix formatting
* qk65 hotswap: Community Layout support
- renames `LAYOUT_hotswap` to `LAYOUT_65_ansi_blocker`
- adds Community Layouts rule to `rules.mk`
* refactor keymaps
Edits the keymaps to align the keycodes in a grid. Whitespace-only change.
* info.json: apply friendly formatting
* info.json: update layout data
- update labels to make them QMK CLI friendly
- update key sizes and dimensions (removes key overlaps and mis-locations)
* foundation.h: edit white space
- convert tabs to spaces
- edit alignment of arrays
* foundation.h: add matrix diagram
* rename LAYOUT to LAYOUT_ansi_split_bs
* rename LAYOUT_tkl_ansi_7u to LAYOUT_ansi_tsangan_split_bs
* rename LAYOUT_tkl_iso to LAYOUT_iso_split_bs_rshift
* rename LAYOUT_tkl_iso_7u to LAYOUT_iso_tsangan_split_bs_rshift
* refactor keymaps
- use definitions from `layer_names` enum
- use grid alignment
- use QMK-native keycode aliases
* add reference keymaps
Add `default_ansi_tsangan_split_bs`, `default_iso_split_bs_rshift`, and `default_iso_tsangan_split_bs_rshift` keymaps.
* refactor ISO layouts
Edits the ISO layout macros so that the keycode for Enter is to the end of the home row.
* info.json: fix LAYOUT_iso_tsangan_split_bs_rshift reference
Thanks to zvecr.
* Add frameworking for development board presets
* Update lib/python/qmk/info.py
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* CLI: Lint non-data driven macros in info.json
Macros in info.json should either have the "matrix" key with the matrix
data or should should be also present in <keyboard>.h
* Add verification of matrix data
* Use generic '<keyboard>.h' in output
* Add keyboard name to output
* Make C layout macro finding more robust
The old code missed C macros if they had whitespace between '#' and
'define' or had whitespace before '#'.
* Add via to AL1
* Updated number of rows and columns, and applied suggestions from code review
* Update Vender ID
Change the Vender ID for Triangle Lab to comply with the via PR checklist.
* Gerald65 new keyboard files
* removing initial population of pck
* Initial Gerald65 Keyboard files
* Changed diode direction
* added fn layer, added picture to readme
* directed mo keycode to fn layer
* Changes to vendor id and bootloader instructions
* Changed to direct image reference
* Update keyboards/papercranekeyboards/gerald65/readme.md
* Remove no longer used features
* r2g folder groundwork
* Default mb keymap featuring mb logos
* Migrate Oled to keyboard folder
* Move rules configs to support config better
* update readmes
* Liscnece update
* Update config and fix issues caused by redef errs
* funciton name adjusts, define specific rgb modes
* move default oled font to postconfig
* update oled in line with develop merge
* fix return value
* Add some default rgb matrix defines
* del ugfx
* remove #include <stdio.h>
* create personal keymap for r2g
* reduce firmware size
* change keymap to follow physical layout
* remove RGBlight config lines to make both sides work (@Dasky on MechboardsUK Discord)
* strip down configuration, similar to crkbd/r2g:mb_via
* remove wrong oled code overwriting the r2g one
* broken code with RGB matrix (briks right side)
* remove high max brightness limit
* caps lock tap dance and RGB indicator for active caps lock
* fix caps lock led on right side
* add test macro
* remove latex macro which is too slow
* move caps lock tap dance to RALT and add space cadet shift
* switch CTL with ALT in first layer
* add tap dance for ESC/DEL
* space cadet tap dance with caps lock; shift works by needs a short pause
* add space cadet tap dance with caps lock on the right; shift works by needs a short pause and does not hold
* make more keys transparent
* enable auto shift and use logo on both oleds
* add user oled logo, slows down linking considerably
* oled name
* add arrow keys in usual configuration and add linear configuration to symbol layer
* add unicoede support
* add accents
* update to latest version
* add colemak dh layer
* report auto shift timeout
* define layer name shorcuts correctly
* disable VIA to enable more layers
* enable NKRO
* move some rules and unicode to user space
* move oled and tap dances to user space
* move tap dances fully out of keymap
* expand unicode map
* fix unicode code
* revert changes to r2g, make it equal to merged code
* revert changes to r2g, make it equal to merged code
* clang-format userspace
* clang-format config file
* Update keyboards/crkbd/keymaps/rmeli/keymap.c
* replace define with enum
* add licenses
The 'cd' subcommand was failing as the current shell's Windows path was
mangled while milc processed it.
Using 'subprocess' directly avoids this issue and an extra layer of
subshell.
* [Docs] Include ASCII diagram to explain tap-hold modes
* [Docs]: add examples for Default mode for Tap Hold
* [Docs] fix some wrong explanation in tap_hold.md
Add new keymap for GMMK with some additional mappings and led indicator for caps lock
* add chofstede keymap
* fix formatting
* fix formatting
* add readme
* Update keyboards/gmmk/pro/iso/keymaps/chofstede/keymap.c
Add rgb-light and encoder for lily58 mod
* add support for lily58 encoders (one per size) and rgb-light.
The pcb and details here https://github.com/orvisevans/Lily58-Glow-Enc
* add support for lily58 encoders (one per size) and rgb-light.
The pcb and details here https://github.com/orvisevans/Lily58-Glow-Enc
* Update keyboards/lily58/glowEnc/config.h
* add GPL License to growEnc.h
* rename folder according to requirement to lower case
Added the keymap I have been using as a daily driver for the last month.
* good firmware 26 jan, best clicky mode stability so far
* modified to reflect master branch coding style
* further modified to reflect master branch coding style
* improving clicky stability, tuned down clicky delay duration
* changed name of keymap folder to use lowercase letters
* Add macOS keymap for GMMK Pro (ANSI)
* Change macOS keymap directory name to lowercase
* Add toggleable layer with alternative keymap for function row
* Update readme
Fixes compilation issues when bluetooth is enabled, due to issues
with cpp used by bluetooth code.
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* [keyboard] Initial support for Anne Pro 2
* [keyboard][AnnePro2] Keymap:update to a reasonable keymap with caps+hjkl => arrow
* :(
* changed to use HSI
* support for annepro2 c18
* keyboard/annepro2: Very stupid matrix scan bug fix.
* typo
* swap COL14/13
* keyboard/annepro2: startup secondary LED MCU
* keyboard/annepro2: typo fix
* Add IO Values
* Disable Combo feature
* Update default keymap to Anne Pro 2 Official Keymap
* keyboard/annepro2: keymap layer name changes
* keyboard/annepro2 BLE Support
* Fix keymap comment
FN1 ESC was listed as ~ instead of `
* keyboard/annepro2: Bluetooth path
* Keyboard annepro2 bidir led comms (#5)
* Added bidirectional shine comms and moved led functionality to new file
* Added bidirectional shine comms and moved led functionality to new file
* Restore original functionality to existing keymaps using new shine commands
* Fix dangling bracketless if statements
* PR cleanup
* add custom keycodes to switch led profiles
* Optimize code
* switch to prev profile before turning leds off
* Add persistent led support with eeprom (#9)
* adding HT32 support to chibios SPI master driver
* add support for W25X20CL SPI eeprom
* add makefile flag for eeprom feature
* add spi support to keyboard startup and config
* example keymap using eeprom profile loading
* Cleanup to fix C15 eeprom/spi build errors (#11)
* Cleanup to fix C15 eeprom/spi build errors
* add newline at eof
* LED Masking support for Shine
Introduce companion update to ledSetMask and ledClearMask.
In keymap `codetector` there is example of how to map caps_lock
to the caps_lock key light on the keyboard.
* [AnnePro2]: update bluetooth connection
* Merge the custom keys enums on annepro2.h (#13)
* Keyboard annepro2 ble caps lock (#12)
* Move matrix_scan_kb out of board.c to annepro2.c
* add buffer clear after init and caplock polling
* Add support for LED intensity (#15)
* Improve logic for switching off and on of LEDs (#16)
* Implement animation speed (#17)
* Include logic to send solid colors as foreground to shine and add sample profiles (#14)
Include the logic to send a solid color from qmk to shine. That solid color will act as a foreground (will override the current profile) until reset (witch will reactivate the current profile).
This functionality depends on changes made for shine as well.
Include 3 new profiles:
default-full-caps -> same as default, but with the logic of using the red foreground color on caps lock.
default-layer-indicators -> same as default, but with the logic of red foreground on caps lock, green foreground on FN1 and blue foreground on FN2.
thomazmoura -> my own profile as a sample of an over-engineered advanced case scenario.
* Implement reactive lighting effects (#18)
* Added multiarrow keymap (#19)
* Add LED documentation (#26)
* add LED documentation
* add LED documentation to other default profiles
* Implement QMK's IAP default keybind (#29)
* Add keymap for going into IAP
* switch to default QMK keybind for IAP mode
* implement bluetooth IAP mode
* Make default config more like Obins stock default (#30)
* Add new message type for resetting foreground color (#31)
* annepro2(bluetooth): add media keys support (#41)
* Asynchronous, robust serial protocol. (#39)
* bla personal ap2-c18 keymap.
* Bidirectional, asynchronous message-based communication with Shine.
- Requires a matching Shine version.
- Protocol is resiliant to loosing bytes during communication, chips won't lock
waiting for bytes that aren't coming.
- Chips resynchronize in event of loosing a byte using a AA0D header.
Regressions:
- Key masking/locking doesn't work right now. (did it work before?)
- Not all user keymaps build against it.
* Clang-format + code to ease reducing speed of LED UART.
- Did clang-format --style=file -i on multiple files according to
coding_conventions_c.md
- Added separate serial speed for IAP boot and Led communication, it's possible
that reducing this to 9600 helped someone with faulty HW. With this code they
can do it with simple replacing of a value.
* Main chip can set/clear foreground using a mask mechanism.
- Some preparations for selective colouring.
* Selective mask works - tested on capslock.
- Migrated personal keymaps to new status API.
* Clear the foreground colors to show profile when it's modified.
- Show example of achieving selective caps-lock painting + foreground painting
for layers.
- annepro2LedMaskSetRow is implemented, but still requires testing.
* Implement the QMK side of led blinking to indicate the command was received.
- This stupidly blinks the key when user presses one of the bluetooth commands
to let the user know that the command was received and forwarded to the BT chip.
- TODO: Row/col key positions are hardcoded and not taken from the keymap.
* Reduce memory footprint.
Applying code review suggestions. Moved msgId to globals - preparing for
transmission without copying payload when no retries are necessary.
Added empty readme.md files - required by QMK lint.
Co-authored-by: Tomasz bla Fortuna <bla@thera.be>
* Let the LED chip settle a bit before waking it from the bootloader. (#42)
At least for one person that helps to reliably get the LEDs working without
disconnecting/reconnecting the power to the board multiple times.
Co-authored-by: Tomasz bla Fortuna <bla@thera.be>
* annepro2: rename KEYMAP to LAYOUT, as required by new version of QMK
* annepro2: update ChibiOS configuration files
* annepro2: fix undefined reference to dprint and timer_read32
* annepro2: update ChibiOS MCU name
* update spi driver, fix bad merging with master
* annepro2: add readme and info.json
* annepro2: make code compatible with QMK coding conventions
* tmk_core: temporary fix to allow HT32 based keyboards to work without patched ChibiOS-contrib (AnnePro2)
* AnnePro2: removed core changes
* AnnePro2: Leave only default keymaps
Missing keymaps will be restored in another PR
* annepro2: add licence information
* annepro2: satisfy qmk lint
* annepro2: fix drashna's suggestions
* annepro2: fix matrix
* annepro2: apply code review suggestions
* annepro2: apply remaining code review suggestions
* annepro2: update info.json
* annepro2: remove include
* annepro2: rename keymap to layout
* annepro2: fix typing
* annepro2: apply suggestions from tzarc's code review
Co-authored-by: Nick Brassel <nick@tzarc.org>
* annepro2: more fixes
* annepro2: apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* annepro2: rename file
* more fixes
* Apply suggestions from @tzarc code review
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Update keyboards/annepro2/protocol.h
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Update keyboards/annepro2/chconf.h
Co-authored-by: Nick Brassel <nick@tzarc.org>
* apply CR suggestions
* upgrade readme
* IAP
* update IAP comments, defines
* led fix
* init fix
* annepro2: GPIO cleanup
* annepro2: ioline
* change waiting time
* Start develop for 2022q2
* [Core] Squeeze AVR some more with `-mrelax` and `-mcall-prologues` (#16269)
* Rework generate-api CLI command to use .build directory (#16441)
* Remove `send_unicode_hex_string()` (#16518)
* Change data driven "str" type to represent a quoted string literal (#16516)
* Change data driven "str" type to represent a quoted string literal
* Update docs
* Map data driven `DESCRIPTION` as string literal (#16523)
* update bootloader
* Revert "Merge pull request #2 from qmk/develop"
This reverts commit 9c76065188, reversing
changes made to 240745dc05.
* Revert "update bootloader"
This reverts commit 240745dc05.
* fix rules.mk
* change PROGRAM_CMD
Co-authored-by: codetector <codetector@codetector.cn>
Co-authored-by: Fagl4 <18francisco18@gmail.com>
Co-authored-by: Jakob Gillich <jakob@gillich.me>
Co-authored-by: tech2077 <tech2077@gmail.com>
Co-authored-by: jcdeA <31413538+JcdeA@users.noreply.github.com>
Co-authored-by: Thomaz Moura <5599621+thomazmoura@users.noreply.github.com>
Co-authored-by: Darkhan <darkhanu@gmail.com>
Co-authored-by: Paco <70448173+packorf@users.noreply.github.com>
Co-authored-by: jmarmstrong1207 <32995055+jmarmstrong1207@users.noreply.github.com>
Co-authored-by: 1Conan <7620342+1Conan@users.noreply.github.com>
Co-authored-by: Tomasz bla Fortuna <blagh@thera.be>
Co-authored-by: Tomasz bla Fortuna <bla@thera.be>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: QMK Bot <hello@qmk.fm>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Ryan <fauxpark@gmail.com>
* docs: clarify in "Keymap Overview" what LAYOUT is and isn't
It is not strictly necessary to use LAYOUT macros in keyboard.c, but it
is a convenient abstraction of hardware internals, allowing focus on the
physical keyboard layout.
From the C source point of view LAYOUT is macro with a parameter list,
which expands to a array of rows that each is an array with a keyboard
scancode for each column. A macro parameter list is not an array, and
even less a single array.
Perhaps no big deal, but also no reason to give incorrect hints.
* docs: update "Understanding QMK's Code" to current code structure introduced in 96e2b13d1d
This part of the documentation was no longer correct. I tried updating
it, mainly copy editing and using github links to latest release.
This is not trying to fix all problems, but just trying to fix some
problems while reusing much of the old phrases and structure.
* Update docs to use "qmk format-python"
When helix/rev2 was using split_common, it didn't work properly and I couldn't type on the right hand side.
The cause is that the following code, added in 0.16.0 to `quantum/keyboard.c`, does not include `quantum/split_common/split_util.h` but instead includes `keyboards/helix/rev2/split_util.h`. Therefore, `split_pre_init()/split_post_init()` in `quantum/split_common/split_util.c` was not called.
```c
#ifdef SPLIT_KEYBOARD
# include "split_util.h"
#endif
```
* add licenses message to helix/rev2 files
* Minimize the processing of helix/rev2/local_features.mk
* Changed helix/rev2 default setting to use split_common
* fix helix/rev2:edvorakjp build error
* Remove unnecessary '#include' from keymap.c
* helix keymaps Workaround for build errors. five_rows_jis, fraanrosi, froggy, froggy_106, yshrsmz
* Revert "fix helix/rev2:edvorakjp build error"
This reverts commit 731dbbe151.
Separated into a single PR #16433.
* Revert "Changed helix/rev2 default setting to use split_common"
This reverts commit e76dbd7762.
* add 'SPLIT_*_STATE_ENABLE' into helix/rev2/config.h
* Revert "helix keymaps Workaround for build errors. five_rows_jis, fraanrosi, froggy, froggy_106, yshrsmz"
This reverts commit 9b316c1c6a.
* change helix:default to use split_common
* change helix:five_rows to use split_common
* add comment into helix/rev2/rules.mk
* change helix:led_test to use split_common
* atlas_65.h: add matrix diagram
* atlas_65.h: apply linting
- convert tabs to spaces
- four-space indent
- align backslashes in layout macro
* atlas_65.h: adjust layout macro alignment
Visually separates each side. White-space-only change.
* physically arrange layout macro
Move the matrix position identifiers in the layout macro to resemble the assembled keyboard's layout.
- move `k46` (right side B) to the fourth (Shift) row
- move each of `k1E`, `k2E` and `k3E` (right side navigation keys) up one row
- update keymaps to match
* update maintainer data
Update the maintainer data in `info.json` and `readme.md`.
* Glacier: Community Layout support
Enables the Glacier to use QMK's `tkl_f13_ansi_tsangan` community layout.
- rename `LAYOUT` to `LAYOUT_tkl_f13_ansi_tsangan`
- add `LAYOUTS` rule to `rules.mk`
* info.json: correct maintainer value
Use the maintainer's GitHub username.
* Fix schema validator
It should use the passed schema.
* Add required attributes to keymap schema
* Rework subcommands to validate the JSON keymaps
The 'compile', 'flash' and 'json2c' subcommands were reworked to add
JSON keymap validation so error is reported for non-JSON and
non-compliant-JSON inputs.
* Fix required fields in keymap schema
* Add tests
* Fix compiling keymaps directly from keymap directory
* Schema should not require version for now.
'helix/rev2/keymaps/edvorakjp' was no longer buildable due to changes made by #14864.
The reason is that the prototype of `oled_task_user()` was changed in keymaps/edvorakjp/oled.c, but keymaps/edvorakjp/oled.h was not changed.
Therefore, I modified the prototype in keymaps/edvorakjp/oled.h.
* apply friendly formatting to info.json
* rebuild Configurator layout data
KLE Rotation leads to incorrect layout data when converted to `info.json` format.
* add matrix diagram to sabre.h
After executing `setPinInputHigh(pin)`, it is necessary to wait for the charging time to read from the corresponding pin. This is the same as requiring `matrix_output_unselect_delay()` after doing `unselect_row()` in matrix.c.
* rart67m: move OLED and WPM code to default keymap
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* m75s.h: correct matrix position identifier
`K5C` is actually on row 4, so it should be `K4C`.
* m75s.h: add matrix diagram
* add QMK Configurator data
* polish whitespace
- convert tabs to spaces
- update indent to four spaces
- remove trailing whitespace
* update readme
Didn't seem to be fully updated after being copied from the M65S codebase.
* add LAYOUT_ansi with keymap
ANSI layout with 2u Backspace.
* add LAYOUT_iso with keymap
ISO layout with 2u Backspace.
* add LAYOUT_ansi_tsangan with keymap
ANSI layout with 2u Backspace and 7u Spacebar.
* add LAYOUT_iso_tsangan with keymap
ISO layout with 2u Backspace and 7u Spacebar.
* add LAYOUT_ansi_split_bs with keymap
ANSI layout with Split Backspace.
* add LAYOUT_iso_split_bs with keymap
ISO layout with Split Backspace.
* add LAYOUT_ansi_tsangan_split_bs with keymap
ANSI layout with Split Backspace and 7u Spacebar.
* add LAYOUT_iso_tsangan_split_bs with keymap
ISO layout with Split Backspace and 7u Spacebar.
* move id80 to a v1 to acommondate for v2 and a future v3
* move id75 to v1
* fix manufacturer and product fields, enable backlight
* move user keymap
* Fix DEFAULT_FOLDER
* Update build command
Co-authored-by: zvecr <git@zvecr.com>
* m75h.h: correct matrix position identifier
`K5C` is actually on row 4, so it should be `K4C`.
* m75h.h: add matrix diagram
* add QMK Configurator data
* polish whitespace
- convert tabs to spaces
- update indent to four spaces
- remove trailing whitespace
* rename LAYOUT to LAYOUT_60_tsangan_hhkb
* info.json: correct maintainer value
Field is meant to reference the maintainer's GitHub username.
* rules.mk: enable Community Layout support
* Remove parent-relative paths from keyboards.
* Update keyboards/capsunlocked/cu75/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Misc size regression script improvements.
- Sets environment variable SIZE_REGRESSION_EXECUTING during execution
so hook scripts like `post-checkout` may skip processing.
- Forces checkout of the target branch, including removal of all
temporary object files in the process.
- Prints out a warning on exit stating that the git repository is in an
indeterminate state, and the user needs to swap back to whatever
intended branch they were working with originally.
* Remove `git clean`
* the_mark.h: use ____ for KC_NO
* the_mark.h: number matrix positions electrically
`K300` and `K301` has misleading identifiers - `K300` was on column 1 and `K301` on column 0.
* the_mark.h: use QMK 3-character notation
* the_mark.h: add matrix diagram
* refactor reference keymaps
- convert tabs to spaces
- use four-space indent
- grid align keycodes
- remove extra line breaks
- add layer indexes to `via` keymap
* info.json: apply friendly formatting
* add LAYOUT_ansi_split_bs_space
Includes reference keymap.
* add LAYOUT_iso_split_bs_space
Includes reference keymap.
* info.json: edit maintainer value
There is a Boardsource GitHub account, but knowing the user who maintains it is helpful.
* add m60 lego case in split, with stm32f401 and 411
* Update keyboards/mlego/m60_split/m60_split.h
* Update keyboards/mlego/m60_split/rev1/config.h
* Update keyboards/mlego/m60_split/rev2/config.h
* address the moving of enum in keymaps
* ChibiOS: add support for HID Programmable Buttons
Fixes#15596
* Enable SHARED_ENDPOINT when PROGRAMMABLE_BUTTON is enabled
The Programmable Button driver expects the shared EP to be enabled.
So enforce this invariant.
* chibios/timer: Move the 16-bit timer handling into a separate function
Extract the code which effectively makes a 32-bit tick counter from a
possibly 16-bit ChibiOS system timer into a separate function. Does
not really change the behavior of the timer API, but makes the actions
done in `timer_clear()` and `timer_read32()` more obvious.
* chibios/timer: Rename some variable to better reflect their role
* chibios/timer: Fix 32-bit tick counter overflow handling
The QMK timer API implementation for ChibiOS used a 32-bit tick counter
(obtained from the ChibiOS system timer) and then converted the value to
milliseconds to produce the timer value for QMK. However, the frequency
of the ChibiOS timer is above 1000 Hz in most cases (values of 10000 Hz
or even 100000 Hz are typically used), and therefore the 32-bit tick
counter was overflowing and wrapping around much earlier than expected
(after about 5 days for 10000 Hz, or about 12 hours for 100000 Hz).
When this wraparound happened, the QMK timer value was jumping back to
zero, which broke various code dealing with timers (e.g., deferred
executors).
Just making the tick counter 64-bit to avoid the overflow is not a good
solution, because the ChibiOS code which performs the conversion from
ticks to milliseconds may encounter overflows when handling a 64-bit
value. Adjusting just the value converted to milliseconds to account
for lost 2**32 ticks is also not possible, because 2**32 ticks may not
correspond to an integer number of milliseconds. Therefore the tick
counter overflow is handled as follows:
- A reasonably large number of ticks (the highest multiple of the
ChibiOS timer frequency that fits into uint32_t) is subtracted from
the tick counter, so that its value is again brought below 2**32.
The subtracted value is chosen so that it would correspond to an
integer number of seconds, therefore it could be converted to
milliseconds without any loss of precision.
- The equivalent number of milliseconds is then added to the converted
QMK timer value, so that the QMK timer continues to count
milliseconds as it was before the tick counter overflow.
* chibios/timer: Add a virtual timer to make 16-bit timer updates more reliable
The code which extends the 16-bit ChibiOS system timer to a 32-bit tick
counter requires that it is called at least once for every overflow of
the system timer (otherwise the tick counter can skip one or more
overflow periods). Normally this requirement is satisfied just from
various parts of QMK code reading the current timer value; however, in
some rare circumstances the QMK code may be blocked waiting for some
event, and when this situation is combined with having a rather high
timer frequency, this may result in improper timekeeping.
Enhance the timer reliability by adding a ChibiOS virtual timer which
invokes a callback every half of the timer overflow period. The virtual
timer callback can be invoked even when the normal QMK code is blocked;
the only requirement is that the timer interrupts are enabled, and the
ChibiOS kernel is not locked for an excessive time (but the timer update
will eventually work correctly if the virtual timer handling is not
delayed by more than a half of the timer overflow period).
Keeping a virtual timer always active also works around a ChibiOS bug
that can manifest with a 16-bit system timer and a relatively high timer
frequency: when all active virtual timers have delays longer than the
timer overflow period, the handling of virtual timers stops completely.
In QMK this bug can result in a `wait_ms()` call with a delay larger
than the timer overflow period just hanging indefinitely. However, when
the timer update code adds a virtual timer with a shorter delay, all
other virtual timers are also handled properly.
* Create a build error if no bootloader is specified.
* Update builddefs/bootloader.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Don't make EEPROM size assumptions with dynamic keymaps.
* Add support for checking against emulated flash, error out if someone attempts to build a board without specifying EEPROM size.
* Reorder defines so that MCU is considered last.
* Refactor EEPROM definitions for simplicity.
* Fix max sizing of kabedon/kabedon980.
* Fix max sizing of mechlovin/olly/jf.
* Fix unit tests.
* Review comments, add messages with values during build failures.
* move layout macro alias to info.json
* info.json: fix layout macro reference
* info.json: fix layout data
Original layout data was generated with rotation, which breaks the rendering.
* info.json: remove layout macro alias
It's not used anywhere, so no need to keep it.
* rules.mk: enable Community Layout support
* move ISO Enter argument to home row
Moves the ISO Enter key's argument to the home row to conform to QMK's standard for traditionally-staggered boards.
* update info.json data
* fix keymap alignment
Both the `default` and `via` keymaps had misalignments on the top 3 layers, which was misleading as to which keycode was on which switch on those layers.
* fix layout macro reference in info.json
* friendly-format info.json, phase 1
Adds line breaks between keyboard rows.
* correct info.json key sequence
* bb.h: use XXX for KC_NO
* bb.h: add matrix diagram
* add LAYOUT_ansi_split_bs
Includes reference keymap.
* add LAYOUT_iso_split_bs
Includes reference keymap.
* info.json: remove meta key
* info.json: apply/polish friendly formatting
* refactor LAYOUT_all macro
- move the argument/keycode for the right half of split Backspace next to the left half
- update QMK Configurator layout data
* update QMK Configurator layout data for the other macros
Moves the EncoderClick objects up, and offsets the arrow keys down 0.25u.
* rename LAYOUT_all to LAYOUT_75_ansi_rwkl
The only supported layout is 75% ANSI, with two modifier keys on the right of the Spacebar instead of three.
* info.json: use maintainer's GitHub username
* info.json: apply friendly formatting
* ck65.h: use QMK 3-character notation
* move Enter keycode/argument to home row
This commit makes the `LAYOUT` macro conformant to `LAYOUT_65_iso` in QMK.
* rename LAYOUT to LAYOUT_65_iso
* use QMK-native KC_TRNS alias in keymaps
Replaces instances of `KC_TRNS` with `_______` in keymaps.
* info.json: update maintainer field
* Initial M75H support
* Remove BSLS key
* Add M75S initial support
* Define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR to allow VIA
* Add layer 1 for M75H
* Add layer 1 for M75H
* Fix layouts
* Add BOOTLOADER and remove BOOTLOADER address from rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* solder.h: add matrix diagram
* solder.h: remove unnecessary comments
* rework LAYOUT_60_iso to LAYOUT_60_isoenter_split_bs
True ISO layouts are not supported on this keyboard because the PCB lacks support for split Left Shift. Renames the `iso` to `isoenter` to specify this.
- denotes use of Split Backspace
- move Backslash keycode to home row
* info.json: remove trailing whitespace
* info.json: clean up
Sort the layout trees into the same order as `solder.h`, and remove the `LAYOUT_60_all` tree (doesn't exist in source).
* solder.h: align positional arguments
Helps me proof-read the layouts at a glance. No logic change.
* fix syntax errors in keymaps
* remove ISO layouts
As previously noted, ISO layouts are not supported due to the PCB's lack of support for split Left Shift.
* rename LAYOUT_60_ansi_tsangan_split_bs to LAYOUT_60_tsangan_hhkb
Also renames `60_tsangan_splt_bs` keymap to `60_tsangan_hhkb`.
* rename LAYOUT_60_ansi_tsangan to LAYOUT_60_ansi_tsangan_split_rshift
Also renames `60_tsangan` keymap to `60_ansi_tsangan_split_rshift`.
* rename LAYOUT_60_ansi_arrow_split_bs_7u_spc to LAYOUT_60_ansi_arrow_tsangan_split_bs
Also rename `60_ansi_arrow_splt_bs_7u` to `60_ansi_arrow_tsangan_split_bs`.
* rename LAYOUT_60_ansi_arrow_7u_spc to LAYOUT_60_ansi_arrow_tsangan
Also renames `60_ansi_arrow_7u` keymap to `60_ansi_arrow_tsangan`.
* rename keymaps based on layout macro used
Making this easier to track in my head while I work on it.
* info.json: fix syntax errors
* rename LAYOUT_60_ansi_split_bs_7u_spc to LAYOUT_60_ansi_tsangan_split_bs
- renames `60_ansi_split_bs_7u_spc` keymap to `60_ansi_tsangan_split_bs`
- removes `layout_aliases` entry from `info.json` (creates incompatible data conflict)
* rename LAYOUT_60_ansi_7u_spc to LAYOUT_60_ansi_tsangan
- renames `60_ansi_7u_spc` keymap to `60_ansi_tsangan`
* info.json: remove LAYOUT_60_ansi_tsangan layout_aliases entry
Causes an incompatible data conflict.
* add second layer to 60_ansi keymap
* update via keymap
Now matches the behaviour of the default keymap.
* fix syntax errors in keymaps, take 2
* add RGB and Navigation keycodes
Adds RGB and Navigation keycodes to the `60_isoenter_split_bs`, `default` and `via` keymaps.
* Add new keyboard keychron_q1_rev_0101 for Keychron.
* Update keymaps of keychron_q1_rev_0100 and keychron_q1_rev_0102.
* Update keyboards/keychron/q1/rev_0101/rev_0101.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keymap.c
* Add new info.json.
* Update info.json
* Update keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/keychron/q1/rev_0101/rev_0101.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/keychron/q1/rev_0101/rev_0101.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keymap.c
* Update info.json
* Update all via keymaps keymaps of q1 series. KC_TASK and KC_FLXP are now defined using the VIA user keycodes range so they can be renamed "TASK" and "TILE" as a shortName in VIA.
* Add keyboards keychron_q2 series.
* Update default keymaps of keychron_q2 series.
* Update rules.mk and MCU_LDSCRIPT specified as STM32L432xB.
* Update keyboards/keychron/q1/rev_0101/rev_0101.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update config.h
* Update config.h
* Update config.h
* removed duplicated ifdef
* Update keyboards/keychron/q1/rev_0101/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0110/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0110/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0113/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0111/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0111/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0112/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0112/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/keychron/q2/rev_0113/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update rev_0101.c
* Update rev_0101.
* Enable support for edit RGB lighting in VIA.
The updated design file at https://git.io/JyE0K includes only the
enabled RGB_MATRIX modes.
* Update q1.
* Add rgb matrix support for q2 of keychron.
* Update rule.mk.
* Delete comment block which is unwanted.
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Cesar Rojas <cesar.fieoner@gmail.com>
Co-authored-by: lokher <lokher@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Adam Karim <adam@akarsoft.com>
* Add example implementations for compatible MCUs list
* Update docs/compatible_microcontrollers.md
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* keyhive sofle rgb: fix configuration.
* Add Colemak-DH and cycle layer keycode.
* Fix indentation.
* Add PLACEHOLDER for better readability.
* Fix breaking changes.
* Just one colemak.
* PR Cleanup
* Use NO_PIN definition instead of C7
* Define animations individually
* Remove via json file and update documentation
* Reduce LED brightness, one of the animations caused a crash
* More PR feedback.
* Better credit.
* Disable NKRO.
* Cleanup RGB configuration.
* animations defined in keymap.
* Update keyboards/sofle/keyhive/readme.md
* PR Feedback.
* Update phrasing from template.
* Disable RGBLIGHT_ENABLE in keymap for better compatibility with default keymap.
* Set a default animation.
* Use default in keyboard readme.
* Update keyboards/sofle/keyhive/info.json
* Move via specific layout into via keymap.
* WIP: virgo keyboard
* Finish layout
* Enable debugging and format
* Debug keypresses
* Add function layer
* Fix whitespace
* Fix some more whitespace
* Add Jeremy's map
* Add left split ortho 2U board
* Enabled extrakeys for volume & media control
* More work on split ortho 2U...
...but still not complete
* Finish default layout
* Fix many issues by renaming the keyboard
* Add right half as a keyboard
* Update config for right side
* WIP: Add split ortho 2U board
* WIP: Correct rules & config
* More work on split ortho
* More work on split ortho 2u
* Nearing completion on split ortho
* Remove left and right separate keyboards.
Split ortho 2U is complete and they are not needed.
* Add uglydense keyboard
* Rename directory for uglydense
* Swap right Fn and right ctrl keys
* Add jeremy's layout
* Add ian layout
* Add reset key, which is very useful for flashing.
* Add Levi's layout
* Update Levi's layout
* Fix Levi's Layout
* Fix Levi's layout again
* Add a README with some basic information
* Add keymap customization info to uglydense readme
* Make the readme make a little more sense.
* Make John a layout with left fn and left super swapped
* Update John's layout
* Add Carl's layout
* Add Sean's layout
* Add reset keys to all layouts
* Swap LALT & LGUI on default layout
* shpurk keyboard: initial commit
* Add nathaniel & shpurk layouts
* Update instructions to include necesarry dependencies
* Add Lrrr keyboard, ruler of Omicron Persei 8
* Update README for Lrrr
* Update Lrrr it uses Caterina bootloader
Also B1 wasn't working for Row 6, so I changed that to F6
* Swap RCTL & RALT
* Un-swap RCTL and RALT, making RCTL closer to right thumb
* Add printscreen to my layout
* Rename lrrr to Launch, enbiggen L-Shift to 2U
* Add layout files for Launch
* Rename launch to launch_1
* Add levi layout for ortho_split_2u
* Update carl keymap
* Add launch testboard
* Implement keyboard keycode reading using raw hid
* Enable dynamic keymap
* Add config support to launch_1
* Implement probe command, make logical key names match configurator
* Update logical key names again
* Add layout generator for keyboard configurator
* Add board name and version
* Add board name and version to test board
* Fix issues with compiling board and version commands
* Rename uglydense to launch_alpha_1 and launch_1 to launch_alpha_2
* Generate layouts for other launch prototypes
* Fix launch_alpha_1 logical names
* Add launch_beta_1
* Fix building production hex file with atmel-dfu bootloader
* Limit backlight brightness
* USB mux handling
* Allow repeat start
* Do USB MUX init before bootmagic
* Fixes for mux init
* Fix register write size for programmable function control
* Ensure bit shifts are correct
* Improve documentation
* Fix when i2c read ack condition happens
* Fix extra start in i2c_set
* Add ISP instructions
* Add fuse information
* Refactor
* Add RGB matrix support
* Fix RGB matrix
* Update Jeremy layout
* Enable audio controls
* Update Jeremy layout
* Ensure that n-key rollover is used
* Port changes to other launch boards
* Configuration values for starting HSV and speed (#7740)
* Define default HSV and speed for RGB matrix.
* Documentation for configuration values RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT and RGB_MATRIX_STARTUP_VAL.
* Document RGB_MATRIX_STARTUP_SPD.
* Preserve the ordering.
* Set default RGB mode, hue, and saturation
* Reduce AVR clock to 8MHz
* Update launch_beta_1 with new USB ID
* Update default LED mode
* Set default hue
* Disable RGB while suspended
* Add led value and color commands
* Add max value to CMD_LED_GET_VALUE
* Do not save custom mode to eeprom
* Add reset to bootloader command for Launch keyboard
* Rename launch_beta_1 to launch_1
* Enable LTO when compiling for launch_1
* Allow setting individual LED's
* Convert tabs to spaces
* Unlock on RESET keypress:
- Display unlock pattern
- Disable LED get/set functions
- Enable reset to bootloader function
* Reduce brightness of rainbow backdrop in unlock pattern
* Add hid commands for setting led matrix mode
This changes the color setting to not change the mode, and set the hue
and saturation for QMK effects.
* Fix `CMD_LED_GET_MODE`
* Add Levi's Launch layout
* Fix layer mistake in Levi's Launch layout
* Add matrix command
* Define default RGB matrix speed
* Add active_keys effect
* Move definition of RGB modes inside ifdef testing for custom RGB modes
* RGB parameters per layer
* fix: Call `system76_ec_rgb_layer` after setting mode
* Include layer 3 and 4 in default layout for launch_1
I added support for layer 3 and 4 to the Configurator, but it seems to
load bogus values.
`dynamic_keymap_reset()` has a comment saying:
```
// Reset the keymaps in EEPROM to what is in flash.
// All keyboards using dynamic keymaps should define a layout
// for the same number of layers as DYNAMIC_KEYMAP_LAYER_COUNT
```
Other keyboards seem to have default layouts that only list the first
two layers while setting `DYNAMIC_KEYMAP_LAYER_COUNT` to 4, but
whatever. This appears to make the Configurator behave as expected with
layer 3 and 4.
* Use EEPROM to store RGB parameters
* Add layer 2 and 3 to other keymaps
* Add LED_SAVE command
* Use eeprom_update_block to improve performance
* Revert "Configuration values for starting HSV and speed (#7740)"
This reverts commit de1f60fd37.
* Update launch_1 rules.mk for changes in Qmk
* WIP keycodes matching EC behavior
* Modify default layout to match design
* Apply updates to jeremy layout
* Improvements to RGB keycodes
* system76_ec: Add mode to disable layer backlight
* launch_1: Use `KC_NO` instead of `KC_TRNS` for default layout
* Revert "launch_1: Use `KC_NO` instead of `KC_TRNS` for default layout"
This reverts commit f71c5e7ac3.
* Fix building bootloader
* Workaround for upstream orientation
* Custom USB IDs for USB hubs, disable USB hub feature controller
* Set USB mux orientation in a loop for one second
* Set mux orientation 100 times with 10 ms delay
* Update Jeremy's keymap
* Update Levi's Launch keymap
* Update flashing instructions and rewrite layout design instructions
* Update README.md
* Add a system76_ec command to disable input events
For testing purposes.
* Enable system76/launch_1 keyboard to work with QMK Firmware 0.15.3
- Migrate system76/launch_1 from 0.7.103:
- Explicitly enable used RGB matrix effects
- Initialize flags field of `rgb_config_t` union/struct
- Account for header and source file location changes
- Update AVR platform makefile with Atmel DFU bootloader option
- Update ATmega32U4 bootloader to latest from Microchip
- Format C sources with ClangFormat
- Format Markdown text with Prettier
* Remove System76 pre-release or test keyboards and keymaps
* Add licensing and replace guards in headers for system76/launch_1
* Remove options impact for system76/launch_1
* Revert AVR platform changes for `atmel-dfu` bootloader
* Update system76/launch_1 README
* Add system76/launch_1 information JSON file
* Replace `util/delay.h` timing abstractions in system76/launch_1
* Use I2C QMK abstractions in system76/launch_1
* Fully revert AVR platform changes for `atmel-dfu` bootloader
* Move `layouts.sh` into `keyboards/system76`
* Implement GitHub PR suggestions for system76/launch_1
* Make additional system76/launch_1 updates
* Implement minor system76/launch_1 change requests
* Add custom version of Bootmagic Lite and document fuse values for system76/launch_1
* Remove the RESET HID command from system76/launch_1
* Reorder `process_record_user` in system76/launch_1
* Add `post_rules.mk` to system76/launch_1
* Fix overlapping key in sytem76/launch_1
* cleaning up
* deleting to undelete
* Stub out defaults
* Jabberwocky firmware WIP
* Stubbing out keymap spacing
* Default keymap and layout updates
* start stubbing out JSON for configurator
* more WIP
* Update jabberwocky.h
* Add Readme
* Apply suggestions from code review
* Fix layout capitalization
* Updates to personal and default keymaps
* Add instructions for jumping the bootloader
* Update keyboards/nopunin10did/jabberwocky/rules.mk
* Add easier ctrl-alt-del to my keymap
* Start stubbing out KW firmware
* More firmware and keymap stuff
* Fix compile error
* Filling out other layers in default keymap
* Update layout JSON and finish default layouts
* Add rotary and LED code
* Add VIA support (first draft)
* Move VIA compatibility to VIA-specific branch
* Fix readme formatting
* Fix state count issue in LED code
* Fix an erroneous change to a Jabberwocky file
* Default LEDs to on.
* Apply suggestions from code review
* Delete kastenwagen.json
* Update keyboards/nopunin10did/kastenwagen/config.h
* Apply suggestions from code review
* Apply suggestions from noroadsleft code review
* Update image in the readme
* Split 1840 & 48 into two boards (part 1)
* Splitting into two keyboards (part 2)
* Recommend the use of functions instead of keycodes
* Commit suggested review
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Recommend the use of functions instead of keycodes
* Commit suggested revision
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* add buzzerd
(untested, WIP)
* configured linear actuator and fixed keymap
* configuration tweaks and added custom keymap
* add custom tapping term for home row mod
* added readme
* remove ionide folder
* added scroll function to trackpoint
* keymap reworked
* using one shot shift and removed dynamic macros
* reworked default keymap
* adapted to latest qmk changes
* remove caps word from default keymap
* use provided coding guidelines
* use get_highest_layer in favour of biton32
* fixed formatting
* remove unnecessary define statement
* Add dactyl manu 6x6 with stm32 support and 5thumb cluster
* Add review changes
* Add license to new files
* Fix enums for custom keymap
* Readme update
* Fix readme to follow one from template
* Add missing licence to files
* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
* Remove readme from onekey keyboard
* Make separate macro for 5thumb
* Added Handwired Redragon K552 with default and via keymaps
* Resolve some request changes, and change the cols pin to a better one.
* Resolved request changes
* Added OLED support and resolve request change
* Increase polling rate to 1000hz
* Update font for OLED, and change logo
* Added LED Underglow support
* Add personal custom keymap
* Nit some line, to get better way to look on code
* Refactor everything and solved some issue.
* Resolved issue
* Add meck_tkl
* Fix configuration and pin assignment
* Rellocate A10 pin, as it is used by the USB DFU bootloader
* Add volume and media keys to the function keys layer
* Rellocate source files to the handwired keyboards folder and add documentation
* Review changes for PR
- Improve LAYOUT macro to match the keyboard layout.
- Use "kxy" as pin names on the LAYOUT macro.
- Remove unused mcuconf.h and halconf.h.
- Fix README.
* Improve layout macro naming
* Added WestM keyboard
* Update keyboards/westm/westm68/config.h
* Update keyboards/westm/westm68/config.h
* Update keyboards/westm/westm68/rules.mk
* Update keyboards/westm/westm68/rules.mk
* Update keyboards/westm/westm68/rules.mk
* Updated Ergo as well to match Drashna's recommended changes
* Added layers for VIA and updated keymaps
* Applied missing changes that were done on 68 but not Ergo
* Update keyboards/westm/westmergo/readme.md
* Update keyboards/westm/westmergo/readme.md
* Update keyboards/westm/westm68/readme.md
* Update keyboards/westm/westm68/rules.mk
* Update keyboards/westm/westmergo/rules.mk
* Update keyboards/westm/westm68/rules.mk
* Update keyboards/westm/westmergo/rules.mk
* Update keyboards/westm/westm68/readme.md
* Updated README bootloader and keymaps
* Updated info.json
* Changed to proper layout (for real this time)
* Updated info.json
* Fixed Alice layout in info.json
* Add Kudox Full keyboard
* Add keyboards/kudox_full SPDX identifier
* Modify rule.mk of keyboards/kudox_full
* Remove html code from README of keyboards/kudox_full
* Modify readme of keyboards/kudox_full
* rev1.c includes rev1.h - kudox-full/rev1
* Move to <keyboard>.c oled_task_user and eeconfig_init_user
* Move post_config.h MOUSEKEY_*
* Change BOOTMAGIC_ENABLE no kudox_full
* Modify the obsoleted codes
* Modify eeconfig_init_kb from eeconfig_init_user
* Set none as default, but values
* Add about the bootloader on kudox_full/readme
* Modify the comments in keyboards/kudox_full/rules.mk
* add optional support for Frosty Flake rev 20130602
* update documentation with instructions on building for rev 20130602
* support revisions using subfolders instead of preprocessor directives
* rules.mk cleanup
* Initial commit of kball
* Pretty much working
* Rename to aball
* Cleanup
* Fix typo and make instructions
* Refactor to use qmk spi
* Suggestions from ZVECR
* Update keyboards/handwired/aball/adns9800_srom_A6.h
* Update keyboards/handwired/aball/adns.c
* Update keyboards/handwired/aball/adns.c
* Update keyboards/handwired/aball/adns.c
* Added copyright and source attribution
* Update keyboards/handwired/aball/rules.mk
Include as quantum lib to help avoid timing issues with LTO
* Only send report on change, adj sensitivity, fix src include
* Fix issue causing constant reports and bad clamping
* Streamline conversion to int, add required wait before burst read
* Changes to track develop
* Update rules with new feature descriptors, add info.json
* Add stub layout
* Rework / cleanup key matrix. Add missing CS pin define for new ADNS driver
* Add stub keymap to enable compile
* rules.mk: Build Options sorting and white space
* use QMK 3-character notation
* info.json: apply friendly formatting
* info.json: use 3-character notation
* move layout macro alias to info.json
* number matrix identifiers by electrical position
* Hard Light Mark 2 and keymaps
This time with minor competence!
* Update keyboards/edi/hardlight/mk2/rules.mk
* Delete config.h
* Apply suggestions from code review
* first Adalyn commit
* fixed json and removed via
* fixed GPL headers and rules.mk
* fix extra space after gpl
add vial keymap
* Removed VIAL and revised rules.mk
* updating per request and completing readme
* initial prime_o commit
* Cleaned up comments, other things.
* Updated keymap to use standard seven-underscore KC_TRNS notation
* initial prime_o commit
* Cleaned up comments, other things.
* Updated keymap to use standard seven-underscore KC_TRNS notation
* Initial Code for Wren Keyboard
This is the initial hardware test commit for the wren. More detailed keymaps will be added soon.
* Update layout and add author
* Add PCB Image and Clarify Bootloader Instructions
* Update config.h
Updating config.h to remove mentions to LED backlighting (not supported on this PCB)
* Update wren.h to match PR checklist
* Roll back addition of code that should have been in wren.h
* Update /default/keymap.c
Make keyboard.c "pristine" to the best of my ability and add information about configuring a "non-standard" layout.
* Update readme.md
* Update keymap readmes to match PR checklist
* Update readme.md
* Final touches before PR
* Un-delete non-wren files
* Create rules.mk
* Create config.h
* Update keyboards/wren/keymaps/walterhanley/keymap.c
* Update keyboards/wren/keymaps/walterhanley/keymap.c
* Update keyboards/wren/wren.c
As per feedback, move encoder definition to wren.c from keymap.c.
* Update keyboards/wren/keymaps/walterhanley/keymap.c
As per feedback, move encoder definition to wren.c from keymap.c
* Update keyboards/wren/keymaps/default/keymap.c
As per feedback, move encoder definition to wren.c from keymap.c
* Create Keymap-Level config.h
I've been dealing with some issues with this board over-drawing power on certain devices; this should fix that issue on my build without affecting other users.
* Add bells and whistles to personal keymap
This update adds bells and whistles to my personal keymap. I couldn't figure out how to modify rotary encoder functionality for just my personal layout with the definition in wren.c, so I moved it back into the individual keymaps. Please let me know if this is an issue and I can look into possible alternative implementations.
* Update to match drashna's requested changes
* Update keymap.c
This update refines drashna's requested changes.
* Update keymap.c
Fix typo
* add QMK Configurator data for Atlas
* add QMK Configurator data for Pearl
* add QMK Configurator data for Zeus
* add QMK Configurator data for Zeuspad
* physically arrange Zeus layout macro
Moves the keycode for the rotary encoder to the top row.
* kbdfans/odin/*: Reformat info.json to be human-readable
Apply `qmk format-json` to the `info.json` files for `kbdfans/odin/rgb`
and `kbdfans/odin/soldered; no actual content changes.
* kbdfans/odin/*: Fix key ordering in info.json
The order of key entries in `info.json` did not match the order of
layout macro arguments (apparently the keys in the cursor block, which
are shifted down by 0.25u with respect to the rest of keys, were treated
as separate rows). Fix the order to make the configurator
produce proper keymaps.
* Drashna's method is applied to rotary encoder rotation detection. rgb_matrix_user.inc -> rgb_matrix_kb.inc.
* Disabled some RGB MATRIX effects to shrink the firmware size.
* via # of layers changed from 5 to 4.
* Diff reduction between ADNS9800 and PMW3360 drivers.
They are very similar devices. This (somewhat) unreadable diff is
essentially a no-op, but it makes a `vimdiff` between the 2 drivers much
more readable.
* Cleanup pwm3360 driver some more.
Remove redundant calls to spi_start() and spi_stop(), as pmw3360_write()
will already call these.
Timing does not match Pixart documentation for this sensor (may have been carried forward from adns9800).
Not aware of any issues coming from this currently.
It should only cause issues when writing to multiple registers in succession which currently only happens during initialization for the PMW3360.
This should prevent future issues with write operations if other features of the sensor are added.
* [Keymap] Add vitoni layout for GMMK Pro (ISO)
Keymap has layered cursor keys similar to laptop keyboards.
* Configure RGB defaults for startup
* Configure encoder to change value/brightness on FN layer
* Remove FN layer and add dedicated RGB layer
* Make RGB layer sticky (using TG) to avoid holding FN while configuring RGB
* Add RGB indicators for active layers
* Add RGB indicator for active RESET mode
Signed-off-by: Victor Toni <victor.toni@gmail.com>
* Configure idle / USB suspend settings
* Add RGB fade in when resuming after suspend
* Add RGB fade out before suspend
* Add fade out before idle
* Add breathe effect when idle
* Initiate RGB Support
* Add RGB Support for PIX
* Revert Encoder pin assignment
* Lower default RGB LED to 15
* Use Left shift for far left key
* Replicate via keymap to default keymap
* [Keymap] Adding personal keymap for ikki68 Aurora
* Add license headers
* Added support to toggle LED modes
* Added a toggleable layer for macOS (which swaps the GUI/ALT positions)
* Add script to build all bcat keymaps at once
* Move userspace RGB to separate source file
* Move layer handling logic into userspace
* Move keycap aliases into userspace
* Add OLED userspace library and Lily58 OLED setup
* Add Luna keyboard pet, generic OLED pet framework
Luna artwork and original implementation by HellSingCoder, licensed
under GPL v2.0.
See also: 6dfe915e26/keyboards/sofle/keymaps/helltm/keymap.c
* Use OLED on bcat's Crkbd
I had to turn off a few unused features to address firmware size limits.
* Remove vestigial NK_TOGG keybindings
* Add post-render hook to OLED pet API
This enables OLED pets to draw custom widgets (e.g., LED indicator
status) on top of their animation frames.
* Add Isda keyboard pet
For future use on my Unicorne keyboard. Unicorn artwork by sparrow666,
licensed under GPL v2.0.
See also: https://opengameart.org/content/unicorn-2
* Replace OLED timeout implementation with custom
The default implementation never lets the OLED turn off if a continuous
animation is in progress. The custom one does.
* Move keyboard state for OLED functions into struct
No change in firmware size, but makes keymaps read a little nicer and
enables more functionality in OLED pets.
* Enable continuously running OLED pet (for Luna)
* Sync OLED state; enable Bootmagic only when needed
The new extensible split transport for Split Common finally allows OLED
on/off status to be synced between halves of the keyboard. :)
Unfortunately, this required disabling Bootmagic Lite to keep my Crkbd
under the firmware size limit. (I now after 28 bytes free on avr-gcc
version 8.5.0.) So now I'll enable Bootmagic only on keyboards that
actually require it, i.e., ones lacking an accessible reset button.
* Update 9-Key macropad keymap for working from home
* Remove includes redundant with quantum.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Simplify BCAT_OLED_PET makefile logic
* Swap some keys on my 9-Key macropad around
* Inline spurious variable in OLED code
* Remove max brightness that's now set by default
The default max brightness is only 120 rather than 150, but that might
actually fix some weirdness I've seen with bright white LED settings.
* Enable specific RGBLIGHT modes instead of default
The general trend these days seems to be enabling only the modes you
want, so I'm manually expanding the ones currently enabled by
RGBLIGHT_ANIMATIONS.
I'd like to try out the TWINKLE mode too, but it seems not to work at
all on ARM right now, and all my usable RGBLIGHT keebs are ARM boards.
* Reenable RGB_MATRIX animations after #15018
My Crkbd still has a reasonable amount of free space with these:
27974/28672 (97%, 698 bytes free). The RGB_MATRIX_KEYPRESSES effects
would put it over the firmware size limit, but I really don't ever use
those anyway.
* Use new get_u8_str function for WPM display
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Updated default keymap to match one shipping with the boards
* Fix encoder function so it works for users
of the online configurator
* Updated Info.json to match default keymap
* Changes as per review
* Added accent.
* Added keymap for 5x6 dactyl manuform on KOY layout
* Added xd75 folder that is not in the main repo anymore?
* Added keymap for naked48 on KOY layout
* Added keymap for splitreus62 on KOY layout
* Added keymap for Dactyl Manuform 4x6 with RGB LEDs and K.O,Y layout
* Fixed error where handedness was not correctly determined because of combining vbus pins of both controllers.
* Replaced dynamic macros bith backspace and delete.
* Changed detecting handedness from detecting usb communication to checking a wired pin. This avoids problems when booting the PC, where VBUS is already high, but no communication is happening -> both halves think they are not master.
* Update keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/naked48/keymaps/scheiklp/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/naked48/keymaps/scheiklp/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/naked48/keymaps/scheiklp/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keymap.c
Added copyright
* Update config.h
* Update rules.mk
* Updated files according to PR requests.
* Update keyboards/xd75/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/xd75/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/xd75/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/xd75/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Removed duplicate code. Updated copyright info.
* Restored readme
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Add layer key indicator example
* Update description
* Deobfuscate with index variable
* Add missing layer variable
* Correct color name and indicator function
* Function typo
* Place layer variable outside loops to save firmware space
Co-authored-by: filterpaper <filterpaper@localhost>
Lower the tick rate from 10kHz to 1kHz (otherwise all the extra interrupts
reduce the achievable scan rate). Enable the WAIT_US_TIMER using GPT TIM3.
Observed scan rate on the K320 is increased from 625Hz to 2090-2120Hz.
* Update feature_macros.md
Added a link to the usage of SAFE_RANGE as this wasn't clear to me when I visited this page in isolation.
* Fix typo
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Update encoder callback
* Move encoder callback
- Encoder callback function was moved from ``encoder_update_user`` in ``keymap.c`` to ``encoder_update_kb`` in ``keyboard.c``
* Update keyboards/evolv/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Use tap_code() on encoder callback
Co-authored-by: Ryan <fauxpark@gmail.com>
* Use tap_code_delay
* Minor readability changes
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Add keymap for the Keychron Q1 ISO layout
- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default.
- RGB lighting turns off when the computer sleeps
- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
* Update keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c
Suggestion from review
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Draft implementation
* formatting
* fix combined buttons
* remove pimoroni throttle
* sync pointing on a throttle loop with checksum
* no longer used
* doh
Co-authored-by: Drashna Jaelre <drashna@live.com>
* switch pimoroni to a cpi equivalent
* add cpi support
* allow user modification of seperate mouse reports
* a little tidy up
* add *_RIGHT defines.
* docs
* doxygen comments
* basic changelog
* clean up pimoroni
* small doc fixes
* Update docs/feature_pointing_device.md
Co-authored-by: Drashna Jaelre <drashna@live.com>
* performance tweak if side has usb
* Don't run init funtions on wrong side
* renamed some variables for consistency
* fix pimoroni typos
* Clamp instead of OR
* Promote combined values to uint16_t
* Update pointing_device.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Add open-drain GPIO support.
* `qmk format-c`
* Wording.
* Remove port GPIO implementations as the only board that uses it has its own internal defs anyway. Will wait for first-class handling of ports in core before reimplementing.
* support for Stack Overflow The Key from Drop - adapted from @frap129
* addressing code review comments
there's still some issues related to LEDs so i think for now the best
course of action is to remove those items until we can get better
details on the assembly of the board.
* removing this on the correct branch
* cleaning up more code review comments, moving to simpler/common formats for maps
* it is a C not a G fool
* well, looks like you can do it this way too for booting/dfu
* fixing missing newline for gcc to be quiet
* removing busted links
* formatting to match current template
* Update keyboards/massdrop/thekey/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Andy Piper <andypiper@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Migrate Thermal Printer feature to UART driver
* Migrate 40percentclub UT47 to UART driver
* Migrate Centromere to UART driver
* Migrate Chimera Ergo to UART driver
* Migrate Chimera Let's Split to UART driver
* Migrate Chimera Ortho to UART driver
* Migrate Chimera Ortho Plus to UART driver
* Migrate Comet46 to UART driver
* Migrate Palm USB converter to UART driver
* Migrate Sun USB converter to UART driver
* Migrate Dichotomy to UART driver
* Migrate Honeycomb to UART driver
* Migrate Mitosis to UART driver
* Migrate Redox W to UART driver
* Migrate Uni660 to UART driver
* Migrate Telophase to UART driver
* remove macroMode functionality
* update kbdfans/kbd75/rev1:noroadsleft keymap
- replace `_______` instances with `XXXXXXX` on System layer
- add line breaks between keymap layers
* add tkl_f13_ansi Community Layout
* add tkl_f13_ansi_tsangan Community Layout
* add tkl_f13_iso Community Layout
* add tkl_f13_iso_tsangan Community Layout
* add missing layout diagrams to readme.md
* fix layout macro references in info.json files
* add tkl_nofrow_iso Community Layout
* enable Community Layout support: dyz/dyz_tkl
* enable Community Layout support: kopibeng/mnk88
* enable Community Layout support: mechlovin/infinity88
* enable Community Layout support: tgr/jane/v2ce
* tgr/jane/v2ce: rename/add layouts
The ANSI Tsangan and ISO Tsangan layout macros did not note that Split Right Shift was supported. This commit notes the Split Right Shift in the macro name, and adds Tsangan layouts without Split Right Shift for ANSI and ISO, which fixes the Community Layout support.
This commit makes the mode keys transparent in the LOWER layer instead
of disabled.
Before this commit, the following sequence of key presses `LGUI+LOWER+l`
would translate into `Cmd+right` in macOS and, therefore, move the
cursor to the end of line.
But, pressing `LOWER+LGUI+l` would completely ignore the `LGUI` and,
therefore, move the cursor one letter to the right.
With this change, pressing `LOWER+LGUI+l` produces the same result as
`LGUI+LOWER+l`.
This is also true for multiple other combinations, like
`RALT+SHIFT+LOWER+l`, `LOWER+RALT+SHIFT+l`, `SHIFT+LOWER+RALT+l`, etc.
Co-authored-by: Gaston Jorquera <gjorquera@gmail.com>
* Changelog.
* Remove the asymmetric encoder PR from listing due to revert.
* More docs
* More docs
* More docs
* Links to changelog, updated schedule, slotted in 2 weeks of testing at the end so that there's no ambiguity with PR merge dates.
* Clarify keyboard moves.
* Fix dates
* Sidebar
* Fixup dates.
* Fixup dates.
* Wording.
* New feature: `DYNAMIC_TAPPING_TERM_ENABLE`
3 new quantum keys to configure the tapping term on the fly.
* Replace sprintf call in tapping_term_report by get_u16_str
* Replace tab with 4 spaces
* Add ifndef to WS2812 timing constraints
Due to the way that the PrimeKB Meridian PCB was designed, this change
is needed in order to properly adjust the LEDs.
Testing:
* Compiled primekb/meridian:default successfully
* Compiled random board (walletburner/neuron:default) successfully
* Fix linting errors
Missed some spacing
* More linting fixes
Spacing on the comments... really?
* Rename WS2812 timing parameters for clarity; add comments
* Add docs update for the WS2812 timing macros
* Fix typo on comment
* Add ifndef for WS2812_RES
* Update double backticks and table with parameters
* Move timing adjustments documentation to ws2812_drivers
* Move timings adjustment discussion to bitbang section
* Update T0H and T1H definitions in subtractions
* format
Co-authored-by: Gondolindrim <alvaro.volpato@usp.br>
Co-authored-by: zvecr <git@zvecr.com>
* rename LAYOUT to LAYOUT_all
* pluckey.h: add matrix diagram
* pluckey.h: use XXX for KC_NO
* add LAYOUT_ergo macro with keymap
`info.json` had layout data for this macro, but the macro was not present in the source code.
* info.json: correct key sequence
Fixes incorrect key assignments in QMK Configurator.
* Add per-test keymaps
* Add better trace and info logs for failed unit-tests
* Add layer state assertion with tracing message
* Use individual test binaries configuration options
* Add basic qmk functionality tests
* Add tap hold configurations tests
* Add auto shift tests
Co-authored-by: Nick Brassel <nick@tzarc.org>
* [Docs] Squeezing space out of AVR
* Add more info
* Apply suggestions from code review
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Add oled section
* Apply suggestions from code review
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Update layers and intro wording
* Rename doc file
* add get_u8_str support
* oled clarifications
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* macros in json keymaps
* add advanced macro support to json
* add a note about escaping macro strings
* add simple examples
* format json
* add support for language specific keymap extras
* switch to dictionaries instead of inline text for macros
* use SS_TAP on the innermost tap keycode
* add the new macro format to the schema
* document the macro limit
* add the json keyword for syntax highlighting
* fix format that vscode screwed up
* Update feature_macros.md
* add tests for macros
* change ding to beep
* add json support for SENDSTRING_BELL
* update doc based on feedback from sigprof
* document host_layout
* remove unused var
* improve carriage return handling
* support tab characters as well
* Update docs/feature_macros.md
Co-authored-by: Nick Brassel <nick@tzarc.org>
* escape backslash characters
* format
* flake8
* Update quantum/quantum_keycodes.h
Co-authored-by: Nick Brassel <nick@tzarc.org>
* info.json: apply friendly formatting
* info.json: update labels; reposition keys
* wang_ergo.h: use XXX for KC_NO
* wang_ergo.h: add matrix diagram
* rename LAYOUT to LAYOUT_all
* move Backspace keycode to top row
Moves the matrix argument/keycode for Backspace to its proper position at the end of the top row.
* add LAYOUT_2x2u with keymap
* info.json: update maintainer field
Use the maintainer's GitHub username.
* rename LAYOUT to LAYOUT_65_ansi_blocker; enable Community Layout support
* refactor default keymaps
Updates grid alignment of keycodes, and adds a Function layer to the default keymap.
* refactor LAYOUT_iso into LAYOUT_65_iso_blocker_split_bs
Adds missing KC_NUBS position, and moves Enter keycode to home row (consistent with QMK Community Layout).
* remove LAYOUT_split_left_shift
With the changes to LAYOUT_65_iso_blocker_split_bs, LAYOUT_split_left_shift maps all the same positions, but in a different sequence, making it redundant.
* refactor LAYOUT_7u_space to LAYOUT_65_iso_blocker_tsangan_split_bs
Moves Enter keycode to home row.
* remove LAYOUT_split_space_1
LAYOUT_split_space_1 differs from LAYOUT_split_space_2 only in the sizes of the split spacebars, and I like the layout rendering of LAYOUT_split_space_2 better. :)
* refactor LAYOUT_split_space_2 into LAYOUT_all
ANSI Enter, split Backspace, split Left Shift, and Split Spacebar.
* add LAYOUT_65_ansi_blocker_split_bs
* add LAYOUT_65_ansi_blocker_tsangan_split_bs
* add LAYOUT_65_iso_blocker
* ginkgo65.h: touch-up block diagrams
* info.json: use maintainer's GitHub username
* bugfix layout macros
Position k1D wasn't being assigned on the ISO layouts or LAYOUT_all.
* rules.mk: update Community Layout support
* [Core] Fix RISC-V toolchain installation
The risc-v toolchain is only available on distributions based on Debian 11+
so we check for their availability before installing them.
* [Core] Fix heap symbols and syscalls for picolibc
picolibc internally uses __heap_start and __heap_end instead of the
defacto chibios linker script standard __heap_base__ and __heap_end__
therefore we introduce these symbols as an alias. Usually all memory
used within QMK is statically allocated, but some algorithms make usage
of malloc and friends.
Also the timeval struct is not defined by picolibc for syscalls, therefore it
is declared as stub.
* Add developer-only command for exporting the list of PRs associated with a merge to `develop`.
* qmk pytest
* Imports.
* Remove dependencies from requirements file, manually handle.
* Reduce complexity, qmk generate-api taking too long so relying on CI
* Made static backlight pwm resolution configurable
* Made breathing backlighting configurable too
* Finished my ifdef
* Ran clang-format
* Added missing semi-colon
* Solved weird behaviour by right-shifting the right amount
* Made breathing period scaled on actual pwm frequency
* Made the low end deadzone scaled on the top value
* Moved 'pwm_frequency' declaration outside ifdef
* Fixed 'never used' error
* Fixed 'never used' error
* Fixed breathing ISR to 120Hz
* Removed pwm_frequency constant
Constant is no longer needed since running the breathing ISR at a fixed 120Hz
* Re-add brightness limiting
* re-introduce scaling
* handwired/myskeeb: update key positions in info.json
* remove unused matrix positions
L26 and R20 aren't physically present on the keyboard.
* add image to readme file
* add supported hardware and flashing example to readme
* Reimplements WPM feature.
- Now calculates exact WPM over the last up to three seconds of typing.
- WPM_SMOOTHING removed, as it's no longer needed.
- WPM_SAMPLE_SECONDS added, to specify how long a period to average WPM
over, set to 5 seconds by default.
- WPM_SAMPLE_PERIODS added, to specify how many sampling buffers we'll
use. Each one uses one extra byte of space. Having more will lead
to smoother decay of WPM values. Defaults to 50 (we're saving so
many bytes of firmware space I felt like being extravagent, and this
change is still a big size saving overall)
- WPM_UNFILTERED option added (defaults to unset), which disables all
filtering within the WPM feature. This saves some space in the
firmware and also reduces latency between typing and the WPM
calculation measuring it. (saves 70 bytes in my tests)
- WPM_LAUNCH_CONTROL added (defaults to unset). When typing begins
while the current displayed WPM value is zero, the WPM calculation
only considers the time elapsed since typing began, not the whole
WPM_SAMPLE_SECONDS buffer. The result of this is that the displayed
WPM value much more rapidly reaches an accurate WPM value, even when
results are being filtered. (costs 22 bytes in my tests)
- Updates documentation to reflect changed options.
Saves about 900 bytes, in my tests, compared against the previous implementation,
with default settings.
* Apply suggestions from code review
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Trevor Powell <trevor@vectorstorm.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
* alias LAYOUT to LAYOUT_all
* move layout alias to info.json
* use XXX for KC_NO in idb_60.h
* remove newline characters from info.json labels
* put LAYOUT_all data first in info.json
Matches the order of idb_60.h.
* friendly-format info.json
* add matrix diagram to idb_60.h
* rename LAYOUT_default to LAYOUT_60_ansi_wkl_split_rshift
* add LAYOUT_60_tsangan_hhkb
* add LAYOUT_60_ansi_tsangan
* add LAYOUT_60_iso_tsangan
* add LAYOUT_60_iso_wkl_split_rshift
* add LAYOUT_60_iso_tsangan_hhkb
* edit Backspace label for LAYOUT_60_ansi_wkl_split_rshift
* use GitHub username in info.json maintainer field
* my planck keymap
* my planck keymap
* minor changes
* Added personalized, VIA compatible keymap to the Melody96
* lighting layers added and keymap tweaked
* added basic descriptions
* added basic descriptions
* added basic descriptions
* added basic descriptions
* hopefully removed personal change to .gitignore
* restored .gitignore from my master
* restored .gitignore from my master
* requested changes and minor functionality tweaks
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
* CLI: Add 'cd' subcommand
Go to your qmk_firmware dir with ease.
* Fix for Windows and do not run if already under QMK Home
* Make flake8 happy
* Fix prompt for Windows
* Make flake8 happy once again
* I'll get it right eventually
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add subcommand to __init__.py and fixup after rebase
* Update Windows code to use milc's run
* Unify the subshell starting with os.execl
* Exit with error msg when output is redirected to non-TTY.
* Revert Windows-specific code
Co-authored-by: Ryan <fauxpark@gmail.com>
* Use copy_tree from distutils for python 3.7 support
* Bump python version in docs
* Changed new-keyboard to use printf-style format strings
* Use username for manunfacturer / maintainer
* Update lib/python/qmk/cli/new/keyboard.py
Co-authored-by: Zach White <skullydazed@drpepper.org>
Co-authored-by: Zach White <skullydazed@drpepper.org>
* physically arrange layout macro
Arranges the layout macro to resemble the keyboard layout, and updates the keymaps to match.
* use 3-character notation for position identifiers in kk980.h
* add matrix diagram to kk980.h
* fix syntax error in info.json
Apparently the API doesn't care about this error... but QMK Configurator does if you use the local import mode (Ctrl+Shift+I).
* Add support for building against ChibiOS svn/trunk.
* Swap to 21.6.x
* Update to latest branch revision as released version is broken.
* Updated configs.
* Conf updates.
* Updated ChibiOS
* Convert STM32L422 to actual L422 ChibiOS platform.
* Downgrade to 20.3.4 as ChibiOS 21.6.x is being aborted.
* Rollback L422-based boards.
This also add support for specifying a LED pin to indicate haptic status,
and also adds support for a haptic-enable pin, which is useful to turn off
the boost converter on the solenoid driver.
* Initial work for de-ghost enable
* Dumb mistake with the redefine
* Added Copywrite stuff on source files
* Fixed whitespace errors
* Added support for all ISSI LED drivers
* Updated docs for support for ISSI LED driver pull-up pull-down
* Applied clang format
* Added 'boolean' flag to enable de-ghosting for the is31fl3731 IC
* Fixed some of the grammer in the docs
* Fixed comment placement and grammer of comment
* Fixed whitespace errors from lint
Co-authored-by: donicrosby <donicrosby1995@gmail.com>
* Gets RGB working on a split keyboard with IS31FL3733. Currently needs small tweak to re-enable WS2812
* Added helper function
* Trying to integrate the function
* Moved functionality into a macro
* Swapped conditional for a macro everywhere
* Tidying up
* More code cleanup
* Documentation updates
* Fixed formatting via linter
* Switching to a function from a macro
* Fixed compile error
* Fixing WS2812 behavior. UNTESTED.
* Updated documentation about the driver addresses.
* Fixed code for WS2812
* Trying to add in LED_MATRIX support
* Updated effects for LED matrix
* Updated third-party effect defines.
* Ran format-c on modified files
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Move to static inline. Avoids issues with gcc v8+
* Move helper function for LED_matrix to static inline to avoid issues with gcc v8+
Co-authored-by: Vlad Kvitnevskiy <vladkvit@outlook.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* reformat info.json
- friendly-format info.json
- move the right half to the left by 0.5u (improves readability, for me anyway)
- correct key sequence
* refactor default keymap
- use short-form keycodes
- use four-space indent
* refactor via keymap
- use short-form keycodes
- use four-space indent
* update maintainer field in info.json
Use the maintainer's GitHub username.
* readme touch-up
Minor edit to the lead paragraph, and reformat the Hardware Availability section.
* change BOOTMAGIC_ENABLE from `lite` to `yes`
* Tidy up LCD_ENABLE/visualizer references
* Fix up my (333fred) ergodox keymap with new LCD driver
Co-authored-by: Fredric Silberberg <fred@silberberg.xyz>
* Add support for RISC-V builds and GD32VF103 MCU
* Add toolchain selection in chibios.mk based on the mcu selected in
mcu_selection.mk
* Reorder and added comments to chibios.mk to have a streamlined makefile
* Add GD32VF103 mcu to possible targets for QMK.
* Add STM32 compatibility for GD32VF103 MCU, this is hacky but more efficent
then rewriting every driver.
* Add GigaDevice DFU bootloader as flash target, please note that
dfu-util of at least version 0.10 is needed.
* Add analog driver compatibility
* Add apa102 bitbang driver compatibility
* Add ws2812 bitbang driver compatibility
* Add eeprom in flash emulation compatibility
* Allow faster re-builds with ccache
* Add SiPeed Longan Nano to platform files
* Add SiPeed Longan Nano Onekeys
* Make quine compatible with other bootloaders
* Support builds with picolibc
* Add risc-v toolchain to arch and debian/ubuntu scripts
The old custom matrix code for Preonic rev3 was relying on the
`matrix_col_t` type, because the code actually reads the row pins and
assembles the state for whole columns, and then transposes the matrix in
the custom debouncing code. Restore that type (which is no longer
defined by the core QMK code) to make the custom matrix code work
properly (when `matrix_row_t` was used instead of `matrix_col_t`, the
state of two electrical rows was lost, and those electrical rows
corresponded to the bottom physical row, which did not work).
* Fix issues with user split transport code
* Improve OLED (More font stuff, improved keylogger, etc)
* Add `KEYLOCK` macro to disable USB, borrowed from command feature.
* Convert Kyria fully to proton C (no more AVR kyria)
* Add Work Louder Work Board keymap
* GPIO functions are no longer in quantum.h
* Update docs/internals_gpio_control.md
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Apparently the default keymaps for `contra` and `fractal` were derived
from some `planck` keymap which contained code to control the status LED
in the implementation of the `BACKLIT` custom keycode. Unfortunately,
the code to control the LED manipulated the `E6` pin directly, and it
was copied without changes, but the `contra` and `fractal` boards use
the `E6` pin in the matrix, therefore pressing the key mapped to
`BACKLIT` resulted in phantom keypresses for all keys in the
corresponding column.
* refactor keymaps for readability
- use QMK-native keycode aliases
- physically align keycodes
* rework layout macro
A discrepancy between the default and via keymaps prompted a deep dive into the keyboard's switch matrix, which led to the discovery that (1) the layout macro's arguments were not arranged physically, and (2) the keymaps didn't assign the keycodes to the same switches (the default keymap's keycodes were in the wrong sequence).
Additionally, the layout macro was built to support a split Backspace, but named as if it were for a 2u Backspace, which broke the enabled support for Community Layout keymaps.
This commit:
- arranges the layout macro arguments according to physical order
- corrects the keymaps
- renames the layout macro to specify the split Backspace
- disables Community Layout support
- updates the `info.json` data
* add LAYOUT_65_ansi_blocker
* enable Community Layout support
* update `info.json` metadata
- use full product listing URL
- use GitHub username for maintainer field
* update readme
- fix vendor link in lead paragraph
- update metadata list
- use GitHub username of keyboard maintainer
- correct Supported Hardware
- add Hardware Availability link
- add flashing and bootloader instructions
The custom OLED_OFF mode implemented on satisfaction75 is incompatible
with the OLED_TIMEOUT feature (the OLED_TIMEOUT code assumes that any
key or encoder action should turn the OLED display on, and does not
provide any way to disable that behavior). To keep the OLED_OFF mode
functioning as before while still having a working OLED idle timeout, a
custom implementation of the OLED idle timeout code is added.
* stash
* refactor old draw
* refactor old draw - tidy
* refactor old draw - tidy
* refactor old draw - reorder for diffs
* refactor old draw - reorder for diffs
* add matrix diagram to keyboard header file
* friendly-format info.json
* correct layout data
* add legends to info.json key labels
* add LAYOUT_split_space_split_bs
Rename the `LAYOUT` tree in info.json to `LAYOUT_split_space_split_bs`, and add a corresponding layout macro.
* add LAYOUT_all data to info.json
* add LAYOUT_7u_space
* add LAYOUT_7u_space_split_bs
* add LAYOUT_split_space
* convert tabs to spaces in dyz40.h
* Remove SERIAL_LINK
* more stale paths in doxygen-todo
* Fix
* More refs
* Update testing docs
* Update doxygen-todo
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Updated Keychron Q1 user keymap
- Added Caps Lock indicator
- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so they can be labeled properly in VIA
* Only use VIA keycode range if VIA is enabled
* Reformatted led_indexes enum to match layout
* Feature: When the Fn layer is active, RGB lighting turns off for keys that are not assigned
* Fixes
* Cleanup: Updated method signature of rgb_matrix_set_color_by_keycode to more closely match rgb_matrix_set_color
* Fixed int sizing for keycodes
* add Configurator data
* rename README.md to lowercase
API can't find this file unless the filename is lowercase (`readme.md`).
* readme touch-up
Correct typos and improve some grammar and Markdown.
* Move Audio drivers from quantum to platform drivers folder
* fix path for audio drivers
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* correct Configurator layout data
* rename LAYOUT to LAYOUT_60_ansi
* correct info.json maintainer field
Use the maintainer's GitHub username.
* correct the compiling/flashing instructions
Keyboard value is relative to `qmk_firmware/keyboards/`.
* Specify hex as the default FIRMWARE_FORMAT which is copied to qmk_firmware root folder
* Specify hex as the default FIRMWARE_FORMAT which is copied to qmk_firmware root folder
Co-authored-by: sadkins <sadkins@iMac-Pro.local>
* use XXX for KC_NO in hex4b.h
* add matrix diagram to hex4b.h
* rename LAYOUT to LAYOUT_all
* remove reference to KBFirmware JSON Parser
* info.json: add line breaks between rows
* rename LAYOUT_all to LAYOUT_split_bs
- LAYOUT alias for backward compatibility
- LAYOUT_all alias to signify support for every matrix position
* add LAYOUT_2u_bs
* add LAYOUT_tsangan_split_bs
* add LAYOUT_tsangan_2u_bs
* info.json: remove meta key
* Add power tracking API to lufa and chibios targets
* power.c: Pass through power state to the notify function
* power: added notify_power_state_change_user too.
* making it pass the PR linter
* Add a POWER_STATE_NO_INIT state, that we start in before calling power_init();
* Rename *power* to *usb_power*
* removing stray newline
* Rename usb_power* to usb_device_state*
* Update quantum/usb_device_state.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Fix comment
* usb_device_state.h: Don't include quantum.h, only the necessary headers.
Co-authored-by: Drashna Jaelre <drashna@live.com>
* use XXX for KC_NO in rev1.h
* add matrix diagram to rev1.h
* remove reference to KBFirmware JSON Parser from rev1.h
* use XXX for KC_NO in rev2.h
* add matrix diagram to rev2.h
* add LAYOUT_60_ansi and LAYOUT_60_iso
* enable Community Layout support
* update info.json metadata
- specify keyboard revision in keyboard_name
- use GitHub username in maintainer field
* remove reference to KBFirmware JSON Parser from main rules.mk
* add LAYOUT_numpad_6x4
* tidy-up info.json data
* use GitHub account name for maintainer field
* remove meta key
* add matrix diagram to delphine.h
* update Community Layout support
* add layout variants with 2.75u Right Shift
* move layout alias to info.json
* match info.json labels to matrix positions
Edits the label keys in info.json to match the matrix position identifiers in adelais.h.
* info.json: add line breaks between keyboard rows
* info.json: use GitHub username in maintainer field
* Initial compatibility with bm80
* move files to kprepublic directory, see #12159
* fix pin assignment
* Revert "fix pin assignment"
This reverts commit 5a53a74953a23bb5064c11d5d9e6daf007a54872.
* add testing setup (peepeetee keymap, will use for personal purposes later), fix LED assignment, add indicator LED, LED location, count, and flags are broken
* fixed flags( not sure, please check)
* fixed number of LEDs
* add comment about f11
* remove comment about f11, change capslock flag to be 1 rather than 1+8 as there is a standalone indicator LED
* readme.md
* add via keymap
* add info.json with help from noroadsleft's converter
* add suspended state implementation, I don't think it's working
* update to my testing setup
* restore erroneously included bm68rgb config
* Update keyboards/kprepublic/bm80/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add reset instructions
* change reset instruction grammar
* remove not working sleep function, add comment for RGB flags
* add LED mapping comments
* change readme grammar
* replace rgb light paremeters with rgb matrix paremeters, enable framebuffer effects
* re-enable peepeetee/config.h, updating my disabled effect list
* updating my disabled effect list
* update LED struct documentation
* update readme with RGB matrix effect information
* Update keyboards/kprepublic/bm80/rules.mk
Co-authored-by: Drashna Jaelre <drashna@live.com>
* move files back to keyboard from keyboard/kprepublic, see 85b33d6 and qmk#12159
* Apply suggestions from code review
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
* cleanup peepeetee keymap
* update peepeetee keymap; rebase on current master
* moved to /kprepublic, see #12159
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Genesis Hotswap: rename LAYOUT to LAYOUT_tkl_ansi
* Genesis Hotswap: delete blank layers from default keymap
Results in a smaller compiled firmware size.
* Genesis Hotswap: tidy-up via keymap
Fixes the visual alignment of keycodes.
* Genesis Hotswap: specify Hotswap in info.json
* Genesis Hotswap: enable Community Layout support
* Genesis Hotswap: remove KBFirmware Parser references
* Genesis Hotswap: specify Hotswap in config.h
* Genesis Solder: correct keyboard layout
* Genesis Solder: rename LAYOUT to LAYOUT_all
I don't actually know with certainty that this *is* LAYOUT_all, but in the absence of more concrete information, I'm going with this.
* Genesis Solder: delete blank layers from default keymap
Results in a smaller compiled firmware size.
* Genesis Solder: tidy-up via keymap
Fixes the visual alignment of keycodes.
* Genesis Solder: specify Hotswap in info.json
* Genesis Solder: add LAYOUT_tkl_ansi
* Genesis Solder: enable Community Layout support
* Genesis Solder: remove KBFirmware Parser references
* Genesis Solder: specify Solder in config.h
* update pr_checklist.md translation
* update file based on comments
* add id on feature_led_indicators.md and update text based on comments
* update file based on comments
* update file based on comment
* clean up amj96.h
- use #pragma once include guard
- remove extra comments
- update matrix position alignment (easier readability)
* info.json: apply human-friendly formatting
* rename LAYOUT to LAYOUT_all
* clean up rules.mk
Align to QMK's AVR template.
* clean up default keymap
- use four-space indent
- add RESET keycode (Fn+R)
- remove unnecessary functions
* clean up config.h
- use #pragma once include guard
- move lighting settings to the middle of the file (QMK template conformance)
- remove Magic and MIDI configuration blocks
* update readme.md file
- update keyboard info list
- add flashing instructions
- update Docs links
- remove trailing spaces
* remove "empty" config.h and readme.md from default keymap
* mammoth20x: edit size of RightEncode key in Configurator
* physically arrange layout macro
Arranges the keycodes to resemble the assembled board.
* rename LAYOUT_default to LAYOUT
Includes "layout_aliases" tree in info.json for backwards compatibility.
* rules.mk touch-up
* convert tabs to spaces
* add line break before ENCODER_ENABLE (not included in QMK's template)
* readme.md touch-up
* remove zero-width space characters
* markdown fix for info paragraph
* update link text
* clean up keyboard header files
* use #pragma once include guard
* convert tabs to spaces
* remove redundant #include statements
* update revision references to main header (`../meira.h` -> `meira.h`)
* refactor default keymap
* use LAYOUT as layout macro reference
* use enum statement for layer indexes; make layers contiguous
* use four-space indent
* update keycode grid alignment
* update layout macro aliases
* move layout macro aliases to info.json
* alias KEYMAP to LAYOUT_ortho_4x12 so the user keymaps don't have to be edited
* touch up meira.h
There's no Planck MIT layout reference here.
* add copyright headers
* workaround patch for grahampheath keymap
The `matrix_init_kb()` function in `meira.c` calls `backlight_set()`, but the grahampheath keymap disables Backlight to make space for Audio, causing the firmware to fail to compile.
This commit wraps the `backlight_set()` call in an ifdef statement, so the call is excluded if Backlight is disabled.
* clean up rules.mk inline comments
* re-order rules.mk settings
* clean up readme.md
* correct link to keyboard image
* change metadata section to unordered list
* spelling corrections
* update make instructions and Docs links
* Add initial implementation of 5 keyboards supported by the OverNumpad Controller.
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Apply changes similar to other code review suggestions.
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Apply changes similar to other code review suggestions.
* overnumpad controller info.jsons: update maintainer and url.
* classic_ultracl_pre_2013: added support for the default 'fullsize_ansi' layout
* classic_ultracl_pre_2013: moved the order of the iso enter key in the layout macro to be considered to be on the bottom row, like in the default fullsize_iso layout. Rename the iso layout to fullsize_iso, and enable it in rules.mk
* Removed QMKBEST and QMKURL
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Deleting empty files
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Moved gergoplex to seperate PR
* vendor + cformat
* Update keyboards/gboards/k/gergoplex/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* lifiting keyboards up
* Update readme.md
* Update keyboards/gboards/gergoplex/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* remove English dicts
* cformatted
* Prettify keymap
* Remove via keymaps
Via doesn't support chords/combos, and this makes the keymap on such a
small keyboard quite uncomfortable and incomplete.
* Address QMK pull code review notes
* Cleanup (tabs, excessive comments)
* Fix keymap typos
* Use enum to define layers
* Multiple changes
- got rid of LAYOUT_kc in favour of LAYOUT_split_3x5_3
- fixed matrix custom C code to build with updated external dependencies (gcc)
- fixed used combo docs
keyboards/gboards/gergoplex/matrix.c:189:9: error: implicit declaration of function 'phex' [-Werror=implicit-function-declaration]
phex(row);
^~~~
keyboards/gboards/gergoplex/matrix.c:191:9: error: implicit declaration of function 'pbin_reverse16'; did you mean 'print_bin_reverse16'? [-Werror=implicit-function-declaration]
pbin_reverse16(matrix_get_row(row));
* Remove apparently redundant macros
* Replace direct pin control with IO functions
* config mouse enable and combo delay fix
The default delay is 200:
#define COMBO_TERM 200
how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
tmk_core/common/action_tapping.h|22| 13:# define TAPPING_TERM 200
* Remove redundant defines
* Unambiguously refer to the Special layer
* Fix formatting
* gboards/gergoplex set IGNORE_MOD_TAP_INTERRUPT
This solves my issue was with KC_CTL_A working correctly and it was set in @germ's repo
39c86e080d/keyboards/gboards/k/gergoplex/config.h (L49)https://beta.docs.qmk.fm/using-qmk/software-features/tap_hold#ignore-mod-tap-interrupt
* Name change
See commit 581368596e
* Wording change
* Update keyboards/gboards/gergoplex/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Add copyright headers
* Fix debounce type
| avr-gcc: error: .build/obj_gboards_gergoplex_default/quantum/debounce/eager_pr.o: No such file or directory
* Implement colemak-dhm keymap
Co-authored-by: Germ <jeremythegeek@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Brian Tannous <Brian@BrianTannous.com>
* Use memcmp and memcpy to compare and copy slave matrix.
...and memset to initialize `matrix` and `raw_matrix`.
Increased my scan rate (while connected) by ~100 (on Ergodox Infinity).
Effect on AVR is unknown.
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
* Fix `matrix_post_scan` signalling change on every scan while disconnected.
* Undo removal of initialization of `slave_matrix`.
This has the effect of increasing my Ergodox Infinity firmware size by 8
bytes instead of decreasing by 8 bytes, and lowers the scan rate while
connected back to the initial value before these changes, but _might_
solve some issues on AVR.
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
* Add RGBW support to PWM and SPI drivers for ChibiOS
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* update grid alignment of keycodes
* update key assignments on via keymap
A seemingly-misplaced key assignment on Layers 1 through 3 of the via keymap led to keys being off by one in comparison to the default keymap.
* switch Backslash and Backspace on via keymap base layer
Matches the via keymap's key mapping to that of the default keymap.
* use QMK 3-character notation in oxalys80.h
* add matrix diagram; remove Planck reference
* add LAYOUT_tkl_ansi and LAYOUT_tkl_ansi_wkl layout macros
* add LAYOUT_tkl_ansi_tsangan macro
* add ISO layouts
Add LAYOUT_tkl_iso, LAYOUT_tkl_iso_tsangan, and LAYOUT_tkl_iso_wkl macros.
* enable Community Layouts support
* tidy up rules.mk
* readme tidy-up
* pulled source from dev branch
* missed a file from origin
* formatting
* revised argument names. relaxed matching rules to work for avr too
* add docstrings
* added docs. tightened up regex
* remove unused imports
* cleaning up command file. use existing qmk dir constant
* rename parser library file
* move lib functions into command file. there are only 2 and they aren't large
* currently debugging...
* more robustly find config
* updated docs
* remove unused imports
* reuse make executable from the main make command
* pulled source from dev branch
* missed a file from origin
* formatting
* revised argument names. relaxed matching rules to work for avr too
* add docstrings
* added docs. tightened up regex
* remove unused imports
* cleaning up command file. use existing qmk dir constant
* rename parser library file
* move lib functions into command file. there are only 2 and they aren't large
* currently debugging...
* more robustly find config
* updated docs
* remove unused imports
* reuse make executable from the main make command
* remove MAKEFLAGS from environment for better control over process management
* Update .gitignore
Co-authored-by: Michael Forster <forster@google.com>
* add a usage line to docs
* doc change as suggested
Co-authored-by: Nick Brassel <nick@tzarc.org>
* rename command
* remove debug print statements
* generate-compilation-database: fix arg handling
* generate-comilation-db: improve error handling
* use cli.run() instead of Popen()
Co-authored-by: Xton <cdewan@apple.com>
Co-authored-by: Christon DeWan <cmdpix@mac.com>
Co-authored-by: Michael Forster <forster@google.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Align ChibiOS I2C defs with other drivers
* Update keyboards/xelus/valor_frl_tkl/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Added new keymap for crkbd/rarick
* Delete flash.sh
Deleted rarick crkbd flashing script, as it will not be used by most users.
* Applied feedback, and fixed build error caused by builder updates
* Update keyboards/crkbd/keymaps/rarick/config.h
Removed USE_MATRIX_I2C, no longer used.
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* evyd13/atom47/rev3: best guess at fixing info.json
* evyd13/atom47: best guess at fixing info.json
* eyeohdesigns/sprh: best guess at fixing info.json
* handwired/unicomp_mini_m: best guess at fixing info.json
* lazydesigners/the60/rev2: best guess at fixing info.json
* melgeek/mj6xy: best guess at fixing info.json
* pizzakeyboards/pizza65: best guess at fixing info.json
* plx: best guess at fixing info.json
* rojectcain/vault45: best guess at fixing info.json
* sidderskb/majbritt/rev2: best guess at fixing info.json
* spacey: best guess at fixing info.json
* Helix/pico use post_rules.mk insted of local_features.mk
Tested with the following procedure.
```
git checkout 77a93fec79 (qmk/develop)
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
git checkout helix_use_post_rules.mk
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
```
* Helix/rev2 use post_rules.mk
Tested with the following procedure.
```
git checkout 77a93fec79 (qmk/develop)
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
make helix/rev2:all:check-md5
make helix/rev2/sc:all:check-md5
git checkout helix_use_post_rules.mk
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
make helix/rev2:all:check-md5
make helix/rev2/sc:all:check-md5
```
* add 'include keyboard_features.mk' into build_keyboard.mk
keyboard_features.mk is a keyboard-local version of the functions performed by common_features.mk.
* add comment into build_keyboard.mk
* added description of keyboard_features.mk in hardware_keyboard_guidelines.md.
* rename `keyboard_features.mk` to `post_rules.mk`
2021-08-29 09:42:57 +10:00
20186 changed files with 557000 additions and 228051 deletions
Please run $(BOLD)qmk setup$(NO_COLOR) to install all the dependencies QMK requires.\n\n
MSG_FLASH_BOOTLOADER=$(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
MSG_FLASH_ARCH=$(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
MSG_BOOTLOADER_NOT_FOUND=$(ERROR_COLOR)ERROR:$(NO_COLOR)Bootloader not found. Trying again in 5s (Ctrl+C to cancel)\n
MSG_BOOTLOADER_NOT_FOUND=$(ERROR_COLOR)ERROR:$(NO_COLOR)$(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again in 5s (Ctrl+C to cancel)\n
BOOTLOADER_RETRY_TIME?= 0.5
MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY=Bootloader not found. Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY=$(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
Flashing example for this keyboard:
make %KEYBOARD%:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
Flashing example for this keyboard:
make %KEYBOARD%:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make %KEYBOARD%:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **BootloadHID reset**: Hold down the key connected to the `A0` and `B0` pins on the MCU if it is known (often top left or bottom left) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
# QMK Breaking Changes - 2021 November 27 Changelog
## 2000 keyboards! :id=qmk-2000th-keyboard
QMK had it's 2000th keyboard submitted during this breaking changes cycle.... and it only _just_ made the cut-off!
```shell
% qmk list-keyboards | wc -l
2003
```
From the whole QMK team, a major thankyou to the community for embracing QMK as your preferred keyboard firmware!
## Notable Features :id=notable-features
### Expanded Pointing Device support ([#14343](https://github.com/qmk/qmk_firmware/pull/14343)) :id=expanded-pointing-device
Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals.
Usages of `POINTING_DEVICE_ENABLE = yes` in `rules.mk` files now need to be accompanied by a corresponding `POINTING_DEVICE_DRIVER = ???` line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users.
QMK now has core-supplied support for the following pointing device peripherals:
See the new documentation for the [Pointing Device](../feature_pointing_device.md) feature for more information on specific configuration for each driver.
### Dynamic Tapping Term ([#11036](https://github.com/qmk/qmk_firmware/pull/11036)) :id=dynamic-tapping-term
For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural.
If you're in this stage of discovery, you can now add `DYNAMIC_TAPPING_TERM_ENABLE = yes` to your `rules.mk`, which enables the use of the following keycodes in your keymap:
| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds |
| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by 5ms |
| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by 5ms |
Coupled with the use of `qmk console` or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's `config.h` and you're good to go!
### Macros in JSON keymaps ([#14374](https://github.com/qmk/qmk_firmware/pull/14374)) :id=macros-in-keymap-json
You can now define up to 32 macros in your `keymap.json` file, as used by [QMK Configurator](newbs_building_firmware_configurator.md), and `qmk compile`. You can define these macros in a list under the `macros` keyword, like this:
```json
{
"keyboard":"handwired/my_macropad",
"keymap":"my_keymap",
"macros":[
[// first listed is MACRO_0...
{"action":"down","keycodes":["LSFT"]},
"hello world1",
{"action":"up","keycodes":["LSFT"]}
],
[// ...then MACRO_1...
{"action":"tap","keycodes":["LCTL","LALT","DEL"]}
],
[// ...then MACRO_2...
"ding!",
{"action":"beep"}
],
[// ...and MACRO_3.
{"action":"tap","keycodes":["F1"]},
{"action":"delay","duration":"1000"},
{"action":"tap","keycodes":["PGDN"]}
]
],
"layout":"LAYOUT_all",
"layers":[
["MACRO_0","MACRO_1","MACRO_2","MACRO_3"]
]
}
```
In due course, [QMK Configurator](https://config.qmk.fm/) will pick up support for defining these in its UI, but for now the json is the only way to define macros.
## Changes Requiring User Action :id=changes-requiring-user-action
### Squeezing space out of AVR ([#15243](https://github.com/qmk/qmk_firmware/pull/15243)) :id=squeezing-space-from-avr
The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply.
Of course, there are much fewer constraints with ARM chips... ;)
### Require explicit enabling of RGB Matrix modes ([#15018](https://github.com/qmk/qmk_firmware/pull/15018)) :id=explicit-rgb-modes
Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available.
Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available.
The full list of configurables to turn specific animations back on can be found at on the [RGB Matrix documentation](feature_rgb_matrix.md#rgb-matrix-effects) page.
OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of `bool *_kb()` deferring to `bool *_user()` functions, allowing signalling to the higher level that processing had already been done.
This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
The old keymap code went something like this:
```c
voidoled_task_user(void){
// keymap drawing code
}
```
...but the new keymap code looks like this:
```c
boololed_task_user(void){
// keymap drawing code
returnfalse;
}
```
Keyboard designers should now structure their keyboard-level drawing routines like the following, in order to allow for keymap overrides:
```c
boololed_task_kb(void){
// Defer to the keymap if they want to override
if(!oled_task_user()){returnfalse;}
// default keyboard drawing code
returnfalse;
}
```
### Bootmagic Full Removal ([#15002](https://github.com/qmk/qmk_firmware/pull/15002)) :id=bootmagic-full-removal
As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This removal is now complete!
This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `lite` or `full` results in an error, allowing only `yes` or `no`, with `yes` mirroring historical `lite` functionality.
All use of the `lite` keyword within the repository has been migrated to `yes` -- any new submissions using `lite` will now fail to build and should be updated accordingly.
#### Bootmagic Full Deprecation Schedule: Complete!
This is the historical timeline for the behavior of `BOOTMAGIC_ENABLE`:
- (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic.
- (done) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no`– setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail.
- (now) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no`– setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail.
Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.
## Notable core changes :id=notable-core
### New MCU Support :id=new-mcu-support
QMK firmware picked up support for a handful of new MCU families, potentially making it a bit easier to source components.
QMK firmware is now no longer limited to AVR and ARM - it also picked up support for our first RISC-V chip, the GD32VF103.
* Add support for RISC-V builds and GD32VF103 MCU ([#12508](https://github.com/qmk/qmk_firmware/pull/12508))
* Add HT32 support to core ([#14388](https://github.com/qmk/qmk_firmware/pull/14388))
* Initial pass of F405 support ([#14584](https://github.com/qmk/qmk_firmware/pull/14584))
### EEPROM Changes :id=eeprom-changes
There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.
* massdrop alt/ctrl: support saving into nvm ([#6068](https://github.com/qmk/qmk_firmware/pull/6068))
* make the full 4096 bytes of EEPROM work on Teensy 3.6 ([#12947](https://github.com/qmk/qmk_firmware/pull/12947))
* Further tidy up of STM32 eeprom emulation ([#14591](https://github.com/qmk/qmk_firmware/pull/14591))
* Enable eeprom with F401xE ld ([#14752](https://github.com/qmk/qmk_firmware/pull/14752))
### Compilation Database :id=compile-commands
A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.
Running `qmk generate-compilation-database -kb <yourkb> -km <yourkeymap>` from within the QMK firmware directory will generate a `compile_commands.json` file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.
Do note that switching keyboards will require re-generation of this file.
* New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) ([#14370](https://github.com/qmk/qmk_firmware/pull/14370))
* compiledb: query include paths from gcc directly. ([#14462](https://github.com/qmk/qmk_firmware/pull/14462))
### Codebase restructure and cleanup :id=codebase-restructure
QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:
* add 'include keyboard_features.mk' into build_keyboard.mk ([#8422](https://github.com/qmk/qmk_firmware/pull/8422))
* Infer more when building features ([#13890](https://github.com/qmk/qmk_firmware/pull/13890))
* Add support for PaladinPad, Arya pcb and move keyboards by KapCave into their own directory ([#14194](https://github.com/qmk/qmk_firmware/pull/14194))
* Move non-assignment code to post_rules.mk ([#14207](https://github.com/qmk/qmk_firmware/pull/14207))
* Helix use `post_rules.mk` ([#14216](https://github.com/qmk/qmk_firmware/pull/14216))
* handwired/symmetric70_proto use post_rules.mk ([#14235](https://github.com/qmk/qmk_firmware/pull/14235))
# QMK Breaking Changes - 2022 February 26 Changelog
## Notable Features :id=notable-features
### Default USB Polling rate now 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/15352))
The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.
Something something *Lets go gamers!*
### Split support for pointing devices ([#15304](https://github.com/qmk/qmk_firmware/pull/15304))
Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.
See the [Pointing Device](feature_pointing_device.md) documentation for further configuration options.
## Changes Requiring User Action :id=changes-requiring-user-action
### Legacy macro and action_function system removed ([#16025](https://github.com/qmk/qmk_firmware/pull/16025))
The long time deprecated `MACRO()` and `action_get_macro` methods have been removed. Where possible, existing usages have been migrated over to core [Macros](feature_macros.md).
### Create a build error if no bootloader is specified ([#16181](https://github.com/qmk/qmk_firmware/pull/16181))
Bootloader configuration is no longer assumed. Keyboards must now set either:
*`BOOTLOADER` within `rules.mk`
*`bootloader` within `info.json`
### Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127))
In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products.
* Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions ([#15938](https://github.com/qmk/qmk_firmware/pull/15938))
* fixed typo in orange HSV colors decalartion ([#15976](https://github.com/qmk/qmk_firmware/pull/15976))
* Fix hack for chibiOS reset name ([#15984](https://github.com/qmk/qmk_firmware/pull/15984))
* Fix right side ws2812 leds having two indices ([#15985](https://github.com/qmk/qmk_firmware/pull/15985))
* Workaround in Makefile for recursive rule matching ([#15988](https://github.com/qmk/qmk_firmware/pull/15988))
### Caps Word ([#16588](https://github.com/qmk/qmk_firmware/pull/16588)) :id=caps-word
This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.
For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on _Caps Word_ -- then type `qmk` (lowercase) without holding shift. Once you hit any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace, this will go back to normal typing!
There are other activation mechanisms as well as configurable options like timeout and the like -- see the [Caps Word documentation](feature_caps_word.md) for more information.
QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.
Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.
The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.
See the [Quantum Painter documentation](quantum_painter.md) for more information on how to set up the displays as well as how to convert images and fonts.
!> Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.
One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. [#13286](https://github.com/qmk/qmk_firmware/pull/13286) added support for [Encoder Mapping](feature_encoders.md#encoder-map), which allows users to define encoder functionality in a similar way to their normal keymap.
!> This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.
## Changes Requiring User Action :id=changes-requiring-user-action
QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of `RESET` as a keycode is causing naming collisions. As a result, [#17037](https://github.com/qmk/qmk_firmware/pull/17037) changed usages of `RESET` to the new keycode `QK_BOOT` in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing `RESET` should also move to `QK_BOOT`.
Some keycodes used with `SEND_STRING` and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of [deprecated keycodes](https://github.com/qmk/qmk_firmware/blob/ebd402788346aa6e88bde1486b2a835684d40d39/quantum/send_string_keycodes.h#L456-L505) should be consulted to determine if you're using one of the older names (the first identifier after `#define`) -- you should swap to the newer variant (the second identifier on the same line).
The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably _Pillow_, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:
On Windows, if using _QMK MSYS_ or _msys2_, you'll need to run the following command:
@@ -57,14 +57,14 @@ This driver needs one Timer per enabled/used DAC channel, to trigger conversion;
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
``` c
```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
``` c
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
@@ -93,14 +93,14 @@ only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; t
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:
``` c
```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
``` c
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
@@ -153,7 +153,7 @@ This driver uses the ChibiOS-PWM system to produce a square-wave on specific out
The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
``` c
```c
//halconf.h:
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
@@ -161,7 +161,7 @@ A configuration example for the STM32F103C8 would be:
#include_next <halconf.h>
```
``` c
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM1
@@ -177,7 +177,7 @@ If we now target pin A8, looking through the data-sheet of the STM32F103C8, for
This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.
This also includes any keyboard moves within the repository.
The breaking change period is when we will merge PR's that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.
## What has been included in past Breaking Changes?
* [2022 May 28](ChangeLog/20220528.md)
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
* [2021 Aug 28](ChangeLog/20210828.md)
* [2021 May 29](ChangeLog/20210529.md)
* [2021 Feb 27](ChangeLog/20210227.md)
@@ -17,16 +22,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
The next Breaking Change is scheduled for August 28, 2021.
The next Breaking Change is scheduled for August 27, 2022.
### Important Dates
* [x] 2021 Aug 29 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2021 Oct 31 - `develop` closed to new PR's.
* [ ] 2021 Oct 31 - Call for testers.
* [ ] 2021 Nov 26 - `master` is locked, no PR's merged.
* [ ] 2021 Nov 28 - Merge `develop` to `master`.
* [ ] 2021 Nov 28 - `master` is unlocked. PR's can be merged again.
* [x] 2022 May 28 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Jul 31 - `develop` closed to new PR's.
* [ ] 2022 Jul 31 - Call for testers.
* [ ] 2022 Aug 13 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* [ ] 2022 Aug 25 - `master` is locked, no PR's merged.
* [ ] 2022 Aug 27 - Merge `develop` to `master`.
* [ ] 2022 Aug 27 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -36,31 +42,16 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
* PR is complete and ready to merge
* PR has a ChangeLog
* The PR is complete and ready to merge
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220827`.
* This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID.
* One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
# Checklists
## Checklists
This section documents various processes we use when running the Breaking Changes process.
## Creating the `develop` branch
This happens immediately after the previous `develop` branch is merged.
*`qmk_firmware` git commands
* [ ]`git checkout master`
* [ ]`git pull --ff-only`
* [ ]`git checkout -b develop`
* [ ] Edit `readme.md`
* [ ] Add a big notice at the top that this is a testing branch.
* [ ] Include a link to this document
* [ ]`git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ]`git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ]`git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ]`git push upstream develop`
* [ ]`git push --tags`
## 4 Weeks Before Merge
### 4 Weeks Before Merge
*`develop` is now closed to new PR's, only fixes for current PR's may be merged
* Post call for testers
@@ -68,21 +59,29 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 1 Week Before Merge
### 2 Weeks Before Merge
*`develop` is now closed to existing PR merges, only bugfixes for previous merges may be included
* Post call for testers
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
### 1 Week Before Merge
* Announce that master will be closed from <2DaysBefore> to <DayofMerge>
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 2 Days Before Merge
### 2 Days Before Merge
* Announce that master is closed for 2 days
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## Day Of Merge
### Day Of Merge
*`qmk_firmware` git commands
* [ ]`git checkout develop`
@@ -99,8 +98,39 @@ This happens immediately after the previous `develop` branch is merged.
* [ ]`git checkout master`
* [ ]`git pull --ff-only`
* [ ]`git merge --no-ff develop`
* [ ]`git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ]`git push upstream <next_version>`
* [ ]`git push upstream master`
## Post-merge operations
### Updating the `develop` branch
This happens immediately after the previous `develop` branch is merged to `master`.
*`qmk_firmware` git commands
* [ ]`git checkout master`
* [ ]`git pull --ff-only`
* [ ]`git checkout develop`
* [ ]`git pull --ff-only`
* [ ]`git merge --no-ff master`
* [ ] Edit `readme.md`
* [ ] Add a big notice at the top that this is a testing branch.
* [ ] Include a link to this document
* [ ]`git commit -m 'Branch point for <DATE> Breaking Change'`
This command opens a new shell in your `qmk_firmware` directory.
Note that if you are already somewhere within `QMK_HOME` (for example, the `keyboards/` folder), nothing will happen.
To exit out into the parent shell, simply type `exit`.
**Usage**:
```
qmk cd
```
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
@@ -296,7 +310,7 @@ Any arguments that are not provided will prompt for input. If `-u` is not passed
@@ -321,6 +335,23 @@ This command cleans up the `.build` folder. If `--all` is passed, any .hex or .b
qmk clean [-a]
```
## `qmk via2json`
This command an generate a keymap.json from a VIA keymap backup. Both the layers and the macros are converted, enabling users to easily move away from a VIA-enabled firmware without writing any code or reimplementing their keymaps in QMK Configurator.
Does your IDE/editor use a language server but doesn't _quite_ find all the necessary include files? Do you hate red squigglies? Do you wish your editor could figure out `#include QMK_KEYBOARD_H`? You might need a [compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)! The qmk tool can build this for you.
This command needs to know which keyboard and keymap to build. It uses the same configuration options as the `qmk compile` command: arguments, current directory, and config files.
**Example:**
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk generate-compilation-database
Ψ Making clean
Ψ Gathering build instructions from make -n gh60/satan:colemak
Ψ Found 50 compile commands
Ψ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
```
Now open your dev environment and live a squiggly-free life.
## `qmk docs`
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
Use the `-b`/`--browser` flag to automatically open the local webserver in your default browser.
This command runs `docsify serve` if `docsify-cli` is installed (which provides live reload), otherwise Python's builtin HTTP server module will be used.
**Usage**:
```
@@ -438,5 +498,32 @@ This command runs the python test suite. If you make changes to python code you
This command converts images to a format usable by QMK, i.e. the QGF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
## `qmk painter-make-font-image`
This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
## `qmk painter-convert-font-image`
This command converts an intermediate font image to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB or more, though it will*just* squeeze into 16kB with most features disabled.
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may*just* squeeze into 16kB AVR MCUs.
Features within QMK may or may not be compatible with every microcontroller.
## Atmel AVR
@@ -8,7 +10,11 @@ The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop).
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop). However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.
## RISC-V
### GigaDevice
[ChibiOS-Contrib](https://github.com/ChibiOS/ChibiOS-Contrib) has support for the GigaDevice [GD32VF103 series](https://www.gigadevice.com/products/microcontrollers/gd32/risc-v/mainstream-line/gd32vf103-series/) microcontrollers and provides configurations for the [SiPeed Longan Nano](https://longan.sipeed.com/en/) development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.
@@ -61,6 +61,8 @@ This is a C header file that is one of the first things included, and will persi
* pins unused by the keyboard for reference
*`#define MATRIX_HAS_GHOST`
* define is matrix has ghost (unlikely)
*`#define MATRIX_UNSELECT_DRIVE_HIGH`
* On un-select of matrix pins, rather than setting pins to input-high, sets them to output-high.
*`#define DIODE_DIRECTION COL2ROW`
* COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
@@ -124,15 +126,13 @@ If you define these options you will disable the associated feature, which can s
* disable tap dance and other tapping features
*`#define NO_ACTION_ONESHOT`
* disable one-shot modifiers
*`#define NO_ACTION_MACRO`
* disable old-style macro handling using `MACRO()`, `action_get_macro()`_(deprecated)_
*`#define NO_ACTION_FUNCTION`
* disable old-style function handling using `fn_actions`, `action_function()`_(deprecated)_
## Features That Can Be Enabled
If you define these options you will enable the associated feature, which may increase your code size.
*`#define ENABLE_COMPILE_KEYCODE`
* Enables the `QK_MAKE` keycode
*`#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 STRICT_LAYER_RELEASE`
@@ -206,7 +206,7 @@ If you define these options you will enable the associated feature, which may in
*`#define TAP_CODE_DELAY 100`
* Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
*`#define TAP_HOLD_CAPS_DELAY 80`
* Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
* Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPS_LOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
*`#define KEY_OVERRIDE_REPEAT_DELAY 500`
* Sets the key repeat interval for [key overrides](feature_key_overrides.md).
@@ -383,7 +383,6 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* A list of [layouts](feature_layouts.md) this keyboard supports.
* `LTO_ENABLE`
* Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable).
However, this will automatically disable the legacy TMK Macros and Functions features, as these break when LTO is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`. (Note: This does not affect QMK [Macros](feature_macros.md) and [Layers](feature_layers.md).)
## AVR MCU Options
* `MCU = atmega32u4`
@@ -397,15 +396,17 @@ However, this will automatically disable the legacy TMK Macros and Functions fea
* `qmk-dfu`
* `halfkay`
* `caterina`
* `bootloadHID`
* `USBasp`
* `bootloadhid`
* `usbasploader`
## Feature Options :id=feature-options
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
* `MAGIC_ENABLE`
* MAGIC actions (BOOTMAGIC without the boot)
* `BOOTMAGIC_ENABLE`
* Virtual DIP switch configuration
* Enable Bootmagic Lite
* `MOUSEKEY_ENABLE`
* Mouse keys
* `EXTRAKEY_ENABLE`
@@ -418,6 +419,8 @@ Use these to enable or disable building certain features. The more you have enab
* Key combo feature
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `RING_BUFFERED_6KRO_REPORT_ENABLE`
* USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`
@@ -430,8 +433,8 @@ Use these to enable or disable building certain features. The more you have enab
* MIDI controls
* `UNICODE_ENABLE`
* Unicode
* `BLUETOOTH`
* Current options are AdafruitBLE, RN42
* `BLUETOOTH_ENABLE`
* Current options are BluefruitLE, RN42
* `SPLIT_KEYBOARD`
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
* `CUSTOM_MATRIX`
@@ -442,6 +445,10 @@ Use these to enable or disable building certain features. The more you have enab
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
* `DEFERRED_EXEC_ENABLE`
* Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions.md#deferred-execution) for more information.
* `DYNAMIC_TAPPING_TERM_ENABLE`
* Allows to configure the global tapping term on the fly.
@@ -20,7 +20,7 @@ Keymaps in this directory require four key-value pairs:
Additionally, most keymaps contain a `commit` key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default `keymap.c` in the `qmk_firmware` repository. The SHA is found by checking out [the `master` branch of the `qmk/qmk_firmware` repository](https://github.com/qmk/qmk_firmware/tree/master/) and running `git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c` (use `keymap.json` if the keyboard in question has this file instead), which should return something similar to:
```shell
```
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
```
@@ -31,7 +31,7 @@ In this example, `f14629ed1cd7c7ec9089604d64f29a99981558e8` is the value that sh
If one wished to add a default keymap for the H87a by Hineybush, one would run the `git log` command above against the H87a's default keymap in `qmk_firmware`:
@@ -43,7 +43,7 @@ Keycode Entry is accomplished in one of 3 ways:
## Step 5: Save Your Keymap for Future Changes
When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.
When you're satisfied with your keymap or just want to work on it later, press the `Download this QMK Keymap JSON File` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Upload a QMK Keymap JSON File` button.
!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
./bin/qmk docs
qmk docs
or if you only have Python 3 installed:
python3 -m http.server 8936
python3 -m http.server 8936 --directory docs
and navigating to `http://localhost:8936/`.
@@ -165,4 +165,4 @@ To maintain a clear vision of how things are laid out in QMK we try to plan out
# What Does the Code of Conduct Mean for Me?
Our [Code of Conduct](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
Our [Code of Conduct](https://qmk.fm/coc/) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
@@ -15,7 +15,7 @@ The reasons to use this feature include:
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called `matrix.c`.
* This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override.
* These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, configuring the inputs and outputs based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override.
@@ -214,11 +214,11 @@ This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_
```c
voidsuspend_power_down_user(void){
rgb_matrix_set_suspend_state(true);
// code will run multiple times while keyboard is suspended
}
voidsuspend_wakeup_init_user(void){
rgb_matrix_set_suspend_state(false);
// code will run on keyboard wakeup
}
```
@@ -405,3 +405,69 @@ And you're done. The RGB layer indication will only work if you want it to. And
* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.
### Deferred Execution :id=deferred-execution
QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk.
#### Deferred executor callbacks
All _deferred executor callbacks_ have a common function signature and look like:
The first argument `trigger_time` is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour.
The second argument `cb_arg` is the same argument passed into `defer_exec()` below, and can be used to access state information from the original call context.
The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns `0` then it's automatically unregistered. In the example above, a hypothetical `my_deferred_functionality()` is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a `500` millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning `0`.
?> Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.
#### Deferred executor registration
Once a callback has been defined, it can be scheduled using the following API:
The first argument is the number of milliseconds to wait until executing `my_callback` -- in the case above, `1500` milliseconds, or 1.5 seconds.
The third parameter is the `cb_arg` that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, `NULL` should be used.
The return value is a `deferred_token` that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be `INVALID_DEFERRED_TOKEN`. Usually this will be as a result of supplying `0` to the delay, or a `NULL` for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.
#### Extending a deferred execution
The `deferred_token` returned by `defer_exec()` can be used to extend a the duration a pending execution waits before it gets invoked:
```c
// This will re-delay my_token's future execution such that it is invoked 800ms after the current time
extend_deferred_exec(my_token,800);
```
#### Cancelling a deferred execution
The `deferred_token` returned by `defer_exec()` can be used to cancel a pending execution before it gets invoked:
```c
// This will cancel my_token's future execution
cancel_deferred_exec(my_token);
```
Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported.
#### Deferred callback limits
There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define `MAX_DEFERRED_EXECUTORS`.
If registrations fail, then you can increase this value in your keyboard or keymap `config.h` file, for example to 16 instead of the default 8:
@@ -44,7 +44,7 @@ In other cases you should group like options together in an `object`. This is pa
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
*`info_key`: (required) The location within `info.json` for this value. See below.
*`value_type`: (optional) Default `str`. The format for this variable's value. See below.
*`value_type`: (optional) Default `raw`. The format for this variable's value. See below.
*`to_json`: (optional) Default `true`. Set to `false` to exclude this mapping from info.json
*`to_c`: (optional) Default `true`. Set to `false` to exclude this mapping from config.h
*`warn_duplicate`: (optional) Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -57,7 +57,7 @@ Under the hood we use [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/)
#### Value Types
By default we treat all values as simple strings. If your value is more complex you can use one of these types to intelligently parse the data:
By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:
*`array`: A comma separated array of strings
*`array.int`: A comma separated array of integers
@@ -65,6 +65,7 @@ By default we treat all values as simple strings. If your value is more complex
*`hex`: A number formatted as hex
*`list`: A space separate array of strings
*`mapping`: A hash of key/value pairs
*`str`: A quoted string literal
### Add code to extract it
@@ -74,7 +75,7 @@ Whenever QMK generates a complete `info.json` it extracts information from `conf
If you are not sure how to edit this file or are not comfortable with Python [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and someone can help you with this part.
### Add code to generate it
### Add code to generate it :id=add-code-to-generate-it
The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:
QMK (*Quantum Mechanical Keyboard*) ist eine Open-Source-Community, welche die QMK-Firmware, die QMK-Toolbox, [qmk.fm](https://qmk.fm) und diese Dokumententation betreut. QMK-Firmware ist eine Weiterentwicklung der [tmk\_keyboard](https://github.com/tmk/tmk_keyboard)-Tastatur-Firmware mit vielen nützlichen Zusatzfunktionen für Atmel AVR-Prozessoren. Ursprünglich wurde sie für Produkte von [OLKB](https://olkb.com), das [ErgoDox EZ](https://www.ergodox-ez.com) und das [Clueboard](https://clueboard.co/) entwickelt. Im Laufe der Zeit wurde sie mit Hilfe von [ChibiOS](https://chibios.org) auch für die ARM-Architektur angepasst. Außerdem ist es inzwischen möglich, auch handverdrahtete Tastaturen und selbst geätzte PCBs mit QMK zu verwenden.
## Bezugsquelle für QMK
Wenn Du vorhast, deine Tastatur, Tastaturbelegung oder Features zu QMK beizusteuern, geht das am einfachsten, indem Du das [Repository auf GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) forkst, die Änderungen in deinem lokalen Repo vornimmst und anschließend einen [Pull Request](https://github.com/qmk/qmk_firmware/pulls) einreichst.
Ansonsten kannst Du es als [zip](https://github.com/qmk/qmk_firmware/zipball/master) oder [tar](https://github.com/qmk/qmk_firmware/tarball/master) herunterladen, oder es direkt via git klonen (`git clone git@github.com:qmk/qmk_firmware.git` bzw. `git clone https://github.com/qmk/qmk_firmware.git`).
## Anleitung fürs Kompilieren
Bevor Du in der Lage bist, die Firmware zu kompilieren, musst Du eine [Entwicklungsumgebung](de/getting_started_build_tools.md) für AVR und/oder ARM aufsetzen. Danach kannst Du mit dem `make` Befehl eine Keymap für deine Tastatur erzeugen. Die Notation dafür ist:
make planck/rev4:default
Dies generiert die Revision `rev4` für eine Tastatur vom Type `planck` mit der `default` Tastaturbelegung. Nicht alle Tastaturen haben Revisionen (auch bekannt als Subprojekt oder Unterordner) weswegen dies auch ausgelassen werden kann:
make preonic:default
## Möglichkeiten der Anpassung
QMK hat viele [Features](de/features.md), die es zu entdecken gibt. In der [Dokumentation](https://docs.qmk.fmk) kannst Du Dir einen Überblick verschaffen. Die meisten Features basieren darauf, die [Tastaturbelegung](de/keymap.md) anzupassen und das Verhalten der [Keycodes](de/keycodes.md) zu verändern.
Diese Seite beschreibt die Einrichtung und den Umgang mit dem QMK CLI (Kommandozeile).
# Übersicht
Die QMK CLI vereinfacht das Zusammenbauen und Arbeiten mit QMK Tastaturen. Hier findest Du wichtige Befehle, um beispielsweise das Herunterladen und Kompilieren der QMK Firmware oder das Erstellen von Tastaturbelegungen (und vieles mehr) zu erleichtern.
* [Globale CLI](#globale-cli)
* [Lokale CLI](#lokale-cli)
* [CLI-Befehle](#cli-befehle)
# System-Anforderungen
Die CLI benötigt Python 3.5 oder höher. Außerdem ist es nötig, die Packages laut [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt) zu installieren.
# Globale CLI
QMK bietet ein installierbares CLI, das Du zum Einrichten Deiner QMK Build-Umgebung verwenden kannst. Dieses ermöglicht Dir das Arbeiten mit QMK, und erleichtert das Arbeiten mit mehreren Kopien der `qmk_firmware`. Wir empfehlen, dieses CLI zu installieren und regelmäßig upzudaten.
## Installation mit Homebrew (macOS, manche Linux)
Solltest Du [Homebrew](https://brew.sh) installiert haben, kannst Du QMK per tap installieren:
```
brew tap qmk/qmk
brew install qmk
export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
```
## Installation mit easy_install oder pip
Falls Du kein Homebrew hast, kannst Du QMK auch manuell installieren. Zuerst musst Du sicherstellen, dass Python 3.5 (oder höher) und pip installiert ist. Dann installiere QMK mit diesem Befehl:
```
pip3 install qmk
export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
```
## Installation mit git Repo
`git clone https://github.com/qmk/qmk_cli.git && cd qmk_cli && python3 setup.py install`
## Packaging für andere Betriebssysteme
Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme erstellen und pflegen. Falls Du ein Package für Dein OS erstellen möchtest, bitte befolge diese Richtlinien:
* Verwende "Best Practices" für Dein OS, sollten sie mit diesen Richtlinien in Konflikt stehen.
* Dokumentiere den Grund in einem Kommentar, wenn Du abweichen musstest.
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
# Lokale CLI
Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
**Beispiel**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Einschränkungen der lokalen CLI
Hier ein Vergleich mit der globalen CLI:
* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
# CLI-Befehle
## `qmk compile`
Dieser Befehl erlaubt es dir, die Firmware - aus egal welchem Datei-Verzeichnis - zu compilen. Du kannst JSON-Exporte von <https://config.qmk.fm> oder Keymaps in der Repo kompilen.
**Anwendung für Konfigurations-Exports**:
```
qmk compile <configuratorExport.json>
```
**Anwendung für Keymaps**:
```
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk format-c`
Dieser Befehl formatiert C-Code im clang-Format. Benutze ihn ohne Argumente, um den core-Code zu formatieren, oder benutze Namen von Dateien in der CLI, um den Befehl auf bestimmte Dateien anzuwenden.
**Anwendung**:
```
qmk format-c [file1] [file2] [...] [fileN]
```
## `qmk config`
Dieser Befehl konfiguriert das Verhalten von QMK. Für die volle `qmk config`-Dokumentation gehe zu [CLI-Konfiguration](cli_configuration.md).
QMK erscheint für den Host als normales HID Eingabegerät und benötigt deshalb keine zusätzlichen Treiber. Der Bootloader, den Du für das Flashen der Firmware benötigst, jedoch meistens schon.
Hierzu gibt es zwei Ausnahmen: den Caterina Bootloader, meistens auf Pro Micros, sowie den HalfKay Bootloader auf PJRC Teensys. Diese erscheinen als serieller Port und als generisches HID Gerät und benötigen keine Treiber.
Wir empfehlen deshalb [Zadig](https://zadig.akeo.ie/). Wenn Du die Entwicklungsumgebung mit MSYS2 oder WSL installiert hast, wird dich dass `qmk_install.sh` Skript gefragt haben, ob es die Treiber für dich installieren sollte.
## Installation
Versetze deine Tastatur in den Bootloader-Modus, entweder durch Betätigung des physischen `RESET` Schalters - meist auf der Unterseite der Platine - oder durch das Auslösen des Key-Codes `RESET` bzw. `KC_RESET` (sollte in der zur Tastatur gehörigen `keycode.c` zu entnehmen sein). Sollte deine Tastatur weder noch besitzen, versuche es damit die `Escape`-Taste oder `Leertaste + B` zu halten während Du die Tastatur mit dem PC verbindest (Siehe auch [Bootmagic](de/feature_bootmagic.md) für weitere Details). Ein paar Tastaturen benutzen das [Command](de/feature_command.md)-Feature an Stelle von Bootmagic; in diesem Fall kannst du mit den Tastenkombinationen `linkes Shift + rechtes Shift + B` oder `linkes Shift + rechtes Shift + Escape` zu jeder Zeit in den Bootloader wechseln solange die Tastatur verbunden ist.
Eingie Tastaturen haben u.U. spezielle Anweisungen um in den Bootloader-Modus zu gelangen. Zum Beispiel kann die [Bootmagic-Lite](de/feature_bootmagic.md#bootmagic-lite)-Taste (default: Escape) auf eine andere Taste gemappt sein; oder die magische Kombination (default: linkes Shift+rechtes Shift) verwendet anstatt Shift die STRG-Tasten. Die zur Tastatur gehörige README sollte dir Aufschluss darüber geben wie der Bootloader-Modus ausgelöst werden kann wenn Du unsicher bist.
Um ein Gerät mit USBaspLoader in den Bootloader-Modus zu versetzen, halte `BOOT` gedrückt während Du den `RESET`-Knopf drückst.
Alternativ, halte `BOOT` gedrückt während Du das USB-Kabel einsteckst.
Zadig sollte das Bootloader-Gerät automatisch erkennen. Manchmal musst Du zusätzlich noch **Options → List All Devices** auswählen.
- Tastaturen mit Atmel AVR MCUs sollten als `ATm32U4DFU` (oder ähnlich) angezeigt werden, mit der Vendor ID `03EB`.
- USBasp werden als `USBasp` angezeigt, mit VID/PID `16C0:05DC`.
- Tastaturen AVR controller und dem QMK-DFU Bootloader haben den namen `<Tastatur Name> Bootloader` und die VID `03EB`.
- Die meisten ARM Tastaturen werden als `STM32 BOOTLOADER` angezeigt, mit VID/PID `0483:DF11`.
!> Sollte Zadig ein oder mehrere Geräte mit `HidUsb`-Treiber anzeigen, dann ist deine Tastatur wahrscheinlich nicht im Bootloader-Modus. Der Pfeil wird orange eingefärbt sein und Du wirst nach einer Bestätigung gefragt um Veränderungen am System vorzunehmen. In diesem Fall **fahre nicht fort**!
Wenn der Pfeil grün angezeigt wird, wähle den Treiber aus und klicke auf **Treiber installieren**. Der `libusb-win32`-Treiber sollte gewöhnlich für AVR verwendet werden und `WinUSB` für ARM. Sollte es danach noch nicht möglich sein die Tastatur zu flashen, versuche es mit einem anderen Treiber. Für USBaspLoader Geräte, die über die Befehlszeile mit MSYS2 geflasht werden, wird der `libusbk`-Treiber empfohlen. Ansonsten sollte `libusb-win32` funktionieren wenn die QMK Toolbox verwendet wird.

Entferne nun deine Tastatur und verbinde sie erneut um sicherzugehen dass der neue Treiber erfolgreich installiert wurde. Wenn Du QMK Toolbox benutzt, starte die Anwendung zur Sicherheit einmal neu, da Veränderungen am Treiber manchmal nicht richtig erkannt werden. Wenn dies immer noch nicht erfolgreich war hilft es an dieser Stelle manchmal ein Neustart des Computers.
## Wiederherstellung einer Installation für ein falsches Gerät
Wenn Du feststellst dass Du anschließend auf deiner Tastatur nicht mehr tippen kannst, ist etwas bei der Installation schief gelaufen. Ein häufiger Fehler ist es dass die Tastatur nicht im Bootloader-Modus war und stattdessen der Treiber für das HID-Gerät ersetzt wurde. Dies kannst Du einfach mit Zadig überprüfen, eine funktionierende Tastatur verwendet als Treiber `HidUsb` auf allen Interfaces .

Öffne den Geräte-Manager und suche nach einem Gerät das wie deine Tastatur aussieht.

Rechtsklick und **Gerät deinstallieren** anklicken. Bitte gehe sicher dass in diesem Schritt auch **Treibersoftware für dieses Gerät löschen** markiert ist.

Klick **Aktion → Suche nach veränderter Hardware**. Nun solltest Du wieder in der Lage sein normal zu tippen. Vergewissere dich mit Hilfe von Zadig dass die Tastatur nun `HidUsb` als Treiber verwendet. Wenn dies der Fall ist sollte wieder alles funktionieren.
QMK ist eine mächtige Open Source Firmware für mechanische Tastaturen. Mit QMK kannst Du deine Tastatur sowohl sehr einfach als auch sehr umfangreich anpassen. Menschen unterschiedlichen Wissensstandes - vom kompletten Anfänger bis zum erfahrenen Programmierer - haben ihre Tastaturen mit QMK erfolgreich auf ihre persönlichen Bedürfnisse angepasst. Diese Anleitung soll Dir unabhängig von deinen Vorkenntnissen dabei helfen dies ebenfalls zu bewältigen.
Bist Du unsicher ob deine Tastatur QMK unterstützt? Wenn es eine mechanische Tastatur ist, die Du selbst gebaut hast, stehen deine Chancen gut. Wir unterstützen eine [Vielzahl](https://qmk.fm/keyboards/) selbst gebauter Tastaturen, sodass selbst wenn deine jetzige Tastatur nicht unterstützt wird Du keine Probleme haben solltest eine für deine Anforderungen zu finden.
## Übersicht
Diese Anleitung ist in 7 Abschnitte unterteilt:
* [Die ersten Schritte](newbs_getting_started.md)
* [Die erste Firmware auf der Kommandozeile erzeugen](newbs_building_firmware.md)
* [Die erste Firmware mit der Online GUI erzeugen](newbs_building_firmware_configurator.md)
* [Firmware flashen](newbs_flashing.md)
* [Testen und Debuggen](newbs_testing_debugging.md)
* [Git Leitfaden](newbs_best_practices.md)
* [Weitere hilfreiche Ressourcen für Anfänger](newbs_learn_more_resources.md)
Diese Anleitung richtet sich an Personen, die vorher noch nie Software kompiliert haben. Die Entscheidungen und Empfehlungen basieren auf dieser Grundannahme. Es gibt unterschiedliche Herangehensweisen für viele der Prozeduren und wir unterstützen die meisten Alternativen. Wenn Du mal nicht weiter weißt oder Dir nicht sicher bist, wie Du an ein Problem herangehen sollst, kannst Du uns gerne [um Hilfe bitten](getting_started_getting_help.md).
## Weitere Ressourcen
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – Ein äußerst hilfreicher Blog eines Community-Mitglieds, der einige Grundlagen der QMK-Firmware aus der Sicht des Benutzers erklärt (auf Englisch).
Nachdem Du nun eine funktionierende Entwicklungsumgebung aufgesetzt hast, bist Du nun bereit, deine eigene Firmware zu erstellen. Dieses Sektion des Guides wird zwischen drei Programmen hin- und herwechseln: deinem Dateimanager, deinem Texteditor und der Befehlszeile. Lasse diese drei Fenster geöffnet, bis Du fertig und zufrieden mit deiner Tastatur-Firmware bist.
Solltest Du die Befehlszeile zwischenzeitlich geschlossen haben, vergiss nicht wieder in das richtige Verzeichnis zu navigieren, benutze dazu den Befehl `cd qmk_firmware`.
## Navigiere in deinen Keymap Ordner
Beginne damit, in das `keymaps` Verzeichnis für deine Tastatur zu navigieren.
Wenn Du macOS oder Windows benutzt, kannst Du einfach in das keymaps Verzeichnis wechseln.
?> macOS:<br>
open keyboards/<keyboard_folder>/keymaps
?> Windows:<br>
start .\\keyboards\\<keyboard_folder>\\keymaps
## Eine Kopie der `default` Tastaturbelegung erstellen
Wenn Du den `keymaps` Ordner geöffnet hast, solltest Du zuerst eine Kopie des `default` Verzeichnisses erstellen. Wir empfehlen dafür deinen GitHub Benutzernamen zu verweden, aber Du kannst auch jeden anderen Namen verwenden solange er nur aus Kleinbuchstaben, Zahlen und Unterstrichen besteht.
Um den Prozess zu automatisieren kannst Du dazu auch das Skript `new_keymap.sh` verwenden.
Navigiere dazu in das `qmk_firmware/util` Verzeichnis und gib folgenden Befehl ein:
```
./new_keymap.sh <keyboard path> <username>
```
Um zum Beispiel den Benutzernamen John für die Tastaturbelegung eines 1up60hse zu verwenden, würdest Du Folgendes eingeben:
```
./new_keymap.sh 1upkeyboards/1up60hse john
```
## Öffne `keymap.c` in deinem bevorzugtem Text Editor
Öffne deine `keymap.c`. In dieser Datei findest Du die Strukturen, die das Verhalten deiner Tastatur bestimmen. Oben in der `keymap.c` befinden sich Definitionen (defines) und Aufzählungen (enums), die die Tastaturbelegung leserlicher machen sollen. Weiter unten wirst Du eine Zeile finden, die wie folgt aussieht:
Diese Zeile markiert den Anfang der Liste der Ebenen (Layers). Darunter befinden sich Zeilen die entweder `LAYOUT` oder `KEYMAP` enthalten, das deutet auf den Start einer Ebene hin. Danach folgt eine Liste von Tasten, die dieser Ebene zugewiesen sind.
!> Beim Bearbeiten einer Tastaturbelegung solltest Du darauf achten, keine Kommata hinzuzufügen oder zu entfernen. Ansonsten kann dies dazu führen, dass deine Firmware nicht mehr kompiliert und es ist nicht immer einfach festzustellen, wo genau ein Komma zuviel oder zu wenig ist. Die letzte Zeile hat am Ende kein Komma, die Zeilen davor jedoch schon.
## Personalisiere die Tastaturbelegung nach deinen Wünschen
Wie Du diesen Schritt abschließt ist vollkommen Dir überlassen. Ändere die eine Sache die Dich stört oder verändere alles von Grund auf. Du kannst Ebenen entfernen die Du nicht brauchst oder Neue hinzufügen, bis zu 32 Stück. Die folgende Dokumentation verrät Dir was Du hier alles definieren kannst:
* [Keycodes](de/keycodes.md)
* [Features](de/features.md)
* [FAQ](de/faq.md)
?> Während Du langsam ein Gefühl dafür kriegst wie Keymaps funktionieren, solltest Du darauf achten nicht zuviel auf einmal zu verändern. Größere Änderungen machen es schwieriger, Probleme zu debuggen.
## Deine Firmware erzeugen
Wenn Du damit fertig bist, deine Tastaturbelegung anzupassen, musst Du noch die Firmware erzeugen. Öffne dazu wieder die Befehlszeile und führe folgenden Befehl aus:
make <my_keyboard>:<my_keymap>
Wenn deine Tastaturbelegung z.B. "xyverz" heißt und Du die Belegung für ein rev5 planck erzeugen möchtest, lautet der Befehl:
make planck/rev5:xyverz
Während des Kompiliervorgangs wird viel Text auf dem Bildschirm ausgegeben. Es sollte am Ende mit etwas enden das ungefähr so aussieht:
```
Linking: .build/planck_rev5_xyverz.elf [OK]
Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
Checking file size of planck_rev5_xyverz.hex [OK]
* File size is fine - 18392/28672
```
## Deine Firmware flashen
Bitte fahre mit [Firmware flashen](de/newbs_flashing.md) fort, um zu erfahren, wie Du deine neue Firmware auf deine Tastatur flashen kannst.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.