Compare commits

...

1138 Commits

Author SHA1 Message Date
3araht
f04336ff46 Redefinition of MIN is avoided in midi.c (#18203) 2022-08-29 12:18:53 -07:00
Felix Jen
de1d6b6f15 [Keyboard] Add sinanju WK (#17736)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-29 11:25:20 -07:00
Felix Jen
a6b47de732 [Keyboard] Add Peaker keyboard (#17920)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-29 11:23:23 -07:00
Felix Jen
ccb244d5ed [Keyboard] Add Trailblazer Avalon (#17568)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-29 11:22:54 -07:00
Christian Solje
22136f8135 [Keymap] Add csolje 42 keymap for the cantor (#18125)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Christian Solje <csolje@gn.com>
2022-08-29 11:22:01 -07:00
Stefan
56b93a3ad8 [Keyboard] Add handwired Split 5x7 (#18128)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-28 21:49:17 -07:00
TJ
b719a16b03 [Keyboard] add Nearfield, fix typo in Le Chiffre Readme (#17914) 2022-08-28 21:48:41 -07:00
bbrfkr
a2294bcc97 [Keyboard] Update dynamis keyboard (#17625)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-28 21:47:30 -07:00
Simon Hengel
38de991fda [Keyboard] Add chord/zero (#18190) 2022-08-28 21:39:45 -07:00
NGatti1997
8b9f0a58b4 Swap KC_VOLD and KC_VOLU on GMMK2 to correct places (#18193) 2022-08-29 02:43:24 +01:00
biesigrr
3f99c42800 Expose Moonlander split detection to user code (#18040) 2022-08-29 02:37:29 +01:00
Juno Nguyen
1cc0b1e371 Update junonum keymap: add AG_NORM recovery (#18170) 2022-08-29 02:34:47 +01:00
Jeff Epler
3c3f55c0e9 Add an ez_maker directpins for rp2040 (#17908)
* Add an ez_maker directpins for rp2040

This allows all exposed pins on the Raspberry Pi Pico to be used
as up to 26 individual keys. Keys use a common ground arrangement.

The firmware is also expected to work on generic RP2040 boards, check
manufacturer pinout diagrams or use trial and error to find out the GP#s
of the pins.

* Update keyboards/ez_maker/directpins/rp2040/info.json

Co-authored-by: Joel Challis <git@zvecr.com>

* Changes based on review comments

Co-authored-by: Joel Challis <git@zvecr.com>
2022-08-28 21:40:10 +01:00
Davide Masserut
0633e71a18 [Keymap] Add Miryoku keymap for Hillside 48 (#18191) 2022-08-28 13:20:30 -07:00
Drashna Jaelre
fa08cb2478 [Keymap] Drashna keymap updates for 0.18.0 (#18184)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-28 12:55:19 -07:00
Ryan
d4a6ee1cad Clean up schema syntax (#18192) 2022-08-28 19:24:11 +01:00
Less/Rikki
4adb64a91b [Keyboard] mechwild/bde cleanup and refactor (#18149) 2022-08-28 10:16:20 -07:00
Matt Chan
585b134729 [Keyboard] Add Kegen G-Boy (#18048)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-28 10:12:18 -07:00
Joshua Diamond
37a85e1f9b More spidey3 userspace cleanup (#18049) 2022-08-28 10:10:28 -07:00
Albert Y
ef0c87c976 Exclude uf2 files in VS Code (#18186) 2022-08-28 09:59:07 -07:00
James Young
efdd4f4d50 Clean-up of #define _ADJUST 16 instances (#18182)
* enum layer_names: 40percentclub/nori default keymap

* enum layer_names: ergotravel default keymap

* enum layer_names: handwired/atreus50 default keymap

* enum layer_names: handwired/ortho5x13 default keymap

* enum layer_names: keebio/levinson default keymap

* enum layer_names: keebio/nyquist default keymap

* enum layer_names: keebio/rorschach default keymap

* enum layer_names: keebio/viterbi default keymap

* enum layer_names: keebio/wavelet default keymap

* enum layer_names: lets_split default keymap

* enum layer_names: maple_computing/launchpad reference keymaps

Update `default` and `default_rgb` keymaps.

* enum layer_names: maple_computing/minidox default keymap

* enum layer_names: miniaxe reference keymaps

Update `default` and `underglow` keymaps.

* enum layer_names: omkbd/ergodash/mini default keymap

* enum layer_names: omkbd/ergodash/rev1 default keymap

* enum layer_names: orthodox default keymap

* enum layer_names: unikeyboard/divergetm2 default keymap

* enum layer_names: woodkeys/scarletbandana default keymap

* add _Static_assert to keymap_introspection.c
2022-08-27 23:13:44 -07:00
Nick Brassel
0a3f7e4869 Merge remote-tracking branch 'upstream/develop' 2022-08-28 14:23:01 +10:00
Nick Brassel
9b5b072255 2022q3 Changelog. (#18180)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-28 14:20:52 +10:00
Joel Challis
a2765bfe19 Add missing SS_LOPT and SS_ROPT defines (#18175) 2022-08-27 09:41:10 +10:00
Ryan
24720400a8 Update LUFA submodule (#18168) 2022-08-26 12:19:34 +10:00
Joel Challis
43fd647130 Add eeprom defaults for tinyuf2 bootloader (#18042) 2022-08-25 21:17:41 +10:00
QMK Bot
1c47bd0ddf Merge remote-tracking branch 'origin/master' into develop 2022-08-24 21:20:43 +00:00
Ryan
fc0bf67f37 Add missing DD mapping for RGB_MATRIX_DRIVER (#18160) 2022-08-24 22:20:05 +01:00
QMK Bot
fdb0cc5981 Merge remote-tracking branch 'origin/master' into develop 2022-08-24 20:41:37 +00:00
Joel Challis
4a67123310 Refactor pianoforte for configurator (#18159) 2022-08-24 13:39:49 -07:00
QMK Bot
3aba764b43 Merge remote-tracking branch 'origin/master' into develop 2022-08-24 20:39:34 +00:00
Joel Challis
e95aa2a352 Fix use of encoder map in mechlovin/zed65/retro66 (#18158) 2022-08-24 13:38:53 -07:00
QMK Bot
fa25cacf6a Merge remote-tracking branch 'origin/master' into develop 2022-08-24 20:38:47 +00:00
Joel Challis
b2db8becf9 Fix use of encoder map in mechlovin/foundation (#18157) 2022-08-24 13:38:07 -07:00
QMK Bot
129c60946c Merge remote-tracking branch 'origin/master' into develop 2022-08-24 19:26:18 +00:00
Joel Challis
3d8c624698 Update invalid pip install flag (#18146) 2022-08-24 20:25:16 +01:00
QMK Bot
5f371104bc Merge remote-tracking branch 'origin/master' into develop 2022-08-24 18:11:55 +00:00
Joel Challis
7fab889696 Fix use of encoder map in mechwild/clunker (#18156) 2022-08-24 19:10:52 +01:00
Ryan
cf41c24db8 Move keyboard USB IDs and strings to data driven: develop (#18152)
* Move keyboard USB IDs and strings to data driven: develop

* Also do new onekeys
2022-08-24 15:28:38 +01:00
QMK Bot
e06ea4a10f Merge remote-tracking branch 'origin/master' into develop 2022-08-23 17:56:51 +00:00
Ramon Imbao
a53ef56946 [Keyboard] Add Plywrks Lune (#17057)
* Add Plywrks Lune

* Add OLED functionality

* Update keyboards/plywrks/lune/keymaps/default/keymap.c

* Update keyboards/plywrks/lune/keymaps/via/keymap.c

* Update keyboards/plywrks/lune/keymaps/via/keymap.c

* Update keyboards/plywrks/lune/lune.c

* Add the missing 2 layers in the keymap

Also added a missing parenthesis in lune.c, and removed
the oled_task_user in the default keymap.

* Update keyboards/plywrks/lune/info.json

* Update keyboards/plywrks/lune/info.json

* Update keyboards/plywrks/lune/info.json

* Update keyboards/plywrks/lune/config.h
2022-08-23 10:55:59 -07:00
QMK Bot
dd0277beab Merge remote-tracking branch 'origin/master' into develop 2022-08-23 17:51:17 +00:00
Kyle McCreery
7839396614 [Keyboard] Add Clunker (#18141)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-23 10:50:19 -07:00
QMK Bot
f03f89ccb5 Merge remote-tracking branch 'origin/master' into develop 2022-08-23 13:43:09 +00:00
Joel Challis
ee416048d9 Use correct board files for cantor (#18144) 2022-08-23 14:42:23 +01:00
QMK Bot
3dd12b5425 Merge remote-tracking branch 'origin/master' into develop 2022-08-23 05:01:45 +00:00
Dave Rowe
f9584c8368 [Keyboard] Enable VIA - ALF X1.1 (#18140) 2022-08-22 22:00:58 -07:00
QMK Bot
c1ce0f44f8 Merge remote-tracking branch 'origin/master' into develop 2022-08-23 02:13:07 +00:00
Brandon Claveria
b395f40e07 [Keyboard] add rgb animation handwired/swiftrax/glacier (#18121)
Co-authored-by: swiftrax <swiftrax@github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-22 19:12:33 -07:00
Sergey Vlasov
7c0e5ce917 Nix shell updates for develop (#18131)
* shell.nix: Update `tomlkit` to 0.11.4 using a Nixpkgs overlay

The used Nixpkgs snapshot contains `tomlkit` version 0.7.0, which is
affected by https://www.github.com/sdispater/tomlkit/issues/148; that
bug is triggered by `pyproject.toml` from `jsonschema` >= 4.11.0,
preventing the build of that module.

Just adding `tomlkit = "*"` to the `[tool.poetry.dev-dependencies]`
section of `nix/pyproject.toml` does not fix the `jsonschema` build,
because `makeRemoveSpecialDependenciesHook` inside `poetry2nix` is not
affected by `nix/pyproject.toml`.  Add a Nixpkgs overlay which updates
the `tomlkit` Python module globally, so that `poetry2nix` would also
use the updated version internally.

* shell.nix: Bump `poetry2nix` to the most recent version

The new `poetry2nix` version includes overrides which are required for
recent versions of some Python packages (in particular, `jsonschema` and
`dotty-dict`).

* shell.nix: Bump QMK CLI to 1.1.1; update other Python deps

Update `pyproject.toml` to match `requirements*.txt`:

- add `pyserial = "*"`
- replace `qmk-dotty-dict = "*"` with `dotty-dict = "*"` (#18117, also
  required for compatibility with `qmk` 1.1.1, where this replacement
  had already been performed)

Add build dependencies of various Python modules to `pyproject.toml`:

- `hatchling`, `hatch-vcs`, `hatch-fancy-pypi-readme` (required by
  `jsonschema` >= 4.11.0)
- `pytest` (a newer version is required to solve the dependency conflict
  with the `hatchling` module due to the upper bound on `pluggy`)
- `flit-core` (a more recent version is required to build `tomli`)
- `poetry-core` (required for `dotty-dict` >= 1.3.1, and the version
  from Nixpkgs does not build on Darwin due to NixOS/nix#4758)

Update `poetry.lock` to use the most recent versions of Python modules.

The complete list of Python module updates as listed in `poetry.lock`
(note that other modules might be present in the Python environment,
e.g., if they come from Nixpkgs):

- `atomicwrites`: none -> 1.4.1 (but this module is not actually used,
  because the corresponding dependency of `pytest` is win32-only)
- `attrs`: 21.4.0 -> 22.1.0
- `colorama`: 0.4.4 -> 0.4.5
- `coverage`: 6.4 -> none
- `dotty-dict`: none -> 1.3.1 (used instead of `qmk-dotty-dict`)
- `editables`: none -> 0.3
- `flake8`: 4.0.1 -> 5.0.4
- `flake8-polyfill`: 1.0.2 -> none
- `flit-core`: none -> 3.7.1
- `hatch-fancy-pypi-readme`: none -> 22.3.0
- `hatch-vcs`: none -> 0.2.0
- `hatchling`: none -> 1.8.0
- `hjson`: 3.0.2 -> 3.1.0
- `importlib-resources`: 5.7.1 -> 5.9.0
- `iniconfig`: none -> 1.1.1
- `jsonschema`: 4.5.1 -> 4.14.0
- `mccabe`: 0.6.1 -> 0.7.0
- `nose2`: 0.11.0 -> 0.12.0
- `packaging`: none -> 21.3
- `pathspec`: none -> 0.9.0
- `pep8-naming`: 0.12.1 -> 0.13.2
- `pillow`: 9.1.1 -> 9.2.0
- `pkgutil-resolve-name`: none -> 1.3.10
- `pluggy`: none -> 1.0.0
- `poetry-core`: none -> 1.0.8
- `py`: none -> 1.11.0
- `pycodestyle`: 2.8.0 -> 2.9.1
- `pyflakes`: 2.4.0 -> 2.5.0
- `pygments`: 2.12.0 -> 2.13.0
- `pyparsing`: none -> 3.0.9
- `pyserial`: none -> 3.5
- `pytest`: none -> 7.1.2
- `qmk`: 1.1.0 -> 1.1.1
- `qmk-dotty-dict`: 1.3.0.post1 -> none (replaced by `dotty-dict`)
- `setuptools-scm`: none -> 7.0.5
- `tomli`: none -> 2.0.1
- `typing-extensions`: none -> 4.3.0
- `zipp`: 3.8.0 -> 3.8.1
2022-08-23 02:59:33 +01:00
QMK Bot
d942c03be6 Merge remote-tracking branch 'origin/master' into develop 2022-08-22 23:06:18 +00:00
Jesse
624d92e2f5 Update Tap Dance Example 4 (#18138)
break statements are missing from the switch for both registering and unregistering key codes. Neither have a default: case either. The code as exists in the repository right now does not compile. It does with this changes.
2022-08-23 00:05:35 +01:00
QMK Bot
b1af9b4fe0 Merge remote-tracking branch 'origin/master' into develop 2022-08-22 09:04:48 +00:00
Ryan
68ad251667 Remove USB IDs and strings from fungo/rev1 (#18133) 2022-08-22 19:04:01 +10:00
Joel Challis
bbc3bc55f2 RESET -> QK_BOOT user keymaps (#17940) 2022-08-21 23:55:30 +01:00
QMK Bot
e36ae90a65 Merge remote-tracking branch 'origin/master' into develop 2022-08-21 22:09:30 +00:00
Ryan
b0eda7701a Move keyboard USB IDs and strings to data driven, pass 3 (#18111) 2022-08-21 23:08:50 +01:00
QMK Bot
51e4e91285 Merge remote-tracking branch 'origin/master' into develop 2022-08-21 19:37:50 +00:00
Paul Ewing
3c0806a489 Add pcewing Speedo v3 keymap (#18118)
* Add pcewing Speedo v3 keymap

* Add readme and code quality improvements
2022-08-21 20:37:18 +01:00
QMK Bot
1e84890a5b Merge remote-tracking branch 'origin/master' into develop 2022-08-21 19:04:26 +00:00
Mario Cadenas
93f0c1f32f [Keymap] Add new keymap to nasu (#18024) 2022-08-21 12:03:48 -07:00
Joel Challis
9b7965d3a9 Align CLI requirements (#18117) 2022-08-21 18:38:17 +01:00
QMK Bot
efd893be39 Merge remote-tracking branch 'origin/master' into develop 2022-08-21 00:18:07 +00:00
Louis Dalibard
7ea54a7837 [Keyboard] Add ai macropad (#17722)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Louis Dalibard <ontake@ontake.dev>
2022-08-20 17:17:02 -07:00
QMK Bot
f99bac052e Merge remote-tracking branch 'origin/master' into develop 2022-08-20 20:28:43 +00:00
Abigail
e2fbcc8099 added keymap for kprepublic/jj40:brdlf (#17961)
* added keymap for kprepublic/jj40:brdlf
2022-08-20 21:28:02 +01:00
QMK Bot
e3cf678569 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 20:21:44 +00:00
JX
706995c044 [Keyboard] Add yandrstudio/nz67v2 keyboard. (#17591)
* add yr nz67v2 by jiaxin96
2022-08-20 21:21:07 +01:00
QMK Bot
cb3c8f40d0 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 20:08:35 +00:00
QMK Bot
d93b5ef247 Format code according to conventions (#18119) 2022-08-20 21:07:57 +01:00
QMK Bot
aa7629f8e6 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 20:01:40 +00:00
bojiguard
5222cf7673 add fungo keyboard (#17513)
by bojiguard
2022-08-20 21:01:04 +01:00
QMK Bot
3609c24df4 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 20:00:24 +00:00
studiokestra
ce19a9cdc5 Add Nascent keyboard support. (#17824)
* Add nascent keyboard by studiokestra
2022-08-20 20:59:47 +01:00
QMK Bot
a580057422 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 18:46:12 +00:00
mechlovin
c2a46a6fa0 [Keyboard] Add Zed65 (#17917)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-20 11:45:38 -07:00
Drashna Jael're
8f6b019dcc Merge remote-tracking branch 'origin/master' into develop 2022-08-20 10:22:48 -07:00
Sergey Vlasov
7ee55b1754 Fix PID value for the Keyboardio Atreus 2 bootloader (#18116)
Copy the correct PID from `util/udev/50-qmk.rules`.
2022-08-20 15:59:17 +01:00
Joel Challis
d2accb48e7 RESET -> QK_BOOT keyboard readme (#18110) 2022-08-20 11:34:17 +01:00
Erovia
5e2ffe7d8f CLI: Teaching the CLI to flash binaries (#16584)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-08-20 15:39:19 +10:00
QMK Bot
3bf36e8b04 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 04:17:48 +00:00
Joe Scotto
e7107691ab [Keymap] Add joe_scotto keymap for CRKBD (#18103) 2022-08-19 21:17:09 -07:00
QMK Bot
68079cba61 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 03:52:33 +00:00
Drashna Jaelre
f08e08cec2 [Keyboard] Fix compilation issues for keycapsss kimiko (#18112) 2022-08-20 13:51:57 +10:00
QMK Bot
a69303bb78 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 02:59:05 +00:00
Davide Masserut
c9120ea8e9 [Keymap] Add Miryoku keymap for Hillside family (#18087) 2022-08-19 19:58:24 -07:00
QMK Bot
880ea06760 Merge remote-tracking branch 'origin/master' into develop 2022-08-20 01:55:33 +00:00
AliceH66
85831fc188 [Keyboard] Add aliceh66 pianoforte (#18081)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-19 18:55:01 -07:00
fauxpark
61689ae609 Merge remote-tracking branch 'upstream/master' into develop 2022-08-20 10:55:40 +10:00
Ryan
201f1a8f47 Move keyboard USB IDs and strings to data driven, pass 2: S-Y (#18093) 2022-08-20 01:48:38 +01:00
Ryan
f4dcce7e59 Move keyboard USB IDs and strings to data driven, pass 2: M-O (#18090) 2022-08-20 01:45:28 +01:00
Ryan
201a914beb Move keyboard USB IDs and strings to data driven, pass 2: P-R (#18091) 2022-08-20 01:42:49 +01:00
Ryan
835c971f78 Move keyboard USB IDs and strings to data driven, pass 2: J-L (#18080) 2022-08-20 10:39:35 +10:00
QMK Bot
eceed6c50b Merge remote-tracking branch 'origin/master' into develop 2022-08-20 00:32:18 +00:00
Ryan
48792b030b Move keyboard USB IDs and strings to data driven, pass 2: handwired (#18079) 2022-08-20 10:31:48 +10:00
QMK Bot
f1ac92ac63 Merge remote-tracking branch 'origin/master' into develop 2022-08-19 23:50:09 +00:00
Drashna Jaelre
39f0fb7bea [Keyboard] Update Work Louder keyboards (#18109) 2022-08-19 16:49:37 -07:00
QMK Bot
4a8bed844d Merge remote-tracking branch 'origin/master' into develop 2022-08-19 22:15:34 +00:00
Joel Challis
f1786cbd7b Fix duplicate keys in info.json files (#18107) 2022-08-19 23:14:38 +01:00
QMK Bot
c0c875d675 Merge remote-tracking branch 'origin/master' into develop 2022-08-19 19:48:31 +00:00
yiancar
8e8c0e2d57 Cyberstar Custom (#18076)
* Create Cyberstar Custom

Co-authored-by: yiancar <yiancar@gmail.com>
2022-08-19 20:47:45 +01:00
Nick Brassel
1eac095c0c Use the correct bootloader definition. (#18102) 2022-08-19 05:20:44 +01:00
QMK Bot
5ee482b110 Merge remote-tracking branch 'origin/master' into develop 2022-08-19 01:19:23 +00:00
Simon Hengel
e6a1afb8f1 [Docs] Fix typo in data driven config docs (#18095) 2022-08-18 18:18:51 -07:00
QMK Bot
2ed2c88a08 Merge remote-tracking branch 'origin/master' into develop 2022-08-19 01:17:50 +00:00
~ aka goonf!sh
286dd6abe6 [Docs] Update list of "ARM-based ProMicro replacements" (#18083) 2022-08-18 18:17:20 -07:00
Joel Challis
3c745caf61 Remove legacy bootmagic cli parsing (#18099) 2022-08-19 01:56:48 +01:00
Joel Challis
9550cc464c Fix new-keyboard default for RP2040 bootloader (#18100) 2022-08-19 01:48:33 +01:00
Joel Challis
0fcebdcdf1 Swap F4x1 default board files away from blackpill (#17522) 2022-08-19 00:52:50 +01:00
HorrorTroll
227e552f5c Add support keyboard Feker IK75 (#17611) 2022-08-18 01:23:34 +01:00
David Hoelscher
a645301c82 Add Bonsai C4 converter (#17711) 2022-08-18 01:01:54 +01:00
QMK Bot
29f47f4cf3 Merge remote-tracking branch 'origin/master' into develop 2022-08-17 22:51:34 +00:00
jack
9607b46756 Fixup mokey/ibis80 keymaps (#18088) 2022-08-17 23:51:04 +01:00
QMK Bot
f9abecda3f Merge remote-tracking branch 'origin/master' into develop 2022-08-17 14:11:59 +00:00
Juno Nguyen
45845ea07f Replace CG_SWAP in junonum (#18086)
Co-authored-by: Minh-tri Nguyen <mtngx@PigeonMac.local>
2022-08-17 15:11:00 +01:00
QMK Bot
47e98e3a68 Merge remote-tracking branch 'origin/master' into develop 2022-08-17 07:28:11 +00:00
CoffeeIsLife
0df97fc968 [Keymap] Add personal keymap for kprepublic BM40HSRGB (#18021)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Fae <faenkhauser@gmail.com>
2022-08-17 00:27:31 -07:00
ZhaoYou
6b78d07e64 [Keyboard] add 'soda/cherish' (#18057)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-17 00:26:35 -07:00
QMK Bot
39337373f5 Merge remote-tracking branch 'origin/master' into develop 2022-08-17 02:38:02 +00:00
Runheme
e5f1d8859e [Keyboard] Add ibis80 (#18051)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-16 19:37:57 -07:00
QMK Bot
2ade237e77 Merge remote-tracking branch 'origin/master' into develop 2022-08-17 02:37:40 +00:00
Toshihiro Suzuki
5a1a0e71de [Keymap] toshi0383 keymaps update (#18073) 2022-08-16 19:37:29 -07:00
QMK Bot
cfab3e2d6e Merge remote-tracking branch 'origin/master' into develop 2022-08-17 02:37:10 +00:00
Albert Y
a1f0208797 [Docs] Use layer number as example for COMBO_ONLY_FROM_LAYER (#18072)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-16 19:37:06 -07:00
jotix
8230b4c49d [Keymap] jotix's community/ortho4x12 change (#18069) 2022-08-16 19:36:30 -07:00
QMK Bot
77150d00ac Merge remote-tracking branch 'origin/master' into develop 2022-08-16 18:42:23 +00:00
coliss86
837a57b3c5 Adjust the hierarchy of chapter Deferred Execution (#18075) 2022-08-16 11:41:31 -07:00
QMK Bot
7014e1efa3 Merge remote-tracking branch 'origin/master' into develop 2022-08-16 17:23:31 +00:00
yiancar
c834608a74 Fix WS2812 order for aurora65 and loki65 (#18074) 2022-08-16 18:22:47 +01:00
QMK Bot
c5dc4b4d1d Merge remote-tracking branch 'origin/master' into develop 2022-08-16 17:02:38 +00:00
Tom Barnes
2f4ad40561 [Docs] update pr_checklist.md with info about data-driven (#18068)
* update pr_checklist with info about data-driven

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-08-16 18:01:56 +01:00
QMK Bot
9f0925fb18 Merge remote-tracking branch 'origin/master' into develop 2022-08-16 14:29:11 +00:00
Joel Challis
164faf0a5c Use correct board file in xelus/valor_frl_tkl/rev2_0 (#18071) 2022-08-16 15:28:22 +01:00
QMK Bot
904df296b0 Merge remote-tracking branch 'origin/master' into develop 2022-08-15 17:55:58 +00:00
Joel Challis
e44b6242b7 Migrate more F4x1 board files (#18054) 2022-08-15 18:55:21 +01:00
precondition
5021cf58ad Fix DV_SCLN and DV_COLN in keymap_spanish_dvorak.h (#18043) 2022-08-15 18:41:05 +01:00
Stefan Kerkmann
f74ed5fc53 Fix GD32VF103 WS2812 PWM driver (#18067)
...by adding the missing STM32 DMA defines.
2022-08-15 18:00:22 +01:00
Stefan Kerkmann
8ce946b5c8 [Bug] Add key event check to is_tap_record and remove is_tap_key (#18063) 2022-08-15 16:40:51 +02:00
jack
5e6175a553 Fixup gmmk/pro/rev2 USB Data (#18056) 2022-08-15 23:21:15 +10:00
QMK Bot
1ccfed483d Merge remote-tracking branch 'origin/master' into develop 2022-08-15 09:15:56 +00:00
Ryan
b297a347bb ADB to USB converter: split into rev1 and rev2 (#18052) 2022-08-15 10:15:22 +01:00
fauxpark
c202602938 Merge remote-tracking branch 'upstream/master' into develop 2022-08-15 17:54:07 +10:00
precondition
8e9ee29fe3 Remove duplicate COMBINING HORN in keymap_us_extended.h (#18045) 2022-08-14 22:25:37 -07:00
Joel Challis
ed3b4bb606 Fix missing development_board schema entry (#18050) 2022-08-14 22:25:16 -07:00
Ryan
51d5aad25b Move keyboard USB IDs and strings to data driven, pass 2: D-E (#17956) 2022-08-15 13:30:12 +10:00
Ryan
1027aed83a Move keyboard USB IDs and strings to data driven, pass 2: F-I (#17958) 2022-08-15 02:53:19 +01:00
QMK Bot
5334614e8a Merge remote-tracking branch 'origin/master' into develop 2022-08-14 23:55:05 +00:00
PeterFalken
4c91e5bef8 Allow disabling RGB_MATRIX_ANIMATIONS system76 keyboards (#17478) 2022-08-14 19:54:25 -04:00
QMK Bot
630de240b4 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 23:26:34 +00:00
Joel Challis
93fb69fbda Migrate more F4x1 board files (#18046) 2022-08-15 00:25:40 +01:00
Joel Challis
463fb72d29 Partially revert some WB32 specific changes (#18038) 2022-08-14 20:48:44 +01:00
QMK Bot
74b4bcb607 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 19:43:25 +00:00
Alberto
3d3e463598 Feat/port ft mars 65 (#17994)
* by wonderbeel
2022-08-14 20:42:58 +01:00
QMK Bot
e6a522417a Merge remote-tracking branch 'origin/master' into develop 2022-08-14 19:26:44 +00:00
Cyn
5f74ae5b63 Improve Drop Alt compatibility with VIA (#18041)
by slycedix
2022-08-14 20:26:06 +01:00
Pascal Getreuer
95c43a2759 Fix Caps Word to treat mod-taps more consistently. (#17463)
* Fix Caps Word to treat mod-taps more consistently.

Previously, holding any mod-tap key while Caps Word is active stops Caps
Word, and this happens regardless of `caps_word_press_user()`. Yet for
regular mod keys, AltGr (KC_RALT) is ignored, Shift keys are passed to
`caps_word_press_user()` to determine whether to continue, and
similarly, a key `RSFT(KC_RALT)` representing Right Shift + Alt is
passed to `caps_word_press_user()` to determine whether to continue.

This commit makes held mod-tap keys consistent with regular mod keys:

* Holding a `RALT_T` mod-tap is ignored.
* When holding a shift mod-tap key, `KC_LSFT` or `KC_RSFT` is passed to
  `caps_word_press_user()` to determine whether to continue.
* When holding a Right Shift + Alt (`RSA_T`) mod-tap, `RSFT(KC_RALT)` is
  passed to `caps_word_press_user()`.

Particularly, with this fix a user may choose to continue Caps Word when
a shift mod-tap key is held by adding `KC_LSFT` and `KC_RSFT` cases in
`caps_word_press_user()`. For instance as

```
bool caps_word_press_user(uint16_t keycode) {
  switch (keycode) {
    // Keycodes that continue Caps Word, with shift applied.
    case KC_A ... KC_Z:
    case KC_MINS:
      add_weak_mods(MOD_BIT(KC_LSFT));  // Apply shift to the next key.
      return true;

    // Keycodes that continue Caps Word, without shifting.
    case KC_1 ... KC_0:
    case KC_BSPC:
    case KC_DEL:
    case KC_UNDS:
    case KC_LSFT:  // <<< Added here.
    case KC_RSFT:
      return true;

    default:
      return false;  // Deactivate Caps Word.
  }
}
```

* Fix Caps Word to treat mod-taps more consistently.

Previously, holding any mod-tap key while Caps Word is active stops Caps
Word, and this happens regardless of `caps_word_press_user()`. Yet for
regular mod keys, AltGr (KC_RALT) is ignored, Shift keys are passed to
`caps_word_press_user()` to determine whether to continue, and
similarly, a key `RSFT(KC_RALT)` representing Right Shift + Alt is
passed to `caps_word_press_user()` to determine whether to continue.

This commit makes held mod-tap keys consistent with regular mod keys:

* Holding a `RALT_T` mod-tap is ignored.
* When holding a shift mod-tap key, `KC_LSFT` or `KC_RSFT` is passed to
  `caps_word_press_user()` to determine whether to continue.
* When holding a Right Shift + Alt (`RSA_T`) mod-tap, `RSFT(KC_RALT)` is
  passed to `caps_word_press_user()`.

Particularly, with this fix a user may choose to continue Caps Word when
a shift mod-tap key is held by adding `KC_LSFT` and `KC_RSFT` cases in
`caps_word_press_user()`. For instance as

```
bool caps_word_press_user(uint16_t keycode) {
  switch (keycode) {
    // Keycodes that continue Caps Word, with shift applied.
    case KC_A ... KC_Z:
    case KC_MINS:
      add_weak_mods(MOD_BIT(KC_LSFT));  // Apply shift to the next key.
      return true;

    // Keycodes that continue Caps Word, without shifting.
    case KC_1 ... KC_0:
    case KC_BSPC:
    case KC_DEL:
    case KC_UNDS:
    case KC_LSFT:  // <<< Added here.
    case KC_RSFT:
      return true;

    default:
      return false;  // Deactivate Caps Word.
  }
}
```

* Update quantum/process_keycode/process_caps_word.c

Co-authored-by: Joel Challis <git@zvecr.com>
2022-08-14 20:25:32 +01:00
Chewxy
6fc7c03e95 Added emacs as an "operating system" for input mode. (#16949) 2022-08-14 20:24:52 +01:00
Drashna Jaelre
4da3482872 Fix Emulated EEPROM issue with F466 (#18039) 2022-08-14 17:18:59 +01:00
precondition
0a6327d20c Replace ; by : in the shifted symbols ASCII art of keymap_norman (#18029)
Thanks!
2022-08-14 12:18:42 -04:00
Drashna Jaelre
9f31fcace3 [Keyboard] Fix compilation issues for Boardsource Microdox (#18037) 2022-08-14 17:03:40 +01:00
Mega Mind
fce99f3875 [Controller] Added board config for custom controller STeMCell (#16287)
Co-authored-by: Mariappan Ramasamy <947300+Mariappan@users.noreply.github.com>
Co-authored-by: Mariappan Ramasamy <maari@basis-ai.com>
Co-authored-by: Sadek Baroudi <sadekbaroudi@gmail.com>
2022-08-14 21:27:26 +10:00
Joel Challis
ba04ecfabd Align TO() max layers with other keycodes (#17989) 2022-08-14 21:25:46 +10:00
Drashna Jael're
ac31e42974 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 01:54:23 -07:00
Xelus22
4195eb8fe1 [Keyboard] Add Valor FRL TKL rev2.0 and 2.1 (#17992)
* add valor frl tkl rev2 by xelus22
2022-08-14 08:17:11 +01:00
Joy Lee
e948fa6f6e Added support for gmmk pro rev2 keyboard. (#17655)
Co-authored-by: Joy <chang.li@westberrytech.com>
2022-08-14 14:00:12 +10:00
Ryan
3a7dbc8981 Move keyboard USB IDs and strings to data driven, pass 2: B-C (#17945) 2022-08-14 12:16:16 +10:00
yiancar
dfc92d8f7b Fix buffer size for WS2812 PWM driver (#17046)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-08-13 18:36:34 -07:00
Joy Lee
c02d7ae86f Added ws2812_pwm support for WB32 MCU. (#17142)
Co-authored-by: Joy <chang.li@westberrytech.com>
2022-08-13 18:21:46 -07:00
Joy Lee
6b1c7d20aa Added ws2812_spi support for WB32 MCU (#17143)
Co-authored-by: Joy <chang.li@westberrytech.com>
2022-08-13 18:09:57 -07:00
QMK Bot
5c805e4cc5 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 01:09:31 +00:00
Gary Kong
28b05d15ff [Keyboard] add bajjak keyboard (#12377)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: peepeetee <43021794+peepeetee@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-08-13 18:08:46 -07:00
JJ48
4eda139b83 Add Gentleman 65 SE Solderd PCB support (#16992) 2022-08-14 01:55:03 +01:00
QMK Bot
2d40713567 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 00:52:21 +00:00
Nick Brassel
86261bfd8e Add texts for Discord Events to be created post-merge. (#17944) 2022-08-13 17:51:45 -07:00
precondition
2c3b447641 Use ANSI ASCII art and fix comments for LT_COLN and LT_UNDS in keymap_lithuanian_qwerty.h (#18028) 2022-08-13 17:50:32 -07:00
QMK Bot
50ff52639f Merge remote-tracking branch 'origin/master' into develop 2022-08-14 00:47:42 +00:00
Ryan
3079691391 Move keyboard USB IDs and strings to data driven, pass 2: 0-9, A (#17941) 2022-08-13 17:47:05 -07:00
QMK Bot
b44c3f92ae Merge remote-tracking branch 'origin/master' into develop 2022-08-14 00:47:05 +00:00
Marko Skakun
0f1bb982e9 [Keyboard] Added different wiring of dactyl (#17997) 2022-08-13 17:46:35 -07:00
QMK Bot
4faf0ccaec Merge remote-tracking branch 'origin/master' into develop 2022-08-14 00:36:47 +00:00
Less/Rikki
ca2d05f5c6 [Keyboard] jacky_studio/piggy60 (#18012) 2022-08-13 17:36:11 -07:00
QMK Bot
2363a3bc42 Merge remote-tracking branch 'origin/master' into develop 2022-08-14 00:33:31 +00:00
Tom Barnes
0d3e07a3db [Docs] Suggest imgur images are edited to set size (#18031) 2022-08-13 17:32:30 -07:00
Takeshi ISHII
a83afb3fcd Improve avr wait_us() (#16879) 2022-08-14 00:04:03 +01:00
Joshua Diamond
2f87abd4ef Revert "[Core] Re-order user space rules inclusion (#17459)" (#18032) 2022-08-14 07:13:15 +10:00
QMK Bot
b1c7df9a68 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 20:26:43 +00:00
Jesus Climent
cbcb4f2ec0 [Keyboard] Added Atreyu keyboard. (#17698)
* Add Atreyu keyboard.

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-13 21:26:05 +01:00
QMK Bot
8fd7825007 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 20:16:08 +00:00
mechlovin
1eecdb502d [Keyboard] Add Foundation to QMK (#17573)
* add mechlovin foundation keyboard

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-13 21:15:35 +01:00
QMK Bot
7dca40f5af Merge remote-tracking branch 'origin/master' into develop 2022-08-13 20:13:03 +00:00
p4yne
40676d058e [Keymap] adding new user (p4yne) layout with complex lighting feature… (#16085)
* [Keymap] adding new user (p4yne) layout with complex lighting features (per layer, per key, per type) and usefull layers DE/US, etc.

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-13 21:12:31 +01:00
QMK Bot
bcd021263e Merge remote-tracking branch 'origin/master' into develop 2022-08-13 19:48:14 +00:00
emlah
a49bdd2659 add BAMFK-4 (#17985)
* add BAMFK-4
2022-08-13 20:47:39 +01:00
QMK Bot
97b610e166 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 19:45:00 +00:00
3araht
e145c7ad3f Bandominedoni version output feature and a new keymap added (#17947)
* SPLIT_USB_DETECT added.

* lednotg keymap added.

* lednotg missing modification fixed.

* VERSION is available.

* USER00 is used instead of SAFE_RANGE in via/keymap.c
2022-08-13 20:44:29 +01:00
QMK Bot
f417ffff5a Merge remote-tracking branch 'origin/master' into develop 2022-08-13 19:39:19 +00:00
Shem Sedrick
95782691d4 Dactyl Manuform 4x5 with 5 thumb cluster (#17671)
* Working on new dactyl

* Preliminary build and keymap in place for 4x5_5 dactyl manuform

* Removing first attempt to use 4x5

* Updating to match c style guide

* Fixing issues after merge, deletion of dactyl_manuform.h

* Spliting out custom keymap

* Adding license headers

* Fixing EE_HANDS detection on Pro-Micro

The pro-micro was not working when I plugged into the elite-c on the
right hand side of my keyboard. Adding the SPLIT_USB_DIRECT definition
fixed the issue.

* Apply suggestions from code review

Adding Drashna's delete comments

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Removed config.h for keymaps and tweaked keymap

Per Drashna's pr review, I have removed the config.h files for the
keymaps.
Also tweaked my keymap to switch backspace and enter. Added tapping
toggle for RAISE.

* Further tweaking ssedrick keymap for dactyl_manuform 4x5_5

As with most new keyboards, they take some getting used to.
I've rearranged my thumb cluster to hopfully a more long
term solution.

* Adding missing KC_BSLS to ssedrick keymap for 4x5_5

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-13 20:38:31 +01:00
QMK Bot
e95ba0d651 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 19:10:39 +00:00
mmccoyd
aee738c61b [Keyboard] Add Hillside 46 (#17968)
* 46: Copy from 52 and file rename

* 46: File internals refer to 46, not 52

* 46: Board remove row

* 46: Keymap: Lshift becomes ctrl, Rshift a symbol

- ESC and CAPs on upper thumbs
- AltGr and App on upper thumbs
- Page up/down on upper thumbs
- F11, F12 and mods for them on adjust

* 46: Readme update for json script, tweaks

* 46: Board fix LED count

* 46: Keymap: Arrows right, symmetric layer keys

* 46: Readme: Image link with and w/o outer pinkie

* 46: Keymap: link fixed image of nav layer

* 46: Keymap: fix reaching adj layer

Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>
2022-08-13 20:10:01 +01:00
QMK Bot
826ab5412f Merge remote-tracking branch 'origin/master' into develop 2022-08-13 18:02:19 +00:00
alaviss
b1fe7621eb RFC: add a simple implementation of the ploopy optical encoder (#17912) 2022-08-13 11:01:44 -07:00
precondition
96731ba88e Fix LV_CCAR and LV_NCED (#18025) 2022-08-13 10:24:15 -07:00
QMK Bot
a03849c92c Merge remote-tracking branch 'origin/master' into develop 2022-08-13 16:24:37 +00:00
gourdo1
4c6ce12d2a Updated gourdo1 GMMK Pro keymaps (#17873)
* Fixed Left Shift tapdance in general and for gaming mode. (#12)

* update ISO readme
* left shift fixed in general, including for gaming mode

* fixed toggle menu rendering on ISO layouts

* updated readme's and cosmetics

* update readme's

* update readme's again

* readme cosmetics

* consolidate readme's

* more readme cosmetics

* clarification for bootloader mode on ISO

* Autocorrect added with 400 word English dictionary (#13)

* autocorrect added with 400 word dictionary

* update readme's for autocorrect

* Add FN-B as shortcut to bootloader

* Update .gitignore

Co-authored-by: Joel Challis <git@zvecr.com>

* RGB changes to system numlock and ISO extended alphas

- hide system numlock off indicator (primarily for Mac users) by moving it to numpad and FN layers instead
- give users with extended alpha ISO languages a config option to add RGB highlights for extras alphas on capslock

* readme updates

* Fixed [FN]B and [FN]N shortcuts not working on numpad layer

Co-authored-by: Joel Challis <git@zvecr.com>
2022-08-13 17:24:07 +01:00
QMK Bot
149db3c6a8 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 16:19:58 +00:00
mmccoyd
0c0d01966f [Keyboard] Add Hillside 52 (#17374)
* 52 Keymap.json: Set for Hillside 52

- Change script rows

* 52 Keymap.c: mirror .json

CAPSWORD, QK_BOOT, readme cleanup, EE_RST

* 52 Keymap.json: Initial files copy from 56

* 52 Keymap.json nav/edit lay, thumb shift, syms

- Del in backspace spot on sym layer
- Thumb shift OSM instead of extra space
- Nav/edit on num/fn: arrows cut copy paste undo redo, page up/down
- Fn keys bottom row to allow nav edit keys
- App and AltGr on lower row, on their layer
- Braces on index, so more common -= on middle ring.
- Adjust has Ctrl/GUI swap
- EE_RST, CAPSWORD, QK_BOOT, SPLIT_DETECT

* 52 Family: readme image and folder link

* 52 Board: initial copy from 56

* 52 Keymap via

* 52 Board: remove keys, cant columns, better ids

- .json: vid: MM, pid: H52

* 52 Keymap.c: initial.c copy from 48

* QK_BOOT EE_CLR, not ANY(), as config.qmk supports

- CAPSWRD instead of ANY, though config.qmk still converts to ANY()

* Cleanup readme

* 52 Keymap: Remove redundant key, cleanup script

* 52 Keymap: Fix template

* 52 Readme: Link lower res image better for readme

Co-authored-by: Drashna Jaelre <drashna@live.com>

* 52 Keymap: Move pretty-print script to GitHub wiki

* 52 Keymap: Link to 1024 res image thumbnails

* 52 Keymap: fix whitespace before image link

* Family: Fix image link to 1024 thumb

Co-authored-by: Drashna Jaelre <drashna@live.com>

* 52: Keymap: Caps word on a layer home row

* 52: Keymap: Arrows on right. Symmetric layer keys.

- Nav:
  - Arrows on right so up/down more intuitive. Page up/down on ends
  - Cut on home row, as more common

- Sym:
  - Layer mods on activate hand, extras symbols on left
  - Common digits on lower row

- Base:
  - Layer keys symmetric, on most extended, not resting, thumb
  - Mute on util key for easy use

- Swap layers 3 and 4 to match swapped thumbs

Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-13 17:19:21 +01:00
QMK Bot
39d2f61d51 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 16:14:39 +00:00
kopibeng
648f3eb71f Add support for XT60_SINGA (#17752)
* Added support for Christine, XT65E and Adelais

* Add support for MNK88

* Add support for XT8x

* Renamed XT65E to Typ65

* Revert "Renamed XT65E to Typ65"

This reverts commit b4fbc853d2.

* Revert "Revert "Renamed XT65E to Typ65""

This reverts commit 09baee94eb.

* File reorganization

* Add support for MNK88

* Update readme.md

* Update keyboards/kopibeng/mnk88/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/kopibeng/mnk88/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Fix imgur link

* Update keyboards/kopibeng/mnk88/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/kopibeng/mnk88/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update info.json

Previous suggested change was breaking lint check, reverting back to the original.

* Update keyboards/kopibeng/mnk88/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Fix info.json

* Added XT60_SINGA

* Update config.h

* Update readme.md

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-13 17:13:49 +01:00
Vino Rodrigues
52dc16b758 [Keyboard] IDOBAO ID80v1 folder rename (#17265)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-14 00:00:42 +10:00
Albert Y
69fa2d8378 [Core] Re-order user space rules inclusion (#17459) 2022-08-13 23:57:07 +10:00
Pascal Getreuer
6a0d90f81a Fix Caps Word capitalization when used with Combos + Auto Shift. (#17549) 2022-08-13 23:48:51 +10:00
Jay Greco
4eeafbebab Add Bit-C PRO converter (#17827) 2022-08-13 14:48:30 +01:00
Joel Challis
fc7e9efd21 Improve importer workflow (#17707) 2022-08-13 14:39:56 +01:00
lokher
a02aff9c77 Add led matrix support for CKLED2001 (#17643) 2022-08-13 14:39:06 +01:00
QMK Bot
ee664e0960 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 13:24:07 +00:00
Nick Brassel
dccb8ff7d6 Remove old submodules if present (#17930) 2022-08-13 23:23:32 +10:00
QMK Bot
853d47b4cc Merge remote-tracking branch 'origin/master' into develop 2022-08-13 04:49:33 +00:00
Drashna Jaelre
b881778f53 [Keyboard] Remove unused keycodes from Aurora65 keymap (#18022) 2022-08-12 21:48:33 -07:00
Drashna Jaelre
3d24845016 [Bug] Fix wrong varaible in encoder block (#18020) 2022-08-12 19:55:59 -07:00
QMK Bot
31e78aafbd Merge remote-tracking branch 'origin/master' into develop 2022-08-13 02:47:02 +00:00
arnstadm
aee48b8aab [Keyboard] add ogrn (#17983)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-12 19:46:16 -07:00
QMK Bot
60176a3a28 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 02:38:32 +00:00
rockybulwinkle
fb150e08f1 [Keyboard] Increase kinesis/kint41 unselect delay (#18015)
* [Keyboard] Increase kinesis/kint41 unselect delay

Fixes #18014

* Update kint41.c

Use correct si-abbreviation for micro in comment.
2022-08-13 03:38:01 +01:00
QMK Bot
7a95926f46 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 02:30:55 +00:00
arnstadm
5ed7e1acf1 [Keyboard] Add akb-ogr (#17982)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-12 19:30:10 -07:00
precondition
4ff39b5652 KR_DQUO S(KR_COLN) → KR_DQUO S(KR_QUOT) (#18011) 2022-08-12 19:20:58 -07:00
precondition
e3415d6b97 define CZ_PERC S(CZ_PLUS) → define CZ_PERC S(CZ_EQL) (#18008) 2022-08-12 19:20:35 -07:00
precondition
20f0f40220 Remove invisible variation selector-15 from keymap_japanese.h (#18007) 2022-08-12 19:16:50 -07:00
precondition
b4fbb340c5 Use LT_ZCAR in place of LT_PLUS for modded kc definitions (#18000) 2022-08-12 19:13:43 -07:00
precondition
db4c4b1f78 Fix Bépo's BP_NNBS (narrow non-breaking space) (#17999)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-12 19:13:22 -07:00
QMK Bot
e0b4fa512e Merge remote-tracking branch 'origin/master' into develop 2022-08-13 02:04:58 +00:00
Ryan
536e39a5d9 Fix viendi8l compilation (#18017) 2022-08-12 19:04:18 -07:00
Joy Lee
19ce1418ba Added implementation of WB32 MCU wear_leveling_efl. (#17579) 2022-08-13 02:14:33 +01:00
Drashna Jaelre
aed82bc6a0 Move Encoder+Encoder Map from generic features (#18018) 2022-08-12 18:04:02 -07:00
QMK Bot
06c7614a71 Merge remote-tracking branch 'origin/master' into develop 2022-08-13 00:45:05 +00:00
Drashna Jaelre
ea2ec5835b [Keyboard] Fix compilation issues for Mechlovin Adelais (#18019) 2022-08-13 01:44:33 +01:00
QMK Bot
06391314cd Merge remote-tracking branch 'origin/master' into develop 2022-08-13 00:27:58 +00:00
DUILCHOI
a1fe9fe3b3 [Keymap] update fave104 keymap (#18004) 2022-08-12 17:27:53 -07:00
Albert Y
70c6b183df [Docs] Refactor code examples (#18003) 2022-08-12 17:27:24 -07:00
Drashna Jaelre
ccdba43e59 Create generic Pointing Device Pin defines (#17776) 2022-08-12 16:22:34 -07:00
QMK Bot
83f6aedd93 Merge remote-tracking branch 'origin/master' into develop 2022-08-12 23:03:46 +00:00
precondition
1a4a278251 Put non-US ISO keys in their expected spots in sagittarius' default keymaps (#18005) 2022-08-13 09:03:14 +10:00
Nick Brassel
8133f40c26 Update to latest ChibiOS-Contrib. (#18016) 2022-08-13 08:54:32 +10:00
QMK Bot
c565b415f7 Merge remote-tracking branch 'origin/master' into develop 2022-08-12 18:51:40 +00:00
QMK Bot
90e2a5100b Format code according to conventions (#18009) 2022-08-12 11:50:58 -07:00
QMK Bot
92d78a0198 Merge remote-tracking branch 'origin/master' into develop 2022-08-12 18:29:58 +00:00
Vertex-kb
cded26b199 [Keyboard] Add arc60 (#17976)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-12 11:28:53 -07:00
QMK Bot
15422b3b26 Merge remote-tracking branch 'origin/master' into develop 2022-08-12 02:04:13 +00:00
Joel Challis
7e7387c0d1 Remove legacy keycode use from command (#18002) 2022-08-12 03:03:36 +01:00
Albert Y
cde9dd8b90 Refactor Pixel Fractal effect (#17602)
* Refactor effect with smaller array

* Add RGB_MATRIX_USE_LIMITS call

* Remove spaces

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-11 22:41:42 +01:00
Sergey Vlasov
9e44362179 Add minimal STM32F103C6 support (#17853)
Unfortunately, the crippled versions of “Bluepill” boards with
STM32F103C6xx chips instead of STM32F103C8xx are now sold all over the
place, sometimes advertised in a confusing way to make the difference
not noticeable until too late.  Add minimal support for these MCUs in
the common “Bluepill with stm32duino” configuration, so that it could be
possible to make something useful from those boards (although fitting
QMK into the available 24 KiB of flash may be rather hard).

(In fact, I'm not sure whether the “STM32” part of the chip name is
actually correct for those boards of uncertain origin, so the onekey
board name is `bluepill_f103c6`; another reason for that name is to
match the existing `blackpill_f401` and `blackpill_f411`.)

The EEPROM emulation support is not included on purpose, because
enabling it without having a working firmware size check would be
irresponsible with such flash size (the chance that someone would build
a firmware where the EEPROM backing store ends up overlapping some
firmware code is really high).  Other than that, enabling the EEPROM
emulation code is mostly trivial (the `wear_leveling` driver with the
`embedded_flash` backing store even works without any custom
configuration, although its code is significantly larger than the
`vendor` driver, which may also be important for such flash size).
2022-08-11 22:37:41 +01:00
QMK Bot
8c4269f98e Merge remote-tracking branch 'origin/master' into develop 2022-08-11 21:04:46 +00:00
Danny
fab6c8a028 [Keyboard] Add Iris Rev. 7 (#17967)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-11 14:04:00 -07:00
Joshua Diamond
272f224dc6 Add cursor layer to DMQ Spin (#17996) 2022-08-11 13:28:48 -04:00
QMK Bot
ba370a54cd Merge remote-tracking branch 'origin/master' into develop 2022-08-11 16:09:38 +00:00
mincedshon
55f5406ac7 update ecila layout (#17975)
-update layout
2022-08-11 17:08:57 +01:00
QMK Bot
9981aaaae8 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 05:06:33 +00:00
QMK Bot
a54ccb4ced Format code according to conventions (#17990) 2022-08-10 22:05:59 -07:00
QMK Bot
9d10a19fa8 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 05:00:10 +00:00
DUILCHOI
0aeb9da030 [Keymap] update fave104 keymap (#17988) 2022-08-10 21:59:48 -07:00
Adam Applegate
a6fad5cc87 [Keymap] Added personal keymap for keebio/iris/rev6 (#17971) 2022-08-10 21:59:21 -07:00
Ivan Gromov
5dd944d450 [Keyboard] Add Aperture keyboard (#17980) 2022-08-10 21:59:05 -07:00
QMK Bot
f3acbf60fc Merge remote-tracking branch 'origin/master' into develop 2022-08-11 04:43:11 +00:00
Less/Rikki
34f0c1ac1b [Keyboard] fix: unicorne info.json LAYOUT (#17981) 2022-08-10 21:42:34 -07:00
QMK Bot
91be4740f2 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 02:21:46 +00:00
James Young
380465e51c Acheron Athena Layout Macro Refactor and Additions (#17973) 2022-08-10 19:21:06 -07:00
QMK Bot
1882cdbf7b Merge remote-tracking branch 'origin/master' into develop 2022-08-11 01:48:48 +00:00
James Young
9ccbdad816 KBDfans KBD67 rev2: rename LAYOUT_65_ansi_split_bs_2_right_mods macro (#17972) 2022-08-10 18:48:12 -07:00
QMK Bot
e4b55a423a Merge remote-tracking branch 'origin/master' into develop 2022-08-11 01:45:33 +00:00
Álvaro A. Volpato
9898d6f4b0 [Keyboard] Add Viendi8L (#17943)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-10 18:44:59 -07:00
QMK Bot
ff59ae9783 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 01:44:31 +00:00
Álvaro A. Volpato
90c4350af7 [Keyboard] Initial FM-S and FM-H support (#17765)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-10 18:43:52 -07:00
QMK Bot
b7b842da55 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 01:39:09 +00:00
3araht
1038ade342 [Keyboard] add chromatonemini keyboard (#13516) 2022-08-10 18:38:32 -07:00
QMK Bot
90a290ea62 Merge remote-tracking branch 'origin/master' into develop 2022-08-11 01:34:34 +00:00
James Young
c230d0658e MacroCat Refactor (#17969) 2022-08-10 18:34:20 -07:00
Roger
d790b53580 [Keymap] single layer layout for BFO-9000 with numpad on the left (#17957) 2022-08-10 18:33:55 -07:00
QMK Bot
63915e84dc Merge remote-tracking branch 'origin/master' into develop 2022-08-10 20:08:21 +00:00
yiancar
a6d0cc3aab Aurora65 (#17966)
* aurora65 initial commit

* Add keymap images

* Move USB config to JSON

Co-authored-by: yiancar <yiancar@gmail.com>
2022-08-10 21:07:41 +01:00
QMK Bot
663b250e2f Merge remote-tracking branch 'origin/master' into develop 2022-08-10 03:01:41 +00:00
Wilba
8a24fbbdae Fix detection of EEPROM reset in some keyboards (#17970) 2022-08-09 20:01:09 -07:00
QMK Bot
9bbc0cbb3b Merge remote-tracking branch 'origin/master' into develop 2022-08-10 00:24:17 +00:00
Kyle McCreery
7019d0bce8 [Keyboard] MechWild Puckbuddy (#17161)
* Initial commit

* testing modes

* working on puckbuddy firmware. This is all working for now but need to clean it up and personalize it.

* needs to be updated from vial build

* prepping for PR

* added rgb mode cycling to fn1 since it isn't on the encoder for these maps

* readme written in preparation for pr

* reverting driver print line

* Removed old reference to OBE in the readme from copypaste error

* applying changes based on review

* applying changes from review

* Update keyboards/mechwild/puckbuddy/puckbuddy.c

* trailing whitespaces removed

* added clear screen condition for switching back to name rendering

* Added uf2 keymap and fixed display glitch for the logo render art.

* Removed extra definition of FEE_PAGE_BASE_ADDRESS

* Removed the uf2 keymap and made it automatic when selecting bootloader instead

* Fixed the bad bootloader check

* moved the uf2 check from rules.mk to post_rules.mk to satisfy lint

* changing it back to stm32-dfu bootloader default

* Fixed RGBLIGHT enable oversight.

* Added persistent dynamic tapping configuration for the cirque touchpad tap term

* new lines at end of files for formatting and diff sanity

* changing default bootloader back to stm32-dfu

* Had to completely redefine the tap keycodes instead of using the DT_UP and DT_DOWN keycodes because I was not able to specify them easily in the via/vial configs and this allows me to keep the original functionality instead of tying it to eeprom like these are.

* Added tap toggling keycodes to quick enable and disable the tapping term

* working out an issue where the tap status keeps turning to off on power cycle

* correcting submodule garbo

* Fixed display issue and rewrote TAP config approach to make it a little easier to control

* removing backup puckbuddy.c code

* Added some comment, removed some commented out old code, removed trailing whitespace

* Changed to handle tinyuf2 by expecting emulated eeprom so that adding other forms of eeprom can be handled for the memory offset separately, and added user oled conditional inside the keyboard oled code block

* Updated default keymaps to have the tap and dpi keys on by default

* Apply suggestions from code review

* Apply suggestions from code review
2022-08-09 17:23:44 -07:00
QMK Bot
994a2542af Merge remote-tracking branch 'origin/master' into develop 2022-08-09 18:21:11 +00:00
mechlovin
94b3efe92e change Adelais En Ciel rev. 3 from STM32F303 to APM32F103 MCU (#16964)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-09 11:20:36 -07:00
QMK Bot
525049990c Merge remote-tracking branch 'origin/master' into develop 2022-08-09 18:20:08 +00:00
mincedshon
336c4904b5 [Keyboard] add ecila keyboard (#17596) 2022-08-09 11:19:15 -07:00
QMK Bot
25913ef518 Merge remote-tracking branch 'origin/master' into develop 2022-08-09 17:41:07 +00:00
yiancar
5de655023e [Keyboard] Add NK20 (#17907)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-08-09 10:40:32 -07:00
QMK Bot
6e1c2b20e5 Merge remote-tracking branch 'origin/master' into develop 2022-08-09 06:41:55 +00:00
Salicylic-acid3
923cd63f3e [Keyboard] (7skb)Change number of LEDs and Enable Mouse Keys (#17954) 2022-08-08 23:41:10 -07:00
QMK Bot
1d33baac8f Merge remote-tracking branch 'origin/master' into develop 2022-08-08 18:06:29 +00:00
Joel Challis
0002b1cc20 Also disable line ending conversion for merge workflows (#17953) 2022-08-08 19:05:41 +01:00
QMK Bot
a3b06fd87c Format code according to conventions (#17951) 2022-08-08 17:33:25 +01:00
QMK Bot
a14cd0fba5 Merge remote-tracking branch 'origin/master' into develop 2022-08-08 16:31:00 +00:00
Joel Challis
bccf933bc9 Force no git line ending conversion on format workflow (#16176) 2022-08-08 17:30:26 +01:00
QMK Bot
22cb4e520a Merge remote-tracking branch 'origin/master' into develop 2022-08-08 09:46:27 +00:00
Vertex-kb
9a3c30f2c7 [Keyboard] Add Vertex AngleR2 keyboard (#16764)
* Add files via upload

* Delete Vertex/AngleR2 directory

* Add files via upload

* Delete keyboards/Vertex/AngleR2 directory

* Add files via upload

* Add files via upload

* Add files via upload

* Update keyboards/vertex/angler2/angler2.h

* Update keyboards/vertex/angler2/info.json

* Update keyboards/vertex/angler2/keymaps/default/keymap.c

* Update keyboards/vertex/angler2/keymaps/via/keymap.c

* Update keyboards/vertex/angler2/keymaps/via/keymap.c

* Update keyboards/vertex/angler2/keymaps/via/keymap.c

* Update keyboards/vertex/angler2/keymaps/default/keymap.c

* Update keyboards/vertex/angler2/keymaps/via/keymap.c
2022-08-08 02:45:36 -07:00
Joel Challis
764c542bef Remove tmk_core 'serial' code (#17866) 2022-08-08 03:13:16 +01:00
QMK Bot
972f9a612c Merge remote-tracking branch 'origin/master' into develop 2022-08-07 21:11:17 +00:00
Arturo Avila
d27a6bd629 [Keyboard] Add Shisaku keyboard (#17572) 2022-08-07 14:10:32 -07:00
QMK Bot
b214768e09 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 21:07:55 +00:00
yeimialberth
ca04babf3f [Keymap] qwerty and dvorak keyboard setup (#16592)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-07 14:07:25 -07:00
QMK Bot
6a1a398627 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 19:40:49 +00:00
csc027
4267f0e0d4 csc027/keymap-updates (#17881)
* Reverted to most usable configuration for RDP usage.

* Added some HSV color definitions without the value portion to allow using the existing value.

* Switched to using HSV and HS color definitions.

* Added media keys to the convenience layer.

* Updated make rules to enable media keys.

* Cleaned up planck make rules.
2022-08-07 20:40:16 +01:00
QMK Bot
67461a0a47 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 19:33:39 +00:00
Takeshi ISHII
5ecd745514 fix comment space code in quantum/matrix_common.c (#17942) 2022-08-07 20:32:59 +01:00
QMK Bot
6e7678c415 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 13:01:43 +00:00
XScorpion2
034e266998 Rgbkb/keeb fixes (#17932)
* Disable console by default for better bios & reboot behavior

* Remove custom matrix

* Disable console by default for better bios & reboot behavior

* PR feedback
2022-08-07 14:01:10 +01:00
QMK Bot
9087e6ee28 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 12:57:41 +00:00
Joel Challis
a6ea760c94 rgbkb/zen - Resolve CONVERT_TO_PROTON_C warnings (#17619) 2022-08-07 13:57:12 +01:00
QMK Bot
e8ff0d6ced Merge remote-tracking branch 'origin/master' into develop 2022-08-07 09:34:18 +00:00
medoix
b9269bf689 [Keyboard] Dumbpad v1x_oled (#17058)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-07 02:33:36 -07:00
QMK Bot
4f3bf762f1 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 09:30:52 +00:00
DUILCHOI
964ce931e2 [Keyboard] add fave104 (#17909)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-07 02:30:18 -07:00
QMK Bot
5599f26667 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 09:29:42 +00:00
yiancar
82a72fe815 [Keyboard] Add P01 (#17921)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-08-07 02:28:46 -07:00
QMK Bot
50e6dd41e6 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 09:21:28 +00:00
James Young
de613fac0a Lin Works FAve 65H Refactor (#17938) 2022-08-07 02:20:51 -07:00
Drashna Jaelre
ac25109312 Always run pointing device init (#17936) 2022-08-07 02:18:03 -07:00
QMK Bot
93914142a3 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 01:24:34 +00:00
Joel Challis
c6ad38e79f RESET -> QK_BOOT default keymaps (#17939) 2022-08-07 02:23:58 +01:00
QMK Bot
c5844931e2 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 21:42:44 +00:00
Julian Turner
5c1cfc917e [Keymap] German Corne Layout (#17268)
* added german corne

* added symbol layer

* Delete settings.json

revert setting

* Delete keymap.c

* Update config.h

* Update keycodes.h

* Update config.h

* Update keyboards/crkbd/keymaps/JulianTurner/oled.c

* Update keycodes.h

* Update oled.c

added header

* Update keymap.c

added header

* Update keytabs.h

added header

* Update readme.md

* Update rules.mk

* default settings

* Update settings.json

* renamed folder

* revert

* remove c file import and added to rules

* Update keymap.c

* Update keymap.c

* Update readme.md

* Update rules.mk

* updated files from pull request

* fixed issues with merge

* Update keyboards/crkbd/keymaps/julian_turner/oled.c

* Update keyboards/crkbd/keymaps/julian_turner/rules.mk

* Update keyboards/crkbd/keymaps/julian_turner/keymap.c

* Delete keycodes.h

* Update keyboards/crkbd/keymaps/julian_turner/readme.md
2022-08-06 14:41:52 -07:00
Joshua Diamond
5408334083 Update ginkgo65hot to allow use of community layouts (#17911) 2022-08-06 13:29:06 -07:00
QMK Bot
e938c663e5 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 17:19:59 +00:00
takashicompany
c8afb7a513 Update miniZone keymap (#17919) 2022-08-06 18:19:25 +01:00
QMK Bot
985b91b30f Merge remote-tracking branch 'origin/master' into develop 2022-08-06 16:21:41 +00:00
James Young
efdd048e18 Cipulot Kawayo Refactor (#17884)
* info.json: apply friendly formatting

* kawayo.h: use QMK 3-character notation

* refactor keymaps

- use QMK-native keycode aliases
  - KC_ENTER -> KC_ENT
  - KC_RIGHT -> KC_RGHT
  - KC_TRNS -> _______
  - RESET -> QK_BOOT
- use four-space indent

* kawayo.h: add matrix diagram

* info.json: correct layout data

* rename LAYOUT_default to LAYOUT_ansi_blocker_split_bs

* add LAYOUT_ansi_blocker macro with reference keymap

* add LAYOUT_ansi_blocker_tsangan macro with reference keymap

* add LAYOUT_ansi_blocker_tsangan_split_bs macro with reference keymap

* kawayo.h: add Corner Blocker (CB) option to matrix diagram

* change Layout Macro naming scheme

- update layout macro naming scheme
  - rename `LAYOUT_ansi_blocker` to `LAYOUT_65_ansi_cb_blocker`
  - rename `LAYOUT_ansi_blocker_split_bs` to `LAYOUT_65_ansi_cb_blocker_split_bs`
  - rename `LAYOUT_ansi_blocker_tsangan` to `LAYOUT_65_ansi_cb_blocker_tsangan`
  - rename `LAYOUT_ansi_blocker_tsangan_split_bs` to `LAYOUT_65_ansi_cb_blocker_tsangan_split_bs`
- rename reference keymaps to format specified in QMK docs
  - keymap using `LAYOUT_65_ansi_cb_blocker` macro should be named `default_65_ansi_cb_blocker`, etc.
- update layout macro grid alignment (no logic change)

* add LAYOUT_65_ansi_blocker macro

* add LAYOUT_65_ansi_blocker_split_bs macro

* add LAYOUT_65_ansi_blocker_tsangan macro

* add LAYOUT_65_ansi_blocker_tsangan_split_bs macro

* denote LAYOUT_all as an alias for LAYOUT_65_ansi_blocker_split_bs

* enable Community Layout support
2022-08-06 09:21:11 -07:00
Nick Brassel
154d35ac14 Remove UNUSED_PINS (#17931) 2022-08-06 23:23:35 +10:00
QMK Bot
820371c31b Merge remote-tracking branch 'origin/master' into develop 2022-08-06 12:38:13 +00:00
Ryan
37345e2ace Provide users with replacements for deprecated/invalid functionality where applicable (#17604) 2022-08-06 22:37:40 +10:00
Stefan Kerkmann
f27b617f36 [Core] Process all changed keys in one scan loop, deprecate QMK_KEYS_PER_SCAN (#15292) 2022-08-06 20:51:13 +10:00
QMK Bot
e9f9f99a33 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 08:59:44 +00:00
Ryan
0ff8c4f6fd Move keyboard USB IDs and strings to data driven: Z (#17927) 2022-08-06 18:59:13 +10:00
QMK Bot
dd0ac80ee4 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 08:52:48 +00:00
Ryan
fb19e14048 Move keyboard USB IDs and strings to data driven: Y (#17926) 2022-08-06 18:52:13 +10:00
Stefan Kerkmann
ed9bdcbc36 [Core] guard RPC invocation by checking RPC info against crc checksum (#17840) 2022-08-06 18:46:59 +10:00
QMK Bot
cac7042414 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 08:46:12 +00:00
Ryan
0e3cc6af12 Move keyboard USB IDs and strings to data driven: X (#17925) 2022-08-06 18:45:43 +10:00
QMK Bot
1d45c99355 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 06:37:08 +00:00
Albert Y
64acbcb42a [Docs] Building with GitHub Userspace (#16271) 2022-08-06 16:36:31 +10:00
QMK Bot
3c9941a629 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 06:31:44 +00:00
Andrew Kannan
99377a0f5b [Keyboard] Add Crin PCB (#17913) 2022-08-05 23:31:05 -07:00
QMK Bot
5efa2ff23e Merge remote-tracking branch 'origin/master' into develop 2022-08-06 06:30:45 +00:00
keyquest.tech
07fc37541d Added support for keyquest keyboards (#17667)
Co-authored-by: Mathiaszmrga <mmoragrega@centro.edu.mx>
2022-08-06 16:30:05 +10:00
Joel Challis
897403c4a7 Publish data as part of API generation (#17020) 2022-08-06 16:14:29 +10:00
QMK Bot
ec5186f0f9 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 05:50:30 +00:00
Ryan
10ad238944 Move keyboard USB IDs and strings to data driven: W (#17903) 2022-08-06 15:49:44 +10:00
Jeff Epler
7bbc1b21dd Add kb2040 onkey keyboard that works with the oled keymap (#17786) 2022-08-05 19:38:10 -07:00
Drashna Jaelre
ad4ef47d2b [Keyboard] use correct function in Dilemma splinky (#17923) 2022-08-06 02:58:06 +01:00
QMK Bot
758a0a0902 Merge remote-tracking branch 'origin/master' into develop 2022-08-06 01:54:55 +00:00
Less/Rikki
660dedfb17 [Keyboard] encoder map on more mechwild boards (#17894) 2022-08-05 18:54:22 -07:00
QMK Bot
217bd431e9 Merge remote-tracking branch 'origin/master' into develop 2022-08-04 23:41:59 +00:00
Joel Challis
8978960a87 Tidy up ez_maker (#17910) 2022-08-05 00:41:29 +01:00
Drashna Jaelre
eb417b3aaf Add deprecated check for RGBLIGHT_ANIMATIONS (#17832) 2022-08-04 11:05:53 -07:00
QMK Bot
7093846319 Merge remote-tracking branch 'origin/master' into develop 2022-08-04 13:07:34 +00:00
ebastler
efd3b1e0bd added missing indicator defines for dolice (#17906) 2022-08-04 14:06:50 +01:00
Nick Brassel
d9eb152a90 Fix issue with #17904. (#17905) 2022-08-04 22:15:42 +10:00
Nick Brassel
94e8701b3e Fixup compilation of printf-like functions with uint32_t args. (#17904) 2022-08-04 21:44:56 +10:00
Nick Brassel
543f54a483 [Core] STM32_USB_USE_OTG1 => USB_ENDPOINTS_ARE_REORDERABLE (#17647) 2022-08-04 21:05:16 +10:00
QMK Bot
88cfd55b8c Merge remote-tracking branch 'origin/master' into develop 2022-08-04 01:36:14 +00:00
Ryan
17176daf26 Move keyboard USB IDs and strings to data driven: T (#17899) 2022-08-04 02:35:08 +01:00
QMK Bot
4e50de3a4b Merge remote-tracking branch 'origin/master' into develop 2022-08-04 00:22:37 +00:00
James Young
5a631ed9ac Balloondogcaps TR90 and TR90PM: rename LAYOUT to LAYOUT_ortho_3x3 (#17879)
* balloondogcaps/tr90: rename LAYOUT to LAYOUT_ortho_3x3

* balloondogcaps/tr90pm: rename LAYOUT to LAYOUT_ortho_3x3
2022-08-04 01:21:59 +01:00
QMK Bot
42a36a2095 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 22:55:51 +00:00
James Young
b01814bf68 boardsource/the_mark: add QMK Configurator layout data (#17898)
* boardsource/the_mark: add QMK Configurator layout data

* add keyboard maintainers to info.json

Adds the individual and organization accounts as listed maintainers.
2022-08-03 23:54:50 +01:00
QMK Bot
d8a15ce5bb Merge remote-tracking branch 'origin/master' into develop 2022-08-03 22:54:33 +00:00
Ryan
a30c1884c7 Move keyboard USB IDs and strings to data driven: U (#17900) 2022-08-03 23:53:46 +01:00
QMK Bot
adf8218399 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 22:53:16 +00:00
Ryan
1fd8d5c322 Move keyboard USB IDs and strings to data driven: V (#17901) 2022-08-03 23:52:24 +01:00
QMK Bot
0a198b59a3 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 22:13:21 +00:00
Ryan
a8744b1630 Move keyboard USB IDs and strings to data driven: S (#17889) 2022-08-04 08:12:37 +10:00
QMK Bot
237039cdcd Merge remote-tracking branch 'origin/master' into develop 2022-08-03 22:06:14 +00:00
Ryan
b40c03140e Move keyboard USB IDs and strings to data driven: R (#17885) 2022-08-04 08:05:40 +10:00
QMK Bot
c6a6f987c9 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 20:08:10 +00:00
Joel Challis
92bcbee226 Fix up splittest/bluepill (#17897) 2022-08-03 21:06:54 +01:00
QMK Bot
f326b0b40e Merge remote-tracking branch 'origin/master' into develop 2022-08-03 17:23:55 +00:00
Stephen J Bush
df8a538489 Userspace: muppetjones (#1) (#13461)
* Userspace: muppetjones (#1)

Add and update lily58 to work with userspace
Add and update kyria keymap to work with userspace
Add and update planck keymap with userspace
Add etchamouse code and docs to userpace
Add userspace
Update mouse encoder for smoother movement.
Encoder + mouse
Added casemodes by andrewjrae

* Rollback lily58 state reader and add missing GPL

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>

* fix lily58 keymap

* Updates to user and lily for muppetjones.

Updated parameters for etchamouse for smoother mouse movement. Updated lily keymap and userspace to actually work together.

* Update keyboards/lily58/keymaps/muppetjones/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Updated keymaps and userspace

* Little more cleanup.

* Update keyboards/lily58/keymaps/muppetjones/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Rollback accidental libchibios update

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update kyria keymap

* Move kyria keymap to splitkb/kyria

* Update planck keymap

* Remove all changes to keyboards/lily58/lib/layer_state_reader.c

* Update lily58 keymap

* Recommended change

* Update keymap readme

* Update kyria keymap and userspace

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Renamed users/muppetjones/README.md to lc

* Update keyboards/lily58/keymaps/muppetjones/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-03 18:23:17 +01:00
QMK Bot
e93124f05c Merge remote-tracking branch 'origin/master' into develop 2022-08-03 14:59:13 +00:00
Ryan
5f6cf24294 Move keyboard USB IDs and strings to data driven: Q (#17883) 2022-08-03 15:58:29 +01:00
QMK Bot
4c81d4e526 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 13:20:50 +00:00
yulei
c4e767b4c9 added neson design's 700e keyboard (#17768)
* added neson design's 700e keyboard

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-03 14:20:10 +01:00
QMK Bot
671e211930 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 10:33:16 +00:00
jotix
4ec2626b43 jotix's community ortho_4x12 layout change (#17891) 2022-08-03 11:32:23 +01:00
QMK Bot
2dfccd29c8 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 08:33:04 +00:00
dvermd
0206bd9df3 add bluepill mcu to splittest (#16959)
* add bluepill mcu to splittest

* fix typo

* refactoring

* mcu config goes to mcuconf.h of keyboard
* keymap specific config goes to keymap config.h
* keyboard specific depending of keymap goes to post_config.h

* Apply suggested change

Co-authored-by: Ryan <fauxpark@gmail.com>

* Apply suggested change

Co-authored-by: Ryan <fauxpark@gmail.com>

* Apply suggested change

Co-authored-by: Ryan <fauxpark@gmail.com>

* Apply suggested change

Co-authored-by: Ryan <fauxpark@gmail.com>

* Apply suggested change

Co-authored-by: Ryan <fauxpark@gmail.com>

* splittest/bluepill: improve documentation

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-08-03 09:31:37 +01:00
QMK Bot
61a3fe4fac Merge remote-tracking branch 'origin/master' into develop 2022-08-03 07:23:52 +00:00
Ryan
b6757d2380 Move keyboard USB IDs and strings to data driven: P (#17875) 2022-08-03 17:23:15 +10:00
QMK Bot
d4f9eb5225 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 07:16:28 +00:00
Ryan
3da6575e24 Move keyboard USB IDs and strings to data driven: M (#17859) 2022-08-03 17:15:43 +10:00
QMK Bot
bce4fb4574 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 07:04:43 +00:00
Ryan
1b92c204c1 Move keyboard USB IDs and strings to data driven: K (#17846)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-08-03 17:03:47 +10:00
QMK Bot
d52d7bc658 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 06:48:37 +00:00
kkokdae
ce9bb6d39b [keymap] Add kkokdae keymap for keyboardio/atreus (#17843)
* [keymap] Add kkokdae keymap for keyboardio/atreus

* Update keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Revert "Update keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c"

This reverts commit 8e9ccc78c7.

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-08-03 07:47:48 +01:00
QMK Bot
40499bed06 Merge remote-tracking branch 'origin/master' into develop 2022-08-03 06:11:19 +00:00
Travis
5f6ec37b7d [Keymap] Add TravisHi keymap for SplitKB Kyria (#17858)
* Init commit

* Prep for MVP

* Add F Fixes (thanks F!)

* Fix some incorrect layer summons

* Create readme (remove comments from code)

* Update OLED indicators (test)

* Add more OLED updates

* Add more layouts

* Update readme and small tweaks

* Update layers and prep for LED layers

* Fix a trapped layer issue

* Test animations

* Add a happy frog animation to right screen

* Add bulk work

* Move fren readme image

* Can't save images

* Update FPS layout

* Update Symbols layer

* Update readme

* Update readme (future comments move to readme)

* Remove superfluous comments & add Licence

* Add licence update
2022-08-03 07:10:46 +01:00
QMK Bot
b31c914f0f Merge remote-tracking branch 'origin/master' into develop 2022-08-03 00:07:38 +00:00
AnthonyNguyen168
4c8469f565 Update json file to support Configurator correctly. (#17692) 2022-08-03 01:06:55 +01:00
QMK Bot
90259eb012 Merge remote-tracking branch 'origin/master' into develop 2022-08-02 18:39:44 +00:00
Ryan
be5b1a24bf Move keyboard USB IDs and strings to data driven: O (#17874) 2022-08-02 19:39:00 +01:00
QMK Bot
7883306466 Merge remote-tracking branch 'origin/master' into develop 2022-08-02 18:31:04 +00:00
James Young
24488e043e SKergo Refactor (#17877)
* skergo.h: use ___ for KC_NO

* skergo.h: use 3-character notation

* skergo.h: add matrix diagram

* add LAYOUT_all macro

* update grid alignment of LAYOUT macro and keymaps

* refactor keymaps

Refactor keymaps to use the `LAYOUT_all` macro. Converts tabs to spaces.

This change necessitates the following changes to keymaps:

- The keycodes for Page Up, Page Down, and End each move up one row - all as the last keys on their new rows.
- The keycode for the secondary B key moves up one row, inserted between the primary (left side) B and the N.

* remove LAYOUT macro

* rename LAYOUT_all macro to LAYOUT_split_bs

* add LAYOUT_2u_bs macro

* readme.md: add flashing example

* info.json: correct maintainer value

Update to reference maintainer's GitHub username.
2022-08-02 19:30:26 +01:00
QMK Bot
1f8e9c1854 Merge remote-tracking branch 'origin/master' into develop 2022-08-02 06:54:51 +00:00
Niko Wenselowski
068bfc49de [Keymap] Move the ut472 keymap from gardego5 to keyhive folder (#17598) 2022-08-01 23:54:14 -07:00
QMK Bot
479c7876e6 Merge remote-tracking branch 'origin/master' into develop 2022-08-02 00:11:25 +00:00
Ryan
056a44c7d3 Move keyboard USB IDs and strings to data driven: N (#17865) 2022-08-02 01:10:48 +01:00
QMK Bot
e6dc14ae41 Merge remote-tracking branch 'origin/master' into develop 2022-08-02 00:03:00 +00:00
Ryan
7222969964 Move keyboard USB IDs and strings to data driven: L (#17849) 2022-08-02 01:02:19 +01:00
QMK Bot
e3ee87ee31 Merge remote-tracking branch 'origin/master' into develop 2022-08-01 16:10:17 +00:00
James Young
26b17a71e0 MS Sculpt Touch-Up (#17871)
* info.json: fix JSON syntax error

* info.json: convert tabs to spaces

* info.json: add QMK Configurator layout data

* readme.md: switch Bootloader and Docs sections
2022-08-01 17:09:40 +01:00
Drashna Jaelre
b1eac5c671 [Keyboard] Overhaul uzu42 (#17868) 2022-08-01 14:04:26 +01:00
QMK Bot
0e3b1740ef Merge remote-tracking branch 'origin/master' into develop 2022-08-01 13:01:06 +00:00
James Young
3b40ded512 ryanbaekr rb18 Configurator Data Fixes (#17872)
* info.json: apply friendly formatting

* info.json: correct key sequence

* info.json: remove dead space from layout

* info.json: correct maintainer value
2022-08-01 14:00:31 +01:00
QMK Bot
e32a956028 Format code according to conventions (#17869) 2022-07-31 21:35:53 -07:00
David Hoelscher
2bdd73f801 Add ST7735 driver to Quantum Painter (#17848) 2022-07-31 19:58:25 -07:00
jack
09ea5f6337 [Keyboard] Fix uzu42 compilation issue (#17867) 2022-07-31 19:05:15 -07:00
QMK Bot
735fb38a0e Merge remote-tracking branch 'origin/master' into develop 2022-07-31 22:34:03 +00:00
axtloss
e1b6034f00 [Keymap] Add axtloss keymap for sofle (#17835)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-31 15:33:34 -07:00
Joel Challis
98d5c77521 Remove legacy AVR ssd1306 driver (#17864) 2022-07-31 22:15:01 +01:00
Joel Challis
f7aaed1b57 Migrate crkbd keymaps to oled driver (#17863) 2022-07-31 12:36:30 -07:00
Joel Challis
c10c2575b8 Remove OLED driver Split Common warning (#17862) 2022-07-31 12:33:12 -07:00
Joel Challis
2f19579d3f Convert yosino58 to use split common (#17861) 2022-07-31 12:32:45 -07:00
Daniel Kao
b03a7cef75 Fix POINTING_DEVICE_GESTURES_SCROLL_ENABLE typo (#17850)
* Fix typo for POINTING_DEVICE_GESTURES_SCROLL_ENABLE

Follow the name written in documentation which follows
POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE

* Reword the blurb about POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE in docs
2022-07-31 15:51:20 +01:00
Joel Challis
409790457c Refactor satt/comet46 to use core OLED driver (#17856) 2022-07-31 15:35:42 +01:00
Joshua Diamond
baf34989f1 Default rgblight (#17855)
* better rgb bindings; improve default

* trim firmware size
2022-07-30 18:31:31 -04:00
Joshua Diamond
f02e355380 More glyph transformations for spidey3 userspace (#17854)
* add bold and blackboard bold glyph transformations

* trim firmware size; cformat

* fix typo in macro

* trim firmware size a bit more
2022-07-30 18:21:54 -04:00
QMK Bot
3d53c64992 Merge remote-tracking branch 'origin/master' into develop 2022-07-30 20:00:58 +00:00
James Young
f6a91649ff KPrepublic BM80v2 Touch-Up (#17851)
* info.json: apply friendly formatting

* info.json: correct layout data

Fix the size and position of the Backslash key.

* readme.md: touch-up formatting

* readme.md: switch Bootloader and Docs sections

* correct keyboard maintainer
2022-07-30 21:00:15 +01:00
QMK Bot
06fe4b16d2 Merge remote-tracking branch 'origin/master' into develop 2022-07-30 07:32:18 +00:00
Ryan
2d778d2ff2 Move keyboard USB IDs and strings to data driven: handwired (#17822) 2022-07-30 17:31:44 +10:00
QMK Bot
ef94f93fe2 Merge remote-tracking branch 'origin/master' into develop 2022-07-30 07:24:42 +00:00
Ryan
1c6b0391b4 Move keyboard USB IDs and strings to data driven: E (#17815) 2022-07-30 17:23:55 +10:00
Drzony
0b726a437b Implement relative mode for Cirque trackpad (#17760) 2022-07-29 21:20:34 -07:00
QMK Bot
b085d5221b Merge remote-tracking branch 'origin/master' into develop 2022-07-30 04:07:26 +00:00
Bahrul Hidayat
da07e7dd0e [Keyboard] add dyz60-hs (#17763)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-29 21:07:10 -07:00
kopibeng
c0e3a16121 [Keyboard] Update MNK88 RGB Underglow LED Number (#17833)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-29 21:06:40 -07:00
QMK Bot
7e172fd944 Merge remote-tracking branch 'origin/master' into develop 2022-07-30 03:03:14 +00:00
Ryan
306e50b84c Move keyboard USB IDs and strings to data driven: D (#17814) 2022-07-29 20:02:47 -07:00
QMK Bot
07f007de9a Merge remote-tracking branch 'origin/master' into develop 2022-07-30 03:02:29 +00:00
Chris Swenson
d1096ad440 [Keymap] Add enigma keymap for contra keyboard (#17829) 2022-07-29 20:01:35 -07:00
QMK Bot
a97c61074e Merge remote-tracking branch 'origin/master' into develop 2022-07-30 02:47:09 +00:00
James Young
d2aa8e6bb8 KBDfans Bounce Pad: Correct QMK Configurator Implementation (#17845) 2022-07-29 19:46:32 -07:00
QMK Bot
ed719d5d8d Merge remote-tracking branch 'origin/master' into develop 2022-07-30 02:17:19 +00:00
GG
0aec4203e7 [Keyboard] add Zoom87 (#17831) 2022-07-29 19:16:50 -07:00
QMK Bot
0c487cbeba Merge remote-tracking branch 'origin/master' into develop 2022-07-30 00:32:42 +00:00
Drashna Jaelre
d93dfbff3c Fix check when compiling HID Joystick with digital driver (#17844) 2022-07-30 01:32:06 +01:00
Frank Tackitt
21603c5142 Enable mousekeys by default for RGBKB Sol3 (#17842) 2022-07-29 23:42:34 +01:00
QMK Bot
3f1b61ba55 Merge remote-tracking branch 'origin/master' into develop 2022-07-29 21:03:24 +00:00
James Young
7f2ddf1711 kbdfans/bounce/75: correct typos of keyboard name (#17841) 2022-07-29 22:02:45 +01:00
Stefan Kerkmann
a204523bbb [Core] RP2040 disable PIO IRQs on serial timeout (#17839) 2022-07-29 20:13:16 +02:00
zvecr
ade2eb1e75 Merge remote-tracking branch 'origin/master' into develop 2022-07-29 17:30:33 +01:00
Ryan
394cf7c41e Move keyboard USB IDs and strings to data driven: J (#17837) 2022-07-29 13:49:01 +01:00
Ryan
bcb8600a31 Move keyboard USB IDs and strings to data driven: I (#17836) 2022-07-29 13:40:16 +01:00
QMK Bot
1050cf2453 Merge remote-tracking branch 'origin/master' into develop 2022-07-29 12:19:39 +00:00
James Young
1ded7ad460 KBDfans Bounce75 Touch-Up (#17834)
* kbdfans/bounce/75/hotswap: keymap readability fix

Update grid alignment to disambiguate which keycodes correspond in different layers.

----

Layer 0 had 13 and 9 keycodes on the bottom two rows respectively, while Layers 1-3 had 14 and 8.

* kbdfans/bounce/75/soldered: keymap readability fix

Update grid alignment to disambiguate which keycodes correspond in different layers.

----

Layer 0 had 14 and 9 keycodes on the bottom two rows respectively, while Layers 1-3 had 15 and 8.

* kbdfans/bounce/75/soldered: fix layer index in keymaps

Layer indexes were 0,1,2,1 instead of 0,1,2,3.
2022-07-29 13:18:28 +01:00
QMK Bot
a7d0e01e5b Merge remote-tracking branch 'origin/master' into develop 2022-07-29 06:44:32 +00:00
James Young
5c90f7ae14 Wuque Promise87 WKL Refactor (#17828) 2022-07-28 23:43:54 -07:00
precondition
95c1cc425e Rename postprocess_steno_user → post_process_steno_user (#17823) 2022-07-28 21:51:01 -07:00
QMK Bot
2d0443ec25 Merge remote-tracking branch 'origin/master' into develop 2022-07-29 04:42:45 +00:00
GG
b5452581da [Keyboard] fix mistakes in promise87 config (#17830) 2022-07-28 21:41:42 -07:00
QMK Bot
c2f68e3232 Merge remote-tracking branch 'origin/master' into develop 2022-07-28 13:13:39 +00:00
Ryan
920f983767 Move keyboard USB IDs and strings to data driven: H (#17821) 2022-07-28 14:12:40 +01:00
Stefan Kerkmann
157ea96411 ChibiOS: use correct status codes in i2c_master.c (#17808)
msg_t is MSG_OK in the success case and either MSG_RESET or MSG_TIMEOUT
in case of errors. So actually use them in the comparison.
2022-07-28 02:02:10 +01:00
QMK Bot
476d709fa5 Merge remote-tracking branch 'origin/master' into develop 2022-07-28 00:57:13 +00:00
Less/Rikki
e7affd0541 feat: encoder map, OLED & encoder kb-level config (#17809) 2022-07-28 01:56:37 +01:00
QMK Bot
b029252e76 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 23:52:09 +00:00
Arthur
1e745c48b6 [Keymap] Add artflag kyria layout (#17778)
* Initial firmware

* feedback

* updates

* update map
2022-07-27 16:51:13 -07:00
QMK Bot
7bb73306d6 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 21:44:42 +00:00
Ryan
23f365b601 Move keyboard USB IDs and strings to data driven: F (#17816) 2022-07-27 22:44:05 +01:00
QMK Bot
5055c9a74b Merge remote-tracking branch 'origin/master' into develop 2022-07-27 21:12:28 +00:00
Kevin Zhao
6731712cc1 Fix SKErgo Keymap (#17812) 2022-07-27 22:10:57 +01:00
QMK Bot
ed5351d75e Merge remote-tracking branch 'origin/master' into develop 2022-07-27 19:19:51 +00:00
Ryan
4a0eb733ac Move keyboard USB IDs and strings to data driven: G (#17818) 2022-07-27 20:19:09 +01:00
QMK Bot
602fde61e2 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 16:29:08 +00:00
turbololvo
c788857b6b fix function layer to reflect cap labels (#17813)
These changes correctly reflect the keycap labels on the Vortex Race 3.
2022-07-27 17:27:39 +01:00
QMK Bot
df15caf407 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 15:02:29 +00:00
James Young
0f40e5d0dc Wuque Promise87 ANSI Refactor (#17807) 2022-07-27 08:01:37 -07:00
Drashna Jael're
3d98269652 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 07:40:30 -07:00
Drashna Jaelre
8973835183 [Docs] Add information about WeAct Blackpill F411 (#16755)
* [Docs] Add information about WeAct Blackpill F411

* Add clarification for matrix pins

* Update documentation

* Tweak wording
2022-07-27 14:49:12 +01:00
QMK Bot
00c1653a15 Merge remote-tracking branch 'origin/master' into develop 2022-07-27 09:29:50 +00:00
Albert Y
3285659690 CLI compatibility for MacOS (#17811) 2022-07-27 10:29:10 +01:00
Stefan Kerkmann
59d940c9f3 ChibiOS-Contrib: Update for RP2040 PWM and I2C driver (#17817) 2022-07-27 10:06:18 +02:00
QMK Bot
5df7cfdeb4 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 20:48:59 +00:00
Danny
dc48b3fd04 [Keyboard] Fix typo with RGB LED positioning in Iris (#17805) 2022-07-26 13:48:07 -07:00
QMK Bot
ff5848992c Merge remote-tracking branch 'origin/master' into develop 2022-07-26 20:25:59 +00:00
Less/Rikki
fc9654a1d0 feat: encoder map, OLED & encoder kb-level config (#17767) 2022-07-26 21:25:23 +01:00
QMK Bot
53ca6338c7 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 19:51:21 +00:00
Drashna Jaelre
5f36285fc5 [Keyboard] Add work louder micro (#17586)
* [Keyboard] Add work louder micro

* Update keyboards/work_louder/micro/readme.md

* Update readme

* Update kb config files

* Update to use encoder map

Co-authored-by: Tom Barnes <barnestom@me.com>
2022-07-26 20:50:45 +01:00
QMK Bot
e0e1f0af92 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 19:44:06 +00:00
Scott Bennett
9dbc0473ef Dz65v2 Settings for SBennett13 (#17747)
* Start of dz65v2 map for sbennett13

* No wpm, disable some rgb, ~copyright~

* No more raindrops

* Remove more rgb modes and set default

* Almost orgot this crappy thing

* cannot define startup :(

* Layered esc is kc_grv

* Start of dz65v2 map for sbennett13

* No wpm, disable some rgb, ~copyright~

* No more raindrops

* Remove more rgb modes and set default

* Almost orgot this crappy thing

* cannot define startup :(

* Layered esc is kc_grv

* Add license to config and keymap
2022-07-26 20:43:26 +01:00
Stefan Kerkmann
083b42068a Chibios: Stop I2C peripheral on transaction error (#17798)
From the ChibiOS HAL I2C driver pages:

After a timeout the driver must be stopped and restarted because the bus is in
an uncertain state.

This commit does that stopping explicitly on any error that occurred, not only
timeouts. As all the i2c functions restart the peripheral if necessary it is
safe to do so.

Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>

Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-07-26 21:40:14 +02:00
QMK Bot
2899e69ead Merge remote-tracking branch 'origin/master' into develop 2022-07-26 19:15:45 +00:00
Spaceman
d4bb5a9820 Add alternative Logos (#17787) 2022-07-26 20:15:08 +01:00
Daniel Kao
b8b2e99976 Constrain Cirque Pinnacle coordinates (#17803)
Static x & y should be the same type as touchData.xValue &
touchData.yValue: uint16_t.
Their delta could be larger than int8_t and should be constrained to
mouse_xy_report_t.
2022-07-26 19:35:41 +01:00
Joel Challis
c982d6c5e3 Avoid OOB in dynamic_keymap_reset (#17695) 2022-07-26 17:38:28 +01:00
QMK Bot
61da9286a1 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 16:38:06 +00:00
QMK Bot
0534b878c3 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 16:37:29 +00:00
Nick Brassel
d1434b6d75 Make qmk doctor print out the last log entry for upstream/{master,develop}, including dates (#17713) 2022-07-26 17:37:28 +01:00
Wilba
501276a8fd Added WT65-D (#17724) 2022-07-26 17:36:30 +01:00
QMK Bot
1cf68476cc Merge remote-tracking branch 'origin/master' into develop 2022-07-26 08:00:23 +00:00
Álvaro A. Volpato
b0b14cc440 [Keyboard] Acheron Athena support (#16818)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-26 00:59:38 -07:00
Drashna Jaelre
5d898a3d34 [Docs] Updates to Pointing Device Docs (#17777) 2022-07-26 00:27:34 -07:00
Charly Delay
244450625a bastardkb: fix info.json changes that got reverted during the last merge from master to develop (#17800)
* bastardkb: fix info.json changes that got reverted during the last merge from `master` to `develop`

* Remove board name from root folder `info.json`
2022-07-26 07:41:24 +01:00
QMK Bot
9f5b71bada Merge remote-tracking branch 'origin/master' into develop 2022-07-26 06:27:00 +00:00
Olly Hayes
77e48f5b7e [Keymap] Add ollyhayes keymap (#16632) 2022-07-25 23:26:22 -07:00
QMK Bot
9825b66cac Merge remote-tracking branch 'origin/master' into develop 2022-07-26 06:26:00 +00:00
Leo Deng
ddae04bca1 [Keyboard] add DJam keyboard (#17430)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-25 23:25:28 -07:00
Daniel Kao
1de6811ebe Cirque circular scroll: Support POINTING_DEVICE_COMBINED (#17654) 2022-07-25 23:19:33 -07:00
QMK Bot
2456044d5f Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:36:55 +00:00
shamit05
91d911eb1f [Keyboard] Add Halokeys Elemental 75 (#17323)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-25 22:36:11 -07:00
QMK Bot
9f976b89d8 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:31:41 +00:00
Cipulot
ba1643af7d [Keyboard] Add Kawayo Keyboard (#17454)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-25 22:30:59 -07:00
QMK Bot
11c9a5e3ac Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:24:46 +00:00
hornslyn
a33dc8ebb5 [Keyboard] Add Star75 support (#17421)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-25 22:24:04 -07:00
Albert Y
70d554420c [Keyboard] Add RP2040 config defaults for ferris/sweep and cradio (#17557) 2022-07-25 22:22:42 -07:00
QMK Bot
f004d93bad Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:21:11 +00:00
James Young
753ca0e13c takashicompany miniZone: fix QMK Configurator implementation (#17801) 2022-07-25 22:20:36 -07:00
QMK Bot
4bd4210e97 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:02:37 +00:00
Daniel O'Brien
3eb9f28c89 [Keyboard] Add missing mute button to sofle keymap (#17796) 2022-07-25 22:02:02 -07:00
QMK Bot
f0300fc763 Merge remote-tracking branch 'origin/master' into develop 2022-07-26 05:00:11 +00:00
Diogo Sergio
e6a7db2fd2 Update README.md for teensy lc onekey (#17797) 2022-07-25 21:59:37 -07:00
QMK Bot
d556c4233e Merge remote-tracking branch 'origin/master' into develop 2022-07-26 04:01:41 +00:00
Ryan
5ed98df374 gboards/georgi: cleanup & fix (#17753) 2022-07-26 14:01:05 +10:00
Drashna Jaelre
928bbded6d [Keyboard] Fix compilation issues for Charybdis/Dilemma (#17791)
* [Keyboard] Fix debug printing for Charybdis/Dilemma

* Fix compliation issue for dilemma
2022-07-26 02:40:14 +01:00
QMK Bot
77ed0feebe Merge remote-tracking branch 'origin/master' into develop 2022-07-26 00:53:04 +00:00
Ryan
674422eb13 Move keyboard USB IDs and strings to data driven: A (#17781) 2022-07-26 01:52:18 +01:00
QMK Bot
1e651dbdb0 Merge remote-tracking branch 'origin/master' into develop 2022-07-25 23:04:48 +00:00
Ryan
a939293aca Move keyboard USB IDs and strings to data driven: C (#17789) 2022-07-26 00:04:09 +01:00
QMK Bot
4baed8037d Merge remote-tracking branch 'origin/master' into develop 2022-07-25 22:56:05 +00:00
James Young
b6ac0ecf82 Runes Skjöldr Touch-Up (#17792)
* skjoldr.h: use ___ for KC_NO

* skjoldr.h: use K<row><column> notation

Matrix was previously defined using identifiers in the format of K<column><row>.

* skjoldr.h: add matrix diagram

* info.json: apply friendly formatting

- key legends as labels
- correct key sizes and positioning

* refactor keymaps

Refactors the `default` and `via` keymaps.

- use QMK-native keycode aliases
- grid-align keycodes for readability

* rename LAYOUT macro to LAYOUT_60_ansi_arrow

* enable Community Layout support

* info.json: correct maintainer value

Field is meant to reference the maintainer's GitHub username.
2022-07-25 23:55:26 +01:00
QMK Bot
4837bc50c4 Merge remote-tracking branch 'origin/master' into develop 2022-07-25 22:08:08 +00:00
Drashna Jaelre
68cc6be564 [Keyboard] Fix Charue Sunsetter_r2 compilation issues (#17793) 2022-07-25 23:07:32 +01:00
Drashna Jaelre
683eeca2e2 [Docs] Fix custom debug function and sample output (#17790) 2022-07-25 23:07:15 +01:00
Drashna Jaelre
325da02e57 Fix QK_MAKE's reboot check (#17795) 2022-07-25 23:06:26 +01:00
Drashna Jael're
99c48f1361 Merge remote-tracking branch 'origin/master' into develop 2022-07-25 10:15:47 -07:00
ILWrites
1df6322f10 Fixed spacebar position (#17784) 2022-07-25 17:21:09 +01:00
Ryan
50c2b151b2 Move keyboard USB IDs and strings to data driven: B (#17782) 2022-07-25 16:20:19 +01:00
QMK Bot
7d2260ab75 Merge remote-tracking branch 'origin/master' into develop 2022-07-25 14:59:45 +00:00
James Young
d2161f113b MechWild Mokulua: Correct QMK Configurator Data (#17783)
* Mokulua Mirrored: rebuild info.json file

* Mokulua Standard: rebuild info.json file
2022-07-25 15:58:58 +01:00
Charly Delay
50a12c06b9 [keyboard] bastardkb: restructure folder hierarchy (#16778)
* bastardkb: restructure folder hierarchy ahead of supporting other adapters/mcus

Upcoming support for the following (adapter, mcu) pairs will be
submitted in follow-up PRs:

- `v2/elitec`
- `v2/stemcell`
- `blackpill`

This PR contains the following changes:

- Move previous implementation to an inner `v1/elitec` folder
- Move keyboard USB IDs and strings to data driven
- Update headers to update maintainers list
- Run `qmk format-c`

* bastardkb/charybdis: remove broken acceleration implementation

* bastardkb/charybdis: fix debug output

* bastardkb: add support for BastardKb the `v2/elitec` (adapter, mcu) pair

* bastardkb: add Blackpill support

* bastardkb/charybdis/3x5: add `bstiq` keymap

* bastardkb/charybdis: add fake LEDs to the configuration

For the Charybdis 3x5 (respectively 4x6), the LED config now simulates
36 (respectively 58) LEDs instead of the actual 35 (respectively 56) to
prevent confusion when testing LEDs during assembly when handedness is
not set correctly.  Those fake LEDs are bound to the physical
bottom-left corner.

* bastardkbk/charybdis/readme.md: update build commands

Merge pull request #5 from Nathancooke7/update_charybdis_readme_v2_shield.

* bastardkb/charybdis: fix Via keymap with blackpill

* bastardkb/charybdis: add 3x6 configuration

* bastardkb/charybdis: remove unnecessary files

* bastardkb/charybdis: remove obsolete code

* bastardkb/charybdis/3x6: add Via keymap

* bastardkb: add support for Splinky (RP2040) board

* bastardkb: initial configuration for the Splinky (SPI not working yet)

* bastardkb/charybdis/3x5/v2/splinky: tentative change to enable trackball

* bastardkb/charybdis/3x5/v2/splinky: fix SCK, MISO, MOSI pins

* bastardkb/charybdis/3x5/v2/splinky: fix SCK, MISO, MOSI pins

* bastardkb/charybdis/4x6/v2/splinky: add SPI configuration and enable trackball

* bastardkb/charybdis/3x6: add splinky config

* bastardkb/*/v2/splinky: update drivers to `vendor`

* bastardkb/dilemma: add new board

* bastardkb/charybdis: fix infinite loop in `layer_state_set_user(…)` in the `via` keymaps

* bastardkb/dilemma: add `bstiq` keymap

* bastardkb: specify blackpill boards

* bastardkb/charybdis: fix blackpill-specific define syntax

* bastardkb: remove `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION` which are no longer valid options

* bastardkb: fix `QK_BOOT` keycodes

* bastardkb/dilemma: fix mouse direction on X axis

* bastardkb/charybdis/3x6: adjust CS

* bastardkb/dilemma: adjust trackpad configuration

* charybdis: fix `PWM33XX_CS_PIN` defines

This is a follow-up of https://github.com/qmk/qmk_firmware/pull/17613.

* bastardkb: remove Vial mentions from `bstiq` keymaps

* Cleanup unnecessary comments

Co-authored-by: Nathan <nathan.cooke@compass.com>
Co-authored-by: Charly Delay <0xcharly@codesink.dev>
2022-07-25 10:11:28 +01:00
QMK Bot
336df3297e Merge remote-tracking branch 'origin/master' into develop 2022-07-24 23:01:36 +00:00
Drashna Jaelre
c0763363db [Docs] Fix tables in Audio driver document (#17780) 2022-07-25 00:00:51 +01:00
QMK Bot
d5e619f472 Merge remote-tracking branch 'origin/master' into develop 2022-07-24 16:12:13 +00:00
James Young
00c02e3bd8 FJLabs Sinanju Refactor (#17773)
* sinanju.h: add matrix diagram

* add LAYOUT_60_ansi_wkl_split_bs_rshift macro

Same matrix as `LAYOUT_all`, but with position K2D (right half of split Backspace) moved to the end of the top row.

* refactor keymaps

- use `LAYOUT_60_ansi_wkl_split_bs_rshift` macro instead of `LAYOUT_all`
- polish four-space indent
- update grid alignment
- replace `RESET` keycode with `QK_BOOT`

* remove now-unused LAYOUT_all macro

* add LAYOUT_60_ansi_wkl macro with keymap

Add a layout with 2u Backspace and 2.75u right Shift.

* info.json: correct maintainer value
2022-07-24 17:11:28 +01:00
QMK Bot
c1783ff35d Merge remote-tracking branch 'origin/master' into develop 2022-07-24 16:07:21 +00:00
James Young
5f172b63f5 Chocofly v1: add info.json (#17772) 2022-07-24 17:06:30 +01:00
QMK Bot
62cd280c3b Merge remote-tracking branch 'origin/master' into develop 2022-07-24 12:40:43 +00:00
James Young
191f6e8069 Idobao ID63 Community Layout support (#17769)
* info.json: add key labels

* rename LAYOUT_63_ansi to LAYOUT_60_ansi_arrow

* enable community layout support
2022-07-24 05:39:53 -07:00
QMK Bot
f6612c219f Merge remote-tracking branch 'origin/master' into develop 2022-07-24 12:26:27 +00:00
James Young
049811be0d Add info.json files for Acheron Apollo series keyboards (#17770)
* add info.json file for Apollo87H

* add info.json file for Apollo87H-T-SC

* add info.json file for Apollo88H-T-SC
2022-07-24 05:25:46 -07:00
QMK Bot
7f938e969d Merge remote-tracking branch 'origin/master' into develop 2022-07-24 11:07:34 +00:00
James Young
592028c724 boardsource/beiwagon: correct QMK Configurator layout data (#17771) 2022-07-24 21:06:55 +10:00
QMK Bot
914861b07c Merge remote-tracking branch 'origin/master' into develop 2022-07-24 05:10:28 +00:00
4pplet
58d484ea28 Waffling80 layout fix (#17757) 2022-07-24 06:09:40 +01:00
QMK Bot
db3d9f9935 Merge remote-tracking branch 'origin/master' into develop 2022-07-24 03:28:12 +00:00
James Young
962dcbf3a3 Creatkeebs Thera Refactor (#17766) 2022-07-23 20:27:38 -07:00
QMK Bot
3825362a3b Merge remote-tracking branch 'origin/master' into develop 2022-07-24 00:10:33 +00:00
Álvaro A. Volpato
98c1f7a9ef [Keyboard] Apollo87H PCB support (#16817)
* Initial Apollo87H support

* Define RGB animations and default animation

* Add proper per-key RGB support

* Adjust LED positions

* Separate delta-gamma

* Fine-tune LED positions

* fix up GAMMA revision

* fix up tabs indentation to spaces indentation

* Fixed positioning and CS-SW defs for some LEDs

* Fix INS RGB position

* Fine-tune LED positions, fix default RGB

* Update readme's

* Rename LAYOUT_87H to lowercase 87h

* Formatting gamma's rules.mk

* Formatting delta's rules.mk

* Use smaller readme image

* Use smaller README image

* First support for 87H-T-SC and 88H-T-SC

* Update README

* Fix layout naming

* Remove

* Remove EEPROM definitions, fix missing RGB LED mod/alpha definer

* Add suggestions from noroadsleft
2022-07-23 17:09:52 -07:00
QMK Bot
f383f7d6e5 Merge remote-tracking branch 'origin/master' into develop 2022-07-24 00:04:24 +00:00
TJ
c3df1775bc [Keyboard] Le Chiffre rev 2 and HE additions (#17377)
* chiffre refactor for new revisions

* updated led matrix config

* updated per suggestions

* add tapdance enable

* revert tapdance (none defined in the default keymaps)

* clean up rules

* add readme for HE

* remove notes in readme

* fix perm

* fix perms

* Fix spacing on readme

* fix perm

* fix perms again?
2022-07-23 17:03:41 -07:00
QMK Bot
302fa11d1f Merge remote-tracking branch 'origin/master' into develop 2022-07-23 20:23:43 +00:00
4pplet
f1ccd60458 [Keyboard] 4pplet Perk60 (#16853)
* adding perk60 iso

adding perk60 iso

* Update info.json

* Update keyboards/4pplet/perk60_iso/rev_a/rev_a.c

* Update keyboards/4pplet/perk60_iso/rev_a/rev_a.c

* Delete chconf.h

* Update keyboards/4pplet/perk60_iso/rev_a/rules.mk

* Update keyboards/4pplet/perk60_iso/rev_a/rev_a.c

* Update keyboards/4pplet/perk60_iso/rev_a/rev_a.c

* Update rules.mk

* Update config.h

* removing a few RGB effects

* removing more effects

* Update keyboards/4pplet/perk60_iso/rev_a/config.h

* Update keyboards/4pplet/perk60_iso/keymaps/default/keymap.c

* Update keyboards/4pplet/perk60_iso/keymaps/default/keymap.c

* Update keyboards/4pplet/perk60_iso/keymaps/via/keymap.c

* Update keyboards/4pplet/perk60_iso/keymaps/via/keymap.c

* Update keyboards/4pplet/perk60_iso/keymaps/via/keymap.c

* Update keyboards/4pplet/perk60_iso/rev_a/rev_a.h

* Update keyboards/4pplet/perk60_iso/keymaps/via/keymap.c

* Update keyboards/4pplet/perk60_iso/info.json

* Update keyboards/4pplet/perk60_iso/rev_a/rules.mk
2022-07-23 13:23:14 -07:00
JayceFayne
d02cefe613 implement tap_code16_delay (#17748) 2022-07-23 19:21:20 +01:00
jack
a6f3194397 Add ability to enter bootloader mode from QK_MAKE (#17745) 2022-07-23 17:43:32 +01:00
QMK Bot
8254d73fd4 Merge remote-tracking branch 'origin/master' into develop 2022-07-23 16:42:55 +00:00
Niko Wenselowski
1f42a8ccdd Fix test logic to check for both keymaps (#17761)
Python will evaluate first the left and then the right side of the and operator.

The left side would previously return True based on the truthiness logic that treats any non-emptry string as true.

It would not check if the desired keymap exists.

If the left side is true it will evaluate the right side which will check for the existance of a specific keymap.

With this change the check for existance of two keymaps is implemented.
2022-07-23 17:42:19 +01:00
jpe230
c586cfda48 (develop) Update bootmagic for Adafruit Macropad (#17755) 2022-07-22 23:28:51 +01:00
QMK Bot
c39a902867 Merge remote-tracking branch 'origin/master' into develop 2022-07-22 20:20:43 +00:00
Yuannan
2202efaf0c Added autoclicker, better mouse, Vim like editing layer and more. (#15702)
* Added autoclicker, better mouse, vim like FN layer and more.

* Updated docs to comply with guidelines

* Fixed Imgur links

* increased step sizes

* updated readme to reflect step size

* Added second delay array for autoclicker to compensate for RGB animation CPU loads

* better RGB effects and updated docs

* better README.md formatting

* added DEBONCE libinput workaround for Linux

* fixed formatting

* fixed typos and clarified

* fixed layer picture order

* Update keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/dztech/dz65rgb/keymaps/yuannan/README.md

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Updated Docs and rules

* Updated with the new deferred exec API to ensure more consistant CPS

* renamed README.md to be lower case to comply with fauxpark's request

* Remapped alt to be left instead of right for compatibility reasons

* Update keyboards/dztech/dz65rgb/keymaps/yuannan/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-22 21:20:02 +01:00
QMK Bot
536511a32a Merge remote-tracking branch 'origin/master' into develop 2022-07-22 14:58:18 +00:00
mechlovin
8de0427fec [Kay60] Change LED pin state and correct keycode. (#17746) 2022-07-22 15:57:03 +01:00
QMK Bot
0e81d63b64 Merge remote-tracking branch 'origin/master' into develop 2022-07-22 13:23:36 +00:00
Aidan Gauland
de10784799 Fix compilation error in Ploopy Nano maddie keymap (#17733) 2022-07-22 14:22:56 +01:00
QMK Bot
f1671ec720 Merge remote-tracking branch 'origin/master' into develop 2022-07-22 03:43:08 +00:00
Sắn
b9c7d4c48d [Keyboard] Add Krush65 Hotswap (#16692)
* Add Krush65 Hotswap

* Led fix

* small fix

* a

* B

* move ec action to VIA keymaps

* Update keyboards/sawnsprojects/krush/krush65/hotswap/readme.md

* Update keyboards/sawnsprojects/krush/krush65/hotswap/rules.mk

* Update readme.md

* Update readme.md

* Update readme.md

* Update keyboards/sawnsprojects/krush/krush65/hotswap/readme.md

* Update keyboards/sawnsprojects/krush/krush65/hotswap/rules.mk

* Update keyboards/sawnsprojects/krush/krush65/hotswap/info.json

* Update keyboards/sawnsprojects/krush/krush65/hotswap/readme.md

* Update keyboards/sawnsprojects/krush/krush65/hotswap/readme.md

* Update keyboards/sawnsprojects/krush/krush65/hotswap/info.json

* Update keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.h
2022-07-21 20:42:29 -07:00
QMK Bot
d681eac0ad Merge remote-tracking branch 'origin/master' into develop 2022-07-21 20:24:51 +00:00
Joel Challis
5a0e47db5e Add reviewer/labels to dependabot PRs (#17743) 2022-07-21 21:24:07 +01:00
QMK Bot
bfed88dba2 Merge remote-tracking branch 'origin/master' into develop 2022-07-21 19:55:00 +00:00
dependabot[bot]
4ca99af8f5 Bump JamesIves/github-pages-deploy-action from 4.3.4 to 4.4.0 (#17742) 2022-07-21 20:54:27 +01:00
Drashna Jaelre
5f32690cba Move Pointing Device Initialization (#17740)
Move Pointing Device Initialization to after Split Post Initialization

If both pointing device and split is enabled, the pointing device init needs to be called after the split post init, otherwise the connection (serial/etc) isn't initialized yet, and any commands that need to send data over (such as calling the set cpi command) never get sent over.
2022-07-21 10:16:44 -07:00
jpe230
5c90732622 Adafruit Macropad: Add VIA keymap, fix default km (#17735) 2022-07-21 14:44:12 +01:00
QMK Bot
6081a8091d Merge remote-tracking branch 'origin/master' into develop 2022-07-21 12:45:28 +00:00
jonavin
7f0581cd35 Jonavin mercutio - reduce mem footprint (#17498)
* Reduce mem footprint - remove sprintf

* remove stdio reference and use get_u8_str

Co-authored-by: Jonavin <=>
2022-07-21 13:44:51 +01:00
Albert Y
d510e80b89 Add Blok 2040 conversion (#17603) 2022-07-21 00:54:05 +01:00
Wilba
4efe6330c4 VIA Encoder Map Support (#17734) 2022-07-21 09:53:42 +10:00
QMK Bot
493d422406 Merge remote-tracking branch 'origin/master' into develop 2022-07-20 23:20:34 +00:00
mechlovin
a6d70de96a [Keyboardo] Update PID for mechlovin zed60 (#17728) 2022-07-20 16:19:51 -07:00
mknj
9a31bbb3fa fix syntax error (#17732) 2022-07-20 22:59:18 +01:00
Albert Y
05f30f0787 Use Pro Micro pinout for SDA/SCL (#17595) 2022-07-20 18:24:34 +01:00
QMK Bot
ab45e3b993 Merge remote-tracking branch 'origin/master' into develop 2022-07-20 17:00:18 +00:00
takashicompany
62e3f8b885 Add miniZone Keymap (#17552) 2022-07-20 17:59:40 +01:00
Ben Fiedler
1db5272154 docs: fix default value of USB_SUSPEND_WAKEUP_DELAY (#17501)
Documents the change made in #12081
2022-07-20 17:43:41 +01:00
Drashna Jaelre
ee17ffadea Move Pointing Device code to a subdirectory (#17684) 2022-07-20 17:32:00 +01:00
QMK Bot
adfa36fee4 Merge remote-tracking branch 'origin/master' into develop 2022-07-20 15:02:35 +00:00
Felix Jen
55f16167e4 Added Windz Sinanju to QMK (#17566) 2022-07-20 16:01:35 +01:00
QMK Bot
fa44f2b21e Merge remote-tracking branch 'origin/master' into develop 2022-07-20 00:56:25 +00:00
Michal
00c8e24c6a [Keymap] Michal Keymap for Sofle rev1 (#17610) 2022-07-19 17:55:48 -07:00
Drashna Jaelre
12eb6444c6 Add support for PAW3204 Optical Sensor (#17669)
Co-authored-by: gompa <gompa@h-bomb.nl>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-07-19 17:46:22 -07:00
QMK Bot
6992efb229 Merge remote-tracking branch 'origin/master' into develop 2022-07-19 23:24:53 +00:00
Duccio
a7893f207d Add rgb underglow support and change vendor_id (#17719) 2022-07-20 00:24:10 +01:00
QMK Bot
d0c095eec2 Merge remote-tracking branch 'origin/master' into develop 2022-07-19 15:43:59 +00:00
JW2586
32512bbf10 [Keyboard] Waterfowl keyboard support (#16760)
* Added waterfowl files

* Completing PR Checklist

* Added encoders to info.json

* Added license to default keymap

* Update keyboards/waterfowl/keymaps/cyanduck/keymap.c

* Update keyboards/waterfowl/keymaps/default/keymap.c

* Update keyboards/waterfowl/waterfowl.c

* Update keyboards/waterfowl/keymaps/default/keymap.c

* Update keyboards/waterfowl/waterfowl.c

* Update keyboards/waterfowl/waterfowl.c

* Update keyboards/waterfowl/keymaps/cyanduck/keymap.c

* Update keyboards/waterfowl/rules.mk

* Update readme.md

* Update keyboards/waterfowl/waterfowl.c

* Update keyboards/waterfowl/info.json

* Update keyboards/waterfowl/info.json
2022-07-19 08:43:19 -07:00
QMK Bot
d458df7698 Merge remote-tracking branch 'origin/master' into develop 2022-07-19 10:29:44 +00:00
takashicompany
819231afe1 Add keymap for Radialex (#17662)
* fix keymap

* fix keymaps
2022-07-19 11:28:45 +01:00
QMK Bot
7a10c3370f Merge remote-tracking branch 'origin/master' into develop 2022-07-19 10:14:23 +00:00
David Hoelscher
1bf95d60e4 [Keyboard] customMK EVO70 (#14907)
* added files for EVO70

* updated info.json and readme

* ran qmk lint and fixed typo in info.json

* removed defines from config.h in favor of info.json

* removed an unnecssary include

* removed unnecessary code

* updated rules.mk to remove mention of Bluetooth

* corrected edit to rules.mk

* added code for OLED menu display

* removed extraneous comments and spaces

* added bongo cat animation

* Update keyboards/custommk/evo70/rules.mk

* Update keyboards/custommk/evo70/config.h

* Modified Bongocat graphics to match original proportions

* updated info.json device version

* updated OLED splash screen display timing

* improved bongo cat tap detection and added backlight breathing to OLED menu

* various improvements to OLED, saving settings, and VIA keymap fix

* removed extraneous define

* custom encoder assignment retained upon powerup, backlight sleep upon suspend

* corrected bongo cat tap detection

* Changed splash screen and bongo cat encoder rotation to use the custom assignments

* removed _default from LAYOUT naming and changed keyboard image to be hosted from imgur

* Force smaller version of image to be used in readme
2022-07-19 03:13:16 -07:00
Nick Brassel
1cdde7ba6a Fix AVR compilation of FNV by using standard integer typenames. (#17716) 2022-07-19 05:30:01 +01:00
jack
59c7b15b4d [Keyboard] boardsource/microdox data driven (#17675) 2022-07-18 19:20:24 -07:00
QMK Bot
e8b14a52de Merge remote-tracking branch 'origin/master' into develop 2022-07-19 02:09:38 +00:00
James Young
7aea67980b Update noroadsleft userspace and keymaps (2022-07-18) (#17714)
* kbdfans/kbd75/rev1:noroadsleft - remove LAYOUT_75_ansi_wkl definition

* coseyfannitutti/discipline:noroadsleft - change KC_GESC to KC_ESC

* update Quantum keycode instances in noroadsleft keymaps

- `RESET` -> `QK_BOOT`
- `EEP_RST` -> `EE_CLR`
- `DEBUG` -> `DB_TOGG`

* create and add G_PWD macro
2022-07-18 19:09:05 -07:00
Joel Challis
c3f1ba7dd1 Remove full bootmagic config (#17702) 2022-07-19 02:28:23 +01:00
QMK Bot
eabbc04213 Merge remote-tracking branch 'origin/master' into develop 2022-07-18 19:53:40 +00:00
Sergey Vlasov
627e35b7ac Remove Nixpkgs-provided poetry from the environment (#17673)
The `poetry` package from the used Nixpkgs snapshot triggers the regex
compatibility issue in Nix >= 2.10.0 binaries for `x86_64-darwin`:

    https://www.github.com/NixOS/nix/issues/4758

Remove the `poetry` package from the Nix shell environment for now
(it is not really required to compile QMK, only to develop the Nix shell
environment itself).

In addition, all `poetry` version earlier than 1.1.14 became effectively
non-functional after a breaking change of the PyPI JSON API:

    https://www.github.com/python-poetry/poetry/pull/5973

Updating the `poetry` package is not trivial (just adding it it to
`pyproject.toml` does not work due to dependency version conflicts with
other modules), therefore removing it seems to be the easiest solution
to restore compatibility with new Nix versions while not creating any
major inconvenience for QMK users.
2022-07-18 22:52:55 +03:00
QMK Bot
0e4f953976 Merge remote-tracking branch 'origin/master' into develop 2022-07-18 12:20:54 +00:00
Jason Wihardja
c10d0fc785 Add Support for Massdrop's Stack Overflow The Key V2 (#17696)
* Default Factory Settings

* Change Keyboard Name in Readme

* Fix LED Orders

* Change Brightness Step

* Enable Lighting Layers

* Add RGB Control Mode

* Unblink Layer to Clear Stack

* Add MacOS RGB Control

* Comment Fixes
2022-07-18 13:20:19 +01:00
QMK Bot
11cfc8a0b6 Merge remote-tracking branch 'origin/master' into develop 2022-07-18 12:18:48 +00:00
Runheme
4be736c192 [Keyboard]modify ginkgo65hot (#17705)
modify ginkgo65hot
2022-07-18 13:18:08 +01:00
Joel Challis
42eff8c372 Allow dynamic keymap to compile without via.h (#17703) 2022-07-18 11:55:27 +01:00
QMK Bot
32cc8a7f43 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 23:56:05 +00:00
Kyle McCreery
a444ccd27c Re-refactor Mokulua (#17125)
* allowing the kt60 file to be modified so I can do things while waiting for it to be fixed upstream

* initial commit for mokulua keyboard

* Split the board into mirrored and standard layouts.

* Prepping for PR. Silly keymap added.

* prepped for PR

* Apply suggestions from code review

* Fixing firmware from the refactor that removed the mirrored layout.

* Small tweaks using changes from refactor

* Changed the name of the layouts back to match the original to resolve conflict in info.json

* these files needed to be removed as well, they were added as a part of the refactor

* info.json moveds to be different for each build

* Another file had to be removed and the mirrored.c file changed to call mirrored.h instead of standard.h

* fixing chibios ver

* force deleting to revert

* fixing chibios shit

* Update keyboards/mechwild/mokulua/mirrored/mirrored.c

* Update keyboards/mechwild/mokulua/standard/standard.c

* Removing tabs and replacing with 4 spaces. Small style and formatting changes.
2022-07-17 16:55:32 -07:00
Stefan Kerkmann
a304a9b51e Use correct angle tune range of +/-127 on PMW33XX (#17708)
...partially reverts 580bcff4f6 as the
datasheet doesn't claim that the angle tuning as limited to +/- 30
degrees.
2022-07-17 21:08:55 +02:00
QMK Bot
4779539543 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 16:50:28 +00:00
David Kühling
931c7539d2 [Keyboard] Handwired Maltron DQz11N1G contoured keyboard (#17237)
* Basic support for Maltron DQz11N1G controller replacement.

* Update keyboards/handwired/dqz11n1g/rules.mk

* Rehost images to cubeupload.com.

(They were previously hosted via github wiki)

* Apply suggestions from noroadsleft code review

* Update keyboards/handwired/dqz11n1g/dqz11n1g.h
2022-07-17 09:49:36 -07:00
QMK Bot
4f7be48758 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 16:36:02 +00:00
Richard
747b33cb81 [Keyboard] Adding chocV keyboard (#15921)
* Adding chocV keyboard

* Fix checklist issues / community layout support

* Remove template cruft from readme

* Fix image url in readme

* Fix image url in readme to raw github content

* Change readme example to use default Keymap

* Remove vestigal config

* More informative keymap readme

* Config.h swapsies

* Remove deprecated features

* Conform / Modernize Rules

* Conform / Modernize Rules

* Clean up spacing

* Update keyboards/chocv/readme.md

Move build docs links to end 👍
2022-07-17 09:35:09 -07:00
QMK Bot
96c92d208f Merge remote-tracking branch 'origin/master' into develop 2022-07-17 16:25:12 +00:00
mechlovin
6025df79b3 [Keyboard] Add Zed60 PCB (#17304)
* add zed60

* update readme.md

* Delete chconf.h

* update readme.md

* Update keyboards/mechlovin/zed60/rules.mk

* Update keyboards/mechlovin/zed60/keymaps/via/keymap.c

* Update keyboards/mechlovin/zed60/keymaps/default/keymap.c

* Update keyboards/mechlovin/zed60/keymaps/default/keymap.c

* Update keyboards/mechlovin/zed60/keymaps/via/keymap.c

* Update keyboards/mechlovin/zed60/keymaps/via/keymap.c

* Update keyboards/mechlovin/zed60/keymaps/via/keymap.c

* Update keyboards/mechlovin/zed60/config.h

* Update keyboards/mechlovin/zed60/config.h

* Update keyboards/mechlovin/zed60/info.json

* Update keyboards/mechlovin/zed60/readme.md

* Update keyboards/mechlovin/zed60/info.json

* Update keyboards/mechlovin/zed60/zed60.h
2022-07-17 09:24:28 -07:00
QMK Bot
a1fb1405e4 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 12:03:31 +00:00
Joel Challis
37cd5ad810 Remove full bootmagic config (#17701) 2022-07-17 13:02:56 +01:00
QMK Bot
859c1a6fc9 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 07:18:04 +00:00
Jens-Petter Sandvik
4e5cc3c2ba Planck swap hand matrix for rev6, fixing issue #17388 (#17389)
* Add correct hand_swap_config matrix for planck_rev6 and planck_rev6_drop

* Make sure indentations are consistent

* Make the rev6 hand_swap_config matrix the default, also correct for ez.

* Move hand_swap_config matrix from planck.c to revision subdirectories
2022-07-17 00:17:22 -07:00
QMK Bot
54be228882 Merge remote-tracking branch 'origin/master' into develop 2022-07-17 00:32:15 +00:00
Teimor Epstein
28f9def219 [Keymap] teimor keymap for Keychron Q1 (#16396)
* teimor keymap

* quickfix and cleanup

* update readme

* quickfix and cleanup before pr

* clang

* clean layout

* add reset

* pr fix

* fix pr

* Rename README.md to readme.md
2022-07-16 17:31:21 -07:00
QMK Bot
06e93a8f5c Merge remote-tracking branch 'origin/master' into develop 2022-07-16 19:48:33 +00:00
Brian
05f6838f37 [Keymap] Added Layout Keymaps for BriianPowell (#17310)
* Keymaps for Gentleman65 and Discipline

* Apply suggestions from code review

* Update keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c

* More custom configuration for Gentleman65

* Completed Gentleman65 Layout (for now)
2022-07-16 12:47:28 -07:00
QMK Bot
e50b1d33f3 Merge remote-tracking branch 'origin/master' into develop 2022-07-16 19:39:00 +00:00
HorrorTroll
92c3e6305b [Keyboard] Gopolar GG86 (#15425)
* Added keyboard GG86

* Rebased, resolved issue and updated code

* Delete 1000Hz on config

* Resolved fix

* Another resolved fix

* Last resolved fix

* Fixed LED position
2022-07-16 12:38:22 -07:00
QMK Bot
de545b8e21 Merge remote-tracking branch 'origin/master' into develop 2022-07-16 19:04:10 +00:00
ymlmkb
4d443d921b [Keyboard] KeebMonkey KBMG68 (#15909)
* added KeebMonkey KBMG68.

* Update keyboards/keebmonkey/kbmg68/config.h

* changes requested by fauxpark .

* Apply suggestions from code review

changes suggested by fauxpark

* Update readme.md

changes requested by fauxpark

* Apply suggestions from code review

changes requested by noroadsleft.

* Apply suggestions from code review per fauxpark
2022-07-16 12:03:39 -07:00
QMK Bot
9fa14655df Merge remote-tracking branch 'origin/master' into develop 2022-07-16 18:39:27 +00:00
bri
847cca541c Add .orig to .gitignore (#17626) 2022-07-17 04:38:56 +10:00
Stefan Kerkmann
580bcff4f6 Use correct angle tune range of +/-30 on PMW33XX (#17693)
Co-authored-by: Daniel Kao <daniel.m.kao@gmail.com>

Co-authored-by: Daniel Kao <daniel.m.kao@gmail.com>
2022-07-16 11:33:18 +02:00
QMK Bot
f5e16f94d5 Merge remote-tracking branch 'origin/master' into develop 2022-07-16 07:29:50 +00:00
Allen Choi
9cdccb12d1 [Keymap] Crkbd/thunderbird2086 (#16973)
* crkbd:thunderbird2086

* readme

* after code review

* coding format

* minor change

* changed file name

* correct image

* updated readme

* using query to get rgb status

* minor update
2022-07-16 00:29:09 -07:00
QMK Bot
c8ce87e044 Merge remote-tracking branch 'origin/master' into develop 2022-07-16 06:49:24 +00:00
James Young
66983f090c Suavity Ehan Refactor (#17694)
* info.json: apply friendly formatting, phase 1

* info.json: fix macro reference and layout

* info.json: apply friendly formatting, phase 2

Add key labels.

* refactor keymaps and layout macro

- apply four-space indent
- apply grid alignment to keycodes, matrix position identifiers, and matrix

* add LAYOUT_all

* ehan.h: add matrix diagram

* rename LAYOUT_ansi_default to LAYOUT_ansi_split_bs_rshift_lspace

* ehan.h: correct K3E position in LAYOUT_ansi_split_bs_rshift_lspace

Move location K3E to actually be on Column 14 (E); was previously on Column 13 (D) in source..

* add LAYOUT_iso_split_bs_rshift_lspace

Includes reference keymap.
2022-07-15 23:48:35 -07:00
QMK Bot
abdca8847d Merge remote-tracking branch 'origin/master' into develop 2022-07-16 05:21:50 +00:00
Wilfrid Li
1f93485aef feat(keebwerk): added VIA support keymap for keebwerk nano slider (#16761)
* feat(keebwerk): added VIA support keymap for keebwerk nano slider

Added VIA support for keebwerk nano slider, VIA json is keebwerk_nano_via.json
Fixed midi2vol keymap where comma symbol is missing from enum "custom_layers"

* feat(keebwerk): removed VIA json as requested

* Update keyboards/keebwerk/nano_slider/keymaps/via/keymap.c

* Update keyboards/keebwerk/nano_slider/keymaps/via/keymap.c

* Fix(PR): removed file as requested
2022-07-15 22:21:15 -07:00
QMK Bot
c84f68d4c8 Merge remote-tracking branch 'origin/master' into develop 2022-07-16 05:16:47 +00:00
James Young
303992da70 FJLabs Solanis Refactor (#17686)
* solanis.h: add matrix diagram

* refactor keymaps: apply grid alignment

* refactor LAYOUT_all macro

Moves the matrix position identifier for the right half of Split Backspace to the number row.
2022-07-15 22:16:14 -07:00
QMK Bot
82f806b1ab Merge remote-tracking branch 'origin/master' into develop 2022-07-16 01:02:25 +00:00
projectcain
f5333e9136 [Keyboard] add ProjectCain Relic (#15577)
* Adding relic keyboard

* Update keyboards/projectcain/relic/relic.c

* Update keyboards/projectcain/relic/relic.c

* Update keyboards/projectcain/relic/rules.mk

* Update keyboards/projectcain/relic/rules.mk

* Update keyboards/projectcain/relic/rules.mk

* Update config.h

* Update config.h

* Update keyboards/projectcain/relic/rules.mk

* Update keyboards/projectcain/relic/readme.md

* Update keyboards/projectcain/relic/info.json

* Update keyboards/projectcain/relic/config.h

* Update keyboards/projectcain/relic/config.h
2022-07-15 18:01:52 -07:00
QMK Bot
38cd3684e1 Merge remote-tracking branch 'origin/master' into develop 2022-07-15 21:07:17 +00:00
Henry Lum
ba4ba66b2f [Keyboard] eHan Keyboard (#15861)
* Compiled Suavity QMK Directory

* updated info.json's name from 'LAYOUT_default' to 'LAYOUT_default_split'

* updated rules.mk to reflect new layout name of each keymap

* Updated hanjie.h to reflect physical matrix of PCB

* switched info.json key matrix from split backspace to 2U backspace to better reflect electrical matrix

* updated keymap.c key matrix to reflect PCB electrical matrix

* updated keymap.c key matrix t oreflect PCB electrical matrix

* removed split left shift from physical matrix for default_split layout

* removed split left shift physical & electrical default_split layout

* removed split left shift from physical matrix for default_split layout

* removed split left shift from physical matrix for default_split layout

* updated qmk and via keymap.c and hanjie.h files to reflect pcb electrical matrix

* changed diode direction from row2col to col2row

* fixed false keycode triggers

* updated via keymaps

* added 's'

* added ehan branch for development

* updated readme.md

* updated ehan.h

* updated readme.md

* updated ehan.h layout

* added keymap.c and updated ehan.h

* progress

* compiled qmk

* updated matrix column and row pin out

* updated QMK default ansi keymap

* added VIA ansi_default keymaps

* corrected col 15's pin out to be pin B9, not C13

* Update keyboards/suavity/ehan/config.h

* Update keyboards/suavity/ehan/info.json

* Update keyboards/suavity/ehan/rules.mk

* Update keyboards/suavity/hanjie/rules.mk

* Update keyboards/suavity/hanjie/rules.mk

* Update keyboards/suavity/hanjie/keymaps/via/rules.mk

* Update keyboards/suavity/ehan/rules.mk

* changed readme.md's picturefrom html to markdown

* updated traces & diode placement

* Apply suggestions from code review

Remove trailing backslashes from keymaps (per fauxpark)

* Apply suggestions from code review

Remove `BOOTMAGIC_ENABLE = lite` from `keyboards/suavity/ehan/keymaps/via/rules.mk`

(per fauxpark)

* Apply suggestions from code review

Update formatting of `keyboards/suavity/ehan/rules.mk`

(per fauxpark)

* Update keyboards/suavity/ehan/readme.md

Fix image URL

* Update keyboards/suavity/ehan/config.h

Remove trailing comma in MATRIX_COL_PINS definition
2022-07-15 14:06:19 -07:00
QMK Bot
ce2dbe17b5 Merge remote-tracking branch 'origin/master' into develop 2022-07-15 08:57:19 +00:00
Evelien Dekkers
09b0d3e0ed Move ins, home and pgup keys to the left (#17690) 2022-07-15 09:56:06 +01:00
QMK Bot
c79818e703 Merge remote-tracking branch 'origin/master' into develop 2022-07-15 06:12:57 +00:00
Elliot Patros
0ececbcdb7 [Keymap] emp keymap for keebio/iris (#16858)
* added new layout for keebio/iris

* Update keyboards/keebio/iris/keymaps/emp/config.h

* Update keyboards/keebio/iris/keymaps/emp/keymap.c

Replace #defines with enum

* Update keyboards/keebio/iris/keymaps/emp/keymap.c

Made requested changes about formatting and the license.

* Update config.h

Cleaned up formatting

* Update keyboards/keebio/iris/keymaps/emp/keymap.c

Small changes to improve readability:
* changed whitespace in license
* added more whitespace around if/else blocks
* fixed bracket style in places
2022-07-14 23:11:44 -07:00
QMK Bot
64d2097a27 Merge remote-tracking branch 'origin/master' into develop 2022-07-15 02:58:03 +00:00
Joel Challis
3c6765b21c Ignore kbfirmware exports (#17687) 2022-07-15 03:57:34 +01:00
QMK Bot
f54a55dcfe Merge remote-tracking branch 'origin/master' into develop 2022-07-15 02:53:09 +00:00
Sam
16c91e0cf2 [Keyboard] Added TutelPad keyboard (#16975)
* TutelPad firmware v1.0

* Added VIA compatibility

* Update keyboards/0xcb/tutelpad/config.h

* Update keyboards/0xcb/tutelpad/keymaps/via/keymap.c

* Update keyboards/0xcb/tutelpad/keymaps/via/keymap.c

* Update keyboards/0xcb/tutelpad/keymaps/via/keymap.c

* Add new OLED image, implement suggested fixes

* Update keyboards/0xcb/tutelpad/rules.mk

* Update keyboards/0xcb/tutelpad/rules.mk
2022-07-14 19:52:39 -07:00
QMK Bot
15c09335e9 Merge remote-tracking branch 'origin/master' into develop 2022-07-15 02:45:47 +00:00
Will Winder
807620fa3c [Keyboard] Add Chocofly v1 (#17289)
* [Keyboard] Add Chocofly v1

* PR Feedback

* Small change to keymap.

* Replace KC__VOLUP and KC__VOLDOWN with single underscore version.

* Apply suggestions from code review

* Required for my PC

* Required for my PC
2022-07-14 19:45:08 -07:00
QMK Bot
7501523e1f Merge remote-tracking branch 'origin/master' into develop 2022-07-14 21:52:10 +00:00
James Young
be56817743 KB16-01: correct QMK Configurator key sequence (#17670) 2022-07-14 14:51:25 -07:00
QMK Bot
d547c0bea7 Merge remote-tracking branch 'origin/master' into develop 2022-07-14 21:32:20 +00:00
James Young
2d7de91888 Nayeon Community Layout support (#17665)
* Nayeon Community Layout support

- macro `LAYOUT_ansi` renamed to  `LAYOUT_tkl_f13_ansi_tsangan`
- macro `LAYOUT_iso` renamed to  `LAYOUT_tkl_f13_iso_tsangan`
- Community Layout support enabled in `rules.mk`

* add LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift

* add LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift

* info.json: update maintainer field

Field is meant to reference the GitHub username of the maintainer.
2022-07-14 14:31:37 -07:00
QMK Bot
8ee42cd6c4 Merge remote-tracking branch 'origin/master' into develop 2022-07-14 13:09:37 +00:00
Drashna Jaelre
67f9777b8f [Keyboard] Fix Tractyl Manuform 4x6 json (#17681) 2022-07-14 06:08:54 -07:00
Albert Y
2f73e65837 Add LED limit call (#17679) 2022-07-14 12:37:47 +01:00
Albert Y
1862ac5454 Fix the use of LED limits (#17678) 2022-07-14 12:36:51 +01:00
QMK Bot
da4689d6b5 Merge remote-tracking branch 'origin/master' into develop 2022-07-14 11:23:09 +00:00
Albert Y
300dab7962 [Code] Add solid reactive gradient mode (#17228) 2022-07-14 12:22:53 +01:00
Albert Y
2efad277ee [Keyboard] Readme file correction (#17674) 2022-07-14 12:22:31 +01:00
Stefan Kerkmann
3c58f98929 [Core] PMW33XX drivers overhaul (#17613)
* PMW33XX drivers overhaul

This combines the PMW3389 and PM3360 drivers as they only differ in the
firmware blobs and CPI get and set functions. The following changes have
been made:

* PMW3389 now gets the same multi-sensor feature that is already available on the
  PMW3360.

* Introduced a shared pmw33xx_report_t struct is now directly readable via SPI
  transactions instead of individual byte-sized reads, saving multiple
  copies and bitshift operations.

* pmw33(89/60)_get_report functions had unreachable branches in their motion
  detection logic these have been simplied as much as possible.

* The fast firmware upload option has been removed as this becomes obsolete by
  the newly introduced polled waiting functions for ChibiOS polled waiting

* PMW33(60/89)_SPI_LSBFIRST and PMW33(60/89)_SPI_MODE config options
  have been removed as they don't need to be configurable.

* All PMW3389 and PMW3360 defines have been unified to a PMW33XX prefix
  to reduce code duplication and make the defines interchangeable

* Adjust keyboards to PMW33XX naming scheme
2022-07-14 11:50:00 +02:00
QMK Bot
82685fc2ac Merge remote-tracking branch 'origin/master' into develop 2022-07-14 06:35:34 +00:00
James Young
928be32c83 KPrepublic BM80v2 ISO Refactor (#17660)
* bm80v2_iso.h: convert tabs to spaces

* bm80v2_iso.h: use ___ for KC_NO

* bm80v2_iso.h: use QMK 3-character notation

* refactor macro for tkl_iso Community Layout compatibility

- move the matrix position identifier for Enter to the home row

* info.json: correct layout data

* rules.mk: tidy-up formatting

* readme.md: tidy-up formatting

* update maintainer; re-assign copyright

* assign ISO-appropriate keycodes in keymaps
2022-07-13 23:34:51 -07:00
QMK Bot
9b04e9be04 Merge remote-tracking branch 'origin/master' into develop 2022-07-14 06:27:11 +00:00
Kyle McCreery
acc11f4941 [Keyboard] MechWild BB Steno (#17163)
* allowing the kt60 file to be modified so I can do things while waiting for it to be fixed upstream

* Initial commit

* testing modes

* working on puckbuddy firmware. This is all working for now but need to clean it up and personalize it.

* needs to be updated from vial build

* prepping for PR

* added rgb mode cycling to fn1 since it isn't on the encoder for these maps

* shipping firmware built. Need to clean up readme and info.json layout

* removing puckbuddy files from this branch

* readme done, prepping for PR

* info.json updated prepping for PR

* Restore cirque driver that was modified from puckbuddy testing on this branch

* applying changes from review

* Update keyboards/mechwild/bbs/bbs.c

* Fixed info.json

* Apply suggestions from code review
2022-07-13 23:26:13 -07:00
QMK Bot
633df1f365 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 22:25:18 +00:00
wangfuco
99e9e1b8e7 [Keyboard] Modelm101 teensy2 (#16805)
* Add modelm101_teensy2 files from modelm101

* Change info.json

* Update README.md

* Update pin def

* Fix file name

* Update readme.md

* Delete config.h

* Apply suggestions from code review

* Update keyboards/converter/modelm101_teensy2/config.h

* Delete keyboards/converter/modelm101_teensy2/keymaps/iw0rm3r directory

* Delete .noci
2022-07-13 15:24:42 -07:00
QMK Bot
ce2ac433d9 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 20:58:40 +00:00
James Young
4ef0c8230c Ducky One 2 SF touch-up (#17672)
* info.json: correct JSON syntax error

* info.json: correct key sizes

* update readme files

Moves nearly all of the information about this keyboard to the 1967st version's readme, because this readme is exposed in QMK Configurator.

Also updates the readme to align more closely with QMK's keyboard readme template.

* info.json: update metadata

Updates the keyboard name and maintainer fields.
2022-07-13 21:57:55 +01:00
QMK Bot
2cdaa639ee Merge remote-tracking branch 'origin/master' into develop 2022-07-13 19:40:36 +00:00
James Young
f7510ca202 Gentoo & Gentoo Hotswap: correct Configurator key sequence errors (#17668)
* Gentoo info.json: apply friendly formatting

* Gentoo info.json: correct key sequence error

* Gentoo Hotswap info.json: apply friendly formatting

* Gentoo Hotswap info.json: correct key sequence error
2022-07-13 12:40:03 -07:00
James Young
6eac98286a Swift65 Hotswap: correct key sizes (#17666)
Corrects the key sizes on the bottom row (1.5-1-1.5-7 instead of 1.25-1.25-1.25-7.25).
2022-07-13 12:39:39 -07:00
Nick Brassel
dc70ba612a Post-bootloader EFL/SPI fixes. (#17661)
* Fixup read address for EFL driver.

* Fixup sequencing of SPI.

* Lock during init of EFL backing store.
2022-07-14 00:41:08 +10:00
QMK Bot
2a0d490eb3 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 08:12:12 +00:00
Drashna Jaelre
d98f309429 [Keyboard] Fix compilation issue for runes/skoldjr (#17659) 2022-07-13 01:11:24 -07:00
Drashna Jaelre
09e4001bba [Bug] Fix compile issue with LED Matrix (#17658) 2022-07-13 01:10:51 -07:00
QMK Bot
4b108f7689 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 08:05:22 +00:00
Yizhen Liu
acf114315e [Keyboard] Kprepublic bm80v2 iso issue resolved (#17657)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-13 01:04:42 -07:00
Drashna Jaelre
b21a52c824 Fix compilation issue with Cirque Guestures file (#17656) 2022-07-13 09:01:30 +02:00
QMK Bot
2468be889b Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:35:44 +00:00
jack
2a3cd98fc6 boardsource/technik_o data driven (#17635) 2022-07-13 06:35:06 +01:00
QMK Bot
bc385435a7 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:33:00 +00:00
jack
320219d5d8 boardsource/5x12 data driven (#17630) 2022-07-13 06:32:22 +01:00
QMK Bot
38c8fc9baf Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:32:19 +00:00
jack
63154631ab boardsource/4x12 data driven (#17629) 2022-07-13 06:31:43 +01:00
QMK Bot
0052b03ee0 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:25:36 +00:00
James Young
4f4e72e44c ID75 v2: update info.json (#17653) 2022-07-12 22:25:04 -07:00
jack
98312417b5 [Keyboard] boardsource/lulu data driven (#17638) 2022-07-12 22:20:38 -07:00
QMK Bot
068d5688d8 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:19:48 +00:00
jack
2271b28386 [Keyboard] boardsource/the_mark data driven (#17637) 2022-07-12 22:19:36 -07:00
QMK Bot
590c2342fc Merge remote-tracking branch 'origin/master' into develop 2022-07-13 05:19:25 +00:00
jack
f80bb4a517 [Keyboard] boardsource/technik_s data driven (#17636) 2022-07-12 22:19:17 -07:00
jack
b99ccd4f06 [Keyboard] boardsource/beiwagon data driven (#17631) 2022-07-12 22:18:53 -07:00
Drashna Jaelre
1dfe2bb49a Update LED/RGB Matrix flag function behavior (#17651) 2022-07-12 22:18:02 -07:00
QMK Bot
34fec2c07d Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:58:34 +00:00
Vicktor Hutama
5a126e1a74 [Keyboard] Add Runes Skjoldr (#17305)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-12 21:58:31 -07:00
jack
a991d65e87 [Keyboard] boardsource/3x4 data driven (#17628)
* initial

* change to development board

* replaced KC_TRNS & use rules.mk template
2022-07-12 21:58:04 -07:00
QMK Bot
018fad6b95 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:53:38 +00:00
Zach Rice
019bfc4159 [Keymap] Add RAOEUS keymap for the XD75 (#17456)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-12 21:52:52 -07:00
jack
8a1ca7f6b8 [Keyboard] boardsource/holiday/spooky data driven (#17632) 2022-07-12 21:47:32 -07:00
Nick Brassel
dfff040433 Allow MCU-specific overrides for SPI flags. (#17650) 2022-07-13 14:42:24 +10:00
QMK Bot
f9724dfa67 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:37:54 +00:00
James Young
e68de95214 KBDfans KBD67 rev2 Layout Patch (#17649) 2022-07-12 21:37:23 -07:00
QMK Bot
27dd4dc91e Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:31:57 +00:00
Cipulot
5bc81d3a63 [Keyboard] Add Kallos keyboard (#17461)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-12 21:31:17 -07:00
Daniel Kao
5db705d054 Cirque trackpad features: circular scroll, inertial cursor (#17482) 2022-07-12 21:17:40 -07:00
QMK Bot
904ec0ce78 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:11:08 +00:00
Yizhen Liu
7a090bb3df [Keyboard] Kprepublic bm80v2 iso revised (#17571)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-12 21:10:31 -07:00
QMK Bot
9d6a94cfb5 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 04:10:07 +00:00
AnthonyNguyen168
257fc042df [Keyboard] Update layout for MechBrewery series (#17570) 2022-07-12 21:09:37 -07:00
James Young
36c2575658 Grammar fixes for docs/feature_converters.md (#17652) 2022-07-13 04:58:16 +01:00
QMK Bot
6bb2ed68a8 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 03:51:07 +00:00
Drashna Jaelre
26954bbc28 [Docs] Add Encoder requirements to PR Checklist doc (#17634)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-07-12 20:50:26 -07:00
zvecr
82f0263e41 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 01:19:58 +01:00
Joel Challis
2a3dd95229 Add basic secure docs (#17577) 2022-07-13 00:06:19 +01:00
jack
ffb34fc082 Include stdint.h in avr/i2c_master.h (#17639) 2022-07-12 21:55:19 +02:00
Stefan Kerkmann
45ffe42f1a [Fix] Make ChibiOS _wait.h independent of quantum.h (#17645) 2022-07-12 21:54:33 +02:00
GloriousThrall
bbd6ea977c GMMK 2 WBG7 MCU compatibility (#16436)
* GMMK V2 QMK Compatibility

* fix problems

* Update keyboards/gmmk/gmmk2/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Fix a minor problem

* Optimize the code

* Update config.h

* Update

* Update config.h

* Update keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update config.h

* Update keyboards/gmmk/gmmk2/p96/iso/keymaps/via/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update config.h

* Update keyboards/gmmk/gmmk2/p65/ansi/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/p96/ansi/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/p96/iso/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/gmmk/gmmk2/p65/iso/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update config.h

* Update config.h

* Update config.h

* Modify device pid

* Add gmmk2_p96 keyboard.

* Add gmmk2_p96 keyboard.

* Update led matrix.

* Update led matrix.

* Delete eeprom_flash.c

* Update keyboards/gmmk/gmmk2/p96/ansi/rules.mk

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update from qmk develop branch

* Increased compatibility with wear_leveling.

* Update config.h

Co-authored-by: Joy <chang.li@westberrytech.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-07-12 17:30:54 +10:00
QMK Bot
a768ec265d Merge remote-tracking branch 'origin/master' into develop 2022-07-11 21:46:29 +00:00
Joel Challis
2714c70bd7 Fix layout macro for nightly_boards/paraluman (#17633) 2022-07-11 22:45:56 +01:00
QMK Bot
b78a7e42b1 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 21:15:45 +00:00
Danny
9a41a303cc [Keyboard] Add Quefrency Rev. 5 (#17503) 2022-07-11 14:14:55 -07:00
QMK Bot
85cdde1541 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 20:59:02 +00:00
Felix Jen
7c3b6c4bc4 [Keyboard] Add Swordfish keyboard (#17567) 2022-07-11 13:57:20 -07:00
FREEWING.JP
61df87ae2c Added Delay time dynamic keymap's macro feature (#16810)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-11 12:59:16 -07:00
QMK Bot
52e9ed75e8 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 19:47:42 +00:00
Alex Băluț
2bb0550707 [Keyboard] add kinesis/kintlc (#17301) 2022-07-11 12:46:51 -07:00
QMK Bot
51b7828540 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 18:54:26 +00:00
balloondogcaps
61a5059fc5 [Keyboard] TR90PM (#17060)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-11 11:53:51 -07:00
balloondogcaps
6663dd7288 [Keyboard] Add TR90 (#16838)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-11 11:53:25 -07:00
Stefan Kerkmann
3f5dc47296 [Core] Use polled waiting on ChibiOS platforms that support it (#17607)
* Use polled waiting on platforms that support it

Due to context switching overhead waiting a very short amount of time on
a sleeping thread is often not accurate and in fact not usable for timing
critical usage i.e. in a driver. Thus we use polled waiting for ranges
in the us range on platforms that support it instead. The fallback is
the thread sleeping mechanism.

This includes:

* ARM platforms with CYCCNT register (ARMv7, ARMv8) this is
  incremented at CPU clock frequency
* GD32VF103 RISC-V port with CSR_MCYCLE register this is incremented at
  CPU clock frequency
* RP2040 ARMv6 port which uses the integrated timer peripheral which is
  incremented with a fixed 1MHz frequency

* Use wait_us() instead of chSysPolledDelayX

...as it is powered by busy waiting now.

* Add chibios waiting methods test bench
2022-07-11 15:17:05 +02:00
QMK Bot
57021d6358 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 12:58:12 +00:00
Evelien Dekkers
61ce15f202 [Keyboard] Fin pad (#17523)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-11 05:57:39 -07:00
QMK Bot
5925ea3478 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 12:55:42 +00:00
Naphtaline
c8f969a3ce [Keyboard] kbdfans kbd67 rev 2 : add new LAYOUT_65_iso_split_bs (#16922)
* [Layout/Keymap] kbdfans kbd67 rev2 : add new LAYOUT_65_iso_split_bs and naphaline keymap as a working example

* Update keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/keymap.c

I do trust the reviewer, here goes the change :)

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove QMK custom keycodes 1/2

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Remove QMK custom keycodes 2/2

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-07-11 05:55:01 -07:00
QMK Bot
5e750cf039 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 12:52:03 +00:00
James Young
2dab029bcf Peej Rosaline Refactor (#17564) 2022-07-11 05:51:29 -07:00
Aidan Smith
7a73f9a6b3 [Keyboard] Add Fine!40 PCB Support (#17426)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-11 05:10:47 -07:00
QMK Bot
5e347f42a6 Merge remote-tracking branch 'origin/master' into develop 2022-07-11 11:31:19 +00:00
Joel Challis
5389f088b1 splitkb/kyria - Resolve CONVERT_TO_PROTON_C warnings (#17617) 2022-07-11 04:30:45 -07:00
QMK Bot
2e567150ea Merge remote-tracking branch 'origin/master' into develop 2022-07-11 11:23:48 +00:00
GG
16b837b35b [Keyboard] Add Promise87 (#17525) 2022-07-11 04:23:13 -07:00
Stefan Kerkmann
0348071810 Stabilize Half-duplex PIO split comms (#17612) 2022-07-11 04:05:04 -07:00
Joel Challis
35d78aa8a4 More DD encoder fixes (#17615) 2022-07-11 10:51:39 +01:00
QMK Bot
0bee7cbebe Merge remote-tracking branch 'origin/master' into develop 2022-07-10 22:45:26 +00:00
Joel Challis
a5eeee4ded Fix infinite recursion in checkerboards/quark_plus (#17616) 2022-07-10 23:44:56 +01:00
QMK Bot
a15e44cfb3 Merge remote-tracking branch 'origin/master' into develop 2022-07-09 17:27:37 +00:00
Joel Challis
2106acc24a merge/um80 - Fix WPM issues in configurator builds (#17608) 2022-07-09 18:26:48 +01:00
QMK Bot
39e1e27ea9 Merge remote-tracking branch 'origin/master' into develop 2022-07-09 12:33:33 +00:00
Nick Brassel
561c5e1d7a Add line to multibuild output log showing the actual build target. (#17606) 2022-07-09 22:32:43 +10:00
jpe230
13b2b93fb0 Add Adafruit Macropad (#17512) 2022-07-08 23:33:03 +01:00
QMK Bot
30f2556ae9 Merge remote-tracking branch 'origin/master' into develop 2022-07-08 21:50:28 +00:00
Dasky
06310e81e9 Allow only col or row pins for *_right extraction. (#17590) 2022-07-08 22:49:55 +01:00
Joel Challis
345e19f691 Add converter docs (#17593) 2022-07-08 22:49:16 +01:00
Joel Challis
81d317aa87 Fix rgbkb/sol/rev2 build issues (#17601) 2022-07-08 22:48:48 +01:00
QMK Bot
b0c3d61c17 Merge remote-tracking branch 'origin/master' into develop 2022-07-07 12:43:20 +00:00
Bartosz Nowak
e724801d33 [Keyboard] Clean up dactyl manuform unused files (#15890) 2022-07-07 05:42:28 -07:00
Stefan Kerkmann
643f6367a1 [Fix] Patches after printf library update (#17584)
* Add missing '(' to print_bin_reverse32 declaration
* Fix insufficient character buffers on satisfaction75
* Remove \0 character in format string and use corrected offset math
  instead on rocketboard 16
* Replace snprintf_ with snprintf for djinn
* Explicitly ignore format checks for tracktyl manuform that uses %b
  specifier
* Print properly escaped version string in command.c, as PRODUCT or
  other defines can contain constructs like 'Vendor keyboard 66%' which
  will be interpreted as a format specifier
2022-07-07 14:14:09 +02:00
Stefan Kerkmann
8224f62806 Make debounce() signal changes in the cooked matrix as return value (#17554) 2022-07-07 10:00:40 +02:00
Albert Y
cca5d35321 Update PM2040 I2C pins (#17578) 2022-07-07 09:33:11 +02:00
Stefan Kerkmann
d9bb189e25 [Core] Update mpaland/printf to eyalroz/printf fork (#16163)
mpaland printf implementation was abandoned in ~2019 and the fork by
eyalroz is now regarded to be the goto replacement of it. So this commit
incoporates the changes needed to use this fork in QMK.

Note that pointer ptrdiff_t is always supported since commit
51c90f93a97fdaef895783ecbe24569be0db7cb8
2022-07-07 09:27:50 +02:00
QMK Bot
8f086faf8a Merge remote-tracking branch 'origin/master' into develop 2022-07-07 05:44:58 +00:00
Zykrah
0d30565bb7 Fix/waka60 audio (#17561) 2022-07-06 22:44:21 -07:00
Joel Challis
744af003be Add kb2040 and sparkfun rp2040 converters (#17514) 2022-07-06 19:27:15 +01:00
Nick Brassel
29a2bac469 Fixup SPI. (#17534) 2022-07-05 22:41:35 +02:00
Nick Brassel
0e5d67145a Allow for keymaps array to be implemented in a file other than $(KEYMAP_C) (#17559) 2022-07-05 08:58:35 +10:00
QMK Bot
5cad58dfa9 Merge remote-tracking branch 'origin/master' into develop 2022-07-04 20:49:23 +00:00
James Young
75bc9e6496 TKL Community Layout Additions (#17563) 2022-07-04 13:48:44 -07:00
QMK Bot
d37db0c50c Merge remote-tracking branch 'origin/master' into develop 2022-07-03 23:41:36 +00:00
Joel Challis
8fa7b62011 Attempt to discourage manual MSYS install for new users (#17556) 2022-07-04 00:41:00 +01:00
QMK Bot
e68205db1b Merge remote-tracking branch 'origin/master' into develop 2022-07-03 21:25:42 +00:00
James Young
9a157a3a99 KP Republic BM60HSRGB_EC QMK Configurator and readme touch-up (#17541) 2022-07-03 14:25:29 -07:00
stanrc85
b7fee11e34 [Userspace] Add support for additional Mechlovin Adelais PCB version to my userspace (#17547) 2022-07-03 14:25:09 -07:00
QMK Bot
63474e2c17 Merge remote-tracking branch 'origin/master' into develop 2022-07-03 18:08:32 +00:00
李董睿煊
168a631720 Add support for MacroCat Keyboard (#17480) 2022-07-03 19:07:31 +01:00
QMK Bot
7d89dfe2dc Merge remote-tracking branch 'origin/master' into develop 2022-07-03 04:12:32 +00:00
James Young
d87d537b50 Remove dead space from Pierce QMK Configurator layout data (#17551) 2022-07-03 14:12:01 +10:00
QMK Bot
6154c184a8 Merge remote-tracking branch 'origin/master' into develop 2022-07-03 04:11:21 +00:00
jack
665feccca1 Fixup bounce/75 (#17548) 2022-07-03 14:10:51 +10:00
QMK Bot
e8c46fab96 Merge remote-tracking branch 'origin/master' into develop 2022-07-03 02:56:16 +00:00
Drashna Jaelre
1c43410e26 [Keymap] Updates to drashna Keymaps and Userspace (#17543) 2022-07-02 19:55:46 -07:00
QMK Bot
03909b8a3f Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:54:45 +00:00
duoshock
a3119385a4 Add keyboard 'UM-80' (#17035) 2022-07-03 00:54:15 +01:00
QMK Bot
2d5047a79c Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:43:38 +00:00
jack
c5215d4a06 initial (#17545) 2022-07-03 00:43:29 +01:00
moyi4681
4ba5102a50 add bounce keyboard (#17030) 2022-07-03 00:43:07 +01:00
QMK Bot
c8a78b1f04 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:38:39 +00:00
TW59420
f2d4424bb7 Add alicekk support (#17027) 2022-07-03 00:38:02 +01:00
nirim000
fb40abe2f2 Pca9505/6 driver (#17333) 2022-07-03 00:37:02 +01:00
QMK Bot
ce29cb0f10 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:15:32 +00:00
br
fbf3cbcd5c Added PLOOPY_DRAGSCROLL_H_INVERT (#17453) 2022-07-03 00:13:45 +01:00
QMK Bot
4d243e94fa Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:12:20 +00:00
James Young
71f9a07b0f 65% Community Layout Updates (#17476)
* update 65_ansi community layout keymap

- add license header
- add function layer

* update 65_ansi_blocker community layout keymap

- add license header
- add function layer

* update 65_ansi_blocker_split_bs community layout keymap

- add license header
- add function layer

* update 65_ansi_blocker_tsangan community layout keymap

- add license header
- add function layer
- remove trailing spaces in keymap readme

* add 65_ansi_blocker_tsangan_split_bs community layout keymap

* update 65_ansi_split_bs community layout keymap

- add license header
- add function layer

* update 65_iso community layout keymap

- add license header
- add function layer
- fix layout box drawing on Community Layout readme

* update 65_iso_blocker community layout keymap

- add license header
- add function layer
- fix layout box drawing on Community Layout readme

* update 65_iso_blocker_split_bs community layout keymap

- add license header
- add function layer
- fix layout box drawing on Community Layout readme

* add 65_iso_blocker_tsangan community layout keymap

* add 65_iso_blocker_tsangan_split_bs community layout keymap

* update 65_iso_split_bs community layout keymap

- add license header
- add function layer
- fix layout box drawing on Community Layout readme
2022-07-03 00:12:02 +01:00
yiancar
6a0814bb04 Update NK1 RGB animation defines (#17486) 2022-07-03 00:11:48 +01:00
QMK Bot
4b7c01c84b Merge remote-tracking branch 'origin/master' into develop 2022-07-02 23:11:36 +00:00
Ralph Bacolod
3ed4a7086e Update readme.md (#17489)
Fixed link to http://mkweb.bcgsc.ca/carpalx/?popular_alternatives
2022-07-03 00:10:30 +01:00
QMK Bot
8744d57578 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 22:19:13 +00:00
Andrew Kannan
43e33ba232 Add Gentoo Hotswap PCB to QMK (#17528) 2022-07-02 23:18:43 +01:00
QMK Bot
5f11d7b554 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 22:18:33 +00:00
Andrew Kannan
2011aec06f Add Gentoo Solderable PCB to QMK (#17527) 2022-07-02 23:17:53 +01:00
QMK Bot
ba1f184267 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 19:10:40 +00:00
stanrc85
bb1edf6676 [Userspace] Add Nasu to userspace code (#17524)
* Define Nasu indicator pins in userspace

* Add userspace indicator code to Nasu
2022-07-02 20:10:07 +01:00
QMK Bot
a41c5d8023 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 19:09:55 +00:00
Ciutadellla
4804b73540 Update info.json (#17530)
Change to correct keyboard name from reviung31 to reviung41
2022-07-02 20:09:21 +01:00
QMK Bot
6c7d549e31 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 18:10:05 +00:00
Evelien Dekkers
40d295abf6 [Keyboard] Add nt-650 (#17471)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-02 11:09:26 -07:00
QMK Bot
efd41fe9df Merge remote-tracking branch 'origin/master' into develop 2022-07-02 17:51:26 +00:00
James Young
18a1cbce75 Mikeneko 65 QMK Configurator touch-up and Community Layout Support (#17542)
* info.json: apply friendly formatting

* info.json: remove dead space from Configurator rendering

* rename LAYOUT_all to LAYOUT_65_ansi_blocker

* rules.mk: enable Community Layout support
2022-07-02 18:50:54 +01:00
Nick Brassel
f346c8400c Update ChibiOS-Contrib (#17540) 2022-07-03 00:47:28 +10:00
QMK Bot
36de989e6f Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:32:39 +00:00
James Young
9b8ae05796 Correct QMK Configurator layout data for Kin80 (#17526) 2022-07-03 00:32:09 +10:00
QMK Bot
b56edb5f11 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:23:42 +00:00
Nick Brassel
b9a6126518 Revert "[Keyboard]KPrepublic bm80v2 Keyboard ISO support " (#17537) 2022-07-03 00:23:21 +10:00
Nick Brassel
1b9491f8f3 Fixup builds for TzCI (#17538) 2022-07-03 00:23:08 +10:00
Nick Brassel
ea14a93718 Merge remote-tracking branch 'upstream/master' into develop 2022-07-03 00:16:33 +10:00
Ryan
ac5e6b6a3b Tentative Teensy 3.5 support (#14420)
* Tentative Teensy 3.5 support

* Set firmware format to .hex for ARM Teensys

* Got to "device descriptor failed" by comparing with Teensy 3.6 code

* Drop down to 96MHz...

* Bump back up to 120MHz
2022-07-03 00:12:45 +10:00
bruun-baer
5108d53169 Add a workman-miryoku hybrid keymap for the ferris sweep keyboard (#17511) 2022-07-03 00:11:53 +10:00
gourdo1
97dfdcb2bd [keymap] Update gourdo1 keymap for Q2 changes (#17398) 2022-07-03 00:11:26 +10:00
QMK Bot
11299b337b Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:10:26 +00:00
HorrorTroll
d694488e2e Added new keyboard KB16-01 (#17418) 2022-07-03 00:08:38 +10:00
Ryan
25033d5d9e MSYS2 install: use MinGW python-qmk package (#17302)
* MSYS2 install: use MinGW python-qmk package

* Add missing flashers

* Note VC Redist for manual install

* VC Redist no longer needed
2022-07-02 15:08:05 +01:00
QMK Bot
f083eb1a37 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:07:53 +00:00
IFo Hancroft
1cffe5b6ce My ErgoDox Keymap (finally perfected, I think) (#17208)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-03 00:06:23 +10:00
QMK Bot
61eca0c972 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:06:19 +00:00
TJ
7c64a2bcaa Add BigBoy macro pad (#16962)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-03 00:05:44 +10:00
QMK Bot
7de801ed9a Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:05:18 +00:00
Khairullah
81b7d6f67f [Keyboard] Add Support to Ducky One2 SF (#17260) 2022-07-03 00:04:46 +10:00
QMK Bot
3871c717da Merge remote-tracking branch 'origin/master' into develop 2022-07-02 14:01:44 +00:00
npspears
60ab61386e add rotary encoder support for Quark^2 (#17470) 2022-07-03 00:01:08 +10:00
Drashna Jaelre
0c74892e90 [Keyboard] Update Charybdis code for Extended Mouse reports (#17435) 2022-07-02 23:58:40 +10:00
QMK Bot
326d3ffad8 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 13:14:58 +00:00
Yizhen Liu
5ac71ef27a [Keyboard]KPrepublic bm80v2 Keyboard ANSI support (#17192)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 23:14:27 +10:00
QMK Bot
1bf67b808d Merge remote-tracking branch 'origin/master' into develop 2022-07-02 13:13:58 +00:00
Guilherme Bermêo
2aa4f7cf61 add crkbd/keymaps/bermeo (#17320)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 23:13:28 +10:00
QMK Bot
d9e311ad30 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 13:09:54 +00:00
zv0n
783d1cd458 [keyboard] annepro2 Add support for sticky keys (#17359) 2022-07-02 23:09:21 +10:00
QMK Bot
c1d9f9911c Merge remote-tracking branch 'origin/master' into develop 2022-07-02 13:08:54 +00:00
Nick Brassel
7e926f5c93 Cleanup post-#17314. (#17536) 2022-07-02 23:08:39 +10:00
Vega Deftwing
e25879e836 [keymap] Add tiny text, full width characters to Ergodone->Vega (#17427) 2022-07-02 23:08:18 +10:00
QMK Bot
414a387f22 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:53:52 +00:00
DeskDaily
d66b5db1d6 Added 3 new keyboards (#17314)
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2022-07-02 22:53:01 +10:00
QMK Bot
84d9996b6d Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:51:09 +00:00
Radliński Ignacy
5a727dbc6d feat(keymap): add keebio/iris/rev6/radlinskii keymap (#17216)
Co-authored-by: ignacy-radlinski <ignacy.radlinski@schibsted.com>
2022-07-02 22:50:31 +10:00
QMK Bot
a6faf3bc9e Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:49:52 +00:00
CoffeeIsLife
0365f640af Allow for RGB actions to take place on Keydown instead of Keyup (#16886)
* Allow for switch on keydown

* add docs
2022-07-02 22:49:49 +10:00
QMK Bot
fcc14b8838 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:49:19 +00:00
ripdog
4e35697e1a Add note about qmk doctor in newbs_flashing.md (#15688)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:48:44 +10:00
Vino Rodrigues
ec6875af56 [Keyboard] New IDOBAO ID63 (a.k.a. Denwir D60) (#17144)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:46:42 +10:00
QMK Bot
bf44fc81bd Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:44:27 +00:00
InonL
feea704da7 Added VIA support for Drop CTRL (#17336)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:42:45 +10:00
QMK Bot
5f16a4ec62 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:42:41 +00:00
Murali S
0c84dd6bdc Add keymaps for muralis and kuru (#17337)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Sree Vidya Sobha Dharmarajan <ssd@Srees-MacBook-Pro.local>
2022-07-02 22:42:13 +10:00
QMK Bot
fd883890af Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:41:39 +00:00
spooknik
3059d7883c Swift65 Hotswap Support (#16987)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Steven Phillips <steven.phillips.17@me.com>
2022-07-02 22:41:32 +10:00
QMK Bot
90ad47b1f2 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:41:05 +00:00
jpe230
07f6fba6de Add Jpe230 Preonic Keymap (#17331) 2022-07-02 22:40:24 +10:00
Minke Zhang
4a3e0ef9ab Add personal YMDK Split64 keymap (#16980)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:39:31 +10:00
QMK Bot
f996a4c5b7 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:38:02 +00:00
Jairo Ramírez Ávila
56ecc86482 Added oriaj3 keymap with Matrix RGB support for Kimiko keyboard. (#17103)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:37:29 +10:00
QMK Bot
6285a1c0d3 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:37:05 +00:00
Wolf Van Herreweghe
627f9321a8 Add base Ryujin firmware (#17187)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-07-02 22:36:32 +10:00
Vino Rodrigues
882eadd94d [Keyboard] IDOBAO ID67 code touch-ups and include factory keymap (#17231) 2022-07-02 22:35:37 +10:00
Vino Rodrigues
7a5f76d40a [Keyboard] IDOBAO ID87v2 code rewrite and include factory keymap (#17232) 2022-07-02 22:32:32 +10:00
Vino Rodrigues
4aca94d247 [Keyboard] IDOBAO ID80v3 code rewrite and include factory keymap (#17234) 2022-07-02 22:31:38 +10:00
QMK Bot
7a8a4b1938 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:21:26 +00:00
Nick Brassel
3b14383f48 Fix line endings. 2022-07-02 22:20:30 +10:00
-k
5699763d4c Update massdrop/alt:charlesrocket (#17297)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:19:35 +10:00
QMK Bot
5c5610074a Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:19:26 +00:00
jels
ac333016eb Add ATmega32u2 Support to HHKB (#17298) 2022-07-02 22:18:56 +10:00
QMK Bot
fa0aea2a5a Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:18:55 +00:00
David Kristoffersen
a80943579c [Keymap] Add prog_qgmlwb keymap (#16890) 2022-07-02 22:18:21 +10:00
QMK Bot
65832c0fc3 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:17:12 +00:00
Jean Bernard
ef633cf461 Added MS Sculpt ISO-layout conversion with STM32F401 (#17049) 2022-07-02 22:16:38 +10:00
Marek Wyborski
b8e8a20ca6 Improve ENCODER_DEFAULT_POS to recognize lost ticks (#16932) 2022-07-02 22:12:41 +10:00
Ryan
3ecb0a80af Feature-ify Send String (#17275) 2022-07-02 22:10:08 +10:00
QMK Bot
7e41eb0277 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:09:58 +00:00
Osamu Aoki
871eeae4ea PoC: Swap Escape and Caps (#16336) 2022-07-02 22:08:48 +10:00
foureight84
9c2505676c foureight84 keymap for sofle (#17246)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:08:13 +10:00
QMK Bot
c7d8adfeaa Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:08:11 +00:00
Will Winder
f03aec28fb [Keyboard] Add Avalanche v4 (#17288)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:07:35 +10:00
QMK Bot
5d711c89c3 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:07:22 +00:00
Yizhen Liu
c3ef70b9a6 [Keyboard]KPrepublic bm80v2 Keyboard ISO support (#17193)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 22:06:38 +10:00
QMK Bot
ca0a9d243c Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:03:45 +00:00
torkel104
8b78fac451 Fix keys being discarded after using the leader key (#17287) 2022-07-02 22:03:40 +10:00
Aidan Gauland
8c4a5f9ba2 Add lkbm keymap (#17218) 2022-07-02 22:03:11 +10:00
QMK Bot
08721b4125 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:00:37 +00:00
jack
ee26d3e77f Add Zsh note for tab complete (#17226) 2022-07-02 21:59:59 +10:00
QMK Bot
5d1bc92c64 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:58:55 +00:00
PixelSpaceStudio
a80461e264 Add pixelspace user space and capsule65i keyboard (#17235) 2022-07-02 21:58:00 +10:00
Jouke Witteveen
0112938140 Expose the time of the last change to the LED state (#17222) 2022-07-02 21:57:05 +10:00
mmccoyd
2af2c5e109 [Keyboard] Move/Rename to Hillside48, simplify default keymap (#17210)
Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>
2022-07-02 21:56:23 +10:00
QMK Bot
a7179b188d Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:55:42 +00:00
Watson
48721b20fc Updated revisions and added a keyboard (#16731)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: WestM <93159069+WestMProducts@users.noreply.github.com>
2022-07-02 21:55:10 +10:00
Joel Challis
59e28b8958 Add cli command to import keyboard|keymap|kbfirmware (#16668) 2022-07-02 21:50:09 +10:00
FREEWING.JP
9dc7b9d40c Added Wait time to sending each Keys for Dynamic Macros function (#16800)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-02 21:48:26 +10:00
QMK Bot
0856b36139 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:47:16 +00:00
anubhav dhiman
c725f6f768 Add new keyboard AT3 (#17431)
Co-authored-by: zvecr <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-02 21:46:29 +10:00
QMK Bot
c679decb2b Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:45:40 +00:00
spx01
2f11509465 spx01 keymap for the kbd67mkiirgb (#17012) 2022-07-02 21:44:58 +10:00
QMK Bot
6b21f8369e Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:44:07 +00:00
Nick Krichevsky
69f0fc5868 Add workaround to allow Sesame to work without atomic interactions (#17034) 2022-07-02 21:43:36 +10:00
QMK Bot
6f1eca9c7b Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:43:17 +00:00
Xelus22
f8a56cd638 [Keyboard] RS108 Addition (#16989) 2022-07-02 21:42:48 +10:00
QMK Bot
05074cbdf0 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:27:40 +00:00
Josh Hinnebusch
096db8c8ca Add LED backlight/indicator info to reference_info_json.md (#17010)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-02 21:27:34 +10:00
Gardego5
6fce400ef5 Ut47.2 gardego5 layout (#16955) 2022-07-02 21:27:08 +10:00
QMK Bot
a949d32072 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:26:57 +00:00
Manna Harbour
3842b15cf1 [Keymap] Update Miryoku (#16482) 2022-07-02 21:26:23 +10:00
QMK Bot
5d8b6847c7 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:23:33 +00:00
Daniil Iastremskii
f2f88bcfcc Add elephant42 keyboard (#14336) 2022-07-02 21:22:51 +10:00
Nick Brassel
a9af4c928e Merge remote-tracking branch 'upstream/master' into develop 2022-07-02 21:13:06 +10:00
Batuhan Baserdem
fd44341cbf Userspace and keymap update for user bbaserdem. (#14484) 2022-07-02 21:09:04 +10:00
QMK Bot
92c0b29be9 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:01:36 +00:00
Kan-Ru Chen
f439fe6055 HHKB YDKB Yang BT Controller (#15759)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-07-02 21:01:03 +10:00
QMK Bot
e3cad4045a Merge remote-tracking branch 'origin/master' into develop 2022-07-02 10:57:59 +00:00
Taeyoon Kim
0eab24be26 Adding 34keys layout for kprepublic bm40 keyboard. (#15974) 2022-07-02 20:57:12 +10:00
QMK Bot
93e657fa99 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 10:55:05 +00:00
moyi4681
578a3e3505 add baguette66 keyboard (#16429)
* add baguette66 keyboard

* Update keyboards/kbdfans/baguette66/soldered/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/kbdfans/baguette66/rgb/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-02 20:54:22 +10:00
Nick Brassel
5846b40f74 RP2040 emulated EEPROM. (#17519) 2022-07-02 15:18:50 +10:00
Nick Brassel
9f1c4f304d Fixup #17438 (#17533) 2022-07-02 14:29:45 +10:00
QMK Bot
3def7b98d4 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 03:23:21 +00:00
Nick Brassel
c8fbfca1b6 [QP] Explicit buffer alignment. (#17532) 2022-07-02 13:22:46 +10:00
Nick Brassel
b67ae67687 [QP] Add ILI9488 support. (#17438) 2022-07-02 13:20:45 +10:00
QMK Bot
d6c39490df Merge remote-tracking branch 'origin/master' into develop 2022-07-01 21:21:11 +00:00
Joel Challis
9d70162d53 Allow locate_keymap to handle DEFAULT_FOLDER (#17529) 2022-07-01 22:20:32 +01:00
QMK Bot
a61e549a31 Merge remote-tracking branch 'origin/master' into develop 2022-07-01 14:39:35 +00:00
Joel Challis
2757251218 Specify blackpill board files where relevant (#17521) 2022-07-01 15:38:57 +01:00
QMK Bot
dfb23456b1 Merge remote-tracking branch 'origin/master' into develop 2022-07-01 14:36:43 +00:00
Joel Challis
d978432812 Swap over F4x1 8MHz HSE boards over from blackpill board files (#17520) 2022-07-01 15:36:08 +01:00
QMK Bot
03630db506 Merge remote-tracking branch 'origin/master' into develop 2022-07-01 06:11:45 +00:00
yiancar
1e643ba1d1 [Keyboard] Nebula12b (#17308)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-06-30 23:11:13 -07:00
QMK Bot
5936e05a33 Merge remote-tracking branch 'origin/master' into develop 2022-07-01 03:02:42 +00:00
Jan Lindblom
38ca5e95e1 Adding Rev41lp keyboard (#15895)
* [keyboard] Add rev41lp

* [keymap] rev41lp: More layer, less clutter

* [keymap] rev41lp:whitespace cleanup

* [keymap] rev41lp: Remove outer shift & edit homerow timings

left-ctrl < left-shift
kc-enter < kc-sftent
lower + tab = grave
raise + tab = tilde

* Initial namnlos keymap for rev41lp.

* Updated according to PR checklist.

* Update keyboards/b_sides/rev41lp/config.h

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/rules.mk

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Update keyboards/b_sides/rev41lp/keymaps/default/keymap.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* Updated to fulfill PR checklist.

* Update keyboards/b_sides/rev41lp/info.json

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/keymaps/cyril/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/keymaps/cyril/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/b_sides/rev41lp/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/b_sides/rev41lp/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/b_sides/rev41lp/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/b_sides/rev41lp/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Adding picture.

* Rename README.md to readme.md

* Cleaning up in rules.mk.

* Moving en- and em-dash from dedicated keys.

* Readme fixup.

There was a typo in the title, also changed the description a little.

* Update keyboards/b_sides/rev41lp/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: cyril279 <cyril.x9@gmail.com>
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-07-01 13:02:07 +10:00
QMK Bot
2f2d3e9c7b Merge remote-tracking branch 'origin/master' into develop 2022-06-30 22:40:36 +00:00
James Young
f2f2a7ace9 Add missing QMK Configurator layout data for chlx str.merro60 (#17518)
* add LAYOUT_60_ansi_split_bs_rshift layout data

* add LAYOUT_60_iso layout data
2022-06-30 23:39:49 +01:00
Joel Challis
a98f69850f Also check /run/media/ for uf2 drives (#17517) 2022-06-30 23:29:56 +01:00
QMK Bot
e5a15f404d Merge remote-tracking branch 'origin/master' into develop 2022-06-30 19:10:51 +00:00
James Young
c1d4950938 Add QMK Configurator layout data for ADM42 rev4 (#17515) 2022-06-30 20:10:15 +01:00
Stefan Kerkmann
77d960cce3 Disable clang-format for stage2_bootloaders (#17516) 2022-06-30 20:07:54 +01:00
Stefan Kerkmann
d717396708 [Core] Add Raspberry Pi RP2040 support (#14877)
* Disable RESET keycode because of naming conflicts

* Add Pico SDK as submodule

* Add RP2040 build support to QMK

* Adjust USB endpoint structs for RP2040

* Add RP2040 bootloader and double-tap reset routine

* Add generic and pro micro RP2040 boards

* Add RP2040 onekey keyboard

* Add WS2812 PIO DMA enabled driver and documentation

Supports regular and open-drain output configuration. RP2040 GPIOs are
sadly not 5V tolerant, so this is a bit use-less or needs extra hardware
or you take the risk to fry your hardware.

* Adjust SIO Driver for RP2040

* Adjust I2C Driver for RP2040

* Adjust SPI Driver for RP2040

* Add PIO serial driver and documentation

* Add general RP2040 documentation

* Apply suggestions from code review

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-06-30 13:19:27 +02:00
jpe230
d206c1791e (develop)Keychron Q2: Enable support for WL EEPROM Driver (#17507) 2022-06-30 12:25:33 +10:00
jpe230
4f124574f1 (develop)AP2: Enable support for WL EEPROM Driver (#17506) 2022-06-30 11:07:43 +10:00
QMK Bot
fb05b491e7 Merge remote-tracking branch 'origin/master' into develop 2022-06-29 23:34:39 +00:00
Joel Challis
7326a0051b Allow module check to error out when piped to /dev/null (#17505) 2022-06-30 00:33:59 +01:00
Nick Brassel
34e244cecf Wear-leveling EEPROM drivers: embedded_flash, spi_flash, legacy (#17376) 2022-06-30 07:42:23 +10:00
ihatechoosingusernames
1204cbb7ea Update feature_split_keyboard.md to add extra detail about left and right matrices. (#17492) 2022-06-29 18:39:37 +10:00
Dasky
dcdc7290e5 RGB Matrix Heatmap - Skip positions with NO_LED (#17488) 2022-06-29 01:25:03 -07:00
QMK Bot
f7eb7926e8 Merge remote-tracking branch 'origin/master' into develop 2022-06-29 08:17:56 +00:00
Drashna Jaelre
74bec84740 [Bug] Fix 3 speed mousekey mode (#17500) 2022-06-29 01:16:31 -07:00
QMK Bot
0151f4c307 Merge remote-tracking branch 'origin/master' into develop 2022-06-29 06:45:13 +00:00
dependabot[bot]
88086a80b0 Bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.3.4 (#17497)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/JamesIves/github-pages-deploy-action) from 3.7.1 to 4.3.4.
- [Release notes](https://github.com/JamesIves/github-pages-deploy-action/releases)
- [Commits](https://github.com/JamesIves/github-pages-deploy-action/compare/3.7.1...v4.3.4)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-29 16:45:09 +10:00
dependabot[bot]
58f4e19503 Bump actions/checkout from 2 to 3 (#17496)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-29 16:44:54 +10:00
dependabot[bot]
b37a59a967 Bump peter-evans/create-pull-request from 3 to 4 (#17495)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-29 16:44:19 +10:00
QMK Bot
1f61fb33b4 Merge remote-tracking branch 'origin/master' into develop 2022-06-28 22:47:17 +00:00
Nick Brassel
2b094d4112 Enable dependabot for actions. 2022-06-29 08:46:47 +10:00
QMK Bot
2daad28ab1 Merge remote-tracking branch 'origin/master' into develop 2022-06-28 22:29:19 +00:00
QMK Bot
54383674db Merge remote-tracking branch 'origin/master' into develop 2022-06-28 22:14:09 +00:00
QMK Bot
33b62b6867 Merge remote-tracking branch 'origin/master' into develop 2022-06-26 22:59:06 +00:00
Nick Brassel
01ecf332ff Generic wear-leveling algorithm (#16996)
* Initial import of wear-leveling algorithm.

* Alignment.

* Docs tweaks.

* Lock/unlock.

* Update quantum/wear_leveling/wear_leveling_internal.h

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>

* More tests, fix issue with consolidation when unlocked.

* More tests.

* Review comments.

* Add plumbing for FNV1a.

* Another test checking that checksum mismatch clears the cache.

* Check that the write log still gets played back.

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-06-27 07:18:21 +10:00
Thomas Kriechbaumer
0d013a21e1 [Split] Verify Split Pointing Device config (#17481) 2022-06-26 09:15:25 -07:00
Thomas Kriechbaumer
01bc974365 improvements for Cirque Pinnacle trackpads (#17091) 2022-06-25 22:22:28 +02:00
QMK Bot
60cbb25148 Merge remote-tracking branch 'origin/master' into develop 2022-06-25 19:46:15 +00:00
QMK Bot
99614bd89a Merge remote-tracking branch 'origin/master' into develop 2022-06-25 19:41:30 +00:00
QMK Bot
e30cd0fa16 Merge remote-tracking branch 'origin/master' into develop 2022-06-25 19:35:17 +00:00
QMK Bot
c43e89bb4a Merge remote-tracking branch 'origin/master' into develop 2022-06-25 19:15:48 +00:00
QMK Bot
3c9f27e1c9 Merge remote-tracking branch 'origin/master' into develop 2022-06-24 22:03:10 +00:00
precondition
3b9e186019 Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms (#15674) 2022-06-24 12:40:09 +02:00
QMK Bot
0e60b3a620 Merge remote-tracking branch 'origin/master' into develop 2022-06-24 04:11:58 +00:00
precondition
7060cb7b26 Refactor steno and add STENO_PROTOCOL = [all|txbolt|geminipr] (#17065)
* Refactor steno into STENO_ENABLE_[ALL|GEMINI|BOLT]

* Update stenography documentation

* STENO_ENABLE_TXBOLT → STENO_ENABLE_BOLT

TXBOLT is a better name but BOLT is more consistent with the
pre-existing TX Bolt related constants, which all drop the "TX " prefix

* Comments

* STENO_ENABLE_[GEMINI|BOLT|ALL] → STENO_PROTOCOL = [geminipr|txbolt|all]

* Add note on lacking V-USB support

* Clear chord at the end of the switch(mode){send_steno_chord} block

* Return true if NOEVENT

* update_chord_xxx → add_xxx_key_to_chord

* Enable the defines for all the protocols if STENO_PROTOCOL = all

* Mention how to use `steno_set_mode`

* Set the default steno protocol to "all"

This is done so that existing keymaps invoking `steno_set_mode` don't
all suddenly break

* Add data driver equivalents for stenography feature

* Document format of serial steno packets

(Thanks dnaq)

* Add missing comma
2022-06-23 20:43:24 +02:00
SmugSam
2239527871 In honor of king terry (#17387) 2022-06-23 02:47:15 +01:00
QMK Bot
32792826a8 Merge remote-tracking branch 'origin/master' into develop 2022-06-23 01:26:43 +00:00
QMK Bot
25b5c2c538 Merge remote-tracking branch 'origin/master' into develop 2022-06-23 01:23:52 +00:00
Jamal Bouajjaj
d3858585ac Added global current to all other issi drivers who don't have it (#17448) 2022-06-23 02:16:39 +01:00
QMK Bot
a0f857b7a2 Merge remote-tracking branch 'origin/master' into develop 2022-06-23 01:16:12 +00:00
QMK Bot
2f9145c6ea Merge remote-tracking branch 'origin/master' into develop 2022-06-23 00:52:50 +00:00
QMK Bot
b02f178c06 Merge remote-tracking branch 'origin/master' into develop 2022-06-23 00:39:54 +00:00
Stefan Kerkmann
9aa9155e88 [Core] Mark GD32VF103 as ChibiOS-Contrib (#17444) 2022-06-23 08:37:40 +10:00
Kyle McCreery
eac0f6d4c9 Cirque Attenuation Setting (#17342) 2022-06-22 21:59:37 +02:00
QMK Bot
2e27eb318e Merge remote-tracking branch 'origin/master' into develop 2022-06-22 16:41:19 +00:00
QMK Bot
8ea9f13c67 Merge remote-tracking branch 'origin/master' into develop 2022-06-22 14:30:56 +00:00
QMK Bot
b450ffc5c6 Merge remote-tracking branch 'origin/master' into develop 2022-06-22 05:10:58 +00:00
QMK Bot
267864e42c Merge remote-tracking branch 'origin/master' into develop 2022-06-22 02:15:13 +00:00
QMK Bot
86bfd8195c Merge remote-tracking branch 'origin/master' into develop 2022-06-22 01:53:38 +00:00
Daniel Kao
608404f874 Fix AVR I2C master 1ms timeout (#17174)
* avr i2c_master: Fix 1ms timeout

i2c_start() produces a minimum time_slice of 1ms for use as timeout
value.
The timer granularity is 1ms, it is entirely possible for timer_count
to tick up immediately after the last timer read and falsely trigger
timeout with a '>= 1' comparison.

* avr/drivers/i2c_master: Use timer_elapsed()
2022-06-22 00:00:04 +02:00
Dasky
be42c5fb98 Fix RGB heatmap to use XY positions and use correct led limits (#17184)
* Fix RGB heatmap to use XY positions

* lower effect area limit and make configurable

* tidy up macro

* Fix triggering in both directions.

* add docs

* fix bug when decreasing value

* performance tweak
2022-06-21 10:53:34 -07:00
QMK Bot
2d7a2dfad0 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 15:50:58 +00:00
QMK Bot
65fcf951d3 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 12:23:46 +00:00
QMK Bot
d116cf5e9a Merge remote-tracking branch 'origin/master' into develop 2022-06-21 03:42:15 +00:00
QMK Bot
2b23ca876d Merge remote-tracking branch 'origin/master' into develop 2022-06-21 03:34:03 +00:00
QMK Bot
503b40e748 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 03:25:43 +00:00
QMK Bot
52c1517766 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 03:16:43 +00:00
Joel Challis
1a400d8644 Allow encoder config from info.json (#17295) 2022-06-20 20:15:06 -07:00
QMK Bot
4c39bad2e6 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 03:12:14 +00:00
QMK Bot
a6eeb930ae Merge remote-tracking branch 'origin/master' into develop 2022-06-21 02:24:10 +00:00
QMK Bot
3370e2b74d Merge remote-tracking branch 'origin/master' into develop 2022-06-21 02:23:27 +00:00
Nick Brassel
589e756e98 Fixup SPI mode 3 => 0 on tzarc/djinn. (#17440) 2022-06-21 10:56:47 +10:00
QMK Bot
2fb24c0298 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 00:53:03 +00:00
QMK Bot
93ee789387 Merge remote-tracking branch 'origin/master' into develop 2022-06-21 00:26:40 +00:00
Stefan Kerkmann
6a81cb44f2 [Fix] Fix compilation warning for non-split keebs after #17423 (#17439) 2022-06-21 09:31:20 +10:00
Stefan Kerkmann
2703ecc9e9 [BUG] Fix deadlocks on disconnected secondary half (#17423) 2022-06-21 08:24:53 +10:00
Dasky
62eaec52e0 Init eeconfig before reading handedness (#17256) 2022-06-20 15:31:27 +01:00
QMK Bot
36d60769f8 Merge remote-tracking branch 'origin/master' into develop 2022-06-20 04:21:32 +00:00
Jamal Bouajjaj
2bddffeaec IS31FL3737 Global Current Setting (#17420) 2022-06-19 14:32:37 -07:00
QMK Bot
4e3db51e92 Merge remote-tracking branch 'origin/master' into develop 2022-06-19 18:17:00 +00:00
Albert Y
c725b6bf89 [Core] Mouse key kinetic mode fix (#17176)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-19 11:15:55 -07:00
QMK Bot
d6eff188e9 Merge remote-tracking branch 'origin/master' into develop 2022-06-19 17:59:31 +00:00
QMK Bot
7f8886a1b7 Merge remote-tracking branch 'origin/master' into develop 2022-06-18 22:32:54 +00:00
Drashna Jaelre
0da6562c4d Make default layer size 16-bit (#15286)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-06-19 07:37:51 +10:00
QMK Bot
cfcd647b2e Merge remote-tracking branch 'origin/master' into develop 2022-06-18 07:34:32 +00:00
Joel Challis
17ec1650fd Additional schema fixes (#17414) 2022-06-18 15:30:46 +10:00
Yan-Fa Li
7b3ee1db8c Minor schema fixes (#14200)
Validating using AJV
2022-06-18 02:42:32 +01:00
Stefan Kerkmann
fe680a8568 [Core] Split ChibiOS usart split driver in protocol and hardware driver part (#16669) 2022-06-18 08:04:17 +10:00
Stefan Kerkmann
6d67e9df4b [Core] Allow usage of ChibiOS's SIO driver for split keyboards (#15907) 2022-06-17 22:06:44 +02:00
QMK Bot
e44604c256 Merge remote-tracking branch 'origin/master' into develop 2022-06-17 03:50:47 +00:00
QMK Bot
00872ea7e7 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 22:36:12 +00:00
QMK Bot
c251d88934 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 22:35:55 +00:00
QMK Bot
4610a6bf49 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 22:34:39 +00:00
Nick Brassel
999b91fbd9 SPI Bugfix for ChibiOS 21.11.1 -- also rollback AW20216 mode change issue. (#17371) 2022-06-17 08:03:38 +10:00
QMK Bot
9e35a1f617 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 21:46:41 +00:00
QMK Bot
4e8b864258 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 21:16:35 +00:00
QMK Bot
e312fa44e2 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 18:21:12 +00:00
precondition
0b1bed1d41 Use --exclude-from=.gitignore in place of --exclude-standard (#17399) 2022-06-16 11:20:12 -07:00
Ryan
ef80a1dd67 Update V-USB submodule (#17385) 2022-06-16 21:02:40 +10:00
Jouke Witteveen
050fa9062f tap-dance: Rename tests so that tap_dance is used consistently (#17396) 2022-06-16 08:05:27 +02:00
QMK Bot
fa9ecc431d Merge remote-tracking branch 'origin/master' into develop 2022-06-16 02:08:34 +00:00
QMK Bot
cac5f96275 Merge remote-tracking branch 'origin/master' into develop 2022-06-16 02:05:06 +00:00
Nick Brassel
fa8fb60279 Dump out the largest symbols in flash and in RAM. (#17397) 2022-06-16 09:55:15 +10:00
QMK Bot
589bdedc47 Merge remote-tracking branch 'origin/master' into develop 2022-06-15 21:44:32 +00:00
QMK Bot
6e10a80174 Merge remote-tracking branch 'origin/master' into develop 2022-06-15 20:31:47 +00:00
QMK Bot
c40af06871 Merge remote-tracking branch 'origin/master' into develop 2022-06-15 20:31:09 +00:00
QMK Bot
81d2218cee Merge remote-tracking branch 'origin/master' into develop 2022-06-15 00:14:34 +00:00
QMK Bot
85d84938cf Merge remote-tracking branch 'origin/master' into develop 2022-06-14 23:42:47 +00:00
QMK Bot
adf4c27db2 Merge remote-tracking branch 'origin/master' into develop 2022-06-14 23:32:38 +00:00
QMK Bot
4cde5c243b Merge remote-tracking branch 'origin/master' into develop 2022-06-14 13:55:32 +00:00
Joel Challis
87e1ff218d backlight|led 'on state' for DD configuration (#17383) 2022-06-14 12:30:31 +01:00
QMK Bot
2f4c7697a9 Merge remote-tracking branch 'origin/master' into develop 2022-06-14 10:16:16 +00:00
QMK Bot
84d3575fdb Merge remote-tracking branch 'origin/master' into develop 2022-06-14 10:13:29 +00:00
Jouke Witteveen
1706da9054 tap-dance: Restructure code and document in more detail (#16394) 2022-06-13 22:12:55 +02:00
QMK Bot
b17324498e Merge remote-tracking branch 'origin/master' into develop 2022-06-13 18:31:17 +00:00
QMK Bot
0c82aafb8a Merge remote-tracking branch 'origin/master' into develop 2022-06-13 05:15:12 +00:00
QMK Bot
577e9d89fa Merge remote-tracking branch 'origin/master' into develop 2022-06-13 01:16:03 +00:00
QMK Bot
d21ee22cc5 Merge remote-tracking branch 'origin/master' into develop 2022-06-13 01:06:36 +00:00
QMK Bot
5ba04d1204 Merge remote-tracking branch 'origin/master' into develop 2022-06-13 00:55:54 +00:00
QMK Bot
10345adaa5 Merge remote-tracking branch 'origin/master' into develop 2022-06-13 00:44:22 +00:00
Ryan
0d64038b73 Update LUFA submodule (#17368) 2022-06-13 09:17:24 +10:00
QMK Bot
d288121f21 Merge remote-tracking branch 'origin/master' into develop 2022-06-12 18:30:50 +00:00
QMK Bot
191c180644 Merge remote-tracking branch 'origin/master' into develop 2022-06-12 14:35:07 +00:00
QMK Bot
90765aaefd Merge remote-tracking branch 'origin/master' into develop 2022-06-12 10:47:53 +00:00
QMK Bot
0d991b8873 Merge remote-tracking branch 'origin/master' into develop 2022-06-11 18:25:28 +00:00
QMK Bot
1a7a6f313e Merge remote-tracking branch 'origin/master' into develop 2022-06-11 18:19:21 +00:00
Ryan
af6435d44d qmk doctor: show arch for macOS (#17356) 2022-06-11 19:10:09 +01:00
QMK Bot
5887bf7158 Merge remote-tracking branch 'origin/master' into develop 2022-06-11 17:53:14 +00:00
Drashna Jaelre
80034a847f Ensure that rgb+via compiles in all cases (#17355) 2022-06-10 22:01:46 -07:00
Dasky
568924c76c Add missing bracket for VIA brightness scaling (#17354) 2022-06-10 19:07:58 -07:00
yiancar
0fd08da806 Scale brigthness for VIA (#17352)
Co-authored-by: yiancar <yiancar@gmail.com>
2022-06-10 17:20:01 -07:00
QMK Bot
d05a1deb7c Merge remote-tracking branch 'origin/master' into develop 2022-06-10 22:24:58 +00:00
QMK Bot
6b838785b7 Merge remote-tracking branch 'origin/master' into develop 2022-06-10 10:45:24 +00:00
QMK Bot
97fc4f1b6a Merge remote-tracking branch 'origin/master' into develop 2022-06-10 07:46:24 +00:00
QMK Bot
738cec9bd5 Merge remote-tracking branch 'origin/master' into develop 2022-06-10 03:43:25 +00:00
QMK Bot
ef8a30250b Merge remote-tracking branch 'origin/master' into develop 2022-06-10 03:41:14 +00:00
QMK Bot
ed15a579a7 Merge remote-tracking branch 'origin/master' into develop 2022-06-10 03:26:21 +00:00
QMK Bot
c84d058c8b Merge remote-tracking branch 'origin/master' into develop 2022-06-10 01:16:19 +00:00
QMK Bot
e5e2cd94be Merge remote-tracking branch 'origin/master' into develop 2022-06-10 01:13:18 +00:00
QMK Bot
474b4083ae Merge remote-tracking branch 'origin/master' into develop 2022-06-09 20:02:58 +00:00
QMK Bot
c5f26b0e9a Merge remote-tracking branch 'origin/master' into develop 2022-06-09 18:54:04 +00:00
jack
d2abfaeacd Fixup Pimoroni trackball code (#17335) 2022-06-09 10:09:00 -07:00
Drashna Jaelre
0ab51ee29d Add support for large Mouse Reports (#16371)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-08 18:39:16 -07:00
QMK Bot
84944df6a6 Merge remote-tracking branch 'origin/master' into develop 2022-06-08 21:52:12 +00:00
QMK Bot
728f7308af Merge remote-tracking branch 'origin/master' into develop 2022-06-08 19:21:10 +00:00
QMK Bot
0e2009c669 Merge remote-tracking branch 'origin/master' into develop 2022-06-08 06:24:16 +00:00
QMK Bot
8a6fd0dc7e Merge remote-tracking branch 'origin/master' into develop 2022-06-08 01:48:42 +00:00
QMK Bot
1e1f387be7 Merge remote-tracking branch 'origin/master' into develop 2022-06-08 00:48:36 +00:00
Nick Brassel
1085500e89 Rework paths for eeprom locations. (#17326)
* Rework paths for eeprom locations.

* File relocation.

* Wrong file move.

* Fixup test paths.
2022-06-08 09:42:35 +10:00
QMK Bot
6df5fce073 Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:33:49 +00:00
QMK Bot
5141d6eeb1 Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:31:22 +00:00
QMK Bot
fe08bbc4a0 Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:30:09 +00:00
QMK Bot
da1c562ddf Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:28:46 +00:00
QMK Bot
36109a887a Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:23:09 +00:00
QMK Bot
b74509d4ae Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:15:24 +00:00
QMK Bot
9d226b92a8 Merge remote-tracking branch 'origin/master' into develop 2022-06-07 18:01:59 +00:00
QMK Bot
11836128fc Merge remote-tracking branch 'origin/master' into develop 2022-06-07 13:32:48 +00:00
QMK Bot
6f82647e8d Merge remote-tracking branch 'origin/master' into develop 2022-06-06 22:30:38 +00:00
Dasky
85b3b98570 Move SPLIT_HAND_PIN setup to split_pre_init (#17271)
* Move SPLIT_HAND_PIN setup to split_pre_init

* doppelganger should use old behaviour

* Add comment for future

Co-authored-by: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2022-06-06 01:33:32 +01:00
Stefan Kerkmann
e89478eb0f [Core] Update C standard to GNU11, C++ to GNU++14 (#17114) 2022-06-06 08:47:22 +10:00
QMK Bot
6221c86186 Merge remote-tracking branch 'origin/master' into develop 2022-06-05 19:06:37 +00:00
QMK Bot
d6402fe9fb Merge remote-tracking branch 'origin/master' into develop 2022-06-05 11:15:11 +02:00
Nick Brassel
08c556b78b Add keymap wrappers for introspection into the keymap. (#17229)
* Introspection handlers for keymaps.

* Renaming.
2022-06-05 10:26:02 +10:00
Xelus22
af84772a5f initial 24lc32a (#16990) 2022-06-04 01:53:24 +01:00
QMK Bot
b1a3f806f5 Merge remote-tracking branch 'origin/master' into develop 2022-06-04 00:45:35 +00:00
QMK Bot
bb324e5b3e Merge remote-tracking branch 'origin/master' into develop 2022-06-03 11:13:22 +00:00
QMK Bot
267f392237 Merge remote-tracking branch 'origin/master' into develop 2022-06-02 18:30:44 +00:00
QMK Bot
b94baa8bc3 Merge remote-tracking branch 'origin/master' into develop 2022-06-02 17:20:59 +00:00
QMK Bot
86e93d7654 Merge remote-tracking branch 'origin/master' into develop 2022-06-02 16:51:28 +00:00
QMK Bot
344b8410f7 Merge remote-tracking branch 'origin/master' into develop 2022-06-02 16:38:09 +00:00
QMK Bot
8bb2c66c88 Merge remote-tracking branch 'origin/master' into develop 2022-06-02 16:18:53 +00:00
QMK Bot
73bd3dff8c Merge remote-tracking branch 'origin/master' into develop 2022-06-02 13:03:13 +00:00
Dasky
af02baae78 Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (#17272)
* Switch SPLIT_USB_DETECT loop to uint16_t

* Add assertion
2022-06-01 00:10:05 +01:00
QMK Bot
f9e97fd3c3 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 21:38:36 +00:00
QMK Bot
38839a9105 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 11:32:26 +00:00
QMK Bot
6fdce80822 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 08:22:54 +00:00
Thomas Preisner
bbab8eb993 Make bootloader_jump for dualbank STM32 respect STM32_BOOTLOADER_DUAL_BANK_DELAY (#17178) 2022-05-30 23:20:10 -07:00
Andrew Dunai
ecce9900c9 Improve PS/2 mouse performance (#17111) 2022-05-30 23:15:17 -07:00
precondition
d44a950c10 Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK (#17099) 2022-05-30 22:55:33 -07:00
Nick Brassel
8545473307 Removes terminal from QMK. (#17258) 2022-05-30 22:38:08 -07:00
trwnh
9e2fe4eff6 Make SPI Mode configurable and change default mode to 3 (#17263) 2022-05-31 15:28:55 +10:00
QMK Bot
e869d089b7 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 05:03:28 +00:00
QMK Bot
f663f84413 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 04:47:02 +00:00
QMK Bot
044486500c Merge remote-tracking branch 'origin/master' into develop 2022-05-31 04:09:14 +00:00
QMK Bot
a099579aa0 Merge remote-tracking branch 'origin/master' into develop 2022-05-31 02:09:37 +00:00
QMK Bot
67e80780bb Merge remote-tracking branch 'origin/master' into develop 2022-05-30 22:44:05 +00:00
QMK Bot
6e4e50d5aa Merge remote-tracking branch 'origin/master' into develop 2022-05-30 22:06:28 +00:00
Dasky
2de70e6f2d Add uf2-split-* make targets. (#17257) 2022-05-31 08:04:50 +10:00
QMK Bot
31fb141528 Merge remote-tracking branch 'origin/master' into develop 2022-05-30 21:46:00 +00:00
QMK Bot
6b640db4bb Merge remote-tracking branch 'origin/master' into develop 2022-05-30 18:29:09 +00:00
QMK Bot
e4be4d282c Merge remote-tracking branch 'origin/master' into develop 2022-05-30 18:07:56 +00:00
QMK Bot
9a2943d221 Merge remote-tracking branch 'origin/master' into develop 2022-05-30 14:34:54 +00:00
QMK Bot
f03fe5b917 Merge remote-tracking branch 'origin/master' into develop 2022-05-29 19:16:27 +00:00
QMK Bot
6123698270 Merge remote-tracking branch 'origin/master' into develop 2022-05-29 05:18:24 +00:00
QMK Bot
a765f730b1 Merge remote-tracking branch 'origin/master' into develop 2022-05-29 05:10:23 +00:00
QMK Bot
3ce029c7fd Merge remote-tracking branch 'origin/master' into develop 2022-05-28 23:07:45 +00:00
Nick Brassel
87c3a53716 Branch point after 2022-05-28 Breaking Change. 2022-05-29 08:16:00 +10:00
Nick Brassel
103c08cc75 Merge branch 'master' into develop 2022-05-29 08:13:56 +10:00
10292 changed files with 169882 additions and 48888 deletions

9
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
labels: CI
reviewers:
- "qmk/collaborators"
schedule:
interval: "daily"

View File

@@ -7,6 +7,9 @@ on:
paths:
- 'keyboards/**'
- 'layouts/community/**'
- 'lib/python/**'
- 'data/**'
- '.github/workflows/api.yml'
workflow_dispatch:
jobs:
@@ -18,7 +21,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false

View File

@@ -22,7 +22,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0

View File

@@ -18,7 +18,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies

View File

@@ -7,6 +7,9 @@ on:
paths:
- 'keyboards/**'
- 'layouts/community/**'
- 'lib/python/**'
- 'data/**'
- '.github/workflows/develop_api.yml'
workflow_dispatch:
jobs:
@@ -18,7 +21,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false

View File

@@ -12,11 +12,15 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout develop
run: |
git fetch origin master develop

View File

@@ -20,7 +20,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
@@ -34,7 +34,7 @@ jobs:
qmk --verbose generate-docs
- name: Deploy
uses: JamesIves/github-pages-deploy-action@3.7.1
uses: JamesIves/github-pages-deploy-action@v4.4.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BASE_BRANCH: master

View File

@@ -17,11 +17,15 @@ jobs:
- xap
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout branch
run: |
git fetch origin develop ${{ matrix.branch }}

View File

@@ -19,7 +19,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0

View File

@@ -13,10 +13,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
@@ -37,7 +41,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
uses: peter-evans/create-pull-request@v4
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

View File

@@ -12,7 +12,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0

View File

@@ -23,7 +23,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies

19
.gitignore vendored
View File

@@ -5,6 +5,10 @@
.DS_Store
._*
# Merge files
*.orig
*.rej
# Build artifacts
.clang_complete
.build/
@@ -27,16 +31,11 @@ quantum/version.h
*.uf2
# Old-style QMK Makefiles
/keyboards/*/Makefile
/keyboards/*/*/Makefile
/keyboards/*/*/*/Makefile
/keyboards/*/*/*/*/Makefile
/keyboards/*/*/*/*/*/Makefile
/keyboards/*/keymaps/Makefile
/keyboards/*/*/keymaps/Makefile
/keyboards/*/*/*/keymaps/Makefile
/keyboards/*/*/*/*/keymaps/Makefile
/keyboards/*/*/*/*/*/keymaps/Makefile
/keyboards/**/Makefile
# kbfirmware....
/keyboards/**/kb.h
/keyboards/**/kb.c
# Eclipse/PyCharm/Other IDE Settings
*.iml

3
.gitmodules vendored
View File

@@ -18,3 +18,6 @@
[submodule "lib/printf"]
path = lib/printf
url = https://github.com/qmk/printf
[submodule "lib/pico-sdk"]
path = lib/pico-sdk
url = https://github.com/qmk/pico-sdk.git

View File

@@ -6,7 +6,8 @@
"files.exclude": {
"**/.build": true,
"**/*.hex": true,
"**/*.bin": true
"**/*.bin": true,
"**/*.uf2": true
},
"files.associations": {
"*.h": "c",

View File

@@ -401,6 +401,7 @@ ifndef SKIP_GIT
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi
if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi
if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi
if [ ! -e lib/pico-sdk ]; then git submodule sync lib/pico-sdk && git submodule update --depth 50 --init lib/pico-sdk; fi
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
@@ -428,9 +429,15 @@ lib/%:
.PHONY: git-submodule
git-submodule:
[ -e lib/ugfx ] && rm -rf lib/ugfx || true
[ -e lib/pico-sdk ] && rm -rf lib/pico-sdk || true
[ -e lib/chibios-contrib/ext/mcux-sdk ] && rm -rf lib/chibios-contrib/ext/mcux-sdk || true
git submodule sync --recursive
git submodule update --init --recursive --progress
.PHONY: git-submodules
git-submodules: git-submodule
.PHONY: list-keyboards
list-keyboards:
util/list_keyboards.sh | sort -u | tr '\n' ' '

View File

@@ -105,8 +105,8 @@ ifeq ($(strip $(BOOTLOADER)), halfkay)
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
# Teensy LC, 3.x
ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK66FX1M0))
# Teensy LC, 3.0, 3.1/2, 3.5, 3.6
ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK64FX512 MK66FX1M0))
FIRMWARE_FORMAT = hex
endif
endif
@@ -199,6 +199,11 @@ endif
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
OPT_DEFS += -DBOOTLOADER_TINYUF2
BOOTLOADER_TYPE = tinyuf2
FIRMWARE_FORMAT = uf2
endif
ifeq ($(strip $(BOOTLOADER)), rp2040)
OPT_DEFS += -DBOOTLOADER_RP2040
BOOTLOADER_TYPE = rp2040
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY

View File

@@ -13,6 +13,14 @@ endif
include paths.mk
include $(BUILDDEFS_PATH)/message.mk
# Helper to add defines with a 'QMK_' prefix
define add_qmk_prefix_defs
ifdef $1
# Need to cater for 'STM32L4xx+'
OPT_DEFS += -DQMK_$(2)="$($1)" -DQMK_$(2)_$(shell echo $($1) | sed -e 's@+@Plus@g' -e 's@[^a-zA-Z0-9]@_@g' | tr '[:lower:]' '[:upper:]')
endif
endef
# Set the qmk cli to use
QMK_BIN ?= qmk
@@ -390,10 +398,18 @@ ifneq ("$(KEYMAP_H)","")
CONFIG_H += $(KEYMAP_H)
endif
OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
# If a keymap or userspace places their keymap array in another file instead, allow for it to be included
# !!NOTE!! -- For this to work, the source file cannot be part of $(SRC), so users should not add it via `SRC += <file>`
ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
OPT_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
endif
# project specific files
SRC += \
$(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_DIR)/keymap_introspection.c \
$(QUANTUM_SRC) \
$(QUANTUM_DIR)/main.c \
@@ -436,6 +452,14 @@ else
include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
endif
# Setup definitions based on the selected MCU
$(eval $(call add_qmk_prefix_defs,MCU_ORIG,MCU))
$(eval $(call add_qmk_prefix_defs,MCU_ARCH,MCU_ARCH))
$(eval $(call add_qmk_prefix_defs,MCU_PORT_NAME,MCU_PORT_NAME))
$(eval $(call add_qmk_prefix_defs,MCU_FAMILY,MCU_FAMILY))
$(eval $(call add_qmk_prefix_defs,MCU_SERIES,MCU_SERIES))
$(eval $(call add_qmk_prefix_defs,BOARD,BOARD))
# TODO: remove this bodge?
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
@@ -469,6 +493,19 @@ check-size: build
check-md5: build
objs-size: build
ifeq ($(strip $(TOP_SYMBOLS)),yes)
all: top-symbols
check-size: top-symbols
top-symbols: build
echo "###########################################"
echo "# Highest flash usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
echo "# Highest RAM usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
endif
include $(BUILDDEFS_PATH)/show_options.mk
include $(BUILDDEFS_PATH)/common_rules.mk

View File

@@ -38,11 +38,11 @@ CREATE_MAP := no
VPATH += \
$(LIB_PATH)/googletest \
$(LIB_PATH)/googlemock \
$(LIB_PATH)/printf
$(COMMON_VPATH) \
$(TEST_PATH)
all: elf
VPATH += $(COMMON_VPATH)
PLATFORM:=TEST
PLATFORM_KEY:=test
BOOTLOADER_TYPE:=none
@@ -63,6 +63,8 @@ include $(TMK_PATH)/protocol.mk
include $(QUANTUM_PATH)/debounce/tests/rules.mk
include $(QUANTUM_PATH)/encoder/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
include $(QUANTUM_PATH)/wear_leveling/tests/rules.mk
include $(QUANTUM_PATH)/logging/print.mk
include $(PLATFORM_PATH)/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include $(BUILDDEFS_PATH)/build_full_test.mk
@@ -70,7 +72,6 @@ endif
$(TEST)_SRC += \
tests/test_common/main.c \
$(LIB_PATH)/printf/printf.c \
$(QUANTUM_PATH)/logging/print.c
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)

View File

@@ -15,7 +15,6 @@
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/send_string.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/action.c \
@@ -92,10 +91,29 @@ ifeq ($(MUSIC_ENABLE), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
endif
VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all
STENO_PROTOCOL ?= all
ifeq ($(strip $(STENO_ENABLE)), yes)
OPT_DEFS += -DSTENO_ENABLE
VIRTSER_ENABLE ?= yes
SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
ifeq ($(filter $(STENO_PROTOCOL),$(VALID_STENO_PROTOCOL_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid STENO_PROTOCOL,STENO_PROTOCOL="$(STENO_PROTOCOL)" is not a valid stenography protocol)
else
OPT_DEFS += -DSTENO_ENABLE
VIRTSER_ENABLE ?= yes
ifeq ($(strip $(STENO_PROTOCOL)), geminipr)
OPT_DEFS += -DSTENO_ENABLE_GEMINI
endif
ifeq ($(strip $(STENO_PROTOCOL)), txbolt)
OPT_DEFS += -DSTENO_ENABLE_BOLT
endif
ifeq ($(strip $(STENO_PROTOCOL)), all)
OPT_DEFS += -DSTENO_ENABLE_ALL
OPT_DEFS += -DSTENO_ENABLE_GEMINI
OPT_DEFS += -DSTENO_ENABLE_BOLT
endif
SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
endif
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
@@ -108,15 +126,16 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/mousekey.c
endif
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pmw3389 pimoroni_trackball custom
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3360 pmw3389 pimoroni_trackball custom
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
else
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
MOUSE_ENABLE := yes
SRC += $(QUANTUM_DIR)/pointing_device.c
SRC += $(QUANTUM_DIR)/pointing_device_drivers.c
VPATH += $(QUANTUM_DIR)/pointing_device
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_drivers.c
ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom)
SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]'))
@@ -131,19 +150,21 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c)
OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
QUANTUM_LIB_SRC += i2c_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
QUANTUM_LIB_SRC += spi_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE
QUANTUM_LIB_SRC += i2c_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3360)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
QUANTUM_LIB_SRC += spi_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3389)
else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
SRC += drivers/sensors/pmw33xx_common.c
QUANTUM_LIB_SRC += spi_master.c
endif
endif
@@ -154,33 +175,36 @@ ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
include $(QUANTUM_DIR)/painter/rules.mk
endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
else
OPT_DEFS += -DEEPROM_ENABLE
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_COMMON_DIR)
ifeq ($(strip $(EEPROM_DRIVER)), custom)
# Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling)
# Wear-leveling EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
# External I2C EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += i2c_master.c
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += spi_master.c
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
@@ -191,17 +215,18 @@ else
ifneq ($(filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
# Emulated EEPROM
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
SRC += eeprom_driver.c
SRC += eeprom_stm32_L0_L1.c
SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
else ifneq ($(filter $(MCU_SERIES),RP2040),)
# Wear-leveling EEPROM implementation, backed by RP2040 flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER = rp2040_flash
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
# Teensy EEPROM implementations
OPT_DEFS += -DEEPROM_TEENSY
@@ -209,32 +234,64 @@ else
else
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
# arm_atsam EEPROM
OPT_DEFS += -DEEPROM_SAMD
SRC += $(PLATFORM_COMMON_DIR)/eeprom_samd.c
SRC += eeprom_samd.c
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
SRC += eeprom.c
endif
endif
endif
VALID_WEAR_LEVELING_DRIVER_TYPES := custom embedded_flash spi_flash rp2040_flash legacy
WEAR_LEVELING_DRIVER ?= none
ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
ifeq ($(filter $(WEAR_LEVELING_DRIVER),$(VALID_WEAR_LEVELING_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid WEAR_LEVELING_DRIVER,WEAR_LEVELING_DRIVER="$(WEAR_LEVELING_DRIVER)" is not a valid wear leveling driver)
else
FNV_ENABLE := yes
OPT_DEFS += -DWEAR_LEVELING_ENABLE
OPT_DEFS += -DWEAR_LEVELING_$(strip $(shell echo $(WEAR_LEVELING_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling
COMMON_VPATH += $(DRIVER_PATH)/wear_leveling
COMMON_VPATH += $(QUANTUM_DIR)/wear_leveling
SRC += wear_leveling.c
ifeq ($(strip $(WEAR_LEVELING_DRIVER)), embedded_flash)
OPT_DEFS += -DHAL_USE_EFL
SRC += wear_leveling_efl.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_efl_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), spi_flash)
FLASH_DRIVER := spi
SRC += wear_leveling_flash_spi.c
POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_flash_spi_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), rp2040_flash)
SRC += wear_leveling_rp2040_flash.c
POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_rp2040_flash_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), legacy)
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
SRC += flash_stm32.c wear_leveling_legacy.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_legacy_config.h
endif
endif
endif
VALID_FLASH_DRIVER_TYPES := spi
FLASH_DRIVER ?= no
ifneq ($(strip $(FLASH_DRIVER)), no)
FLASH_DRIVER ?= none
ifneq ($(strip $(FLASH_DRIVER)), none)
ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
$(error FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid FLASH driver)
$(call CATASTROPHIC_ERROR,Invalid FLASH_DRIVER,FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid flash driver)
else
OPT_DEFS += -DFLASH_ENABLE
ifeq ($(strip $(FLASH_DRIVER)), spi)
ifeq ($(strip $(FLASH_DRIVER)),spi)
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
QUANTUM_LIB_SRC += spi_master.c
endif
endif
endif
@@ -275,7 +332,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
LED_MATRIX_ENABLE ?= no
VALID_LED_MATRIX_TYPES := IS31FL3731 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A custom
VALID_LED_MATRIX_TYPES := IS31FL3731 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A CKLED2001 custom
# TODO: IS31FL3733 IS31FL3737 IS31FL3741
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
@@ -331,6 +388,13 @@ endif
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), CKLED2001)
OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += ckled2001-simple.c
QUANTUM_LIB_SRC += i2c_master.c
endif
endif
RGB_MATRIX_ENABLE ?= no
@@ -500,7 +564,7 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
endif
endif
VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c
VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c vendor
WS2812_DRIVER ?= bitbang
ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
@@ -542,12 +606,6 @@ ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
ifeq ($(strip $(TERMINAL_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
OPT_DEFS += -DTERMINAL_ENABLE
OPT_DEFS += -DUSER_PRINT
endif
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
@@ -595,6 +653,14 @@ ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c
endif
VALID_SERIAL_DRIVER_TYPES := bitbang usart vendor
SERIAL_DRIVER ?= bitbang
ifeq ($(filter $(SERIAL_DRIVER),$(VALID_SERIAL_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid SERIAL_DRIVER,SERIAL_DRIVER="$(SERIAL_DRIVER)" is not a valid SERIAL driver)
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
OPT_DEFS += -DSPLIT_KEYBOARD
@@ -619,11 +685,11 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
endif
endif
SERIAL_DRIVER ?= bitbang
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
QUANTUM_LIB_SRC += serial.c
else
QUANTUM_LIB_SRC += serial_protocol.c
QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
endif
endif
@@ -635,6 +701,12 @@ ifeq ($(strip $(CRC_ENABLE)), yes)
SRC += crc.c
endif
ifeq ($(strip $(FNV_ENABLE)), yes)
OPT_DEFS += -DFNV_ENABLE
VPATH += $(LIB_PATH)/fnv
SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c
endif
ifeq ($(strip $(HAPTIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/haptic
@@ -711,6 +783,13 @@ ifeq ($(strip $(MAGIC_ENABLE)), yes)
OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif
SEND_STRING_ENABLE ?= yes
ifeq ($(strip $(SEND_STRING_ENABLE)), yes)
OPT_DEFS += -DSEND_STRING_ENABLE
COMMON_VPATH += $(QUANTUM_DIR)/send_string
SRC += $(QUANTUM_DIR)/send_string/send_string.c
endif
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
OPT_DEFS += -DAUTO_SHIFT_ENABLE
@@ -821,3 +900,11 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
QUANTUM_LIB_SRC += uart.c
endif
endif
ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/encoder.c
OPT_DEFS += -DENCODER_ENABLE
ifeq ($(strip $(ENCODER_MAP_ENABLE)), yes)
OPT_DEFS += -DENCODER_MAP_ENABLE
endif
endif

View File

@@ -1,19 +1,5 @@
# Hey Emacs, this is a -*- makefile -*-
#----------------------------------------------------------------------------
# WinAVR Makefile Template written by Eric B. Weddington, Jg Wunsch, et al.
#
# Released to the Public Domain
#
# Additional material for this makefile was written by:
# Peter Fleury
# Tim Henigan
# Colin O'Flynn
# Reiner Patommel
# Markus Pfaff
# Sander Pool
# Frederik Rouleau
# Carlos Lamas
#
# Enable vpath seraching for source files only
# Without this, output files, could be read from the wrong .build directories
@@ -38,36 +24,15 @@ NO_LTO_OBJ := $(filter %.a,$(OBJ))
MASTER_OUTPUT := $(firstword $(OUTPUTS))
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT ?= s
# Compiler flag to set the C Standard level.
# c89 = "ANSI" C
# gnu89 = c89 plus GCC extensions
# c99 = ISO C99 standard (not yet fully implemented)
# gnu99 = c99 plus GCC extensions
CSTANDARD = -std=gnu99
# Place -D or -U options here for C sources
#CDEFS +=
# Place -D or -U options here for ASM sources
#ADEFS +=
# Place -D or -U options here for C++ sources
#CXXDEFS += -D__STDC_LIMIT_MACROS
#CXXDEFS += -D__STDC_CONSTANT_MACROS
#CXXDEFS +=
# Compiler flag to set the C and C++ language standard level
CSTANDARD = -std=gnu11
CXXSTANDARD = -std=gnu++14
# Speed up recompilations by opt-in usage of ccache
USE_CCACHE ?= no
@@ -75,12 +40,8 @@ ifneq ($(USE_CCACHE),no)
CC_PREFIX ?= ccache
endif
#---------------- Compiler Options C ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
#---------------- C Compiler Options ----------------
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),ARM_ATSAM)
$(info Enabling LTO on arm_atsam-targeting boards is known to have a high likelihood of failure.)
@@ -111,23 +72,14 @@ CFLAGS += -Wstrict-prototypes
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CFLAGS += -Werror
endif
#CFLAGS += -mshort-calls
#CFLAGS += -fno-unit-at-a-time
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += $(CSTANDARD)
# This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION
# Fixing of multiple variable definitions must be made.
CFLAGS += -fcommon
#---------------- Compiler Options C++ ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
#---------------- C++ Compiler Options ----------------
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CXXFLAGS += -g$(DEBUG)
endif
@@ -141,57 +93,17 @@ CXXFLAGS += -Wundef
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CXXFLAGS += -Werror
endif
#CXXFLAGS += -mshort-calls
#CXXFLAGS += -fno-unit-at-a-time
#CXXFLAGS += -Wstrict-prototypes
#CXXFLAGS += -Wunreachable-code
#CXXFLAGS += -Wsign-compare
#CXXFLAGS += $(CSTANDARD)
#---------------- Assembler Options ----------------
ASFLAGS += $(ADEFS)
ifeq ($(VERBOSE_AS_CMD),yes)
ASFLAGS += -v
endif
#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
# Minimalistic scanf version
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)
MATH_LIB = -lm
CREATE_MAP ?= yes
#---------------- Linker Options ----------------
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
#
# Comennt out "--relax" option to avoid a error such:
# (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12'
#
CREATE_MAP ?= yes
ifeq ($(CREATE_MAP),yes)
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
@@ -201,20 +113,11 @@ endif
#LDFLAGS += -Wl,--relax
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
#LDFLAGS += -T linker_script.x
LDFLAGS += -lm
# You can give EXTRALDFLAGS at 'make' command line.
LDFLAGS += $(EXTRALDFLAGS)
#---------------- Assembler Listings ----------------
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
# dump that will be displayed for a given single line of source input.
ADHLNS_ENABLE ?= no
ifeq ($(ADHLNS_ENABLE),yes)
@@ -468,6 +371,7 @@ show_path:
dump_vars: ERROR_IF_EMPTY=""
dump_vars: ERROR_IF_NONBOOL=""
dump_vars: ERROR_IF_UNSET=""
dump_vars: CATASTROPHIC_ERROR=""
dump_vars:
@$(foreach V,$(sort $(.VARIABLES)),$(if $(filter-out environment% default automatic,$(origin $V)),$(info $V=$($V))))

View File

@@ -25,8 +25,6 @@ GENERIC_FEATURES = \
DIP_SWITCH \
DYNAMIC_KEYMAP \
DYNAMIC_MACRO \
ENCODER \
ENCODER_MAP \
GRAVE_ESC \
HAPTIC \
KEY_LOCK \

View File

@@ -87,6 +87,33 @@ ifneq ($(findstring MK20DX256, $(MCU)),)
BOARD ?= PJRC_TEENSY_3_1
endif
ifneq ($(findstring MK64FX512, $(MCU)),)
# Cortex version
MCU = cortex-m4
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
ARMV = 7
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = KINETIS
MCU_SERIES = K60x
# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
MCU_LDSCRIPT ?= MK64FX512
# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
MCU_STARTUP ?= k60x
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= PJRC_TEENSY_3_5
endif
ifneq ($(findstring MK66FX1M0, $(MCU)),)
# Cortex version
MCU = cortex-m4
@@ -116,6 +143,41 @@ ifneq ($(findstring MK66FX1M0, $(MCU)),)
BOARD ?= PJRC_TEENSY_3_6
endif
ifneq ($(findstring RP2040, $(MCU)),)
# Cortex version
MCU = cortex-m0plus
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
CHIBIOS_PORT = ARMv6-M-RP2
## chip/board settings
# - the next two should match the directories in
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = RP
MCU_SERIES = RP2040
# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
STARTUPLD_CONTRIB = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/ld
MCU_LDSCRIPT ?= RP2040_FLASH_TIMECRIT
LDFLAGS += -L $(STARTUPLD_CONTRIB)
# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
MCU_STARTUP ?= rp2040
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= GENERIC_PROMICRO_RP2040
# Default UF2 Bootloader settings
UF2_FAMILY ?= RP2040
FIRMWARE_FORMAT ?= uf2
endif
ifneq ($(findstring STM32F042, $(MCU)),)
# Cortex version
MCU = cortex-m0
@@ -286,7 +348,8 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
FIRMWARE_FORMAT ?= uf2
EEPROM_DRIVER ?= wear_leveling
WEAR_LEVELING_DRIVER ?= legacy
else
MCU_LDSCRIPT ?= STM32F401xC
endif
@@ -297,7 +360,7 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= BLACKPILL_STM32_F401
BOARD ?= GENERIC_STM32_F401XC
USE_FPU ?= yes
@@ -402,7 +465,8 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
FIRMWARE_FORMAT ?= uf2
EEPROM_DRIVER ?= wear_leveling
WEAR_LEVELING_DRIVER ?= legacy
else
MCU_LDSCRIPT ?= STM32F411xE
endif
@@ -413,7 +477,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= BLACKPILL_STM32_F411
BOARD ?= GENERIC_STM32_F411XE
USE_FPU ?= yes

View File

@@ -5,7 +5,6 @@ BUILD_OPTION_NAMES = \
CONSOLE_ENABLE \
COMMAND_ENABLE \
NKRO_ENABLE \
TERMINAL_ENABLE \
CUSTOM_MATRIX \
DEBOUNCE_TYPE \
SPLIT_KEYBOARD \
@@ -46,6 +45,7 @@ OTHER_OPTION_NAMES = \
LEADER_ENABLE \
PRINTING_ENABLE \
STENO_ENABLE \
STENO_PROTOCOL \
TAP_DANCE_ENABLE \
VIRTSER_ENABLE \
OLED_ENABLE \

View File

@@ -4,6 +4,7 @@ FULL_TESTS := $(notdir $(TEST_LIST))
include $(QUANTUM_PATH)/debounce/tests/testlist.mk
include $(QUANTUM_PATH)/encoder/tests/testlist.mk
include $(QUANTUM_PATH)/sequencer/tests/testlist.mk
include $(QUANTUM_PATH)/wear_leveling/tests/testlist.mk
include $(PLATFORM_PATH)/test/testlist.mk
define VALIDATE_TEST_LIST

View File

@@ -16,6 +16,30 @@
"board": "QMK_PROTON_C",
"pin_compatible": "promicro"
},
"kb2040": {
"processor": "RP2040",
"bootloader": "rp2040",
"board": "QMK_PM2040",
"pin_compatible": "promicro"
},
"promicro_rp2040": {
"processor": "RP2040",
"bootloader": "rp2040",
"board": "QMK_PM2040",
"pin_compatible": "promicro"
},
"blok": {
"processor": "RP2040",
"bootloader": "rp2040",
"board": "QMK_PM2040",
"pin_compatible": "promicro"
},
"bit_c_pro": {
"processor": "RP2040",
"bootloader": "rp2040",
"board": "QMK_PM2040",
"pin_compatible": "promicro"
},
"bluepill": {
"processor": "STM32F103",
"bootloader": "stm32duino",
@@ -30,6 +54,18 @@
"processor": "STM32F411",
"bootloader": "stm32-dfu",
"board": "BLACKPILL_STM32_F411"
},
"stemcell": {
"processor": "STM32F411",
"bootloader": "tinyuf2",
"board": "STEMCELL",
"pin_compatible": "promicro"
},
"bonsai_c4": {
"processor": "STM32F411",
"bootloader": "stm32-dfu",
"board": "GENERIC_STM32_F411XE",
"pin_compatible": "promicro"
}
}
}
}

View File

@@ -9,9 +9,11 @@
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
# replace_with: use with a key marked deprecated or invalid to designate a replacement
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
"BACKLIGHT_ON_STATE": {"info_key": "backlight.on_state", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
"BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "bool"},
"CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
@@ -35,6 +37,9 @@
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
"LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"},
"LED_COMPOSE_PIN": {"info_key": "indicators.compose"},
"LED_KANA_PIN": {"info_key": "indicators.kana"},
"LED_PIN_ON_STATE": {"info_key": "indicators.on_state", "value_type": "int"},
"MANUFACTURER": {"info_key": "manufacturer"},
"MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"},
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
@@ -52,7 +57,6 @@
"RGB_DI_PIN": {"info_key": "rgblight.pin"},
"RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
"RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool"},
"RGBLIGHT_EFFECT_ALTERNATING": {"info_key": "rgblight.animations.alternating", "value_type": "bool"},
"RGBLIGHT_EFFECT_BREATHING": {"info_key": "rgblight.animations.breathing", "value_type": "bool"},
"RGBLIGHT_EFFECT_CHRISTMAS": {"info_key": "rgblight.animations.christmas", "value_type": "bool"},
@@ -79,7 +83,6 @@
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
"QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
"QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
"SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false},
@@ -108,6 +111,9 @@
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true, replace_with: "DEBOUNCE"},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
"UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
"RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool", "deprecated": true},
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int", "deprecated": true},
}

View File

@@ -9,15 +9,18 @@
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
# replace_with: use with a key marked deprecated or invalid to designate a replacement
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
"CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"},
"ENCODER_ENABLE": {"info_key": "encoder.enabled", "value_type": "bool"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
"RGB_MATRIX_DRIVER": {"info_key": "rgb_matrix.driver"},
"LTO_ENABLE": {"info_key": "build.lto", "value_type": "bool"},
"MCU": {"info_key": "processor", "warn_duplicate": false},
"MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"},
@@ -27,9 +30,11 @@
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
"STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"},
"STENO_PROTOCOL": {"info_key": "stenography.protocol"},
# Items we want flagged in lint
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true},
"CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true},
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
"CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true},
}

View File

@@ -242,9 +242,6 @@
honeycomb: {
target: 'keyhive/honeycomb'
},
id80: {
target: 'id80/ansi'
},
idb_60: {
target: 'idb/idb_60',
layouts: {
@@ -826,6 +823,9 @@
geminate60: {
target: 'weirdo/geminate60'
},
gentleman65: {
target: 'jkeys_design/gentleman65'
},
georgi: {
target: 'gboards/georgi'
},
@@ -844,6 +844,9 @@
halberd: {
target: 'kagizaraya/halberd'
},
handwired/hillside/0_1: {
target: 'handwired/hillside/48'
}
hecomi/alpha: {
target: 'takashiski/hecomi/alpha'
},
@@ -857,7 +860,13 @@
target: 'idobao/id67/rgb'
},
id80: {
target: 'idobao/id80/v1'
target: 'idobao/id80/v2/ansi'
},
idobao/id80/v1/ansi: {
target: 'idobao/id80/v2/ansi'
},
idobao/id80/v1/iso: {
target: 'idobao/id80/v2/iso'
},
id87: {
target: 'idobao/id87/v1'

View File

@@ -9,7 +9,6 @@
"properties": {
"url": {"type": "string"}
}
},
"parse_errors": {"$ref": "qmk.definitions.v1#/string_array"},
"parse_warnings": {"$ref": "qmk.definitions.v1#/string_array"},

View File

@@ -1,5 +1,5 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.definitions.v1",
"title": "Common definitions used across QMK's jsonschemas.",
"type": "object",
@@ -65,8 +65,7 @@
]
},
"key_unit": {
"type": "number",
"min": 0.25
"type": "number"
},
"keyboard": {
"oneOf": [
@@ -103,8 +102,11 @@
"pattern": "^LINE_PIN\\d{1,2}$"
},
{
"type": "number",
"multipleOf": 1
"type": "string",
"pattern": "^GP\\d{1,2}$"
},
{
"type": "integer"
},
{
"type": "null"
@@ -115,14 +117,12 @@
"type": "number"
},
"signed_int": {
"type": "number",
"multipleOf": 1
"type": "integer"
},
"signed_int_8": {
"type": "number",
"min": -127,
"max": 127,
"multipleOf": 1
"type": "integer",
"minimum": -127,
"maximum": 127
},
"string_array": {
"type": "array",
@@ -138,17 +138,20 @@
},
"unsigned_decimal": {
"type": "number",
"min": 0
"minimum": 0
},
"unsigned_int": {
"type": "number",
"min": 0,
"multipleOf": 1
"type": "integer",
"minimum": 0
},
"unsigned_int_8": {
"type": "number",
"min": 0,
"max": 255,
"multipleOf": 1
"type": "integer",
"minimum": 0,
"maximum": 255
},
"bit": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
}

View File

@@ -1,7 +1,27 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.keyboard.v1",
"title": "Keyboard Information",
"definitions": {
"encoder_config": {
"type": "object",
"properties": {
"rotary": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["pin_a", "pin_b"],
"properties": {
"pin_a": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"pin_b": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"resolution": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
}
}
}
}
},
"type": "object",
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
@@ -14,7 +34,7 @@
},
"development_board": {
"type": "string",
"enum": ["promicro", "elite_c", "proton_c", "bluepill", "blackpill_f401", "blackpill_f411"]
"enum": ["promicro", "elite_c", "proton_c", "kb2040", "promicro_rp2040", "blok", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4"]
},
"pin_compatible": {
"type": "string",
@@ -22,7 +42,7 @@
},
"processor": {
"type": "string",
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK64FX512", "MK66FX1M0", "RP2040", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -40,12 +60,12 @@
"breathing": {"type": "boolean"},
"breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"levels": {
"type": "number",
"min": 1,
"max": 31,
"multipleOf": 1
"type": "integer",
"minimum": 1,
"maximum": 31
},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
"bluetooth": {
@@ -56,7 +76,7 @@
"type": "string",
"enum": ["BluefruitLE", "RN42"]
},
"lto": {"type": "boolean"},
"lto": {"type": "boolean"}
}
},
"board": {
@@ -66,7 +86,29 @@
},
"bootloader": {
"type": "string",
"enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "custom", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "md-boot", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
"enum": [
"atmel-dfu",
"bootloadhid",
"bootloadHID",
"caterina",
"custom",
"gd32v-dfu",
"halfkay",
"kiibohd",
"lufa-dfu",
"lufa-ms",
"md-boot",
"qmk-dfu",
"qmk-hid",
"rp2040",
"stm32-dfu",
"stm32duino",
"tinyuf2",
"unknown",
"usbasploader",
"USBasp",
"wb32-dfu"
]
},
"bootloader_instructions": {
"type": "string",
@@ -84,7 +126,7 @@
"type": "string",
"enum": ["bin", "hex", "uf2"]
},
"lto": {"type": "boolean"},
"lto": {"type": "boolean"}
}
},
"diode_direction": {
@@ -99,8 +141,8 @@
"enabled": {"type": "boolean"},
"both_shifts_turns_on": {"type": "boolean"},
"double_tap_shift_turns_on": {"type": "boolean"},
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
},
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"combo": {
"type": "object",
@@ -113,13 +155,22 @@
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/filename"}
},
"encoder": {
"$ref": "#/definitions/encoder_config",
"properties": {
"enabled": {"type": "boolean"}
}
},
"features": {"$ref": "qmk.definitions.v1#/boolean_array"},
"indicators": {
"type": "object",
"properties": {
"caps_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"num_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"}
"scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"compose": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"kana": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
"layout_aliases": {
@@ -154,12 +205,11 @@
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
"type": "integer",
"minimum": 0
}
},
"r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"r": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"h": {"$ref": "qmk.definitions.v1#/key_unit"},
@@ -193,18 +243,17 @@
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
},
"cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
"rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
}
},
"mouse_key": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"wheel_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
},
@@ -230,14 +279,13 @@
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
"type": "integer",
"minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
}
}
@@ -258,14 +306,13 @@
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
"type": "integer",
"minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
}
}
@@ -290,10 +337,9 @@
"blink": {"type": "boolean"},
"enabled": {"type": "boolean"},
"max": {
"type": "number",
"min": 1,
"max": 32,
"multipleOf": 1
"type": "integer",
"minimum": 1,
"maximum": 32
},
"override_rgb": {"type": "boolean"}
}
@@ -307,8 +353,8 @@
"split": {"type": "boolean"},
"split_count": {
"type": "array",
"minLength": 2,
"maxLength": 2,
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
}
@@ -322,21 +368,31 @@
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"unlock_sequence": {
"type": "array",
"minLength": 1,
"maxLength": 5,
"minItems": 1,
"maxItems": 5,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
"type": "integer",
"minimum": 0
}
}
}
}
},
"stenography": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"protocol": {
"type": "string",
"enum": ["all", "geminipr", "txbolt"]
}
}
},
"split": {
"type": "object",
"additionalProperties": false,
@@ -365,16 +421,24 @@
}
}
},
"encoder": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"$ref": "#/definitions/encoder_config"
}
}
},
"main": {
"type": "string",
"enum": ["eeprom", "left", "matrix_grid", "pin", "right"]
},
"soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"soft_serial_speed": {
"type": "number",
"min": 0,
"max": 5,
"multipleOf": 1
"type": "integer",
"minimum": 0,
"maximum": 5
},
"transport": {
"type": "object",
@@ -416,7 +480,7 @@
"retro_per_key": {"type": "boolean"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term_per_key": {"type": "boolean"},
"toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"usb": {
@@ -428,7 +492,7 @@
"force_nkro": {"type": "boolean"},
"pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"max_power": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"max_power": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"no_startup_check": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"shared_endpoint": {
@@ -439,8 +503,8 @@
"mouse": {"type": "boolean"}
}
},
"suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"wait_for": {"type": "boolean"},
"suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"wait_for": {"type": "boolean"}
}
},
"qmk": {
@@ -448,8 +512,8 @@
"additionalProperties": false,
"properties": {
"keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"qmk_lufa_bootloader": {

View File

@@ -1,5 +1,5 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.keymap.v1",
"title": "Keymap Information",
"type": "object",
@@ -31,7 +31,7 @@
"properties": {
"action": {
"type": "string",
"enum": ['beep', 'delay', 'down', 'tap', 'up']
"enum": ["beep", "delay", "down", "tap", "up"]
},
"keycodes": {
"type": "array",
@@ -50,8 +50,7 @@
},
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
"type": "string",
"description": "asdf"
"type": "string"
}
},
"required": [

View File

@@ -24,4 +24,4 @@ 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
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

343
docs/ChangeLog/20220827.md Normal file
View File

@@ -0,0 +1,343 @@
# QMK Breaking Changes - 2022 August 27 Changelog
## Notable Features :id=notable-features
### Add Raspberry Pi RP2040 support ([#14877](https://github.com/qmk/qmk_firmware/pull/14877), [#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17516](https://github.com/qmk/qmk_firmware/pull/17516), [#17519](https://github.com/qmk/qmk_firmware/pull/17519), [#17612](https://github.com/qmk/qmk_firmware/pull/17612), [#17512](https://github.com/qmk/qmk_firmware/pull/17512), [#17557](https://github.com/qmk/qmk_firmware/pull/17557), [#17817](https://github.com/qmk/qmk_firmware/pull/17817), [#17839](https://github.com/qmk/qmk_firmware/pull/17839), [#18100](https://github.com/qmk/qmk_firmware/pull/18100)) :id=rp2040-support
QMK _finally_ picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, _@KarlK90_, effectively did `/micdrop` with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.
Check the [RP2040 platform development page](platformdev_rp2040.md) for all supported peripherals and other hardware implementation details.
### Allow `qmk flash` to use prebuilt firmware binaries ([#16584](https://github.com/qmk/qmk_firmware/pull/16584)) :id=cli-flash-binaries
A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt `develop`-based default firmwares on our [CI page](https://qmk.tzarc.io/) -- normally people would need [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases/latest) to flash them. This new functionality written by _@Erovia_ allows `qmk flash` to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.
## Changes Requiring User Action :id=changes-requiring-user-action
### Default layers dropped from 32 to 16 ([#15286](https://github.com/qmk/qmk_firmware/pull/15286))
QMK allows for controlling the maximum number of layers it supports through `LAYER_STATE_(8|16|32)BIT`. Each definition allows for the same number of maximum layers -- `LAYER_STATE_8BIT` => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.
### `RESET` => `QK_BOOT` ([#17940](https://github.com/qmk/qmk_firmware/pull/17940)) :id=reset-2-qk_boot
Following the last breaking changes cycle, QMK has been migrating usages of `RESET` to `QK_BOOT` due to naming collisions with our upstream board support packages. [#17940](https://github.com/qmk/qmk_firmware/pull/17940) converts user keymaps across to use the new keycode name. `RESET` should also move to `QK_BOOT`.
### Updated Keyboard Codebases :id=updated-keyboard-codebases
The following keyboards have had their source moved within QMK:
| Old Keyboard Name | New Keyboard Name |
|------------------------|--------------------------|
| gentleman65 | jkeys_design/gentleman65 |
| handwired/hillside/0_1 | handwired/hillside/48 |
| idobao/id80/v1/ansi | idobao/id80/v2/ansi |
| idobao/id80/v1/iso | idobao/id80/v2/iso |
### Data-driven USB IDs Refactoring ([#18152](https://github.com/qmk/qmk_firmware/pull/18152)) :id=usb-ids-Refactoring
QMK has decided to deprecate the specification of USB IDs inside `config.h` in favour of `info.json`, eventually leaving data-driven as the only method to specify USB information.
A significant number of keyboards have already been changed on `master` in a like-for-like fashion, and [#18152](https://github.com/qmk/qmk_firmware/pull/18152) performs the same transformations for keyboards already on `develop`.
Previously in `config.h`:
```c
#define VENDOR_ID 0x1234
#define PRODUCT_ID 0x5678
#define DEVICE_VER 0x0001
#define MANUFACTURER Me
#define PRODUCT MyKeyboard
```
Replaced by `info.json`:
```json
{
"keyboard_name": "MyKeyboard",
"manufacturer": "Me",
"usb": {
"vid": "0x1234",
"pid": "0x5678",
"device_version": "0.0.1"
},
// ... layouts, etc. ...
}
```
#### Deprecation Schedule
- From 2022 Aug 27, specifying USB information in `config.h` will produce warnings during build but will still function as previously.
- From 2022 Nov 26, specifying USB information in `config.h` will cause compilation to fail.
## Notable core changes :id=notable-core
### Board converters ([#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17603](https://github.com/qmk/qmk_firmware/pull/17603), [#17711](https://github.com/qmk/qmk_firmware/pull/17711), [#17827](https://github.com/qmk/qmk_firmware/pull/17827), [#17593](https://github.com/qmk/qmk_firmware/pull/17593), [#17652](https://github.com/qmk/qmk_firmware/pull/17652), [#17595](https://github.com/qmk/qmk_firmware/pull/17595)) :id=board-converters
Historically QMK had a `CONVERT_TO_PROTON_C` directive for `rules.mk` to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the [Converters Feature](feature_converters.md) documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.
### Add cli command to import keyboard|keymap|kbfirmware ([#16668](https://github.com/qmk/qmk_firmware/pull/16668)) :id=cli-import
To help with importing keyboards and keymaps from other sources, _@zvecr_ added [#16668](https://github.com/qmk/qmk_firmware/pull/16668) which adds a new set of commands to the CLI to automatically import keyboards (`qmk import-keyboard -h`), keymaps (`qmk import-keymap -h`), and kbfirmware definitions (`qmk import-kbfirmware -h`) into QMK.
The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!
### Generic wear-leveling for EEPROM emulation ([#16996](https://github.com/qmk/qmk_firmware/pull/16996), [#17376](https://github.com/qmk/qmk_firmware/pull/17376), [#18102](https://github.com/qmk/qmk_firmware/pull/18102)) :id=wear-leveling
QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so _@tzarc_ decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.
See the [EEPROM Driver](eeprom_driver.md) documentation for more information.
### Pointing Device Improvements ([#16371](https://github.com/qmk/qmk_firmware/pull/16371), [#17111](https://github.com/qmk/qmk_firmware/pull/17111), [#17176](https://github.com/qmk/qmk_firmware/pull/17176), [#17482](https://github.com/qmk/qmk_firmware/pull/17482), [#17776](https://github.com/qmk/qmk_firmware/pull/17776), [#17613](https://github.com/qmk/qmk_firmware/pull/17613)) :id=pointing-device-improvements
Ever since Pointing Device Driver support and Split Pointing Device support were added by _@drashna_ and _@daskygit_, there has been increased interest in the development of the pointing device subsystem and its associated code.
Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" ([#17482](https://github.com/qmk/qmk_firmware/pull/17482)). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added ([#16371](https://github.com/qmk/qmk_firmware/pull/16371)).
Other related changes:
* Add support for large Mouse Reports ([#16371](https://github.com/qmk/qmk_firmware/pull/16371))
* Improve PS/2 mouse performance ([#17111](https://github.com/qmk/qmk_firmware/pull/17111))
* Mouse key kinetic mode fix ([#17176](https://github.com/qmk/qmk_firmware/pull/17176))
* Circular scroll, inertial cursor ([#17482](https://github.com/qmk/qmk_firmware/pull/17482))
* Create generic Pointing Device Pin defines ([#17776](https://github.com/qmk/qmk_firmware/pull/17776))
* PMW33XX drivers overhaul ([#17613](https://github.com/qmk/qmk_firmware/pull/17613))
---
## Full changelist :id=full-changelist
Core:
* Tentative Teensy 3.5 support ([#14420](https://github.com/qmk/qmk_firmware/pull/14420))
* Make default layer size 16-bit ([#15286](https://github.com/qmk/qmk_firmware/pull/15286))
* Process all changed keys in one scan loop, deprecate `QMK_KEYS_PER_SCAN` ([#15292](https://github.com/qmk/qmk_firmware/pull/15292))
* Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms ([#15674](https://github.com/qmk/qmk_firmware/pull/15674))
* Allow usage of ChibiOS's SIO driver for split keyboards ([#15907](https://github.com/qmk/qmk_firmware/pull/15907))
* [Controller] Added board config for custom controller STeMCell ([#16287](https://github.com/qmk/qmk_firmware/pull/16287))
* PoC: Swap Escape and Caps ([#16336](https://github.com/qmk/qmk_firmware/pull/16336))
* Add support for large Mouse Reports ([#16371](https://github.com/qmk/qmk_firmware/pull/16371))
* tap-dance: Restructure code and document in more detail ([#16394](https://github.com/qmk/qmk_firmware/pull/16394))
* Teaching the CLI to flash binaries ([#16584](https://github.com/qmk/qmk_firmware/pull/16584))
* Split ChibiOS usart split driver in protocol and hardware driver part ([#16669](https://github.com/qmk/qmk_firmware/pull/16669))
* Added Wait time to sending each Keys for Dynamic Macros function ([#16800](https://github.com/qmk/qmk_firmware/pull/16800))
* Added Delay time to sending each Keys for VIA Macros function feature ([#16810](https://github.com/qmk/qmk_firmware/pull/16810))
* Improve avr wait_us() ([#16879](https://github.com/qmk/qmk_firmware/pull/16879))
* Improve ENCODER_DEFAULT_POS to recognize lost ticks ([#16932](https://github.com/qmk/qmk_firmware/pull/16932))
* Added emacs as an "operating system" for input mode. ([#16949](https://github.com/qmk/qmk_firmware/pull/16949))
* 24LC32A EEPROM addition ([#16990](https://github.com/qmk/qmk_firmware/pull/16990))
* Refactor steno and add `STENO_PROTOCOL = [all|txbolt|geminipr]` ([#17065](https://github.com/qmk/qmk_firmware/pull/17065))
* improvements for Cirque Pinnacle trackpads ([#17091](https://github.com/qmk/qmk_firmware/pull/17091))
* Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK ([#17099](https://github.com/qmk/qmk_firmware/pull/17099))
* Improve PS/2 mouse performance ([#17111](https://github.com/qmk/qmk_firmware/pull/17111))
* Update C standard to GNU11, C++ to GNU++14 ([#17114](https://github.com/qmk/qmk_firmware/pull/17114))
* Added ws2812_pwm support for WB32 MCU. ([#17142](https://github.com/qmk/qmk_firmware/pull/17142))
* Added ws2812_spi support for WB32 MCU ([#17143](https://github.com/qmk/qmk_firmware/pull/17143))
* Make bootloader_jump for dualbank STM32 respect STM32_BOOTLOADER_DUAL_BANK_DELAY ([#17178](https://github.com/qmk/qmk_firmware/pull/17178))
* Expose the time of the last change to the LED state ([#17222](https://github.com/qmk/qmk_firmware/pull/17222))
* [Code] Add solid reactive gradient mode ([#17228](https://github.com/qmk/qmk_firmware/pull/17228))
* Add keymap wrappers for introspection into the keymap. ([#17229](https://github.com/qmk/qmk_firmware/pull/17229))
* Ensure eeconfig initialised before reading EEPROM handedness. ([#17256](https://github.com/qmk/qmk_firmware/pull/17256))
* Add uf2-split-* make targets. ([#17257](https://github.com/qmk/qmk_firmware/pull/17257))
* Removes terminal from QMK. ([#17258](https://github.com/qmk/qmk_firmware/pull/17258))
* Make SPI Mode configurable for AW20216 and change default mode to 3 ([#17263](https://github.com/qmk/qmk_firmware/pull/17263))
* Move SPLIT_HAND_PIN setup to split_pre_init ([#17271](https://github.com/qmk/qmk_firmware/pull/17271))
* Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL ([#17272](https://github.com/qmk/qmk_firmware/pull/17272))
* Feature-ify Send String ([#17275](https://github.com/qmk/qmk_firmware/pull/17275))
* Rework paths for eeprom locations. ([#17326](https://github.com/qmk/qmk_firmware/pull/17326))
* Pca9505/6 driver ([#17333](https://github.com/qmk/qmk_firmware/pull/17333))
* Cirque Attenuation Setting ([#17342](https://github.com/qmk/qmk_firmware/pull/17342))
* Scale brigthness for VIA ([#17352](https://github.com/qmk/qmk_firmware/pull/17352))
* Ensure that rgb+via compiles in all cases ([#17355](https://github.com/qmk/qmk_firmware/pull/17355))
* Wear-leveling EEPROM drivers: `embedded_flash`, `spi_flash`, `legacy` ([#17376](https://github.com/qmk/qmk_firmware/pull/17376))
* In honor of king terry ([#17387](https://github.com/qmk/qmk_firmware/pull/17387))
* tap-dance: Rename tests so that tap_dance is used consistently ([#17396](https://github.com/qmk/qmk_firmware/pull/17396))
* IS31FL3737 Global Current Setting ([#17420](https://github.com/qmk/qmk_firmware/pull/17420))
* [QP] Add ILI9488 support. ([#17438](https://github.com/qmk/qmk_firmware/pull/17438))
* Mark GD32VF103 as ChibiOS-Contrib ([#17444](https://github.com/qmk/qmk_firmware/pull/17444))
* ISSI Drivers Global Current Option ([#17448](https://github.com/qmk/qmk_firmware/pull/17448))
* [Split] pointing transport check ([#17481](https://github.com/qmk/qmk_firmware/pull/17481))
* Cirque trackpad features: circular scroll, inertial cursor ([#17482](https://github.com/qmk/qmk_firmware/pull/17482))
* RGB heatmap skip NO_LED ([#17488](https://github.com/qmk/qmk_firmware/pull/17488))
* Add kb2040 and sparkfun rp2040 converters ([#17514](https://github.com/qmk/qmk_firmware/pull/17514))
* [style] rp2040 stage2 formatting ([#17516](https://github.com/qmk/qmk_firmware/pull/17516))
* Also check /run/media/ for uf2 drives ([#17517](https://github.com/qmk/qmk_firmware/pull/17517))
* RP2040 emulated EEPROM. ([#17519](https://github.com/qmk/qmk_firmware/pull/17519))
* Make debounce algorithms signal matrix changes ([#17554](https://github.com/qmk/qmk_firmware/pull/17554))
* Update PM2040 I2C pins ([#17578](https://github.com/qmk/qmk_firmware/pull/17578))
* Added implementation of WB32 MCU wear_leveling_efl. ([#17579](https://github.com/qmk/qmk_firmware/pull/17579))
* Use Pro Micro SDA/SCL pinout for PM2040 ([#17595](https://github.com/qmk/qmk_firmware/pull/17595))
* Refactor Pixel Fractal effect ([#17602](https://github.com/qmk/qmk_firmware/pull/17602))
* Add Blok RP2040 converter ([#17603](https://github.com/qmk/qmk_firmware/pull/17603))
* Use polled waiting on ChibiOS platforms that support it ([#17607](https://github.com/qmk/qmk_firmware/pull/17607))
* Stabilize Half-duplex RP2040 PIO split comms ([#17612](https://github.com/qmk/qmk_firmware/pull/17612))
* PMW33XX drivers overhaul ([#17613](https://github.com/qmk/qmk_firmware/pull/17613))
* Include stdint.h in avr/i2c_master.h ([#17639](https://github.com/qmk/qmk_firmware/pull/17639))
* Add led matrix support for CKLED2001 ([#17643](https://github.com/qmk/qmk_firmware/pull/17643))
* `STM32_USB_USE_OTG1` => `USB_ENDPOINTS_ARE_REORDERABLE` ([#17647](https://github.com/qmk/qmk_firmware/pull/17647))
* Allow MCU-specific overrides for SPI flags. ([#17650](https://github.com/qmk/qmk_firmware/pull/17650))
* Update LED/RGB Matrix flag function behavior ([#17651](https://github.com/qmk/qmk_firmware/pull/17651))
* Cirque circular scroll: Support POINTING_DEVICE_COMBINED ([#17654](https://github.com/qmk/qmk_firmware/pull/17654))
* Add support for PAW3204 Optical Sensor ([#17669](https://github.com/qmk/qmk_firmware/pull/17669))
* Add LED limits call ([#17679](https://github.com/qmk/qmk_firmware/pull/17679))
* Move Pointing Device code to a subdirectory ([#17684](https://github.com/qmk/qmk_firmware/pull/17684))
* Avoid OOB in dynamic_keymap_reset ([#17695](https://github.com/qmk/qmk_firmware/pull/17695))
* Allow dynamic keymap to compile without `via.h` ([#17703](https://github.com/qmk/qmk_firmware/pull/17703))
* Use correct angle tune range of +/-127 on PMW33XX ([#17708](https://github.com/qmk/qmk_firmware/pull/17708))
* Add Bonsai C4 converter ([#17711](https://github.com/qmk/qmk_firmware/pull/17711))
* VIA Encoder Map Support ([#17734](https://github.com/qmk/qmk_firmware/pull/17734))
* Move Pointing Device Initialization to after Split Post Initialization ([#17740](https://github.com/qmk/qmk_firmware/pull/17740))
* Add ability to enter bootloader mode from `QK_MAKE` ([#17745](https://github.com/qmk/qmk_firmware/pull/17745))
* Add `tap_code16_delay` ([#17748](https://github.com/qmk/qmk_firmware/pull/17748))
* Implement relative mode for Cirque trackpad ([#17760](https://github.com/qmk/qmk_firmware/pull/17760))
* Create generic Pointing Device Pin defines ([#17776](https://github.com/qmk/qmk_firmware/pull/17776))
* Constrain Cirque Pinnacle coordinates ([#17803](https://github.com/qmk/qmk_firmware/pull/17803))
* Refactor/rename postprocess_steno_user → post_process_steno_user ([#17823](https://github.com/qmk/qmk_firmware/pull/17823))
* Add Bit-C PRO converter ([#17827](https://github.com/qmk/qmk_firmware/pull/17827))
* guard RPC invocation by checking RPC info against crc checksum ([#17840](https://github.com/qmk/qmk_firmware/pull/17840))
* Add ST7735 driver to Quantum Painter ([#17848](https://github.com/qmk/qmk_firmware/pull/17848))
* Add minimal STM32F103C6 support ([#17853](https://github.com/qmk/qmk_firmware/pull/17853))
* Remove legacy AVR ssd1306 driver ([#17864](https://github.com/qmk/qmk_firmware/pull/17864))
* Remove tmk_core 'serial' code ([#17866](https://github.com/qmk/qmk_firmware/pull/17866))
* Use LT_ZCAR in place of LT_PLUS for modded kc definitions of keymap_lithuanian_qwerty.h ([#18000](https://github.com/qmk/qmk_firmware/pull/18000))
* Remove invisible variation selector-15 from keymap_japanese.h ([#18007](https://github.com/qmk/qmk_firmware/pull/18007))
* define CZ_PERC S(CZ_PLUS) → define CZ_PERC S(CZ_EQL) ([#18008](https://github.com/qmk/qmk_firmware/pull/18008))
* KR_DQUO S(KR_COLN) → KR_DQUO S(KR_QUOT) in keymap_korean.h ([#18011](https://github.com/qmk/qmk_firmware/pull/18011))
* Replace ; by : in the shifted symbols ASCII art of keymap_norman ([#18029](https://github.com/qmk/qmk_firmware/pull/18029))
* Add eeprom defaults for tinyuf2 bootloader ([#18042](https://github.com/qmk/qmk_firmware/pull/18042))
* Remove duplicate COMBINING HORN in keymap_us_extended.h ([#18045](https://github.com/qmk/qmk_firmware/pull/18045))
* Nix shell updates for `develop` ([#18131](https://github.com/qmk/qmk_firmware/pull/18131))
CLI:
* Add cli command to import keyboard|keymap|kbfirmware ([#16668](https://github.com/qmk/qmk_firmware/pull/16668))
* Publish data as part of API generation ([#17020](https://github.com/qmk/qmk_firmware/pull/17020))
* Allow encoder config from info.json ([#17295](https://github.com/qmk/qmk_firmware/pull/17295))
* `qmk doctor`: show arch for macOS ([#17356](https://github.com/qmk/qmk_firmware/pull/17356))
* Use --exclude-from=.gitignore in place of --exclude-standard ([#17399](https://github.com/qmk/qmk_firmware/pull/17399))
* Improve importer workflow ([#17707](https://github.com/qmk/qmk_firmware/pull/17707))
* Remove legacy bootmagic cli parsing ([#18099](https://github.com/qmk/qmk_firmware/pull/18099))
* Align CLI requirements ([#18117](https://github.com/qmk/qmk_firmware/pull/18117))
Submodule updates:
* Add Raspberry Pi RP2040 support ([#14877](https://github.com/qmk/qmk_firmware/pull/14877))
* Update mpaland/printf to eyalroz/printf fork ([#16163](https://github.com/qmk/qmk_firmware/pull/16163))
* Generic wear-leveling algorithm ([#16996](https://github.com/qmk/qmk_firmware/pull/16996))
* Update LUFA submodule ([#17368](https://github.com/qmk/qmk_firmware/pull/17368))
* Update V-USB submodule ([#17385](https://github.com/qmk/qmk_firmware/pull/17385))
* Update ChibiOS-Contrib ([#17540](https://github.com/qmk/qmk_firmware/pull/17540))
* Update to latest ChibiOS-Contrib. ([#18016](https://github.com/qmk/qmk_firmware/pull/18016))
* Update LUFA submodule ([#18168](https://github.com/qmk/qmk_firmware/pull/18168))
Keyboards:
* GMMK 2 WBG7 MCU compatibility ([#16436](https://github.com/qmk/qmk_firmware/pull/16436))
* bastardkb: restructure folder hierarchy ([#16778](https://github.com/qmk/qmk_firmware/pull/16778))
* Add Gentleman 65 SE Solderd PCB support ([#16992](https://github.com/qmk/qmk_firmware/pull/16992))
* Move/Rename to Hillside48, simplify default keymap ([#17210](https://github.com/qmk/qmk_firmware/pull/17210))
* IDOBAO ID67 code touch-ups and include factory keymap ([#17231](https://github.com/qmk/qmk_firmware/pull/17231))
* IDOBAO ID87v2 code rewrite and include factory keymap ([#17232](https://github.com/qmk/qmk_firmware/pull/17232))
* IDOBAO ID80v3 code rewrite and include factory keymap ([#17234](https://github.com/qmk/qmk_firmware/pull/17234))
* IDOBAO ID80v1 folder rename ([#17265](https://github.com/qmk/qmk_firmware/pull/17265))
* Fine!40 PCB Support ([#17426](https://github.com/qmk/qmk_firmware/pull/17426))
* Update Charybdis code for Extended Mouse reports ([#17435](https://github.com/qmk/qmk_firmware/pull/17435))
* (develop)AP2: Enable support for WL EEPROM Driver ([#17506](https://github.com/qmk/qmk_firmware/pull/17506))
* (develop)Keychron Q2: Enable support for WL EEPROM Driver ([#17507](https://github.com/qmk/qmk_firmware/pull/17507))
* Add Adafruit Macropad RP2040 ([#17512](https://github.com/qmk/qmk_firmware/pull/17512))
* Add RP2040 config defaults ([#17557](https://github.com/qmk/qmk_firmware/pull/17557))
* Add support keyboard Feker IK75 ([#17611](https://github.com/qmk/qmk_firmware/pull/17611))
* boardsource/holiday/spooky data driven ([#17632](https://github.com/qmk/qmk_firmware/pull/17632))
* boardsource/lulu data driven ([#17638](https://github.com/qmk/qmk_firmware/pull/17638))
* Added support for gmmk pro rev2 keyboard. ([#17655](https://github.com/qmk/qmk_firmware/pull/17655))
* boardsource/microdox data driven ([#17675](https://github.com/qmk/qmk_firmware/pull/17675))
* Remove full bootmagic config from user files ([#17702](https://github.com/qmk/qmk_firmware/pull/17702))
* (develop) Update bootmagic for Adafruit Macropad ([#17755](https://github.com/qmk/qmk_firmware/pull/17755))
* Add a kb2040 version of the onkey keyboard that works with the oled keymap ([#17786](https://github.com/qmk/qmk_firmware/pull/17786))
* Enable mousekeys by default for RGBKB Sol3 ([#17842](https://github.com/qmk/qmk_firmware/pull/17842))
* More glyph transformations for spidey3 userspace ([#17854](https://github.com/qmk/qmk_firmware/pull/17854))
* Default rgblight ([#17855](https://github.com/qmk/qmk_firmware/pull/17855))
* Refactor satt/comet46 to use core OLED driver ([#17856](https://github.com/qmk/qmk_firmware/pull/17856))
* Convert yosino58 to use split common ([#17861](https://github.com/qmk/qmk_firmware/pull/17861))
* Migrate crkbd keymaps to oled driver ([#17863](https://github.com/qmk/qmk_firmware/pull/17863))
* Overhaul uzu42 ([#17868](https://github.com/qmk/qmk_firmware/pull/17868))
* Update ginkgo65hot to allow use of community layouts ([#17911](https://github.com/qmk/qmk_firmware/pull/17911))
* Remove `UNUSED_PINS` ([#17931](https://github.com/qmk/qmk_firmware/pull/17931))
* RESET -> QK_BOOT user keymaps ([#17940](https://github.com/qmk/qmk_firmware/pull/17940))
* Add cursor layer to DMQ Spin ([#17996](https://github.com/qmk/qmk_firmware/pull/17996))
* add new keyboard 'soda/cherish' ([#18057](https://github.com/qmk/qmk_firmware/pull/18057))
* Move keyboard USB IDs and strings to data driven: develop ([#18152](https://github.com/qmk/qmk_firmware/pull/18152))
Keyboard fixes:
* Fixup SPI mode 3 => 0 on tzarc/djinn, `develop`. ([#17440](https://github.com/qmk/qmk_firmware/pull/17440))
* Fixup doio/kb16 ([#17545](https://github.com/qmk/qmk_firmware/pull/17545))
* Adafruit Macropad: Add VIA keymap, fix default km ([#17735](https://github.com/qmk/qmk_firmware/pull/17735))
* Fix compilation issues for Charybdis/Dilemma ([#17791](https://github.com/qmk/qmk_firmware/pull/17791))
* bastardkb: fix info.json changes that got reverted during the last merge from `master` to `develop` ([#17800](https://github.com/qmk/qmk_firmware/pull/17800))
* Fixup uzu42 ([#17867](https://github.com/qmk/qmk_firmware/pull/17867))
* use correct function in Dilemma splinky ([#17923](https://github.com/qmk/qmk_firmware/pull/17923))
* Fix compilation issues for Boardsource Microdox ([#18037](https://github.com/qmk/qmk_firmware/pull/18037))
* Fixup gmmk/pro/rev2 USB Data ([#18056](https://github.com/qmk/qmk_firmware/pull/18056))
Others:
* backlight|led 'on state' for DD configuration ([#17383](https://github.com/qmk/qmk_firmware/pull/17383))
* Dump out the largest symbols in flash and in RAM. ([#17397](https://github.com/qmk/qmk_firmware/pull/17397))
* Re-order user space rules inclusion ([#17459](https://github.com/qmk/qmk_firmware/pull/17459))
* Update feature_split_keyboard.md to add extra detail about left and right matrices. ([#17492](https://github.com/qmk/qmk_firmware/pull/17492))
* Swap F4x1 default board files away from blackpill ([#17522](https://github.com/qmk/qmk_firmware/pull/17522))
* Add converter docs ([#17593](https://github.com/qmk/qmk_firmware/pull/17593))
* Updates to Pointing Device Docs ([#17777](https://github.com/qmk/qmk_firmware/pull/17777))
* Add deprecated check for RGBLIGHT_ANIMATIONS ([#17832](https://github.com/qmk/qmk_firmware/pull/17832))
* Remove OLED driver Split Common warning ([#17862](https://github.com/qmk/qmk_firmware/pull/17862))
* Revert " Re-order user space rules inclusion (#17459)" ([#18032](https://github.com/qmk/qmk_firmware/pull/18032))
Bugs:
* Minor schema fixes ([#14200](https://github.com/qmk/qmk_firmware/pull/14200))
* Fix buffer size for WS2812 PWM driver ([#17046](https://github.com/qmk/qmk_firmware/pull/17046))
* Fix AVR I2C master 1ms timeout ([#17174](https://github.com/qmk/qmk_firmware/pull/17174))
* Mouse key kinetic mode fix ([#17176](https://github.com/qmk/qmk_firmware/pull/17176))
* Fix RGB heatmap to use XY positions and use correct led limits. ([#17184](https://github.com/qmk/qmk_firmware/pull/17184))
* Fix keys being discarded after using the leader key ([#17287](https://github.com/qmk/qmk_firmware/pull/17287))
* Fixup pimoroni trackball ([#17335](https://github.com/qmk/qmk_firmware/pull/17335))
* Fix via builds broken by brightness scaling ([#17354](https://github.com/qmk/qmk_firmware/pull/17354))
* SPI Bugfix for ChibiOS `21.11.1` => `21.11.2` ([#17371](https://github.com/qmk/qmk_firmware/pull/17371))
* Additional schema fixes ([#17414](https://github.com/qmk/qmk_firmware/pull/17414))
* Fix deadlocks on disconnected secondary half ([#17423](https://github.com/qmk/qmk_firmware/pull/17423))
* [Fix] Fix compilation warning for non-split keebs after #17423 ([#17439](https://github.com/qmk/qmk_firmware/pull/17439))
* Fix Caps Word to treat mod-taps more consistently. ([#17463](https://github.com/qmk/qmk_firmware/pull/17463))
* Fix docs regarding `USB_SUSPEND_WAKEUP_DELAY` ([#17501](https://github.com/qmk/qmk_firmware/pull/17501))
* Fixup SSD1351 build after #17438 ([#17533](https://github.com/qmk/qmk_firmware/pull/17533))
* Fixup SPI init procedure, SPI EEPROM sequencing ([#17534](https://github.com/qmk/qmk_firmware/pull/17534))
* Fix Caps Word capitalization when used with Combos + Auto Shift. ([#17549](https://github.com/qmk/qmk_firmware/pull/17549))
* Allow for `keymaps` array to be implemented in a file other than `$(KEYMAP_C)` ([#17559](https://github.com/qmk/qmk_firmware/pull/17559))
* [Fix] printf update aftermath ([#17584](https://github.com/qmk/qmk_firmware/pull/17584))
* Fix rgbkb/sol/rev2 build issues ([#17601](https://github.com/qmk/qmk_firmware/pull/17601))
* More DD encoder fixes ([#17615](https://github.com/qmk/qmk_firmware/pull/17615))
* [Fix] Make ChibiOS `_wait.h` independent of `quantum.h` ([#17645](https://github.com/qmk/qmk_firmware/pull/17645))
* Grammar fixes for docs/feature_converters.md ([#17652](https://github.com/qmk/qmk_firmware/pull/17652))
* Fix compilation issue with Cirque Guestures file ([#17656](https://github.com/qmk/qmk_firmware/pull/17656))
* Fix compile issue with LED Matrix ([#17658](https://github.com/qmk/qmk_firmware/pull/17658))
* Post-bootloader EFL/SPI fixes. ([#17661](https://github.com/qmk/qmk_firmware/pull/17661))
* Fix LED limit loop ([#17678](https://github.com/qmk/qmk_firmware/pull/17678))
* [Fix] Use correct angle tune range of +/-30 on PMW33XX ([#17693](https://github.com/qmk/qmk_firmware/pull/17693))
* Fix AVR compilation of FNV by using standard integer typenames. ([#17716](https://github.com/qmk/qmk_firmware/pull/17716))
* fix syntax error in header file ([#17732](https://github.com/qmk/qmk_firmware/pull/17732))
* Fix custom debug function and sample output ([#17790](https://github.com/qmk/qmk_firmware/pull/17790))
* Fix QK_MAKE's reboot check ([#17795](https://github.com/qmk/qmk_firmware/pull/17795))
* Chibios: Stop I2C peripheral on transaction error ([#17798](https://github.com/qmk/qmk_firmware/pull/17798))
* Fix ChibiOS `i2c_master` error codes ([#17808](https://github.com/qmk/qmk_firmware/pull/17808))
* Update ChibiOS Contrib for RP2040 fixes ([#17817](https://github.com/qmk/qmk_firmware/pull/17817))
* RP2040 disable PIO IRQs on serial timeout ([#17839](https://github.com/qmk/qmk_firmware/pull/17839))
* Fix POINTING_DEVICE_GESTURES_SCROLL_ENABLE typo ([#17850](https://github.com/qmk/qmk_firmware/pull/17850))
* Fixup compilation of printf-like functions with uint32_t args. ([#17904](https://github.com/qmk/qmk_firmware/pull/17904))
* Fix issue with #17904. ([#17905](https://github.com/qmk/qmk_firmware/pull/17905))
* Always run pointing device init ([#17936](https://github.com/qmk/qmk_firmware/pull/17936))
* Align TO() max layers with other keycodes ([#17989](https://github.com/qmk/qmk_firmware/pull/17989))
* Fix Bépo's BP_NNBS (narrow non-breaking space) ([#17999](https://github.com/qmk/qmk_firmware/pull/17999))
* Move Encoder+Encoder Map from generic features ([#18018](https://github.com/qmk/qmk_firmware/pull/18018))
* Fix wrong varaible in encoder block ([#18020](https://github.com/qmk/qmk_firmware/pull/18020))
* Fix LV_CCAR and LV_NCED in keymap_latvian.h ([#18025](https://github.com/qmk/qmk_firmware/pull/18025))
* Use ANSI ASCII art and fix comments for LT_COLN and LT_UNDS in keymap_lithuanian_qwerty.h ([#18028](https://github.com/qmk/qmk_firmware/pull/18028))
* Partially revert some WB32 specific changes ([#18038](https://github.com/qmk/qmk_firmware/pull/18038))
* Fix Emulated EEPROM issue with F466 ([#18039](https://github.com/qmk/qmk_firmware/pull/18039))
* Fix DV_SCLN and DV_COLN in keymap_spanish_dvorak.h ([#18043](https://github.com/qmk/qmk_firmware/pull/18043))
* Fix missing development_board schema entry ([#18050](https://github.com/qmk/qmk_firmware/pull/18050))
* Add key event check to `is_tap_record` and remove `is_tap_key` ([#18063](https://github.com/qmk/qmk_firmware/pull/18063))
* Fix GD32VF103 WS2812 PWM driver ([#18067](https://github.com/qmk/qmk_firmware/pull/18067))
* Fix new-keyboard default for RP2040 bootloader ([#18100](https://github.com/qmk/qmk_firmware/pull/18100))
* Fixup F4xx wear-leveling bootloader check ([#18102](https://github.com/qmk/qmk_firmware/pull/18102))
* Fix PID value for the Keyboardio Atreus 2 bootloader ([#18116](https://github.com/qmk/qmk_firmware/pull/18116))
* Add missing SS_LOPT and SS_ROPT defines ([#18175](https://github.com/qmk/qmk_firmware/pull/18175))

View File

@@ -4,6 +4,7 @@
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Getting Help/Support](support.md)
* [Building With GitHub Userspace](newbs_building_firmware_workflow.md)
* [Other Resources](newbs_learn_more_resources.md)
* [Syllabus](syllabus.md)
@@ -82,13 +83,13 @@
* [Key Overrides](feature_key_overrides.md)
* [Layers](feature_layers.md)
* [One Shot Keys](one_shot_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [Raw HID](feature_rawhid.md)
* [Secure](feature_secure.md)
* [Send String](feature_send_string.md)
* [Sequencer](feature_sequencer.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Tap-Hold Configuration](tap_hold.md)
* [Terminal](feature_terminal.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* [WPM Calculation](feature_wpm.md)
@@ -107,6 +108,7 @@
* [Audio](feature_audio.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic Lite](feature_bootmagic.md)
* [Converters](feature_converters.md)
* [Custom Matrix](custom_matrix.md)
* [Digitizer](feature_digitizer.md)
* [DIP Switch](feature_dip_switch.md)
@@ -115,7 +117,7 @@
* [Joystick](feature_joystick.md)
* [LED Indicators](feature_led_indicators.md)
* [MIDI](feature_midi.md)
* [Proton C Conversion](proton_c_conversion.md)
* [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
@@ -133,7 +135,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [Most Recent ChangeLog](ChangeLog/20220528.md "QMK v0.17.0 - 2022 May 28")
* [Most Recent ChangeLog](ChangeLog/20220827.md "QMK v0.18.0 - 2022 Aug 27")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
@@ -147,6 +149,7 @@
* [SPI Driver](spi_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [Flash Driver](flash_driver.md)
* ['serial' Driver](serial_driver.md)
* [UART Driver](uart_driver.md)
* [GPIO Controls](gpio_control.md)
@@ -165,6 +168,9 @@
* Arm/ChibiOS
* [Selecting an MCU](platformdev_selecting_arm_mcu.md)
* [Early initialization](platformdev_chibios_earlyinit.md)
* [Raspberry Pi RP2040](platformdev_rp2040.md)
* [Proton C](platformdev_proton_c.md)
* [WeAct Blackpill F411](platformdev_blackpill_f411.md)
* QMK Reference
* [Contributing to QMK](contributing.md)

View File

@@ -113,15 +113,17 @@ Additionally, in the board config, you'll want to make changes to enable the DAC
### DAC Config
| Define | Defaults | Description --------------------------------------------------------------------------------------------- |
| Define | Defaults | Description |
| -------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUDIO_DAC_SAMPLE_MAX` | `4095U` | Highest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples. |
| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
| `AUDIO_MAX_SIMULTANEOUS_TONES` | __see next table__ | The number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played. |
| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate and number of simultaneous tones, instead of using one of the listed presets.
| Define | Sample Rate | Simultaneous tones |
| --------------------------------- | ----------- | ------------------- |
| `AUDIO_DAC_QUALITY_VERY_LOW` | `11025U` | `8` |
| `AUDIO_DAC_QUALITY_LOW` | `22040U` | `4` |
| `AUDIO_DAC_QUALITY_HIGH` | `44100U` | `2` |

View File

@@ -8,6 +8,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
* [2022 Aug 27](ChangeLog/20220827.md)
* [2022 May 28](ChangeLog/20220528.md)
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
@@ -22,17 +23,18 @@ 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 27, 2022.
The next Breaking Change is scheduled for November 26, 2022.
### Important Dates
* [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.
* 2022 Aug 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* 2022 Oct 29 - `develop` closed to new PR's.
* 2022 Oct 29 - Call for testers.
* 2022 Nov 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* 2022 Nov 19 - `develop` is locked, only critical bugfix PR's merged.
* 2022 Nov 24 - `master` is locked, no PR's merged.
* 2022 Nov 26 - Merge `develop` to `master`.
* 2022 Nov 26 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -43,7 +45,7 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
* The PR is complete and ready to merge
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220827`.
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20221126`.
* 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.
@@ -54,53 +56,47 @@ This section documents various processes we use when running the Breaking Change
### 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
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
* Post call for testers: message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
* `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be raised against qmk_firmware for this breaking changes cycle is today.`
### 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
* Post call for testers: message `@Breaking Changes Updates` on `#qmk_firmware` in Discord.
* `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.`
### 1 Week Before Merge
* Announce that master will be closed from <2 Days Before> to <Day of Merge>
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
* `develop` is now closed to PR merges, only critical bugfixes may be included
* Announce that master will be closed from <2 Days Before> to <Day of Merge> -- message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
* `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.`
### 2 Days Before Merge
* `master` is now closed to PR merges
* Announce that master is closed for 2 days
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
* `@Breaking Changes Updates -- Hey folks, the master branch of qmk_firmware is now locked for the next couple of days while we prepare to merge the newest batch of changes from develop.`
### Day Of Merge
* `qmk_firmware` git commands
* [ ] `git checkout develop`
* [ ] `git pull --ff-only`
* [ ] Edit `readme.md`
* [ ] Remove the notes about `develop`
* [ ] Roll up the ChangeLog into one file.
* [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
* [ ] `git push upstream develop`
* `git checkout develop`
* `git pull --ff-only`
* Edit `readme.md`
* Remove the notes about `develop`
* Roll up the ChangeLog into one file.
* `git commit -m 'Merge point for <DATE> Breaking Change'`
* `git push upstream develop`
* GitHub Actions
* [ ] Create a PR for `develop`
* [ ] **Turn off 'Automatically delete head branches' for the repository** -- confirm with @qmk/directors that it is done before continuing
* Create a PR for `develop`
* **Turn off 'Automatically delete head branches' for the repository** -- confirm with @qmk/directors that it is done before continuing
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git merge --no-ff develop`
* [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ] `git push upstream <next_version>`
* [ ] `git push upstream master`
* `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
@@ -109,28 +105,72 @@ This section documents various processes we use when running the Breaking Change
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'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
* `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. See previous revisions of the `develop` branch.
* Include a link to this document
* `git commit -m 'Branch point for <DATE> Breaking Change'`
* `git tag breakpoint_<YYYY>_<MM>_<DD>`
* `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
* All submodules under `lib` now need to be checked against their QMK-based forks:
* [ ] `git submodule foreach git log -n1`
* [ ] Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
* `git submodule foreach git log -n1`
* Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
* Go to [qmk/ChibiOS](https://github.com/qmk/ChibiOS)
* Compare the commit hash in the above output to the commit hash in the repository
* If there's a mismatch:
* [ ] `cd lib/chibios`
* [ ] `git fetch --all`
* [ ] `git checkout master`
* [ ] `git reset --hard <commit hash>`
* [ ] `git push origin master --force-with-lease`
* If there's a mismatch, that repository needs to have its `master` branch updated to match (otherwise Configurator won't work):
* `cd lib/chibios`
* `git fetch --all`
* `git checkout master`
* `git reset --hard <commit hash>`
* `git push origin master --force-with-lease`
* Announce that both `master` and `develop` are now unlocked -- message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
* `@Breaking Changes Updates -- Hey folks, develop has now been merged into master -- newest batch of changes are now available for everyone to use!`
* (Optional) [update ChibiOS + ChibiOS-Contrib on `develop`](chibios_upgrade_instructions.md)
### Set up Discord events for the next cycle
* Update this file with the new dates: `docs/breaking_changes.md`
* Create Events on the QMK Discord - "Somewhere Else" => "GitHub":
* Event #1:
| Field | Value |
|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Topic | Last `develop` functionality PRs to be raised |
| Start Date | ((5 weeks before merge)), 12:00am |
| End Date | ((4 weeks before merge)), 12:00am |
| Description | This is the last window for functional PRs to be raised against `develop` for the current breaking changes cycle. After ((4 weeks before merge)), any new PRs targeting `develop` will be deferred to the next cycle. |
* Event #2:
| Field | Value |
|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Topic | Last `develop` functionality PRs to be merged |
| Start Date | ((4 weeks before merge)), 12:00am |
| End Date | ((2 weeks before merge)), 12:00am |
| Description | This is the last window for functional PRs to be merged into `develop` for the current breaking changes cycle. After ((2 weeks before merge)), only bugfix PRs targeting `develop` will be considered for merge. |
* Event #3:
| Field | Value |
|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Topic | `develop` closed for merges |
| Start Date | ((2 weeks before merge)), 12:00am |
| End Date | ((day of merge)), 12:00am |
| Description | This is the deadline for functionality bugfix PRs to be merged into `develop` for the current breaking changes cycle. After ((1 week before merge)), only critical bugfix PRs targeting `develop` will be considered for merge. |
* Event #4:
| Field | Value |
|-------------|----------------------------------------------------------------------------------------------------------------------|
| Topic | `master` closed for merges |
| Start Date | ((2 days before merge)), 12:00am |
| End Date | ((day of merge)), 12:00am |
| Description | This is the period that no PRs are to be merged to `master`, so that the merge of `develop` into `master` is stable. |
* Event #5:
| Field | Value |
|-------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| Topic | `develop` merges to `master` |
| Start Date | ((day of merge)), 12:00am |
| End Date | ((day of merge)), 11:45pm |
| Description | At some point, QMK will merge `develop` into `master` and everyone will be able to reap the benefits of the newest batch of functionality. |

View File

@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
* [2022 Aug 27](ChangeLog/20220827.md) - version 0.18.0
* [2022 May 28](ChangeLog/20220528.md) - version 0.17.0
* [2022 Feb 26](ChangeLog/20220226.md) - version 0.16.0
* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0

View File

@@ -90,6 +90,8 @@ This command is similar to `qmk compile`, but can also target a bootloader. The
This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
This command can also flash binary firmware files (hex or bin) such as the ones produced by [Configurator](https://config.qmk.fm).
**Usage for Configurator Exports**:
```
@@ -102,6 +104,21 @@ qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configurat
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
```
**Usage for pre-compiled firmwares**:
**Note**: The microcontroller needs to be specified (`-m` argument) for keyboards with the following bootloaders:
* HalfKay
* QMK HID
* USBaspLoader
ISP flashing is also supported with the following flashers and require the microcontroller to be specified:
* USBasp
* USBtinyISP
```
qmk flash [-m <microcontroller>] <compiledFirmware.[bin|hex]>
```
**Listing the Bootloaders**
```
@@ -352,6 +369,73 @@ $ qmk via2json -kb ai03/polaris -o polaris_keymap.json polaris_via_backup.json
Ψ Wrote keymap to /home/you/qmk_firmware/polaris_keymap.json
```
## `qmk import-keyboard`
This command imports a data-driven `info.json` keyboard into the repo.
**Usage**:
```
usage: qmk import-keyboard [-h] filename
```
**Example:**
```
$ qmk import-keyboard ~/Downloads/forever60.json
Ψ Importing forever60.json.
Ψ Imported a new keyboard named forever60.
Ψ To start working on things, `cd` into keyboards/forever60,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb forever60 -km default.
```
## `qmk import-keymap`
This command imports a data-driven `keymap.json` keymap into the repo.
**Usage**:
```
usage: qmk import-keymap [-h] filename
```
**Example:**
```
qmk import-keymap ~/Downloads/asdf2.json
Ψ Importing asdf2.json.
Ψ Imported a new keymap named asdf2.
Ψ To start working on things, `cd` into keyboards/takashicompany/dogtag/keymaps/asdf2,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb takashicompany/dogtag -km asdf2.
```
## `qmk import-kbfirmware`
This command creates a new keyboard based on a [Keyboard Firmware Builder](https://kbfirmware.com/) export.
**Usage**:
```
usage: qmk import-kbfirmware [-h] filename
```
**Example:**
```
$ qmk import-kbfirmware ~/Downloads/gh62.json
Ψ Importing gh62.json.
⚠ Support here is basic - Consider using 'qmk new-keyboard' instead
Ψ Imported a new keyboard named gh62.
Ψ To start working on things, `cd` into keyboards/gh62,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb gh62 -km default.
```
---
# Developer Commands
@@ -527,3 +611,4 @@ This command converts a TTF font to an intermediate format for editing, before c
## `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.

View File

@@ -14,6 +14,10 @@ Add this to the end of your `.profile` or `.bashrc`:
If you put `qmk_firmware` into another location you will need to adjust this path.
Zsh users will need to load `bashcompinit`. The following can be added to `~/.zshrc` file:
autoload -Uz bashcompinit && bashcompinit
### System Wide Symlink
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:

View File

@@ -62,9 +62,17 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
* PJRC Teensy 3.2
* [MK64FX512](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k64-120-mhz-256-kb-sram-microcontrollers-mcus-based-on-arm-cortex-m4-core:K64_120)
* PJRC Teensy 3.5
* [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180)
* PJRC Teensy 3.6
### Raspberry Pi
* [RP2040](https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html)
For a detailed overview about the RP2040 support by QMK see the [dedicated RP2040 page](platformdev_rp2040.md).
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop). However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.

View File

@@ -57,8 +57,6 @@ This is a C header file that is one of the first things included, and will persi
* may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information.
* `#define MATRIX_IO_DELAY 30`
* the delay in microseconds when between changing matrix pin state and reading values
* `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
* pins unused by the keyboard for reference
* `#define MATRIX_HAS_GHOST`
* define is matrix has ghost (unlikely)
* `#define MATRIX_UNSELECT_DRIVE_HIGH`
@@ -107,8 +105,10 @@ This is a C header file that is one of the first things included, and will persi
* sets the maximum power (in mA) over USB for the device (default: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* sets the USB polling rate in milliseconds for the keyboard, mouse, and shared (NKRO/media keys) interfaces
* `#define USB_SUSPEND_WAKEUP_DELAY 200`
* set the number of milliseconde to pause after sending a wakeup packet
* `#define USB_SUSPEND_WAKEUP_DELAY 0`
* sets the number of milliseconds to pause after sending a wakeup packet.
Disabled by default, you might want to set this to 200 (or higher) if the
keyboard does not wake up properly after suspending.
* `#define F_SCL 100000L`
* sets the I2C clock rate speed for keyboards using I2C. The default is `400000L`, except for keyboards using `split_common`, where the default is `100000L`.
@@ -141,7 +141,7 @@ If you define these options you will enable the associated feature, which may in
## Behaviors That Can Be Configured
* `#define TAPPING_TERM 200`
* how long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
* how long before a key press becomes a hold
* `#define TAPPING_TERM_PER_KEY`
* enables handling for per key `TAPPING_TERM` settings
* `#define RETRO_TAPPING`
@@ -174,19 +174,12 @@ If you define these options you will enable the associated feature, which may in
* sets the timer for leader key chords to run on each key press rather than overall
* `#define LEADER_KEY_STRICT_KEY_PROCESSING`
* Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify `MT(MOD_CTL, KC_A)` if you want to use `KC_A`.
* `#define MOUSE_EXTENDED_REPORT`
* Enables support for extended reports (-32767 to 32767, instead of -127 to 127), which may allow for smoother reporting, and prevent maxing out of the reports. Applies to both Pointing Device and Mousekeys.
* `#define ONESHOT_TIMEOUT 300`
* how long before oneshot times out
* `#define ONESHOT_TAP_TOGGLE 2`
* how many taps before oneshot toggle is triggered
* `#define QMK_KEYS_PER_SCAN 4`
* Allows sending more than one key per scan. By default, only one key event gets
sent via `process_record()` per scan. This has little impact on most typing, but
if you're doing a lot of chords, or your scan rate is slow to begin with, you can
have some delay in processing key events. Each press and release is a separate
event. For a keyboard with 1ms or so scan times, even a very fast typist isn't
going to produce the 500 keystrokes a second needed to actually get more than a
few ms of delay from this. But if you're doing chording on something with 3-4ms
scan times? You probably want this.
* `#define COMBO_COUNT 2`
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count.
* `#define COMBO_TERM 200`
@@ -194,7 +187,7 @@ If you define these options you will enable the associated feature, which may in
* `#define COMBO_MUST_HOLD_MODS`
* Flag for enabling extending timeout on Combos containing modifers
* `#define COMBO_MOD_TERM 200`
* Allows for extending COMBO_TERM for mod keys while mid-combo.
* Allows for extending COMBO_TERM for mod keys while mid-combo.
* `#define COMBO_MUST_HOLD_PER_COMBO`
* Flag to enable per-combo COMBO_TERM extension and `get_combo_must_hold()` function
* `#define COMBO_TERM_PER_COMBO`
@@ -214,14 +207,12 @@ If you define these options you will enable the associated feature, which may in
* `#define RGB_DI_PIN D7`
* pin the DI on the WS2812 is hooked-up to
* `#define RGBLIGHT_ANIMATIONS`
* run RGB animations
* `#define RGBLIGHT_LAYERS`
* Lets you define [lighting layers](feature_rgblight.md?id=lighting-layers) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
* `#define RGBLIGHT_MAX_LAYERS`
* Defaults to 8. Can be expanded up to 32 if more [lighting layers](feature_rgblight.md?id=lighting-layers) are needed.
* Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
* `#define RGBLIGHT_LAYER_BLINK`
* `#define RGBLIGHT_LAYER_BLINK`
* Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
* If defined, then [lighting layers](feature_rgblight?id=overriding-rgb-lighting-onoff-status) will be shown even if RGB Light is off.
@@ -366,8 +357,8 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `SRC`
* Used to add files to the compilation/linking list.
* `LIB_SRC`
* Used to add files as a library to the compilation/linking list.
The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
* Used to add files as a library to the compilation/linking list.
The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
For example, if you specify:
```
SRC += a.c
@@ -420,7 +411,7 @@ Use these to enable or disable building certain features. The more you have enab
* `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.
* 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`

View File

@@ -81,17 +81,17 @@ void matrix_init(void) {
}
uint8_t matrix_scan(void) {
bool matrix_has_changed = false;
bool changed = false;
// TODO: add matrix scanning routine here
// Unless hardware debouncing - use the configured debounce routine
debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
// This *must* be called for correct keyboard behavior
matrix_scan_quantum();
return matrix_has_changed;
return changed;
}
```

View File

@@ -406,11 +406,11 @@ And you're done. The RGB layer indication will only work if you want it to. And
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
# 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
## Deferred executor callbacks
All _deferred executor callbacks_ have a common function signature and look like:
@@ -430,7 +430,7 @@ The return value is the number of milliseconds to use if the function should be
?> 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
## Deferred executor registration
Once a callback has been defined, it can be scheduled using the following API:
@@ -444,7 +444,7 @@ The third parameter is the `cb_arg` that gets passed to the callback at the poin
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
## 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
@@ -452,7 +452,7 @@ The `deferred_token` returned by `defer_exec()` can be used to extend a the dura
extend_deferred_exec(my_token, 800);
```
#### Cancelling a deferred execution
## Cancelling a deferred execution
The `deferred_token` returned by `defer_exec()` can be used to cancel a pending execution before it gets invoked:
```c
@@ -462,7 +462,7 @@ 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
## 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`.

View File

@@ -22,7 +22,7 @@ You will then need to add support for your new configuration to `info.json`. The
1. Add it to the schema in `data/schemas/keyboards.jsonschema`
1. Add a mapping in `data/maps`
1. (optional and discoraged) Add code to extract/generate it to:
1. (optional and discouraged) Add code to extract/generate it to:
* `lib/python/qmk/info.py`
* `lib/python/qmk/cli/generate/config_h.py`
* `lib/python/qmk/cli/generate/rules_mk.py`

View File

@@ -2,12 +2,15 @@
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
Selecting the EEPROM driver is done in your keyboard's `rules.mk`:
Driver | Description
-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` (default) | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = spi` | Supports writing to SPI-based 25xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
`EEPROM_DRIVER = wear_leveling` | Frontend driver for the wear_leveling system, allowing for EEPROM emulation on top of flash -- both in-MCU and external SPI NOR flash.
## Vendor Driver Configuration :id=vendor-eeprom-driver-configuration
@@ -43,8 +46,9 @@ Module | Equivalent `#define` | Source
-----------------|---------------------------------|------------------------------------------
CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764>
RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764>
24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/wwwproducts/en/24LC64>
24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128>
24LC32A EEPROM | `#define EEPROM_I2C_24LC32A` | <https://www.microchip.com/en-us/product/24LC32A>
24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/en-us/product/24LC64>
24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/en-us/product/24LC128>
24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525>
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
@@ -54,13 +58,13 @@ MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/p
Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
`config.h` override | Description | Default Value
-----------------------------------------------|--------------------------------------------------------------------------------------|--------------
`#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN` | SPI Slave select pin in order to inform that the EEPROM is currently being addressed | _none_
`#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR` | Clock divisor used to divide the peripheral clock to derive the SPI frequency | `64`
`#define EXTERNAL_EEPROM_BYTE_COUNT` | Total size of the EEPROM in bytes | 8192
`#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32
`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2
`config.h` override | Default Value | Description
-----------------------------------------------|---------------|-------------------------------------------------------------------------------------
`#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN` | _none_ | SPI Slave select pin in order to inform that the EEPROM is currently being addressed
`#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR` | `64` | Clock divisor used to divide the peripheral clock to derive the SPI frequency
`#define EXTERNAL_EEPROM_BYTE_COUNT` | `8192` | Total size of the EEPROM in bytes
`#define EXTERNAL_EEPROM_PAGE_SIZE` | `32` | Page size of the EEPROM in bytes, as specified in the datasheet
`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | `2` | The number of bytes to transmit for the memory location within the EEPROM
!> There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero.
@@ -73,3 +77,84 @@ The only configurable item for the transient EEPROM driver is its size:
`#define TRANSIENT_EEPROM_SIZE` | Total size of the EEPROM storage in bytes | 64
Default values and extended descriptions can be found in `drivers/eeprom/eeprom_transient.h`.
## Wear-leveling Driver Configuration :id=wear_leveling-eeprom-driver-configuration
The wear-leveling driver uses an algorithm to minimise the number of erase cycles on the underlying MCU flash memory.
There is no specific configuration for this driver, but the wear-leveling system used by this driver may need configuration. See the [wear-leveling configuration](#wear_leveling-configuration) section for more information.
# Wear-leveling Configuration :id=wear_leveling-configuration
The wear-leveling driver has a few possible _backing stores_ that may be used by adding to your keyboard's `rules.mk` file:
Driver | Description
----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`WEAR_LEVELING_DRIVER = embedded_flash` | This driver is used for emulating EEPROM by writing to embedded flash on the MCU.
`WEAR_LEVELING_DRIVER = spi_flash` | This driver is used to address external SPI NOR Flash peripherals.
`WEAR_LEVELING_DRIVER = rp2040_flash` | This driver is used to write to the same storage the RP2040 executes code from.
`WEAR_LEVELING_DRIVER = legacy` | This driver is the "legacy" emulated EEPROM provided in historical revisions of QMK. Currently used for STM32F0xx and STM32F4x1, but slated for deprecation and removal once `embedded_flash` support for those MCU families is complete.
!> All wear-leveling drivers require an amount of RAM equivalent to the selected logical EEPROM size. Increasing the size to 32kB of EEPROM requires 32kB of RAM, which a significant number of MCUs simply do not have.
## Wear-leveling Embedded Flash Driver Configuration :id=wear_leveling-efl-driver-configuration
This driver performs writes to the embedded flash storage embedded in the MCU. In most circumstances, the last few of sectors of flash are used in order to minimise the likelihood of collision with program code.
Configurable options in your keyboard's `config.h`:
`config.h` override | Default | Description
-----------------------------------------|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
`#define WEAR_LEVELING_LOGICAL_SIZE` | `1024` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.
!> If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.
## Wear-leveling SPI Flash Driver Configuration :id=wear_leveling-flash_spi-driver-configuration
This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the [flash driver](flash_driver.md) documentation for more information.
Configurable options in your keyboard's `config.h`:
`config.h` override | Default | Description
----------------------------------------------------|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------
`#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT` | `1` | Number of blocks in the external flash used by the wear-leveling algorithm.
`#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET` | `0` | The index first block in the external flash used by the wear-leveling algorithm.
`#define WEAR_LEVELING_LOGICAL_SIZE` | `((block_count*block_size)/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. Result must be <= 64kB.
`#define WEAR_LEVELING_BACKING_SIZE` | `(block_count*block_size)` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
`#define BACKING_STORE_WRITE_SIZE` | `8` | The write width used whenever a write is performed on the external flash peripheral.
!> There is currently a limit of 64kB for the EEPROM subsystem within QMK, so using a larger flash is not going to be beneficial as the logical size cannot be increased beyond 65536. The backing size may be increased to a larger value, but erase timing may suffer as a result.
## Wear-leveling RP2040 Driver Configuration :id=wear_leveling-rp2040-driver-configuration
This driver performs writes to the same underlying storage that the RP2040 executes its code.
Configurable options in your keyboard's `config.h`:
`config.h` override | Default | Description
------------------------------------------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------
`#define WEAR_LEVELING_RP2040_FLASH_SIZE` | `PICO_FLASH_SIZE_BYTES` | Number of bytes of flash on the board.
`#define WEAR_LEVELING_RP2040_FLASH_BASE` | `(flash_size-sector_size)` | The byte-wise location that the backing storage should be located.
`#define WEAR_LEVELING_LOGICAL_SIZE` | `4096` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
`#define WEAR_LEVELING_BACKING_SIZE` | `8192` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size.
`#define BACKING_STORE_WRITE_SIZE` | `2` | The write width used whenever a write is performed on the external flash peripheral.
## Wear-leveling Legacy EEPROM Emulation Driver Configuration :id=wear_leveling-legacy-driver-configuration
This driver performs writes to the embedded flash storage embedded in the MCU much like the normal Embedded Flash Driver, and is only for use with STM32F0xx and STM32F4x1 devices. This flash implementation is still currently provided as the EFL driver is currently non-functional for the previously mentioned families.
By default, `1024` bytes of emulated EEPROM is provided:
MCU | EEPROM Provided | Flash Used
----------|-----------------|--------------
STM32F042 | `1024` bytes | `2048` bytes
STM32F070 | `1024` bytes | `2048` bytes
STM32F072 | `1024` bytes | `2048` bytes
STM32F401 | `1024` bytes | `16384` bytes
STM32F411 | `1024` bytes | `16384` bytes
Under normal circumstances configuration of this driver requires intimate knowledge of the MCU's flash structure -- reconfiguration is at your own risk and will require referring to the code.

View File

@@ -59,7 +59,7 @@ When porting, or when attempting to diagnose pcb issues, it can be useful to kno
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif
return true;
}
@@ -69,12 +69,12 @@ Example output
```
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
KL: kc: 169, col: 0, row: 0, pressed: 0
KL: kc: 174, col: 1, row: 0, pressed: 1
KL: kc: 174, col: 1, row: 0, pressed: 0
KL: kc: 172, col: 2, row: 0, pressed: 1
KL: kc: 172, col: 2, row: 0, pressed: 0
KL: kc: 169, col: 0, row: 0, pressed: 1, time: 15505, int: 0, count: 0
KL: kc: 169, col: 0, row: 0, pressed: 0, time: 15510, int: 0, count: 0
KL: kc: 174, col: 1, row: 0, pressed: 1, time: 15703, int: 0, count: 0
KL: kc: 174, col: 1, row: 0, pressed: 0, time: 15843, int: 0, count: 0
KL: kc: 172, col: 2, row: 0, pressed: 1, time: 16303, int: 0, count: 0
KL: kc: 172, col: 2, row: 0, pressed: 0, time: 16411, int: 0, count: 0
```
### How long did it take to scan for a keypress?

View File

@@ -326,7 +326,7 @@ bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key
If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.
With `#define COMBO_ONLY_FROM_LAYER _LAYER_A` the combos' keys are always checked from layer `_LAYER_A` even though the active layer would be `_LAYER_B`.
With `#define COMBO_ONLY_FROM_LAYER 0` in config.h, the combos' keys are always checked from layer `0`, even if other layers are active.
## User callbacks

138
docs/feature_converters.md Normal file
View File

@@ -0,0 +1,138 @@
# Converters
Since many drop-in replacement controllers now exist, we've done our best to make them easy to use in existing designs.
This page documents the handy automated process for converting keyboards.
### Supported Converters
Currently the following converters are available:
| From | To |
|------------|-------------------|
| `promicro` | `proton_c` |
| `promicro` | `kb2040` |
| `promicro` | `promicro_rp2040` |
| `promicro` | `blok` |
| `promicro` | `bit_c_pro` |
| `promicro` | `stemcell` |
| `promicro` | `bonsai_c4` |
See below for more in depth information on each converter.
## Overview
Each converter category is broken down by its declared `pin compatibility`.
This ensures that only valid combinations are attempted.
You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
```sh
qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c
```
You can also add the same `CONVERT_TO=<target>` to your keymap's `rules.mk`, which will accomplish the same thing.
?> If you get errors about `PORTB/DDRB`, etc not being defined, you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
### Conditional Configuration
Once a converter is enabled, it exposes the `CONVERT_TO_<target_uppercase>` flag that you can use in your code with `#ifdef`s, For example:
```c
#ifdef CONVERT_TO_PROTON_C
// Proton C code
#else
// Pro Micro code
#endif
```
## Pro Micro
If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.com/products/12640) (or compatible board), the supported alternative controllers are:
| Device | Target |
|------------------------------------------------------------------------------------------|-------------------|
| [Proton C](https://qmk.fm/proton-c/) | `proton_c` |
| [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040) | `kb2040` |
| [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `promicro_rp2040` |
| [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622) | `blok` |
| [Bit-C PRO](https://nullbits.co/bit-c-pro) | `bit_c_pro` |
| [STeMCell](https://github.com/megamind4089/STeMCell) | `stemcell` |
| [customMK Bonsai C4](https://shop.custommk.com/products/bonsai-c4-microcontroller-board) | `bonsai_c4` |
Converter summary:
| Target | Argument | `rules.mk` | Condition |
|-------------------|---------------------------------|------------------------------|-------------------------------------|
| `proton_c` | `-e CONVERT_TO=proton_c` | `CONVERT_TO=proton_c` | `#ifdef CONVERT_TO_PROTON_C` |
| `kb2040` | `-e CONVERT_TO=kb2040` | `CONVERT_TO=kb2040` | `#ifdef CONVERT_TO_KB2040` |
| `promicro_rp2040` | `-e CONVERT_TO=promicro_rp2040` | `CONVERT_TO=promicro_rp2040` | `#ifdef CONVERT_TO_PROMICRO_RP2040` |
| `blok` | `-e CONVERT_TO=blok` | `CONVERT_TO=blok` | `#ifdef CONVERT_TO_BLOK` |
| `bit_c_pro` | `-e CONVERT_TO=bit_c_pro` | `CONVERT_TO=bit_c_pro` | `#ifdef CONVERT_TO_BIT_C_PRO` |
| `stemcell` | `-e CONVERT_TO=stemcell` | `CONVERT_TO=stemcell` | `#ifdef CONVERT_TO_STEMCELL` |
| `bonsai_c4` | `-e CONVERT_TO=bonsai_c4` | `CONVERT_TO=bonsai_c4` | `#ifdef CONVERT_TO_BONSAI_C4` |
### Proton C :id=proton_c
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this line to your `config.h`:
```c
#define CONVERT_TO_PROTON_C_RXLED
```
The following defaults are based on what has been implemented for STM32 boards.
| Feature | Notes |
|----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| [Audio](feature_audio.md) | Enabled |
| [RGB Lighting](feature_rgblight.md) | Disabled |
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features |
### Adafruit KB2040 :id=kb2040
The following defaults are based on what has been implemented for [RP2040](platformdev_rp2040.md) boards.
| Feature | Notes |
|----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| [RGB Lighting](feature_rgblight.md) | Enabled via `PIO` vendor driver |
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
| [Split keyboards](feature_split_keyboard.md) | Partial via `PIO` vendor driver - heavily dependent on enabled features |
### SparkFun Pro Micro - RP2040, Blok, and Bit-C PRO :id=promicro_rp2040
Currently identical to [Adafruit KB2040](#kb2040).
### STeMCell :id=stemcell
Feature set currently identical to [Proton C](#proton_c).
There are two versions of STeMCell available, with different pinouts:
- v1.0.0
- v2.0.0 (pre-release v1.0.1, v1.0.2)
Default official firmware only supports v2.0.0 STeMCell.
STeMCell has support to swap UART and I2C pins, to enable single-wire uart communication in STM chips.
The following additional flags has to be used while compiling, based on the pin used for split communication.
| Split Pin | Compile flags |
|-----------|---------------|
| D3 | -e STMC_US=yes|
| D2 | Not needed |
| D1 | -e STMC_IS=yes|
| D0 | Not needed |
### Bonsai C4 :id=bonsai_c4
The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro TXLED (D5) and RXLED (B0) are mapped to it. If you want only one of them mapped, you can undefine one and redefine it to another pin by adding these line to your `config.h`:
```c
#undef B0
// If Vbus detection is unused, we can send RXLED to the Vbus detect pin instead
#define B0 PAL_LINE(GPIOA, 9)
```
No peripherals are enabled by default at this time, but example code to enable SPI, I2C, PWM, and Serial communications can be found [here](/keyboards/custommk/bonsai_c4_template)

View File

@@ -35,6 +35,7 @@ There are a number of options added that should allow some additional degree of
|`DYNAMIC_MACRO_SIZE` |128 |Sets the amount of memory that Dynamic Macros can use. This is a limited resource, dependent on the controller. |
|`DYNAMIC_MACRO_USER_CALL` |*Not defined* |Defining this falls back to using the user `keymap.c` file to trigger the macro behavior. |
|`DYNAMIC_MACRO_NO_NESTING` |*Not Defined* |Defining this disables the ability to call a macro from another macro (nested macros). |
|`DYNAMIC_MACRO_DELAY` |*Not Defined* |Sets the waiting time (ms unit) when sending each key. |
If the LEDs start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by adding the `DYNAMIC_MACRO_SIZE` define in your `config.h` (default value: 128; please read the comments for it in the header).

View File

@@ -125,34 +125,37 @@ Layer conditions can also be used with the callback function like the following:
```c
bool encoder_update_user(uint8_t index, bool clockwise) {
if (get_highest_layer(layer_state|default_layer_state) > 0) {
if (index == 0) {
if (clockwise) {
tap_code(KC_WH_D);
} else {
tap_code(KC_WH_U);
switch(get_highest_layer(layer_state|default_layer_state)) {
case 0:
if (index == 0) {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
} else if (index == 1) {
if (clockwise) {
rgb_matrix_increase_speed();
} else {
rgb_matrix_decrease_speed();
}
}
} else if (index == 1) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
break;
case 1:
if (index == 0) {
if (clockwise) {
tap_code(KC_WH_D);
} else {
tap_code(KC_WH_U);
}
} else if (index == 1) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
}
}
} else { /* Layer 0 */
if (index == 0) {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
} else if (index == 1) {
if (clockwise) {
rgb_matrix_increase_speed();
} else {
rgb_matrix_decrease_speed();
}
}
break;
}
return false;
}

View File

@@ -106,6 +106,8 @@ Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_`
### `SEND_STRING()` & `process_record_user`
See also: [Send String](feature_send_string.md)
Sometimes you want a key to type out words or phrases. For the most common situations, we've provided `SEND_STRING()`, which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. `qmk 123\n\t`).
Here is an example `keymap.c` for a two-key keyboard:
@@ -347,7 +349,7 @@ If the keycode is `KC_CAPS`, it waits `TAP_HOLD_CAPS_DELAY` milliseconds instead
Like `tap_code(<kc>)`, but with a `delay` parameter for specifying arbitrary intervals before sending the unregister event.
#### `register_code16(<kc>);`, `unregister_code16(<kc>);` and `tap_code16(<kc>);`
#### `register_code16(<kc>);`, `unregister_code16(<kc>);`, `tap_code16(<kc>);` and `tap_code16_delay(<kc>, <delay>);`
These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them).

View File

@@ -87,9 +87,9 @@ This is an extension of the accelerated mode. The kinetic mode uses a quadratic
|`MK_KINETIC_SPEED` |undefined|Enable kinetic mode |
|`MOUSEKEY_DELAY` |5 |Delay between pressing a movement key and cursor movement |
|`MOUSEKEY_INTERVAL` |10 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |5 |Step size for accelerating from initial to base speed |
|`MOUSEKEY_MOVE_DELTA` |16 |Step size for accelerating from initial to base speed |
|`MOUSEKEY_INITIAL_SPEED` |100 |Initial speed of the cursor in pixel per second |
|`MOUSEKEY_BASE_SPEED` |1000 |Maximum cursor speed at which acceleration stops |
|`MOUSEKEY_BASE_SPEED` |5000 |Maximum cursor speed at which acceleration stops |
|`MOUSEKEY_DECELERATED_SPEED` |400 |Decelerated cursor speed |
|`MOUSEKEY_ACCELERATED_SPEED` |3000 |Accelerated cursor speed |
|`MOUSEKEY_WHEEL_INITIAL_MOVEMENTS` |16 |Initial number of movements of the mouse wheel |
@@ -100,7 +100,7 @@ This is an extension of the accelerated mode. The kinetic mode uses a quadratic
Tips:
* The smoothness of the cursor movement depends on the `MOUSEKEY_INTERVAL` setting. The shorter the interval is set the smoother the movement will be. Setting the value too low makes the cursor unresponsive. Lower settings are possible if the micro processor is fast enough. For example: At an interval of `8` milliseconds, `125` movements per second will be initiated. With a base speed of `1000` each movement will move the cursor by `8` pixels.
* Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size `1`. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
* Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size `2`. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
### Constant mode

View File

@@ -14,8 +14,6 @@ Tested combinations:
Hardware configurations using Arm-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
!> Warning: This OLED driver currently uses the new i2c_master driver from Split Common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest Split Common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses Split Common to detect keypresses, so you will need to implement custom timeout logic for non-Split Common keyboards.
## Usage
To enable the OLED feature, there are two steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:

View File

@@ -10,7 +10,7 @@ POINTING_DEVICE_ENABLE = yes
## Sensor Drivers
There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually.
There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually, using the `custom` driver.
### ADNS 5050 Sensor
@@ -22,11 +22,13 @@ POINTING_DEVICE_DRIVER = adns5050
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
| Setting | Description |
|--------------------|---------------------------------------------------------------------|
|`ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. |
|`ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. |
|`ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. |
| Setting | Description | Default |
| ------------------- | ------------------------------------------------------------------- | -------------------------- |
| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
| `ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.
@@ -40,13 +42,13 @@ POINTING_DEVICE_DRIVER = adns9800
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
| Setting | Description | Default |
|--------------------------------|------------------------------------------------------------------------|---------------|
|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
| Setting | Description | Default |
| ----------------------- | ---------------------------------------------------------------------- | ------------------------ |
| `ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
| `ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
| `ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
| `ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
| `ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI.
@@ -61,17 +63,16 @@ POINTING_DEVICE_DRIVER = analog_joystick
The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
| Setting | Description | Default |
|----------------------------------|----------------------------------------------------------------------------|---------------|
|`ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
|`ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
|`ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
|`ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
|`ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
|`ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
|`ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
| Setting | Description | Default |
| --------------------------------- | -------------------------------------------------------------------------- | ------------- |
| `ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
| `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
| `ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
| `ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
| `ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
| `ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
| `ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
| `ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
### Cirque Trackpad
@@ -90,29 +91,93 @@ POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported.
| Setting | Description | Default |
|---------------------------------|---------------------------------------------------------------------------------|-----------------------|
|`CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
|`CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
|`CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
|`CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
|`CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
|`CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
#### Common settings
| I2C Setting | Description | Default |
|--------------------------|---------------------------------------------------------------------------------|---------|
|`CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` |
|`CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` |
| Setting | Description | Default |
| -------------------------------- | ---------------------------------------------------------- | ------------------ |
| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` |
| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `ADC_ATTENUATE_4X` |
| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ |
| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ |
| SPI Setting | Description | Default |
|-------------------------------|------------------------------------------------------------------------|---------------|
|`CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` |
|`CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` |
|`CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
**`CIRQUE_PINNACLE_ATTENUATION`** is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be.
Default Scaling/CPI is 1024.
Default attenuation is set to 4X, although if you are using a thicker overlay (such as the curved overlay) you will want a lower attenuation such as 2X. The possible values are:
* `ADC_ATTENUATE_4X`: Least sensitive
* `ADC_ATTENUATE_3X`
* `ADC_ATTENUATE_2X`
* `ADC_ATTENUATE_1X`: Most sensitive
**`CIRQUE_PINNACLE_POSITION_MODE`** can be `CIRQUE_PINNACLE_ABSOLUTE_MODE` or `CIRQUE_PINNACLE_RELATIVE_MODE`. Modes differ in supported features/gestures.
* `CIRQUE_PINNACLE_ABSOLUTE_MODE`: Reports absolute x, y, z (touch pressure) coordinates and up to 5 hw buttons connected to the trackpad
* `CIRQUE_PINNACLE_RELATIVE_MODE`: Reports x/y deltas, scroll and up to 3 buttons (2 of them can be from taps, see gestures) connected to trackpad. Supports taps on secondary side of split. Saves about 2k of flash compared to absolute mode with all features.
| I2C Setting | Description | Default |
| ------------------------- | ------------------------------------------------------------------------------- | ------- |
| `CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` |
| `CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` |
| SPI Setting | Description | Default |
| ------------------------------ | ---------------------------------------------------------------------- | ------------------------ |
| `CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` |
| `CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
| `CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` |
| `CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
| `CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
Default Scaling is 1024. Actual CPI depends on trackpad diameter.
Also see the `POINTING_DEVICE_TASK_THROTTLE_MS`, which defaults to 10ms when using Cirque Pinnacle, which matches the internal update rate of the position registers (in standard configuration). Advanced configuration for pen/stylus usage might require lower values.
#### Absolute mode settings
| Setting | Description | Default |
| -------------------------------- | ---------------------------------------------------------- | ------------------ |
| `CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
| `CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
| `CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
| `CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
#### Absolute mode gestures
| Gesture Setting | Description | Default |
| ---------------------------------------------- | ------------------------------------------------------------------------------ | -------------------- |
| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to click. This currently only works on the master side. | _not defined_ |
| `CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
| `CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
`POINTING_DEVICE_GESTURES_SCROLL_ENABLE` in this mode enables circular scroll. Touch originating in outer ring can trigger scroll by moving along the perimeter. Near side triggers vertical scroll and far side triggers horizontal scroll.
Additionally, `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` is supported in this mode.
#### Relative mode gestures
| Gesture Setting | Description | Default |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to "left click". Works on both sides of a split keyboard. | _not defined_ |
| `CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE` | (Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". `CIRQUE_PINNACLE_TAP_ENABLE` must be enabled. | _not defined_ |
Tapping term and debounce are not configurable in this mode since it's handled by trackpad internally.
`POINTING_DEVICE_GESTURES_SCROLL_ENABLE` in this mode enables side scroll. Touch originating on the right side can trigger vertical scroll (IntelliSense trackpad style).
### PAW 3204 Sensor
To use the paw 3204 sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = paw3204
```
The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source.
| Setting | Description | Default |
| ------------------ |--------------------------------------------------------------- | -------------------------- |
| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI.
### Pimoroni Trackball
@@ -124,62 +189,69 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball
The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.
| Setting | Description | Default |
|-------------------------------------|------------------------------------------------------------------------------------|---------|
|`PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
|`PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
|`PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
| Setting | Description | Default |
| ------------------------------------ | ---------------------------------------------------------------------------------- | ------- |
| `PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
| `PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
| `PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
| `PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
| `PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
### PMW 3360 Sensor
### PMW 3360 and PMW 3389 Sensor
This drivers supports multiple sensors _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
To use the PMW 3360 sensor, add this to your `rules.mk`
This drivers supports both the PMW 3360 and PMW 3389 sensor as well as multiple sensors of the same type _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
To use the **PMW 3360** sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = pmw3360
```
The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
| Setting | Description | Default |
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3360_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ |
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor.| `0` |
|`PMW3360_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
To use multiple sensors, instead of setting `PMW3360_CS_PIN` you need to set `PMW3360_CS_PINS` and also handle and merge the read from this sensor in user code.
To use the **PMW 3389** sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = pmw3389
```
The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking.
| Setting | Description | Default |
| ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------ |
| `PMW33XX_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
| `PMW33XX_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ |
| `PMW33XX_CPI` | (Optional) Sets counts per inch sensitivity of the sensor. | _varies_ |
| `PMW33XX_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
| `PMW33XX_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
| `PMW33XX_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
| `ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor. | `0` |
To use multiple sensors, instead of setting `PMW33XX_CS_PIN` you need to set `PMW33XX_CS_PINS` and also handle and merge the read from this sensor in user code.
Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported.
```c
// in config.h:
#define PMW3360_CS_PINS { B5, B6 }
#define PMW33XX_CS_PINS { B5, B6 }
// in keyboard.c:
#ifdef POINTING_DEVICE_ENABLE
void pointing_device_init_kb(void) {
pmw3360_init(1); // index 1 is the second device.
pointing_device_set_cpi(800); // applies to both sensors
pmw33xx_init(1); // index 1 is the second device.
pmw33xx_set_cpi(0, 800); // applies to first sensor
pmw33xx_set_cpi(1, 800); // applies to second sensor
pointing_device_init_user();
}
// Contains report from sensor #0 already, need to merge in from sensor #1
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
report_pmw3360_t data = pmw3360_read_burst(1);
if (data.isOnSurface && data.isMotion) {
pmw33xx_report_t report = pmw33xx_read_burst(1);
if (!report.motion.b.is_lifted && report.motion.b.is_motion) {
// From quantum/pointing_device_drivers.c
#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))
mouse_report.x = constrain_hid(mouse_report.x + data.dx);
mouse_report.y = constrain_hid(mouse_report.y + data.dy);
mouse_report.x = constrain_hid(mouse_report.x + report.delta_x);
mouse_report.y = constrain_hid(mouse_report.y + report.delta_y);
}
return pointing_device_task_user(mouse_report);
}
@@ -187,30 +259,6 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
```
### PMW 3389 Sensor
To use the PMW 3389 sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = pmw3389
```
The PMW 3389 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
| Setting | Description | Default |
|---------------------------------|--------------------------------------------------------------------------------------------|---------------|
|`PMW3389_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3389_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3389_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3389_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3389_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`PMW3389_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
|`PMW3389_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
### Custom Driver
If you have a sensor type that isn't supported above, a custom option is available by adding the following to your `rules.mk`
@@ -232,41 +280,50 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {}
## Common Configuration
| Setting | Description | Default |
|----------------------------------|-----------------------------------------------------------------------|-------------------|
|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
|`POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ |
| Setting | Description | Default |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `MOUSE_EXTENDED_REPORT` | (Optional) Enables support for extended mouse reports. (-32767 to 32767, instead of just -127 to 127). | _not defined_ |
| `POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
| `POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
| `POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
| `POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
| `POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
| `POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
| `POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ |
| `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` | (Optional) Enable inertial cursor. Cursor continues moving after a flick gesture and slows down by kinetic friction. | _not defined_ |
| `POINTING_DEVICE_GESTURES_SCROLL_ENABLE` | (Optional) Enable scroll gesture. The gesture that activates the scroll is device dependent. | _not defined_ |
| `POINTING_DEVICE_CS_PIN` | (Optional) Provides a default CS pin, useful for supporting multiple sensor configs. | _not defined_ |
| `POINTING_DEVICE_SDIO_PIN` | (Optional) Provides a default SDIO pin, useful for supporting multiple sensor configs. | _not defined_ |
| `POINTING_DEVICE_SCLK_PIN` | (Optional) Provides a default SCLK pin, useful for supporting multiple sensor configs. | _not defined_ |
!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.
The `POINTING_DEVICE_CS_PIN`, `POINTING_DEVICE_SDIO_PIN`, and `POINTING_DEVICE_SCLK_PIN` provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines.
!> Any pointing device with a lift/contact status can integrate inertial cursor feature into its driver, controlled by `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE`. e.g. PMW3360 can use Lift_Stat from Motion register. Note that `POINTING_DEVICE_MOTION_PIN` cannot be used with this feature; continuous polling of `get_report()` is needed to generate glide reports.
## Split Keyboard Configuration
The following configuration options are only available when using `SPLIT_POINTING_ENABLE` see [data sync options](feature_split_keyboard.md?id=data-sync-options). The rotation and invert `*_RIGHT` options are only used with `POINTING_DEVICE_COMBINED`. If using `POINTING_DEVICE_LEFT` or `POINTING_DEVICE_RIGHT` use the common configuration above to configure your pointing device.
| Setting | Description | Default |
|----------------------------------------|-----------------------------------------------------------------------|---------------|
|`POINTING_DEVICE_LEFT` | Pointing device on the left side (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_RIGHT` | Pointing device on the right side (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_COMBINED` | Pointing device on both sides (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_ROTATION_90_RIGHT` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_180_RIGHT` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_270_RIGHT` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
|`POINTING_DEVICE_INVERT_X_RIGHT` | (Optional) Inverts the X axis report. | _not defined_ |
|`POINTING_DEVICE_INVERT_Y_RIGHT` | (Optional) Inverts the Y axis report. | _not defined_ |
| Setting | Description | Default |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------- |
| `POINTING_DEVICE_LEFT` | Pointing device on the left side (Required - pick one only) | _not defined_ |
| `POINTING_DEVICE_RIGHT` | Pointing device on the right side (Required - pick one only) | _not defined_ |
| `POINTING_DEVICE_COMBINED` | Pointing device on both sides (Required - pick one only) | _not defined_ |
| `POINTING_DEVICE_ROTATION_90_RIGHT` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
| `POINTING_DEVICE_ROTATION_180_RIGHT` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
| `POINTING_DEVICE_ROTATION_270_RIGHT` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
| `POINTING_DEVICE_INVERT_X_RIGHT` | (Optional) Inverts the X axis report. | _not defined_ |
| `POINTING_DEVICE_INVERT_Y_RIGHT` | (Optional) Inverts the Y axis report. | _not defined_ |
!> If there is a `_RIGHT` configuration option or callback, the [common configuration](feature_pointing_device.md?id=common-configuration) option will work for the left. For correct left/right detection you should setup a [handedness option](feature_split_keyboard?id=setting-handedness), `EE_HANDS` is usually a good option for an existing board that doesn't do handedness by hardware.
## Callbacks and Functions
| Function | Description |
|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| Function | Description |
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
@@ -274,11 +331,11 @@ The following configuration options are only available when using `SPLIT_POINTIN
| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
| `has_mouse_report_changed(new_report, old_report)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. |
| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
## Split Keyboard Callbacks and Functions
@@ -286,7 +343,7 @@ The following configuration options are only available when using `SPLIT_POINTIN
The combined functions below are only available when using `SPLIT_POINTING_ENABLE` and `POINTING_DEVICE_COMBINED`. The 2 callbacks `pointing_device_task_combined_*` replace the single sided equivalents above. See the [combined pointing devices example](feature_pointing_device.md?id=combined-pointing-devices)
| Function | Description |
|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `pointing_device_set_shared_report(mouse_report)` | Sets the shared mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_set_cpi_on_side(bool, uint16_t)` | Sets the CPI/DPI of one side, if supported. Passing `true` will set the left and `false` the right` |
| `pointing_device_combine_reports(left_report, right_report)` | Returns a combined mouse_report of left_report and right_report (as a `mouse_report_t` data structure) |
@@ -430,4 +487,3 @@ report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, re
return pointing_device_combine_reports(left_report, right_report);
}
```
=======

View File

@@ -86,6 +86,7 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_<N>` de
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3733B only | 0 |
| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
@@ -172,6 +173,7 @@ Configure the hardware via your `config.h`:
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 |
| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
@@ -409,6 +411,7 @@ You can use up to 2 AW20216 IC's. Do not specify `DRIVER_<N>_xxx` defines for IC
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 |
| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 |
| `AW_SPI_MODE` | (Optional) Mode for SPI communication (0-3, defines polarity and phase of the clock) | 3 |
| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 |
Here is an example using 2 drivers.
@@ -665,11 +668,36 @@ In order to change the delay of temperature decrease define `RGB_MATRIX_TYPING_H
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
```
Heatmap effect may not light up the correct adjacent LEDs for certain key matrix layout such as split keyboards. The following define will limit the effect to pressed keys only:
As heatmap uses the physical position of the leds set in the g_led_config, you may need to tweak the following options to get the best effect for your keyboard. Note the size of this grid is `224x64`.
Limit the distance the effect spreads to surrounding keys.
```c
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40
```
Limit how hot surrounding keys get from each press.
```c
#define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16
```
Remove the spread effect entirely.
```c
#define RGB_MATRIX_TYPING_HEATMAP_SLIM
```
### RGB Matrix Effect Solid Reactive :id=rgb-matrix-effect-solid-reactive
Solid reactive effects will pulse RGB light on key presses with user configurable hues. To enable gradient mode that will automatically change reactive color, add the following define:
```c
#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
```
Gradient mode will loop through the color wheel hues over time and its duration can be controlled with the effect speed keycodes (`RGB_SPI`/`RGB_SPD`).
## Custom RGB Matrix Effects :id=custom-rgb-matrix-effects
By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a `rgb_matrix_user.inc` file in the user keymap directory or userspace folder.
@@ -777,6 +805,7 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master
#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
```
## EEPROM storage :id=eeprom-storage
@@ -888,15 +917,15 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
Layer indicator on all flagged keys:
Layer indicator on all keys:
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
for (uint8_t i = led_min; i <= led_max; i++) {
switch(get_highest_layer(layer_state|default_layer_state)) {
case RAISE:
case 2:
rgb_matrix_set_color(i, RGB_BLUE);
break;
case LOWER:
case 1:
rgb_matrix_set_color(i, RGB_YELLOW);
break;
default:
@@ -906,7 +935,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
Layer indicator with only configured keys:
Layer indicator only on keys with configured keycodes:
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (get_highest_layer(layer_state) > 0) {

View File

@@ -105,7 +105,7 @@ Your RGB lighting can be configured by placing these `#define`s in your `config.
## Effects and Animations
Not only can this lighting be whatever color you want,
if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a number of animation modes at your disposal:
if `RGBLIGHT_EFFECT_xxxx` is defined, you also have a number of animation modes at your disposal:
|Mode number symbol |Additional number |Description |
|-----------------------------|-------------------|---------------------------------------|
@@ -125,13 +125,14 @@ Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstrat
Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight/rgblight.h` there is a contrast table between the old mode number and the current symbol.
### Effect and Animation Toggles
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
|Define |Default |Description |
|------------------------------------|-------------|-------------------------------------------------------------------------|
|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. |
|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. (deprecated) |
|`RGBLIGHT_EFFECT_ALTERNATING` |*Not defined*|Enable alternating animation mode. |
|`RGBLIGHT_EFFECT_BREATHING` |*Not defined*|Enable breathing animation mode. |
|`RGBLIGHT_EFFECT_CHRISTMAS` |*Not defined*|Enable christmas animation mode. |
@@ -143,6 +144,8 @@ Use these defines to add or remove animations from the firmware. When you are ru
|`RGBLIGHT_EFFECT_STATIC_GRADIENT` |*Not defined*|Enable static gradient mode. |
|`RGBLIGHT_EFFECT_TWINKLE` |*Not defined*|Enable twinkle animation mode. |
!> `RGBLIGHT_ANIMATIONS` is being deprecated and animation modes should be explicitly defined.
### Effect and Animation Settings
The following options are used to tweak the various animations:
@@ -162,14 +165,12 @@ The following options are used to tweak the various animations:
|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
### Example Usage to Reduce Memory Footprint
1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`.
1. Selectively add the animations you want to enable. The following would enable two animations and save about 4KiB:
1. Selectively disable the animations you want to enable. The following would enable two animations and save about 4KiB:
```diff
#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8

54
docs/feature_secure.md Normal file
View File

@@ -0,0 +1,54 @@
# Secure
The secure feature aims to prevent unwanted interaction without user intervention.
?> Secure does **not** currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.
### Unlock sequence
To unlock, the user must perform a set of actions. This can optionally be configured to be multiple keys.
* While unlocking all keyboard input is ignored
* Incorrect attempts will revert back to the previously locked state
### Automatic Locking
Once unlocked, the keyboard will revert back to a locked state after the configured timeout.
The timeout can be refreshed by using the `secure_activity_event` function, for example from one of the various [hooks](custom_quantum_functions.md).
## Usage
Add the following to your `rules.mk`:
```make
SECURE_ENABLE = yes
```
## Keycodes
| Key | Description |
|------------------|--------------------------------------------------------------------------------|
| `SECURE_LOCK` | Revert back to a locked state |
| `SECURE_UNLOCK` | Forces unlock without performing a unlock sequence |
| `SECURE_TOGGLE` | Toggle directly between locked and unlock without performing a unlock sequence |
| `SECURE_REQUEST` | Request that user perform the unlock sequence |
## Configuration
| Define | Default | Description |
|-------------------------|----------------|---------------------------------------------------------------------------------|
|`SECURE_UNLOCK_TIMEOUT` | `5000` | Timeout for the user to perform the configured unlock sequence - `0` to disable |
|`SECURE_IDLE_TIMEOUT` | `60000` | Timeout while unlocked before returning to locked - `0` to disable |
|`SECURE_UNLOCK_SEQUENCE` | `{ { 0, 0 } }` | Array of matrix locations describing a sequential sequence of keypresses |
## Functions
| Function | Description |
|---------------------------|----------------------------------------------------------------------------|
| `secure_is_locked()` | Check if the device is currently locked |
| `secure_is_unlocking()` | Check if an unlock sequence is currently in progress |
| `secure_is_unlocked()` | Check if the device is currently unlocked |
| `secure_lock()` | Lock down the device |
| `secure_unlock()` | Force unlock the device - bypasses user unlock sequence |
| `secure_request_unlock()` | Begin listening for an unlock sequence |
| `secure_activity_event()` | Flag that user activity has happened and the device should remain unlocked |

224
docs/feature_send_string.md Normal file
View File

@@ -0,0 +1,224 @@
# Send String
The Send String API is part of QMK's macro system. It allows for sequences of keystrokes to be sent automatically.
The full ASCII character set is supported, along with all of the keycodes in the Basic Keycode range (as these are the only ones that will actually be sent to the host).
?> Unicode characters are **not** supported with this API -- see the [Unicode](feature_unicode.md) feature instead.
## Usage
Send String is enabled by default, so there is usually no need for any special setup. However, if it is disabled, add the following to your `rules.mk`:
```make
SEND_STRING_ENABLE = yes
```
## Basic Configuration
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------|----------------|------------------------------------------------------------------------------------------------------------|
|`SENDSTRING_BELL`|*Not defined* |If the [Audio](feature_audio.md) feature is enabled, the `\a` character (ASCII `BEL`) will beep the speaker.|
|`BELL_SOUND` |`TERMINAL_SOUND`|The song to play when the `\a` character is encountered. By default, this is an eighth note of C5. |
## Keycodes
The Send String functions accept C string literals, but specific keycodes can be injected with the below macros. All of the keycodes in the [Basic Keycode range](keycodes_basic.md) are supported (as these are the only ones that will actually be sent to the host), but with an `X_` prefix instead of `KC_`.
|Macro |Description |
|--------------|-------------------------------------------------------------------|
|`SS_TAP(x)` |Send a keydown, then keyup, event for the given Send String keycode|
|`SS_DOWN(x)` |Send a keydown event for the given Send String keycode |
|`SS_UP(x)` |Send a keyup event for the given Send String keycode |
|`SS_DELAY(ms)`|Wait for `ms` milliseconds |
The following characters are also mapped to their respective keycodes for convenience:
|Character|Hex |ASCII|Keycode |
|---------|------|-----|--------------|
|`\b` |`\x08`|`BS` |`KC_BACKSPACE`|
|`\e` |`\x09`|`ESC`|`KC_ESCAPE` |
|`\n` |`\x0A`|`LF` |`KC_ENTER` |
|`\t` |`\x1B`|`TAB`|`KC_TAB` |
| |`\x7F`|`DEL`|`KC_DELETE` |
### Language Support
By default, Send String assumes your OS keyboard layout is set to US ANSI. If you are using a different keyboard layout, you can [override the lookup tables used to convert ASCII characters to keystrokes](reference_keymap_extras.md#sendstring-support).
## Examples
### Hello World
A simple custom keycode which types out "Hello, world!" and the Enter key when pressed.
Add the following to your `keymap.c`:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SS_HELLO:
if (record->event.pressed) {
SEND_STRING("Hello, world!\n");
}
return false;
}
return true;
}
```
### Keycode Injection
This example types out opening and closing curly braces, then taps the left arrow key to move the cursor between the two.
```c
SEND_STRING("{}" SS_TAP(X_LEFT));
```
This example types Ctrl+A, then Ctrl+C, without releasing Ctrl.
```c
SEND_STRING(SS_LCTL("ac"));
```
## API
### `void send_string(const char *string)`
Type out a string of ASCII characters.
This function simply calls `send_string_with_delay(string, 0)`.
#### Arguments
- `const char *string`
The string to type out.
---
### `void send_string_with_delay(const char *string, uint8_t interval)`
Type out a string of ASCII characters, with a delay between each character.
#### Arguments
- `const char *string`
The string to type out.
- `uint8_t interval`
The amount of time, in milliseconds, to wait before typing the next character.
---
### `void send_string_P(const char *string)`
Type out a PROGMEM string of ASCII characters.
On ARM devices, this function is simply an alias for `send_string_with_delay(string, 0)`.
#### Arguments
- `const char *string`
The string to type out.
---
### `void send_string_with_delay_P(const char *string, uint8_t interval)`
Type out a PROGMEM string of ASCII characters, with a delay between each character.
On ARM devices, this function is simply an alias for `send_string_with_delay(string, interval)`.
#### Arguments
- `const char *string`
The string to type out.
- `uint8_t interval`
The amount of time, in milliseconds, to wait before typing the next character.
---
### `void send_char(char ascii_code)`
Type out an ASCII character.
#### Arguments
- `char ascii_code`
The character to type.
---
### `void send_dword(uint32_t number)`
Type out an eight digit (unsigned 32-bit) hexadecimal value.
The format is `[0-9a-f]{8}`, eg. `00000000` through `ffffffff`.
#### Arguments
- `uint32_t number`
The value to type, from 0 to 4,294,967,295.
---
### `void send_word(uint16_t number)`
Type out a four digit (unsigned 16-bit) hexadecimal value.
The format is `[0-9a-f]{4}`, eg. `0000` through `ffff`.
#### Arguments
- `uint16_t number`
The value to type, from 0 to 65,535.
---
### `void send_byte(uint8_t number)`
Type out a two digit (8-bit) hexadecimal value.
The format is `[0-9a-f]{2}`, eg. `00` through `ff`.
#### Arguments
- `uint8_t number`
The value to type, from 0 to 255.
---
### `void send_nibble(uint8_t number)`
Type out a single hexadecimal digit.
The format is `[0-9a-f]{1}`, eg. `0` through `f`.
#### Arguments
- `uint8_t number`
The value to type, from 0 to 15.
---
### `void tap_random_base64(void)`
Type a pseudorandom character from the set `A-Z`, `a-z`, `0-9`, `+` and `/`.
---
### `SEND_STRING(string)`
Shortcut macro for `send_string_with_delay_P(PSTR(string), 0)`.
On ARM devices, this define evaluates to `send_string_with_delay(string, 0)`.
---
### `SEND_STRING_DELAY(string, interval)`
Shortcut macro for `send_string_with_delay_P(PSTR(string), interval)`.
On ARM devices, this define evaluates to `send_string_with_delay(string, interval)`.

View File

@@ -143,6 +143,9 @@ Next, you will have to flash the EEPROM files once for the correct hand to the c
* ARM controllers with a DFU compatible bootloader (e.g. Proton-C):
* `:dfu-util-split-left`
* `:dfu-util-split-right`
* ARM controllers with a UF2 compatible bootloader:
* `:uf2-split-left`
* `:uf2-split-right`
Example:
@@ -367,7 +370,7 @@ There are some settings that you may need to configure, based on how the hardwar
#define MATRIX_COL_PINS_RIGHT { <col pins> }
```
This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency).
This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). The number of pins in the right and left matrices must be the same, if you have a board with a different number of rows or columns on one side, pad out the extra spaces with `NO_PIN` and make sure you add the unused rows or columns to your matrix.
```c
#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }

View File

@@ -8,46 +8,107 @@ The [Open Steno Project](https://www.openstenoproject.org/) has built an open-so
Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in `planck/keymaps/default`. Switching to the `PLOVER` layer adjusts the position of the keyboard to support the number bar.
To use Plover with QMK just enable NKRO and optionally adjust your layout if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.
To enable NKRO, add `NKRO_ENABLE = yes` in your `rules.mk` and make sure to press `NK_ON` to turn it on because `NKRO_ENABLE = yes` merely adds the possibility of switching to NKRO mode but it doesn't automatically switch to it. If you want to automatically switch, add `#define FORCE_NKRO` in your `config.h`.
You may also need to adjust your layout, either in QMK or in Plover, if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.
## Plover with Steno Protocol :id=plover-with-steno-protocol
Plover also understands the language of several steno machines. QMK can speak a couple of these languages, TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`.
Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`.
When QMK speaks to Plover over a steno protocol Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
In this mode Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard. By default QMK will speak the TX Bolt protocol but can be switched to GeminiPR; the last protocol used is stored in non-volatile memory so QMK will use the same protocol on restart.
In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard.
> Note: Due to hardware limitations you may not be able to run both a virtual serial port and mouse emulation at the same time.
> Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time.
!> Serial stenography protocols are not supported on [V-USB keyboards](compatible_microcontrollers#atmel-avr).
To enable stenography protocols, add the following lines to your `rules.mk`:
```mk
STENO_ENABLE = yes
```
### TX Bolt :id=tx-bolt
TX Bolt communicates the status of 24 keys over a very simple protocol in variable-sized (1-5 byte) packets.
TX Bolt communicates the status of 24 keys over a simple protocol in variable-sized (1&ndash;4 bytes) packets.
To select TX Bolt, add the following lines to your `rules.mk`:
```mk
STENO_ENABLE = yes
STENO_PROTOCOL = txbolt
```
Each byte of the packet represents a different group of steno keys. Determining the group of a certain byte of the packet is done by checking the first two bits, the remaining bits are set if the corresponding steno key was pressed for the stroke. The last set of keys (as indicated by leading `11`) needs to keep track of less keys than there are bits so one of the bits is constantly 0.
The start of a new packet can be detected by comparing the group “ID” (the two MSBs) of the current byte to that of the previously received byte. If the group “ID” of the current byte is smaller or equal to that of the previous byte, it means that the current byte is the beginning of a new packet.
The format of TX Bolt packets is shown below.
```
00HWPKTS 01UE*OAR 10GLBPRF 110#ZDST
```
Examples of steno strokes and the associated packet:
- `EUBG` = `01110000 10101000`
- `WAZ` = `00010000 01000010 11001000`
- `PHAPBGS` = `00101000 01000010 10101100 11000010`
### GeminiPR :id=geminipr
GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including supporting non-English theories.
GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including differentiating between top and bottom `S-`, and supporting non-English theories.
To select GeminiPR, add the following lines to your `rules.mk`:
```mk
STENO_ENABLE = yes
STENO_PROTOCOL = geminipr
```
All packets in the GeminiPR protocol consist of exactly six bytes, used as bit-arrays for different groups of keys. The beginning of a packet is indicated by setting the most significant bit (MSB) to 1 while setting the MSB of the remaining five bytes to 0.
The format of GeminiPR packets is shown below.
```
1 Fn #1 #2 #3 #4 #5 #6
0 S1- S2- T- K- P- W- H-
0 R- A- O- *1 *2 res1 res2
0 pwr *3 *4 -E -U -F -R
0 -P -B -L -G -T -S -D
0 #7 #8 #9 #A #B #C -Z
```
Examples of steno strokes and the associated packet:
- `EUBG` = `10000000 00000000 00000000 00001100 00101000 00000000`
- `WAZ` = `10000000 00000010 00100000 00000000 00000000 00000001`
- `PHAPBGS` = `10000000 00000101 00100000 00000000 01101010 00000000`
### Switching protocols on the fly :id=switching-protocols-on-the-fly
If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the `QK_STENO_BOLT` and `QK_STENO_GEMINI` keycodes in order to switch protocols on the fly.
To enable these special keycodes, add the following lines to your `rules.mk`:
```mk
STENO_ENABLE = yes
STENO_PROTOCOL = all
```
If you want to switch protocols programatically, as part of a custom macro for example, don't use `tap_code(QK_STENO_*)`, as `tap_code` only supports [basic keycodes](keycodes_basic). Instead, you should use `steno_set_mode(STENO_MODE_*)`, whose valid arguments are `STENO_MODE_BOLT` and `STENO_MODE_GEMINI`.
The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard &mdash; assuming that your keyboard features (emulated) EEPROM.
Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.
The default value for `STENO_PROTOCOL` is `all`.
## Configuring QMK for Steno :id=configuring-qmk-for-steno
Firstly, enable steno in your keymap's Makefile. You may also need disable mousekeys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
After enabling stenography and optionally selecting a protocol, you may also need disable mouse keys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
```make
STENO_ENABLE = yes
MOUSEKEY_ENABLE = no
```
!> If you had *explicitly* set `VIRSTER_ENABLE = no`, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to `yes`, remove the line from your `rules.mk` or send the steno chords yourself in an alternative way using the [provided interceptable hooks](#interfacing-with-the-code).
In your keymap create a new layer for Plover. You will need to include `keymap_steno.h`. See `planck/keymaps/steno/keymap.c` for an example. Remember to create a key to switch to the layer as well as a key for exiting the layer. If you would like to switch modes on the fly you can use the keycodes `QK_STENO_BOLT` and `QK_STENO_GEMINI`. If you only want to use one of the protocols you may set it up in your initialization function:
In your keymap, create a new layer for Plover, that you can fill in with the [steno keycodes](#keycode-reference) (you will need to include `keymap_steno.h`, see `planck/keymaps/steno/keymap.c` for an example). Remember to create a key to switch to the layer as well as a key for exiting the layer.
```c
void eeconfig_init_user() {
steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
}
```
Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).
Once you have your keyboard flashed launch Plover. Click the 'Configure...' button. In the 'Machine' tab select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).
On the display tab click 'Open stroke display'. With Plover disabled you should be able to hit keys on your keyboard and see them show up in the stroke display window. Use this to make sure you have set up your keymap correctly. You are now ready to steno!
To test your keymap, you can chord keys on your keyboard and either look at the output of the 'paper tape' (Tools > Paper Tape) or that of the 'layout display' (Tools > Layout Display). If your strokes correctly show up, you are now ready to steno!
## Learning Stenography :id=learning-stenography
@@ -60,7 +121,7 @@ On the display tab click 'Open stroke display'. With Plover disabled you should
The steno code has three interceptable hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.
```c
bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]);
bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE]);
```
This function is called when a chord is about to be sent. Mode will be one of `STENO_MODE_BOLT` or `STENO_MODE_GEMINI`. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.
@@ -72,15 +133,23 @@ bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
This function is called when a keypress has come in, before it is processed. The keycode should be one of `QK_STENO_BOLT`, `QK_STENO_GEMINI`, or one of the `STN_*` key values.
```c
bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys);
```
This function is called after a key has been processed, but before any decision about whether or not to send a chord. If `IS_PRESSED(record->event)` is false, and `pressed` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This is where to put hooks for things like, say, live displays of steno chords or keys.
This function is called after a key has been processed, but before any decision about whether or not to send a chord. This is where to put hooks for things like, say, live displays of steno chords or keys.
If `IS_PRESSED(record->event)` is false, and `n_pressed_keys` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.
The `chord` argument contains the packet of the current chord as specified by the protocol in use. This is *NOT* simply a list of chorded steno keys of the form `[STN_E, STN_U, STN_BR, STN_GR]`. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.
The `n_pressed_keys` argument is the number of physical keys actually being held down.
This is not always equal to the number of bits set to 1 (aka the [Hamming weight](https://en.wikipedia.org/wiki/Hamming_weight)) in `chord` because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key.
At the end of this scenario given as an example, `chord` would have five bits set to 1 but
`n_pressed_keys` would be set to 2 because there are only two keys currently being pressed down.
## Keycode Reference :id=keycode-reference
As defined in `keymap_steno.h`.
You must include `keymap_steno.h` to your `keymap.c` with `#include "keymap_steno.h"` before you can use these keycodes
> Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
@@ -124,10 +193,10 @@ As defined in `keymap_steno.h`.
|`STN_SR`|`STN_SR`| `-S`|
|`STN_DR`|`STN_DR`| `-D`|
|`STN_ZR`|`STN_ZR`| `-Z`|
|`STN_FN`|| (GeminiPR only)|
|`STN_RES1`||(GeminiPR only)|
|`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)|
|`STN_FN`|| (Function)|
|`STN_RES1`||(Reset 1)|
|`STN_RES2`||(Reset 2)|
|`STN_PWR`||(Power)|
If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file.

View File

@@ -14,55 +14,48 @@ Optionally, you might want to set a custom `TAPPING_TERM` time by adding somethi
```c
#define TAPPING_TERM 175
#define TAPPING_TERM_PER_KEY
```
The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead.
The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead. The `TAPPING_TERM_PER_KEY` definition is only needed if you control the tapping term through a [custom `get_tapping_term` function](tap_hold.md#tapping_term), which may be needed because `TAPPING_TERM` affects not just tap-dance keys.
Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that takes a number which will later be used as an index into the `tap_dance_actions` array.
Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro. That macro takes a number which will later be used as an index into the `tap_dance_actions` array and turns it into a tap-dance keycode.
After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
* This is the same as `ACTION_TAP_DANCE_DUAL_ROLE`, but renamed to something that is clearer about its functionality. Both names will work.
* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: Sends the `kc` keycode when tapped once, or toggles the state of `layer`. (this functions like the `TG` layer keycode).
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* ~~`ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`~~: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
* This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](tap_hold.md#tapping-term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
!> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported.
Similar to the first option, the second option is good for simple layer-switching cases.
Similar to the first option, the second and third option are good for simple layer-switching cases.
For more complicated cases, use the third or fourth options (examples of each are listed below).
Finally, the fifth option is particularly useful if your non-Tap-Dance keys start behaving weirdly after adding the code for your Tap Dance keys. The likely problem is that you changed the `TAPPING_TERM` time to make your Tap Dance keys easier for you to use, and that this has changed the way your other keys handle interrupts.
For more complicated cases, like blink the LEDs, fiddle with the backlighting, and so on, use the fourth or fifth option. Examples of each are listed below.
## Implementation Details :id=implementation
Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!
The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and reset the timer.
Let's go over the three functions mentioned in `ACTION_TAP_DANCE_FN_ADVANCED` in a little more detail. They all receive the same too arguments: a pointer to a structure that holds all dance related state information, and a pointer to a use case specific state variable. The three functions differ in when they are called. The first, `on_each_tap_fn()`, is called every time the tap dance key is *pressed*. Before it is called, the counter is incremented and the timer is reset. The second function, `on_dance_finished_fn()`, is called when the tap dance is interrupted or ends because `TAPPING_TERM` milliseconds have passed since the last tap. When the `finished` field of the dance state structure is set to `true`, the `on_dance_finished_fn()` is skipped. After `on_dance_finished_fn()` was called or would have been called, but no sooner than when the tap dance key is *released*, `on_dance_reset_fn()` is called. It is possible to end a tap dance immediately, skipping `on_dance_finished_fn()`, but not `on_dance_reset_fn`, by calling `reset_tap_dance(state)`.
To accomplish this logic, the tap dance mechanics use three entry points. The main entry point is `process_tap_dance()`, called from `process_record_quantum()` *after* `process_record_kb()` and `process_record_user()`. This function is responsible for calling `on_each_tap_fn()` and `on_dance_reset_fn()`. In order to handle interruptions of a tap dance, another entry point, `preprocess_tap_dance()` is run right at the beginning of `process_record_quantum()`. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. Finally, `tap_dance_task()` periodically checks whether `TAPPING_TERM` has passed since the last key press and finishes a tap dance if that is the case.
This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
Our next stop is `tap_dance_task()`. This handles the timeout of tap-dance keys.
For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros.
## Examples :id=examples
### Simple Example :id=simple-example
### Simple Example: Send `ESC` on Single Tap, `CAPS_LOCK` on Double Tap :id=simple-example
Here's a simple example for a single definition:
1. In your `rules.mk`, add `TAP_DANCE_ENABLE = yes`
2. In your `config.h` (which you can copy from `qmk_firmware/keyboards/planck/config.h` to your keymap directory), add `#define TAPPING_TERM 200`
3. In your `keymap.c` file, define the variables and definitions, then add to your keymap:
2. In your `keymap.c` file, define the variables and definitions, then add to your keymap:
```c
// Tap Dance declarations
@@ -92,40 +85,15 @@ All the enums used in the examples are declared like this:
```c
// Enums defined for all examples:
enum {
CT_SE,
CT_CLN,
TD_ESC_CAPS,
CT_EGG,
CT_FLSH,
X_TAP_DANCE
CT_CLN,
X_CTL,
};
```
#### Example 1: Send `:` on Single Tap, `;` on Double Tap :id=example-1
```c
void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code16(KC_COLN);
} else {
register_code(KC_SCLN);
}
}
void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code16(KC_COLN);
} else {
unregister_code(KC_SCLN);
}
}
// All tap dance functions would go here. Only showing this one.
qk_tap_dance_action_t tap_dance_actions[] = {
[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
};
```
#### Example 2: Send "Safety Dance!" After 100 Taps :id=example-2
#### Example 1: Send "Safety Dance!" After 100 Taps :id=example-1
```c
void dance_egg(qk_tap_dance_state_t *state, void *user_data) {
@@ -140,7 +108,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
```
#### Example 3: Turn LED Lights On Then Off, One at a Time :id=example-3
#### Example 2: Turn LED Lights On Then Off, One at a Time :id=example-2
```c
// On each tap, light up one LED, from right to left
@@ -181,15 +149,74 @@ void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
ergodox_right_led_3_off();
}
// All tap dances now put together. Example 3 is "CT_FLASH"
// All tap dances now put together. Example 2 is "CT_FLSH"
qk_tap_dance_action_t tap_dance_actions[] = {
[CT_SE] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT),
[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
[CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),
[CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(dance_flsh_each, dance_flsh_finished, dance_flsh_reset)
};
```
#### Example 3: Send `:` on Tap, `;` on Hold :id=example-3
With a little effort, powerful tap-hold configurations can be implemented as tap dances. To emit taps as early as possible, we need to act on releases of the tap dance key. There is no callback for this in the tap dance framework, so we use `process_record_user()`.
```c
typedef struct {
uint16_t tap;
uint16_t hold;
uint16_t held;
} tap_dance_tap_hold_t;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
qk_tap_dance_action_t *action;
switch (keycode) {
case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations
action = &tap_dance_actions[TD_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
}
}
return true;
}
void tap_dance_tap_hold_finished(qk_tap_dance_state_t *state, void *user_data) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
if (state->pressed) {
if (state->count == 1
#ifndef PERMISSIVE_HOLD
&& !state->interrupted
#endif
) {
register_code16(tap_hold->hold);
tap_hold->held = tap_hold->hold;
} else {
register_code16(tap_hold->tap);
tap_hold->held = tap_hold->tap;
}
}
}
void tap_dance_tap_hold_reset(qk_tap_dance_state_t *state, void *user_data) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
if (tap_hold->held) {
unregister_code16(tap_hold->held);
tap_hold->held = 0;
}
}
#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
{ .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }
qk_tap_dance_action_t tap_dance_actions[] = {
[CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN),
};
```
#### Example 4: 'Quad Function Tap-Dance' :id=example-4
By [DanielGGordon](https://github.com/danielggordon)
@@ -305,7 +332,8 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) {
// Last case is for fast typing. Assuming your key is `f`:
// For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
// In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); break;
default: break;
}
}
@@ -314,8 +342,9 @@ void x_reset(qk_tap_dance_state_t *state, void *user_data) {
case TD_SINGLE_TAP: unregister_code(KC_X); break;
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); break;
default: break;
}
xtap_state.state = TD_NONE;
}
@@ -329,7 +358,7 @@ And then simply use `TD(X_CTL)` anywhere in your keymap.
If you want to implement this in your userspace, then you may want to check out how [DanielGGordon](https://github.com/qmk/qmk_firmware/tree/master/users/gordon) has implemented this in their userspace.
> In this configuration "hold" takes place **after** tap dance timeout (see `ACTION_TAP_DANCE_FN_ADVANCED_TIME`). To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
> In this configuration "hold" takes place **after** tap dance timeout. To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
#### Example 5: Using tap dance for advanced mod-tap and layer-tap keys :id=example-5
@@ -511,8 +540,18 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
// Associate our tap dance key with its functionality
qk_tap_dance_action_t tap_dance_actions[] = {
[QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
[QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)
};
// Set a long-ish tapping term for tap-dance keys
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
return 275;
default:
return TAPPING_TERM;
}
}
```
The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the `layer_state_is(layer)` function which returns `true` if the given `layer` is active.
@@ -521,6 +560,6 @@ The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
`tap_dance_actions[]` works similar to the above examples. Note that, additionally, I set a longer tapping term for the tap dance keys. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. In order for the per-key tapping terms to take effect, `TAPPING_TERM_PER_KEY` must be defined in your `config.h`.
Finally, to get this tap dance key working, be sure to include `TD(QUOT_LAYR)` in your `keymaps[]`.

View File

@@ -1,107 +0,0 @@
# Terminal
> This feature is currently *huge*, and should probably only be put on boards with a lot of memory, or for fun.
The terminal feature is a command-line-like interface designed to communicate through a text editor with keystrokes. It's beneficial to turn off auto-indent features in your editor.
To enable, stick this in your `rules.mk` or `Makefile`:
TERMINAL_ENABLE = yes
And use the `TERM_ON` and `TERM_OFF` keycodes to turn it on or off.
When enabled, a `> ` prompt will appear, where you'll be able to type, backspace (a bell will ding if you reach the beginning and audio is enabled), and hit enter to send the command. Arrow keys are currently disabled so it doesn't get confused. Moving your cursor around with the mouse is discouraged.
`#define TERMINAL_HELP` enables some other output helpers that aren't really needed with this page.
Pressing "up" and "down" will allow you to cycle through the past 5 commands entered.
## Future Ideas
* Keyboard/user-extensible commands
* Smaller footprint
* Arrow key support
* Command history - Done
* SD card support
* LCD support for buffer display
* Keycode -> name string LUT
* Layer status
* *Analog/digital port read/write*
* RGB mode stuff
* Macro definitions
* EEPROM read/write
* Audio control
## Current Commands
### `about`
Prints out the current version of QMK with a build date:
```
> about
QMK Firmware
v0.5.115-7-g80ed73-dirty
Built: 2017-08-29-20:24:44
```
### `print-buffer`
Outputs the last 5 commands entered
```
> print-buffer
0. print-buffer
1. help
2. about
3. keymap 0
4. help
5. flush-buffer
```
### `flush-buffer`
Clears command buffer
```
> flush-buffer
Buffer cleared!
```
### `help`
Prints out the available commands:
```
> help
commands available:
about help keycode keymap exit print-buffer flush-buffer
```
### `keycode <layer> <row> <col>`
Prints out the keycode value of a certain layer, row, and column:
```
> keycode 0 1 0
0x29 (41)
```
### `keymap <layer>`
Prints out the entire keymap for a certain layer
```
> keymap 0
0x002b, 0x0014, 0x001a, 0x0008, 0x0015, 0x0017, 0x001c, 0x0018, 0x000c, 0x0012, 0x0013, 0x002a,
0x0029, 0x0004, 0x0016, 0x0007, 0x0009, 0x000a, 0x000b, 0x000d, 0x000e, 0x000f, 0x0033, 0x0034,
0x00e1, 0x001d, 0x001b, 0x0006, 0x0019, 0x0005, 0x0011, 0x0010, 0x0036, 0x0037, 0x0038, 0x0028,
0x5cd6, 0x00e0, 0x00e2, 0x00e3, 0x5cd4, 0x002c, 0x002c, 0x5cd5, 0x0050, 0x0051, 0x0052, 0x004f,
>
```
### `exit`
Exits the terminal - same as `TERM_OFF`.

View File

@@ -127,7 +127,7 @@ The following input modes are available:
By default, this mode uses Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) to start Unicode input, but this can be changed by defining [`UNICODE_KEY_LNX`](#input-key-configuration) with a different keycode. This might be required for IBus versions ≥1.5.15, where Ctrl+Shift+U behavior is consolidated into Ctrl+Shift+E.
Users who wish support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout ([more on this method](#custom-linux-layout)).
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Reboot afterwards.
@@ -172,6 +172,7 @@ You can switch the input mode at any time by using the following keycodes. Addin
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input |
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input _(not implemented)_ |
|`UNICODE_MODE_WINC` |`UC_M_WC`|`UC_WINC` |Switch to Windows input using WinCompose |
|`UNICODE_MODE_EMACS` |`UC_M_EM`|`UC_EMACS` |Switch to emacs (`C-x-8 RET`) |
You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UC_LNX`).

View File

@@ -358,3 +358,46 @@ CLI Flashing sequence:
2. Wait for the OS to detect the device
3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default`
4. Wait for the keyboard to become available
### `make` Targets
* `:uf2-split-left` and `:uf2-split-right`: Flashes the firmware but also sets the handedness setting in EEPROM by generating a side specific firmware.
## Raspberry Pi RP2040 UF2
The `rules.mk` setting for this bootloader is `rp2040`, and can be specified at the keymap or user level.
To ensure compatibility with the rp2040 bootloader, make sure this block is present in your `rules.mk`:
```make
# Bootloader selection
BOOTLOADER = rp2040
```
Compatible flashers:
* Any application able to copy a file from one place to another, such as _macOS Finder_ or _Windows Explorer_.
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `QK_BOOTLOADER` keycode
* Hold the `BOOTSEL` button on the PCB while plugin in the usb cable.
* Double-tap the `RESET` button on the PCB<sup>1</sup>.
2. Wait for the OS to detect the device
3. Copy the .uf2 file to the new USB disk
4. Wait for the keyboard to become available
or
CLI Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `QK_BOOTLOADER` keycode
* Hold the `BOOTSEL` button on the PCB while plugin in the usb cable.
* Double-tap the `RESET` button on the PCB<sup>1</sup>.
2. Wait for the OS to detect the device
3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/rpi_pico --keymap default`
4. Wait for the keyboard to become available
<sup>1</sup>: This works only if QMK was compiled with `RP2040_BOOTLOADER_DOUBLE_TAP_RESET` defined.

View File

@@ -177,20 +177,25 @@ From here, you should have a working keyboard once you program a firmware.
Simple firmware can be created easily using the [Keyboard Firmware Builder](https://kbfirmware.com/) website. Recreate your layout using [Keyboard Layout Editor](https://www.keyboard-layout-editor.com), import it and recreate the matrix (if not already done as part of [planning the matrix](#planning-the-matrix).
Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, and the .zip of source files can be modified for advanced functionality and compiled locally using the method described in [Building Your First Firmware](newbs_building_firmware?id=build-your-firmware).
Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, or for advanced functionality, compiled locally after [Setting up Your Environment](newbs_getting_started.md).
The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the code from your .zip file in a modern version of QMK Firmware, you'll need to open the .zip and follow these instructions:
The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the firmware in a modern version of QMK Firmware, you'll need to export via the `Save Configuration` button, then run:
qmk import-kbfirmware /path/to/export.json
For example:
```
$ qmk import-kbfirmware ~/Downloads/gh62.json
Ψ Importing gh62.json.
⚠ Support here is basic - Consider using 'qmk new-keyboard' instead
Ψ Imported a new keyboard named gh62.
Ψ To start working on things, `cd` into keyboards/gh62,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb gh62 -km default.
```
1. Extract the `kb` folder to `qmk_firmware/keyboards/handwired/`.
2. Open the extracted `kb` folder, then proceed to the `keymaps/default/` folder, and open `keymap.c`.
3. Locate and delete the `action_get_macro` code block:
```
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
...
return MACRO_NONE;
}
```
4. Save and close `keymap.c`.
## Flashing the Firmware

View File

@@ -85,7 +85,6 @@
* [スワップハンド](ja/feature_swap_hands.md)
* [タップダンス](ja/feature_tap_dance.md)
* [タップホールド設定](ja/tap_hold.md)
* [ターミナル](ja/feature_terminal.md)
* [ユニコード](ja/feature_unicode.md)
* [ユーザスペース](ja/feature_userspace.md)
* [WPM 計算](ja/feature_wpm.md)

View File

@@ -108,7 +108,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* デバイスの USB 経由の最大電力(mA) を設定します (デフォルト: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* キーボード、マウス および 共有 (NKRO/メディアキー) インタフェースのための USB ポーリングレートをミリ秒で設定します
* `#define USB_SUSPEND_WAKEUP_DELAY 200`
* `#define USB_SUSPEND_WAKEUP_DELAY 0`
* ウェイクアップパケットを送信した後で一時停止するミリ秒を設定します
* `#define F_SCL 100000L`
* I2C を使用するキーボードのための I2C クロックレート速度を設定します。デフォルトは `400000L` ですが、`split_common` を使っているキーボードは別でデフォルトは `100000L` です。
@@ -144,7 +144,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
## 設定可能な挙動 :id=behaviors-that-can-be-configured
* `#define TAPPING_TERM 200`
* タップがホールドになるまでの時間。500以上に設定された場合、タップ期間中にタップされたキーもホールドになります。(訳注: PERMISSIVE_HOLDも参照)
* タップがホールドになるまでの時間。
* `#define TAPPING_TERM_PER_KEY`
* キーごとの `TAPPING_TERM` 設定の処理を有効にします
* `#define RETRO_TAPPING`
@@ -181,8 +181,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* ワンショットがタイムアウトするまでの時間
* `#define ONESHOT_TAP_TOGGLE 2`
* ワンショットトグルが引き起こされるまでのタップ数
* `#define QMK_KEYS_PER_SCAN 4`
* 走査ごとに1つ以上のキーを送信できるようにします。デフォルトでは、走査ごとに `process_record()` 経由で1つのキーイベントのみが送信されます。これはほとんどのタイピングにほとんど影響しませんが、多くのコードを入力しているか、走査レートが最初から遅い場合、キーイベントの処理に多少の遅延が生じる可能性があります。それぞれのプレスとリリースは別のイベントです。スキャン時間が 1ms 程度のキーボードの場合、とても高速なタイピストでさえ、実際にキーボードから数 ms 以上の遅延を発生させるのに必要な 500 キーストロークを1秒間に生成することはないでしょう。しかし、34ms の走査時間でコードを入力している場合はどうでしょうか?おそらくこれが必要です。
* `#define COMBO_COUNT 2`
* [コンボ](ja/feature_combo.md)機能で使っているコンボの数にこれを設定します。
* `#define COMBO_TERM 200`
@@ -196,8 +194,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define RGB_DI_PIN D7`
* WS2812 の DI 端子につなぐピン
* `#define RGBLIGHT_ANIMATIONS`
* RGB アニメーションを実行します
* `#define RGBLIGHT_LAYERS`
* オンとオフを切り替えることができる [ライトレイヤー](ja/feature_rgblight.md?id=lighting-layers) を定義できます。現在のキーボードレイヤーまたは Caps Lock 状態を表示するのに最適です。
* `#define RGBLIGHT_MAX_LAYERS`

View File

@@ -87,17 +87,17 @@ void matrix_init(void) {
}
uint8_t matrix_scan(void) {
bool matrix_has_changed = false;
bool changed = false;
// TODO: ここにマトリックススキャンルーチンを追加します
// ハードウェアによるデバウンスがない場合 - 設定されているデバウンスルーチンを使用します
debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
// 正しいキーボード動作のためにこれを呼び出す*必要があります*
matrix_scan_quantum();
return matrix_has_changed;
return changed;
}
```

View File

@@ -40,6 +40,7 @@ QMK はその場で作られた一時的なマクロをサポートします。
| `DYNAMIC_MACRO_SIZE` | 128 | 動的マクロが使用できるメモリ量を設定します。これは限られたリソースであり、コントローラに依存します。 |
| `DYNAMIC_MACRO_USER_CALL` | *定義なし* | これを定義すると、ユーザの `keymap.c` ファイルを使ってマクロが起動されます。 |
| `DYNAMIC_MACRO_NO_NESTING` | *定義なし* | これを定義すると、別のマクロからマクロを呼び出す(入れ子になったマクロ)機能を無効にします。 |
| `DYNAMIC_MACRO_DELAY` | *定義なし* | 各キーを送信する時の待ち時間ms単位を設定します。 |
記録中にキーを押すたびに LED が点滅し始めた場合は、マクロバッファにマクロを入れるスペースがもう無いことを意味します。マクロを入れるには、他のマクロ(それらは同じバッファを共有します)を短くするか、`config.h``DYNAMIC_MACRO_SIZE` 定義を追加することでバッファを増やします(デフォルト値: 128; ヘッダ内のコメントを読んでください)。

View File

@@ -77,7 +77,7 @@ bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
この関数はキーが押されるとキーが処理される前に呼び出されます。キーコードは `QK_STENO_BOLT``QK_STENO_GEMINI` あるいは `STN_*` キー値のいずれかでなければなりません。
```c
bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
```
この関数はキーが処理された後、ただしコードを送信するかどうかを決める前に呼び出されます。`IS_PRESSED(record->event)` が false で、`pressed` が 0 または 1 の場合は、コードはまもなく送信されますが、まだ送信されてはいません。ここが速記コードあるいはキーのライブ表示などのフックを配置する場所です。

View File

@@ -28,7 +28,6 @@
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: 1回タップすると `kc1` キーコードを送信し、2回タップすると `kc2` キーコードを送信します。キーを押し続けているときは、適切なキーコードが登録されます: キーを押し続けた場合は `kc1`、一度タップしてから続けてもう一度キーを押してそのまま押し続けたときは、 `kc2` が登録されます。
* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: 1回タップすると `kc` キーコードが送信され、2回タップすると `layer` レイヤーに移動します(これは `TO` レイヤーキーコードのように機能します)。
* この機能は `ACTION_TAP_DANCE_DUAL_ROLE` と同じですが、機能が明確になるように関数名を変更しました。どちらの関数名でも実行できます。
* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: 1回タップすると `kc` キーコードが送信され、2回タップすると `layer` の状態をトグルします(これは `TG` レイヤーキーコードのように機能します)。
* `ACTION_TAP_DANCE_FN(fn)`: ユーザーキーマップに定義した指定の関数が呼び出されます。タップダンス実行の回数分タップすると、最後の時点で呼び出されます。
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: タップする度にユーザーキーマップに定義した最初の関数が呼び出されます。タップダンスの実行が終わった時点で2番目の関数が呼び出され、タップダンスの実行をリセットするときに最後の関数が呼び出されます。

View File

@@ -1,112 +0,0 @@
# ターミナル
<!---
original document: 0.8.147:docs/feature_terminal.md
git diff 0.8.147 HEAD -- docs/feature_terminal.md | cat
-->
> この機能は現在のところ*巨大*であり、おそらく大量のメモリを搭載したキーボード、または楽しみのためにのみ配置する必要があります。
ターミナル機能はテキストエディタを介してキーストロークで通信するように設計されたコマンドラインのようなインタフェースです。エディタで自動インデント機能をオフにすることは有益です。
有効にするには、以下を `rules.mk` または `Makefile` に貼り付けます:
TERMINAL_ENABLE = yes
そして、オンまたはオフにするために、`TERM_ON` および `TERM_OFF` キーコードを使います。
有効な場合、`> ` プロンプトが現れ、ここでコマンドやバックスペース(オーディオが有効な場合は、先頭に到達するとベルが鳴ります)を入力することができ、エンターを入力するとコマンドを送信します。矢印キーは現在のところ無効なため、混乱することはありません。マウスでカーソルを移動することはお勧めしません。
`#define TERMINAL_HELP` は、このページでは実際には必要のない他の出力ヘルパーを有効にします。
"上矢印" および "下矢印" により、過去に入力した5つのコマンドを順に切り替えることができます。
## 今後のアイデア
* キーボード/ユーザ拡張可能なコマンド
* より小さなフットプリント
* 矢印キーのサポート
* コマンド履歴 - 完了
* SD カードのサポート
* バッファディスプレイのための LCD サポート
* キーコード -> 名称の対応表
* レイヤー状態
* *アナログ/デジタル ポートの読み込み/書き込み*
* RGB モード関連機能
* マクロ定義
* EEPROM の読み込み/書き込み
* オーディオ制御
## 現在のコマンド
### `about`
現在の QMK のバージョンとビルドした日の出力:
```
> about
QMK Firmware
v0.5.115-7-g80ed73-dirty
Built: 2017-08-29-20:24:44
```
### `print-buffer`
最後に入力した5つのコマンドの出力
```
> print-buffer
0. print-buffer
1. help
2. about
3. keymap 0
4. help
5. flush-buffer
```
### `flush-buffer`
コマンドバッファをクリア
```
> flush-buffer
Buffer cleared!
```
### `help`
利用可能なコマンドの出力:
```
> help
commands available:
about help keycode keymap exit print-buffer flush-buffer
```
### `keycode <layer> <row> <col>`
特定のレイヤー、行および列のキーコード値の出力:
```
> keycode 0 1 0
0x29 (41)
```
### `keymap <layer>`
特定のレイヤーの全てのキーマップの出力
```
> keymap 0
0x002b, 0x0014, 0x001a, 0x0008, 0x0015, 0x0017, 0x001c, 0x0018, 0x000c, 0x0012, 0x0013, 0x002a,
0x0029, 0x0004, 0x0016, 0x0007, 0x0009, 0x000a, 0x000b, 0x000d, 0x000e, 0x000f, 0x0033, 0x0034,
0x00e1, 0x001d, 0x001b, 0x0006, 0x0019, 0x0005, 0x0011, 0x0010, 0x0036, 0x0037, 0x0038, 0x0028,
0x5cd6, 0x00e0, 0x00e2, 0x00e3, 0x5cd4, 0x002c, 0x002c, 0x5cd5, 0x0050, 0x0051, 0x0052, 0x004f,
>
```
### `exit`
ターミナルの終了 - `TERM_OFF` と同じ。

View File

@@ -161,7 +161,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
* [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
* [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
* [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
この一連のイベントの中の任意のステップで (`process_record_kb()` のような)関数は `false` を返して、以降の処理を停止することができます。

View File

@@ -219,13 +219,13 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|Key |Aliases |Description |
|-----------------|---------|---------------------------------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held. Puts keyboard into bootloader mode if shift & control are held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
## Audio Keys :id=audio-keys
@@ -337,6 +337,9 @@ See also: [Magic Keycodes](keycodes_magic.md)
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
|`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape |
|`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape |
|`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |

View File

@@ -7,6 +7,9 @@
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
|`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape |
|`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape |
|`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |

View File

@@ -0,0 +1,189 @@
# Building QMK with GitHub Userspace
This is an intermediate QMK tutorial to setup an out-of-tree build environment with a personal GitHub repository. It avoids using a fork of the QMK firmware to store and build your keymap within its source tree. Keymap files will instead be stored in your own personal GitHub repository, in [Userspace](https://docs.qmk.fm/#/feature_userspace) format, and built with an action workflow. Unlike the [default tutorial](https://docs.qmk.fm/#/newbs), this guide requires some familiarity with using Git.
?> **Is This Guide For Me?**<br>
This is a lean setup to avoid space-consuming local build environment in your computer. Troubleshooting compile-time errors will be slower with commit uploads to GitHub for the compiler workflow.
## Prerequisites
The following are required to get started:
* [GitHub Account](https://github.com/new)
* A working account is required to setup and host your repository for GitHub Actions to build QMK firmware.
* [Text editor](newbs_learn_more_resources.md#text-editor-resources)
* Youll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
* [Toolbox](https://github.com/qmk/qmk_toolbox)
* A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard.
## Environment Setup
?> If you are familiar with using [github.dev](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor), you can skip to [step 2](#_2-create-github-repository) and commit the code files that follows directly on GitHub using the web-based VSCode editor.
### 1. Install Git
A working Git client is required for your local operating system to commit and push changes to GitHub.
<!-- tabs:start -->
### ** Windows **
QMK maintains a bundle of MSYS2, the CLI and all necessary dependencies including Git. Install [QMK MSYS](https://msys.qmk.fm/) with the latest release [here](https://github.com/qmk/qmk_distro_msys/releases/latest). Git will be part of the bundle.
### ** macOS **
Install Homebrew following the instructions on https://brew.sh. Git will be part of the bundle.
### ** Linux/WSL **
It's very likely that you already have Git installed. If not, use one of the following commands:
* Debian / Ubuntu / Devuan: `sudo apt install -y git`
* Fedora / Red Hat / CentOS: `sudo yum -y install git`
* Arch / Manjaro: `sudo pacman --needed --noconfirm -S git`
* Void: `sudo xbps-install -y git`
* Solus: `sudo eopkg -y install git`
* Sabayon: `sudo equo install dev-vcs/git`
* Gentoo: `sudo emerge dev-vcs/git`
<!-- tabs:end -->
### 2. GitHub authentication
If your GitHub account is not configured for [authenticated Git operations](https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/), you will need to setup at least one of the following:
* [Personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)
* [Connecting with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh)
### 3. Create a repository
You will need a personal GitHub repository to host your QMK code. Follow [this guide](https://docs.github.com/en/get-started/quickstart/create-a-repo#create-a-repository) to create one named `qmk_keymap`. Do not proceed to commit any files just yet.
## Initial Code Commit
### Create template files
Run the following commands in your computer to create a folder with a few template files:
```
mkdir -p ~/qmk_keymap/.github/workflows
touch ~/qmk_keymap/.github/workflows/build.yml
touch ~/qmk_keymap/config.h
echo "SRC += source.c" > ~/qmk_keymap/rules.mk
echo "#include QMK_KEYBOARD_H" > ~/qmk_keymap/source.c
```
?> For Windows user running MSYS, those commands will create the folder `qmk_keymap/` and its content in the `C:\Users\<windows_username>\qmk_keymap\` path location.
### Add a JSON keymap
Visit the [QMK Configurator](https://config.qmk.fm/#/) to create a keymap file:
1. Select your keyboard from the drop-down list (and choose a layout if required).
2. Use your GitHub username for the **Keymap Name** field.
3. Customise the key layout according to your preference.
4. Select download next to **KEYMAP.JSON** and save the JSON file into the `~/qmk_keymap/` folder.
### Add a GitHub Action workflow
Open the file `~/qmk_keymap/.github/workflows/build.yml` with your favorite [text editor](newbs_learn_more_resources.md#text-editor-resources), paste the following workflow content, and save it:
```yml
name: Build QMK firmware
on: [push, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
strategy:
fail-fast: false
matrix:
# List of keymap json files to build
file:
- username.json
# End of json file list
steps:
- name: Checkout QMK
uses: actions/checkout@v3
with:
repository: qmk/qmk_firmware
submodules: recursive
- name: Checkout userspace
uses: actions/checkout@v3
with:
path: users/${{ github.actor }}
- name: Build firmware
run: qmk compile "users/${{ github.actor }}/${{ matrix.file }}"
- name: Archive firmware
uses: actions/upload-artifact@v3
continue-on-error: true
with:
name: ${{ matrix.file }}_${{ github.actor }}
path: |
*.hex
*.bin
*.uf2
```
Replace `username.json` with the JSON file name that was downloaded from [QMK Configurator](https://config.qmk.fm/#/) in the previous step.
!> Do note that the `build.yml` file requires ***proper indentation*** for every line. Incorrect spacing will trigger workflow syntax errors.
### Commit files to GitHub
If you have completed all steps correctly, the folder `qmk_keymap/` will contain the following files:
```
|-- .github
| `-- workflows
| `-- build.yml
|-- rules.mk
|-- config.h
|-- source.c
|-- username.json
```
To commit and push them into GitHub, run the following commands (replacing `gh-username` with your GitHub user name):
```
cd ~/qmk_keymap
git init
git add -A
git commit -m "Initial QMK keymap commit"
git branch -M main
git remote add origin https://github.com/gh-username/qmk_keymap.git
git push -u origin main
```
?> Use your GitHub personal access token at the password prompt. If you have setup SSH access, replace `https://github.com/gh-username/qmk_keymap.git` with `git@github.com:gh-username/qmk_keymap.git` in the remote origin command above.
### Review workflow output
Files committed to GitHub in the previous step will automatically trigger the workflow to build the JSON file listed in `build.yml`. To review its output:
1. Visit your "**qmk_keymap**" repository page on [GitHub](https://github.com/).
2. Select **Actions** tab to display the "**Build QMK Firmware**" workflow.
3. Select that workflow to display its run from the last commit.
4. Successfully compiled firmware will be under the "**Artifacts**" section.
5. If there are build errors, review the job log for details.
Download and flash the firmware file into your keyboard using [QMK Toolbox](https://docs.qmk.fm/#/newbs_flashing?id=flashing-your-keyboard-with-qmk-toolbox).
## Customising your keymap
This setup and workflow relies on the QMK [Userspace](https://docs.qmk.fm/#/feature_userspace) feature. The build process will copy the QMK source codes and clone your repository into its `users/` folder in a container. You must adhere to the following guidelines when customising your keymaps:
* Keymap layout files must be retained in JSON format and cannot be converted to `keymap.c`.
* User callback and functions (e.g. `process_record_user()`) can be placed in the `source.c` file.
* Multiple keymap JSON files can be built in the same workflow. List them under `matrix.file:`, e.g.:
```yml
file:
- planck.json
- crkbd.json
```
* Code changes will require Git commit into GitHub to trigger the build workflow.
?> See [GitHub Actions guide](https://docs.github.com/en/actions/learn-github-actions) to learn more about development workflow.

View File

@@ -108,6 +108,8 @@ However, this does rely on the bootloader being set by the keyboard. If this inf
In this case, you'll have to fall back on specifying the bootloader. See the [Flashing Firmware](flashing.md) Guide for more details.
!> If your bootloader is not detected by `qmk flash`, try running `qmk doctor` for suggestions on how to fix common problems.
## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!

View File

@@ -27,30 +27,24 @@ QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also
You will need to install [QMK MSYS](https://msys.qmk.fm/). The latest release is available [here](https://github.com/qmk/qmk_distro_msys/releases/latest).
Alternatively, if you'd like to manually install MSYS2, the following section will walk you through the process.
<details>
<summary>Manual Install</summary>
<summary>Advanced Users</summary>
?> Ignore the following steps if you use `QMK MSYS`.
!> <b style="font-size:150%">This process is not recommended for new users.</b>
If you'd like to manually install MSYS2, the following sections will walk you through the process.
#### Prerequisites
You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org.
Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-bit terminal.
You will need to install [MSYS2](https://www.msys2.org). Once installed, close any open MSYS terminals (purple icon) and open a new MinGW 64-bit terminal (blue icon) from the Start Menu.
!> **NOTE:** The MinGW 64-bit terminal is *not* the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See [this page](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems) for more information on the differences.
Then run the following command:
pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python-pillow
#### Installation
Install the QMK CLI by running:
python3 -m pip install qmk
pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk
</details>

View File

@@ -20,7 +20,6 @@ Not sure which text editor to use?
Editors specifically made for code:
* [Sublime Text](https://www.sublimetext.com/)
* [VS Code](https://code.visualstudio.com/)
* [Atom](https://atom.io/)
### Git resources

View File

@@ -0,0 +1,48 @@
# WeAct Blackpill (STM32F411)
The WeAct Blackpill is a popular choice for handwired boards, as it offers a powerful micro controller, USB Type C, a good number of pins to use, and a large amount of firmware space. All for a ~$6 USD price tag.
* [WeAct GitHub for F411 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1)
* Unfortunately, due to supply issues official WeAct F411 based blackpills may not be available.
![Blackpill F411](https://i.imgur.com/nCgeolTh.png)
## Pin Usage Limitations
While the Blackpill is a great choice to use in your keyboard, there are a number of caveats in regards to using them. The first is that a number of exposed pins cannot be used, or have special considerations/hardware tweaks that are required for proper opertion.
### Unusable pins
* Pins `A11` and `A12` are not useable because they're used for USB connection, and cannot be shared.
* In theory, these pins can be used. However, doing so may disable USB connectivity, outright, if used for anything other than a USB port
* Pin `B2` is used by `BOOT1` and cannot be used, without causing problems.
* `VBAT` is not a usable pin.
* `NRST` is not a usable pin.
### Pins to be avoided
* Pin `A9` is meant for VBUS Sense and should not be used, if it can be avoided. It has an internal pull-down resesitor, which may cause issues with usage. However, a pull-up resistor can work (~5.1k), but should be avoided.
* Pin `A10` can be used, but should be avoided. Any connection on this pin can prevent the bootloader from entering the proper mode for DFU flashing. A pull-up resistor (~22k) on this pin fixes the bootloader issue.
### Shared Usage
* Pin `A0` is shared with the User Key (button) on the controller. It can be used.
* Pin `C13` is shared with the onboard LED indicator, and is connected to +3.3V. This can be used, but may cause the LED to blink intermittently, depending on activity on the pin.
*
* Pins `A4`, `A5`, `A6` and `A7` are used by the SOI8 footprint on the back of the controller, that can be used for either an SPI Flash chip, or an SPI EEPROM chip. `A4` is the Chip Select pin, and cannot be shared. However, `A5`, `A6`, and `A7` are the `SCK`, `MISO`, and `MOSI` pins, respectively, and can be shared with other SPI devices.
### Limited Usage
* Pins `C13`, `C14`, and `C15` have limits on output current. They should be used only as input. Eg, they should not be used for row pins in COL2ROW matrix configurations, but can be used as column pins.
* This is because the column pins (in COL2ROW) are pulled up (the pullup strength is independant of the current sourcing limitation) and the ROW is driven low and sinks current, then we check the state of the COLs to look for keypresses.
* Pins `A0` and `B5` are not 5V tolerant, and should only be used with 3.3V compatible functionality.
## Additional Information
### Bootloader issuse
Due to the use of a 25MHz crystal, the controller may have issues entering the bootloader. Heating up the controller can help with this issue.
Also, if pin `A10` is connected to anything at all, it needs to have a pullup resistor (see [Pins to be avoided](#pins-to-be-avoided), above)
### Tiny UF2 Support
There is [tinyuf2 support for the WeAct Blackpill](https://github.com/adafruit/tinyuf2/tree/master/ports/stm32f4/boards/stm32f411ce_blackpill). Instructions on how to compile the bootloadr can be found [here](https://github.com/adafruit/tinyuf2#build-and-flash). Setting `BOOTLOADER = tinyuf2` will enable support for this user bootloader, and the correct configuration to prevent it from being overwritten when flashing firmware.

View File

@@ -20,7 +20,7 @@ As such, if you wish to override this API consider limiting use to writing to lo
| `#define STM32_BOOTLOADER_DUAL_BANK` | Relevant for dual-bank STM32 MCUs, signifies that a GPIO is to be toggled in order to enter bootloader mode. | `FALSE` |
| `#define STM32_BOOTLOADER_DUAL_BANK_GPIO` | Relevant for dual-bank STM32 MCUs, the pin to toggle when attempting to enter bootloader mode, e.g. `B8` | `<none>` |
| `#define STM32_BOOTLOADER_DUAL_BANK_POLARITY` | Relevant for dual-bank STM32 MCUs, the value to set the pin to in order to trigger charging of the RC circuit. e.g. `0` or `1`. | `0` |
| `#define STM32_BOOTLOADER_DUAL_BANK_DELAY` | Relevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay. | `100000` |
| `#define STM32_BOOTLOADER_DUAL_BANK_DELAY` | Relevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay. | `100` |
Kinetis MCUs have no configurable options.

View File

@@ -0,0 +1,77 @@
# Proton C
The Proton C is an Arm STM32F303xC based drop-in replacement for the Pro Micro.
<img src="https://i.imgur.com/GdsN1Rdh.jpg" alt="Proton C" />
#### Features
* Through-hole mounted USB-C Port
* 32-bit 72MHz Cortex-M4 processor (STM32F303CCT6)
* I2C, SPI, PWM, DMA, DAC, USART, I2S
* 23x 3.3V I/O Ports
* 1x 5V output for WS2812 LED chains
* 256kB flash
* 40kB RAM
* AST1109MLTRQ speaker footprint
* Reset button
## Warnings
Some of the PCBs compatible with Pro Micro have VCC (3.3V) and RAW (5V) pins connected (shorted) on the pcb. Using the Proton C will short 5V power from USB and regulated 3.3V which is connected directly to the MCU. Shorting those pins may damage the MCU on the Proton C.
So far, it appears that this is only an issue on the Gherkin PCBs, but other PCBs may be affected in this way.
In this case, you may want to not hook up the RAW pin at all.
## Manual Conversion
To use the Proton C natively, without having to specify `CONVERT_TO=proton_c`, you need to change the `MCU` line in `rules.mk`:
```
MCU = STM32F303
BOARD = QMK_PROTON_C
```
Remove these variables if they exist:
* `BOOTLOADER`
* `EXTRA_FLAGS`
Finally convert all pin assignments in `config.h` to the stm32 equivalents.
| Pro Micro Left | Proton C Left | | Proton C Right | Pro Micro Right |
|-----------|----------|-|----------|-----------|
| `D3` | `A9` | | 5v | RAW (5v) |
| `D2` | `A10` | | GND | GND |
| GND | GND | | FLASH | RESET |
| GND | GND | | 3.3v | VCC <sup>1</sup> |
| `D1` | `B7` | | `A2` | `F4` |
| `D0` | `B6` | | `A1` | `F5` |
| `D4` | `B5` | | `A0` | `F6` |
| `C6` | `B4` | | `B8` | `F7` |
| `D7` | `B3` | | `B13` | `B1` |
| `E6` | `B2` | | `B14` | `B3` |
| `B4` | `B1` | | `B15` | `B2` |
| `B5` | `B0` | | `B9` | `B6` |
| `B0` (RX LED) | `C13` <sup>2</sup> | | `C13` <sup>2</sup> | `D5` (TX LED) |
You can also make use of several new pins on the extended portion of the Proton C:
| Left | | Right |
|------|-|-------|
| `A4`<sup>3</sup> | | `B10` |
| `A5`<sup>4</sup> | | `B11` |
| `A6` | | `B12` |
| `A7` | | `A14`<sup>5</sup> (SWCLK) |
| `A8` | | `A13`<sup>5</sup> (SWDIO) |
| `A15` | | RESET<sup>6</sup> |
Notes:
1. On a Pro Micro VCC can be 3.3v or 5v.
2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on `D5` and a TX LED on `B0`.
3. `A4` is shared with the speaker.
4. `A5` is shared with the speaker.
5. `A13` and `A14` are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.

125
docs/platformdev_rp2040.md Normal file
View File

@@ -0,0 +1,125 @@
# Raspberry Pi RP2040
The following table shows the current driver status for peripherals on RP2040 MCUs:
| System | Support |
| ---------------------------------------------------------------- | ---------------------------------------------- |
| [ADC driver](adc_driver.md) | Support planned (no ETA) |
| [Audio](audio_driver.md) | Support planned (no ETA) |
| [I2C driver](i2c_driver.md) | :heavy_check_mark: |
| [SPI driver](spi_driver.md) | :heavy_check_mark: |
| [WS2812 driver](ws2812_driver.md) | :heavy_check_mark: using `PIO` driver |
| [External EEPROMs](eeprom_driver.md) | :heavy_check_mark: using `I2C` or `SPI` driver |
| [EEPROM emulation](eeprom_driver.md#wear_leveling-configuration) | :heavy_check_mark: |
| [serial driver](serial_driver.md) | :heavy_check_mark: using `SIO` or `PIO` driver |
| [UART driver](uart_driver.md) | Support planned (no ETA) |
## GPIO
<img alt="Raspberry Pi Pico pinout" src="https://i.imgur.com/nLaiYDE.jpg" width="48%"/>
<img alt="Sparkfun RP2040 Pro Micro pinout" src="https://i.imgur.com/1TPAhrs.jpg" width="48%"/>
!> The GPIO pins of the RP2040 are not 5V tolerant!
### Pin nomenclature
To address individual pins on the RP2040, QMK uses the `GPx` abbreviation -- where the `x` stands for the GPIO number of the pin. This number can likely be found on the official pinout diagram of your board. Note that these GPIO numbers match the RP2040 MCU datasheet, and don't necessarily match the number you see printed on the board. For instance the Raspberry Pi Pico uses numbers from 1 to 40 for their pins, but these are not identical to the RP2040's GPIO numbers. So if you want to use the pin 11 of the Pico for your keyboard, you would refer to it as `GP8` in the config files.
### Alternate functions
The RP2040 features flexible GPIO function multiplexing, this means that every pin can be connected to nearly all the internal peripherals like I2C, SPI, UART or PWM. This allows for flexible PCB designs that are much less restricted in the selection of GPIO pins. To find out which pin can use which peripheral refer to the official [Raspberry PI RP2040 datasheet](https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#page=14) section 1.4.3 GPIO functions.
## Selecting hardware peripherals and drivers
QMK RP2040 support builds upon ChibiOS and thus follows their convention for activating drivers and associated hardware peripherals. These tables only give a quick overview which values have to be used, please refer to the ChibiOS specific sections on the driver pages.
### I2C Driver
| RP2040 Peripheral | `mcuconf.h` values | `I2C_DRIVER` |
| ----------------- | ------------------ | ------------ |
| `I2C0` | `RP_I2C_USE_I2C0` | `I2CD1` |
| `I2C1` | `RP_I2C_USE_I2C1` | `I2CD2` |
To configure the I2C driver please read the [ChibiOS/ARM](i2c_driver.md#arm-configuration) section.
### SPI Driver
| RP2040 Peripheral | `mcuconf.h` values | `SPI_DRIVER` |
| ----------------- | ------------------ | ------------ |
| `SPI0` | `RP_SPI_USE_SPI0` | `SPID0` |
| `SPI1` | `RP_SPI_USE_SPI1` | `SPID1` |
To configure the SPI driver please read the [ChibiOS/ARM](spi_driver.md#chibiosarm-configuration) section.
## Double-tap reset boot-loader entry :id=double-tap
The double-tap reset mechanism is an alternate way in QMK to enter the embedded mass storage UF2 boot-loader of the RP2040. It enables bootloader entry by a fast double-tap of the reset pin on start up, which is similar to the behavior of AVR Pro Micros. This feature activated by default for the Pro Micro RP2040 board, but has to be configured for other boards. To activate it, add the following options to your keyboards `config.h` file:
```c
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U // Specify a optional status led which blinks when entering the bootloader
```
## Pre-defined RP2040 boards
QMK defines two boards that you can choose from to base your RP2040 powered keyboard upon. These boards provide pre-configured default pins and drivers.
### Generic Pro Micro RP2040
This is the default board that is chosen, unless any other RP2040 board is selected in your keyboards `rules.mk` file. It assumes a pin layout for the I2C, SPI and Serial drivers which is identical to the Sparkfun Pro Micro RP2040, however all values can be overwritten by defining them in your keyboards `config.h` file. The [double-tap](#double-tap) reset to enter boot-loader behavior is activated by default.
| Driver configuration define | Value |
| -------------------------------------------------------------------------- | ------------------------------------ |
| **I2C driver** | |
| `I2C_DRIVER` | `I2CD2` |
| `I2C1_SDA_PIN` | `GP2` |
| `I2C1_SCL_PIN` | `GP3` |
| **SPI driver** | |
| `SPI_DRIVER` | `SPID0` |
| `SPI_SCK_PIN` | `GP18` |
| `SPI_MISO_PIN` | `GP20` |
| `SPI_MOSI_PIN` | `GP19` |
| **Serial driver** | |
| `SERIAL_USART_DRIVER` ([SIO Driver](serial_driver.md#the-sio-driver) only) | `SIOD0` |
| `SOFT_SERIAL_PIN` | undefined, use `SERIAL_USART_TX_PIN` |
| `SERIAL_USART_TX_PIN` | `GP0` |
| `SERIAL_USART_RX_PIN` | `GP1` |
?> The pin-outs of Adafruit's KB2040 and Boardsource's Blok both deviate from the Sparkfun Pro Micro RP2040. Lookup the pin-out of these boards and adjust your keyboards pin definition accordingly if you want to use these boards.
### Generic RP2040 board
This board can be chosen as a base for RP2040 keyboards which configure all necessary pins and drivers themselves and do not wish to leverage the configuration matching the Generic Pro Micro RP2040 board. Thus it doesn't provide any pre-configured pins or drivers. To select this board add the following line to your keyboards `rules.mk` file.
```make
BOARD = GENERIC_RP_RP2040
```
## Split keyboard support
Split keyboards are fully supported using the [serial driver](serial_driver.md) in both full-duplex and half-duplex configurations. Two driver subsystems are supported by the RP2040, the hardware UART based `SIO` and the Programmable IO based `PIO` driver.
| Feature | [SIO Driver](serial_driver.md#the-sio-driver) | [PIO Driver](serial_driver.md#the-pio-driver) |
| ----------------------------- | --------------------------------------------- | --------------------------------------------- |
| Half-Duplex operation | | :heavy_check_mark: |
| Full-Duplex operation | :heavy_check_mark: | :heavy_check_mark: |
| `TX` and `RX` pin swapping | | :heavy_check_mark: |
| Any GPIO as `TX` and `RX` pin | Only UART capable pins | :heavy_check_mark: |
| Simple configuration | | :heavy_check_mark: |
The `PIO` driver is much more flexible then the `SIO` driver, the only "downside" is the usage of `PIO` resources which in turn are not available for advanced user programs. Under normal circumstances, this resource allocation will be a non-issue.
## RP2040 second stage bootloader selection
As the RP2040 does not have any internal flash memory it depends on an external SPI flash memory chip to store and execute instructions from. To successfully interact with a wide variety of these chips a second stage bootloader that is compatible with the chosen external flash memory has to be supplied with each firmware image. By default an `W25Q080` compatible bootloader is assumed, but others can be chosen by adding one of the defines listed in the table below to your keyboards `config.h` file.
| Compatible with flash chip | Selection |
| :------------------------- | ---------------------------------- |
| W25Q080 | Selected by default |
| AT25SF128A | `#define RP2040_FLASH_AT25SF128A` |
| GD25Q64CS | `#define RP2040_FLASH_GD25Q64CS` |
| W25X10CL | `#define RP2040_FLASH_W25X10CL` |
| IS25LP080 | `#define RP2040_FLASH_IS25LP080` |
| Generic 03H flash | `#define RP2040_FLASH_GENERIC_03H` |

View File

@@ -46,9 +46,12 @@ Closed PRs (for inspiration, previous sets of review comments will help you elim
https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `info.json`
- valid URL
- valid maintainer
- displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
- With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema).
- the mandatory elements for a minimally complete `info.json` at present are:
- valid URL
- valid maintainer
- valid USB VID/PID and device version
- displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
- `readme.md`
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
- flash command is present, and has `:flash` at end
@@ -57,6 +60,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- a picture about the keyboard and preferably about the PCB, too
- images are not to be placed in the `qmk_firmware` repository
- images should be uploaded to an external image hosting service, such as [imgur](https://imgur.com/).
- if imgur is used, images should be resized appropriately: append "h" to the image url i.e. `https://i.imgur.com/vqgE7Ok.jpg` becomes `https://i.imgur.com/vqgE7Okh.jpg`
- `rules.mk`
- removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE`
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
@@ -79,6 +83,9 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](custom_quantum_functions.md?id=keyboard_pre_init_-function-documentation)
- prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](custom_matrix.md?id=lite)
- prefer LED indicator [Configuration Options](feature_led_indicators.md?id=configuration-options) to custom `led_update_*()` implementations where possible
- Encoder support should not be hacked into the keymap here -- no `tap_code(dynamic_keymap_get_keycode())` or `action_exec()` hacks. The [Encoder Map](feature_encoders.md?id=encoder-map) feature already supports the dynamic keymap feature (what power's VIA's "live keymap updates" capability).
- If support is absolutely necessary, it should be implemented exclusively at the keymap level, with none of the implementation bleeding into the keyboard level (no empty rows/columns, no encoder specific layouts, etc.), as those configurations can be redefined at the keymap level. Keymaps can then choose to use the `action_exec` hack. <!-- because people will complain, give them a way to implement it, in the meanwhile. To be removed. -->
- [Request for official proper VIA support](https://github.com/the-via/app/issues/26)
- `<keyboard>.h`
- `#include "quantum.h"` appears at the top
- `LAYOUT` macros should use standard definitions if applicable

View File

@@ -1,91 +0,0 @@
# Converting a board to use the Proton C
Since the Proton C is a drop-in replacement for a Pro Micro we've made it easy to use. This page documents a handy automated process for converting keyboards, as well as documenting the manual process if you'd like to make use of Proton C features that aren't available on Pro Micros.
## Automatic Conversion
If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending `CONVERT_TO_PROTON_C=yes` (or `CTPC=yes`) to your make argument, like this:
make 40percentclub/mf68:default CTPC=yes
You can add the same argument to your keymap's `rules.mk`, which will accomplish the same thing.
This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `#ifdef`s, like this:
```c
#ifdef CONVERT_TO_PROTON_C
// Proton C code
#else
// Pro Micro code
#endif
```
If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
#define CONVERT_TO_PROTON_C_RXLED
## Feature Conversion
These are defaults based on what has been implemented for ARM boards.
| Feature | Notes |
|-------------------------------------|------------------------------------------------------------------------------------------------------------------|
| [Audio](feature_audio.md) | Enabled |
| [RGB Lighting](feature_rgblight.md) | Disabled |
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features |
## Manual Conversion
To use the Proton C natively, without having to specify `CTPC=yes`, you need to change the `MCU` line in `rules.mk`:
```
MCU = STM32F303
BOARD = QMK_PROTON_C
```
Remove these variables if they exist:
* `BOOTLOADER`
* `EXTRA_FLAGS`
Finally convert all pin assignments in `config.h` to the stm32 equivalents.
| Pro Micro Left | Proton C Left | | Proton C Right | Pro Micro Right |
|-----------|----------|-|----------|-----------|
| `D3` | `A9` | | 5v | RAW (5v) |
| `D2` | `A10` | | GND | GND |
| GND | GND | | FLASH | RESET |
| GND | GND | | 3.3v | VCC <sup>1</sup> |
| `D1` | `B7` | | `A2` | `F4` |
| `D0` | `B6` | | `A1` | `F5` |
| `D4` | `B5` | | `A0` | `F6` |
| `C6` | `B4` | | `B8` | `F7` |
| `D7` | `B3` | | `B13` | `B1` |
| `E6` | `B2` | | `B14` | `B3` |
| `B4` | `B1` | | `B15` | `B2` |
| `B5` | `B0` | | `B9` | `B6` |
| `B0` (RX LED) | `C13` <sup>2</sup> | | `C13` <sup>2</sup> | `D5` (TX LED) |
You can also make use of several new pins on the extended portion of the Proton C:
| Left | | Right |
|------|-|-------|
| `A4`<sup>3</sup> | | `B10` |
| `A5`<sup>4</sup> | | `B11` |
| `A6` | | `B12` |
| `A7` | | `A14`<sup>5</sup> (SWCLK) |
| `A8` | | `A13`<sup>5</sup> (SWDIO) |
| `A15` | | RESET<sup>6</sup> |
Notes:
1. On a Pro Micro VCC can be 3.3v or 5v.
2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on `D5` and a TX LED on `B0`.
3. `A4` is shared with the speaker.
4. `A5` is shared with the speaker.
5. `A13` and `A14` are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.

View File

@@ -8,10 +8,10 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes :id=qmk-keycodes
|Key |Aliases |Description |
|-----------------|---------|---------------------------------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held. Puts keyboard into bootloader mode if shift & control are held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |

View File

@@ -24,8 +24,10 @@ Hardware supported:
| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = gc9a01_spi` |
| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9163_spi` |
| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9341_spi` |
| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9488_spi` |
| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ssd1351_spi` |
| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = st7789_spi` |
| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = st7735_spi` |
## Quantum Painter Configuration :id=quantum-painter-config
@@ -654,6 +656,30 @@ The maximum number of displays can be configured by changing the following in yo
#define ILI9341_NUM_DEVICES 3
```
### ILI9488 :id=qp-driver-ili9488
Enabling support for the ILI9488 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = ili9488_spi
```
Creating a ILI9488 device in firmware can then be done with the following API:
```c
painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_ili9488_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define ILI9488_NUM_DEVICES 3
```
### SSD1351 :id=qp-driver-ssd1351
Enabling support for the SSD1351 in Quantum Painter is done by adding the following to `rules.mk`:
@@ -702,4 +728,30 @@ The maximum number of displays can be configured by changing the following in yo
#define ST7789_NUM_DEVICES 3
```
!> Some ST7789 devices are known to have different drawing offsets -- despite being a 240x320 pixel display controller internally, some display panels are only 240x240, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered.
!> Some ST7789 devices are known to have different drawing offsets -- despite being a 240x320 pixel display controller internally, some display panels are only 240x240, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered.
### ST7735 :id=qp-driver-st7735
Enabling support for the ST7735 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = st7735_spi
```
Creating a ST7735 device in firmware can then be done with the following API:
```c
painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_st7735_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define ST7735_NUM_DEVICES 3
```
!> Some ST7735 devices are known to have different drawing offsets -- despite being a 132x162 pixel display controller internally, some display panels are only 80x160, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered.

View File

@@ -108,7 +108,58 @@ Example:
}
```
### RGB Lighting
## Non-RGB LED Lighting
This section controls basic 2-pin LEDs, which typically pass through keyswitches and are soldered into the PCB, or are placed in PCB sockets.
### Backlight
* `breathing`
* Enable backlight breathing, if supported
* `breathing_period`
* The length of one backlight “breath” in seconds
* `levels`
* The number of brightness levels (maximum 31, excluding off)
* `pin`
* The pin that controls the backlight LED(s)
Example:
```json
{
"backlight": {
"breathing": true,
"breathing_period": 5,
"levels": 15,
"pin": "B7"
}
}
```
### LED Indicators
Used for indicating Num Lock, Caps Lock, and Scroll Lock. May be soldered in-switch or in a dedicated area.
* `num_lock`
* The pin that controls the `Num Lock` LED
* `caps_lock`
* The pin that controls the `Caps Lock` LED
* `scroll_lock`
* The pin that controls the `Scroll Lock` LED
Example:
```json
{
"indicators": {
"num_lock": "B6",
"caps_lock": "D2",
"scroll_lock": "A3"
}
}
```
## RGB Lighting
This section controls the legacy WS2812 support in QMK. This should not be confused with the RGB Matrix feature, which can be used to control both WS2812 and ISSI RGB LEDs.
@@ -152,7 +203,7 @@ Example:
}
```
#### RGBLight Animations
### RGBLight Animations
The following animations can be enabled:
@@ -187,3 +238,61 @@ Example:
```
The device version is a BCD (binary coded decimal) value, in the format `MMmr`, so the below value would look like `0x0100` in the generated code. This also means the maximum valid values for each part are `99.9.9`, despite it being a hexadecimal value under the hood.
### Encoders
This section controls the basic [rotary encoder](feature_encoders.md) support.
The following items can be set. Not every value is required.
* `pin_a`
* __Required__. A pad definition
* `pin_b`
* __Required__. B pad definition
* `resolution`
* How many pulses the encoder registers between each detent
Examples:
```json
{
"encoder": {
"rotary": [
{ "pin_a": "B5", "pin_b": "A2" }
]
}
}
```
```json
{
"encoder": {
"rotary": [
{ "pin_a": "B5", "pin_b": "A2", "resolution": 4 }
{ "pin_a": "B6", "pin_b": "A3", "resolution": 2 }
]
}
}
```
### Secure
The following options can be configured:
|Key |Description |
|------------------|---------------------------------------------------------------------------------|
|`unlock_sequence` | Timeout for the user to perform the configured unlock sequence - `0` to disable |
|`unlock_timeout` | Timeout while unlocked before returning to locked - `0` to disable |
|`idle_timeout` | Array of matrix locations describing a sequential sequence of keypresses |
Example:
```json
{
"secure": {
"unlock_sequence": [ [0,0], [0,1] ],
"unlock_timeout": 5000,
"idle_timeout": 60000
}
}
```

View File

@@ -1,129 +1,301 @@
# 'serial' Driver
This driver powers the [Split Keyboard](feature_split_keyboard.md) feature.
The serial driver powers the [Split Keyboard](feature_split_keyboard.md) feature. Several implementations are available, depending on the platform of your split keyboard. Note that none of the drivers support split keyboards with more then two halves.
| Driver | AVR | ARM | Connection between halves |
| --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- |
| [Bitbang](#bitbang) | :heavy_check_mark: | :heavy_check_mark: | Single wire communication. One wire is used for reception and transmission. |
| [USART Half-duplex](#usart-half-duplex) | | :heavy_check_mark: | Efficient single wire communication. One wire is used for reception and transmission. |
| [USART Full-duplex](#usart-full-duplex) | | :heavy_check_mark: | Efficient two wire communication. Two distinct wires are used for reception and transmission. |
?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards.
Drivers in this category have the following characteristics:
* bit bang and USART Half-duplex provide data and signaling over a single conductor
* USART Full-duplex provide data and signaling over two conductors
* They are all limited to single master and single slave communication scheme
<hr>
## Supported Driver Types
## Bitbang
| | AVR | ARM |
| ----------------- | ------------------ | ------------------ |
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
| USART Half-duplex | | :heavy_check_mark: |
| USART Full-duplex | | :heavy_check_mark: |
This is the Default driver, the absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use.
## Driver configuration
!> On ARM platforms the bitbang driver causes connection issues when using it together with the bitbang WS2812 driver. Choosing alternate drivers for both serial and WS2812 (instead of bitbang) is strongly recommended.
### Bitbang
Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk:
### Pin configuration
```
LEFT RIGHT
+-------+ SERIAL +-------+
| SSP |-----------------| SSP |
| | VDD | |
| |-----------------| |
| | GND | |
| |-----------------| |
+-------+ +-------+
```
One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A simple TRS or USB cable provides enough conductors for this driver to work.
### Setup
To use the bitbang driver follow these steps to activate it.
1. Change the `SERIAL_DRIVER` to `bitbang` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = bitbang
```
Configure the driver via your config.h:
2. Configure the GPIO pin of your keyboard via the `config.h` file:
```c
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: about 189kbps (Experimental only)
// 1: about 137kbps (default)
// 2: about 75kbps
// 3: about 39kbps
// 4: about 26kbps
// 5: about 20kbps
```
#### ARM
3. On ARM platforms you must turn on ChibiOS `PAL_USE_CALLBACKS` feature:
!> The bitbang driver causes connection issues with bitbang WS2812 driver
* In `halconf.h` add the line `#define PAL_USE_CALLBACKS TRUE`.
Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h.
<hr>
### USART Half-duplex
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. `SERIAL_PIN_TX` for this driver is the configured USART TX pin. As this Pin is configured in open-drain mode an **external pull-up resistor is needed to keep the line high** (resistor values of 1.5k to 8.2k are known to work). To configure it, add this to your rules.mk:
## USART Half-duplex
Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible.
### Pin configuration
```
LEFT RIGHT
+-------+ | | +-------+
| | R R | |
| | | SERIAL | | |
| TX |-----------------| TX |
| | VDD | |
| |-----------------| |
| | GND | |
| |-----------------| |
+-------+ +-------+
```
Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Take care that the pin you chose can act as the TX pin of the USART peripheral. A simple TRS or USB cable provides enough conductors for this driver to work. As the split connection is configured to work in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work.
### Setup
To use the Half-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1.
1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = usart
```
Configure the hardware via your config.h:
2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = vendor
```
3. Configure the hardware of your keyboard via the `config.h` file:
```c
#define SOFT_SERIAL_PIN B6 // USART TX pin
//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: about 460800 baud
// 1: about 230400 baud (default)
// 2: about 115200 baud
// 3: about 57600 baud
// 4: about 38400 baud
// 5: about 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
#define SERIAL_USART_TX_PIN B6 // The GPIO pin that is used split communication.
```
You must also enable the ChibiOS `SERIAL` feature:
* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
For STM32 MCUs several GPIO configuration options can be changed as well. See the section ["Alternate Functions for selected STM32 MCUs"](alternate-functions-for-selected-stm32-mcus).
Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
```c
#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
```
### USART Full-duplex
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver. Due to its internal design it is more efficent, which can result in even faster transmission speeds.
1. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
#### Pin configuration
<hr>
`SERIAL_USART_TX_PIN` is the USART `TX` pin, `SERIAL_USART_RX_PIN` is the USART `RX` pin. No external pull-up resistors are needed as the `TX` pin operates in push-pull mode. To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refeer to the corresponding datasheets of your MCU or find those settings in the table below.
## USART Full-duplex
#### Connecting the halves and Pin Swap
Please note that `TX` of the master half has to be connected with the `RX` pin of the slave half and `RX` of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the pcb. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU, this feature can be enabled using `#define SERIAL_USART_PIN_SWAP` in your config.h.
Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible. Due to its internal design it is slightly more efficient then the Half-duplex driver, but it should be primarily chosen if Half-duplex operation is not supported by the USART peripheral.
#### Setup
To use the driver, add this to your rules.mk:
### Pin configuration
```
LEFT RIGHT
+-------+ +-------+
| | SERIAL | |
| TX |-----------------| RX |
| | SERIAL | |
| RX |-----------------| TX |
| | VDD | |
| |-----------------| |
| | GND | |
| |-----------------| |
+-------+ +-------+
```
Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the `TX` pin and refereed to as the `SERIAL_USART_TX_PIN`, the pin receiving data is the `RX` pin and refereed to as the `SERIAL_USART_RX_PIN` in this configuration. Please note that `TX` pin of the master half has to be connected with the `RX` pin of the slave half and the `RX` pin of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A simple TRRS or USB cable provides enough conductors for this driver to work.
To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refer to the corresponding datasheets of your MCU or find those settings in the section ["Alternate Functions for selected STM32 MCUs"](#alternate-functions-for-selected-stm32-mcus).
### Setup
To use the Full-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1.
1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = usart
```
Next configure the hardware via your config.h:
2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = vendor
```
3. Configure the hardware of your keyboard via the `config.h` file:
```c
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
//#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
// Check if this feature is necessary with your keyboard design and available on the mcu.
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: 460800 baud
// 1: 230400 baud (default)
// 2: 115200 baud
// 3: 57600 baud
// 4: 38400 baud
// 5: 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1
```
For STM32 MCUs several GPIO configuration options, including the ability for `TX` to `RX` pin swapping, can be changed as well. See the section ["Alternate Functions for selected STM32 MCUs"](alternate-functions-for-selected-stm32-mcus).
```c
#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. (Only available on some MCUs)
#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
```
1. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
<hr>
## Choosing a driver subsystem
### The `SERIAL` driver
The `SERIAL` Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it:
1. In your keyboards `halconf.h` add:
```c
#define HAL_USE_SERIAL TRUE
```
2. In your keyboards `mcuconf.h`: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
Just below `#include_next <mcuconf.h>` add:
```c
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USARTn
#define STM32_SERIAL_USE_USARTn TRUE
```
Where 'n' matches the peripheral number of your selected USART on the MCU.
3. In you keyboards `config.h`: override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`.
```c
#define SERIAL_USART_DRIVER SD3
```
### The `SIO` driver
The `SIO` Subsystem was added to ChibiOS with the 21.11 release and is only supported on selected MCUs. It should only be chosen when the `SERIAL` subsystem is not supported by your MCU.
Follow these steps in order to activate it:
1. In your keyboards `halconf.h` add:
```c
#define HAL_USE_SIO TRUE
```
2. In your keyboards `mcuconf.h:` activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
Just below `#include_next <mcuconf.h>` add:
```c
#include_next <mcuconf.h>
#undef STM32_SIO_USE_USARTn
#define STM32_SIO_USE_USARTn TRUE
```
Where 'n' matches the peripheral number of your selected USART on the MCU.
3. In you keyboards `config.h`: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`.
```c
#define SERIAL_USART_DRIVER SIOD3
```
### The `PIO` driver
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of the PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation is fully supported. The Half-duplex operation mode uses the built-in pull-ups and GPIO manipulation on the RP2040 to drive the line high by default. An external pull-up is therefore not necessary.
Configure the hardware via your config.h:
```c
#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral
```
The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.
<hr>
## Advanced Configuration
There are several advanced configuration options that can be defined in your keyboards `config.h` file:
### Baudrate
If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
```c
#define SELECT_SOFT_SERIAL_SPEED {#}
```
| Speed | Bitbang | Half-duplex and Full-duplex |
| ----- | -------------------------- | --------------------------- |
| `0` | 189000 baud (experimental) | 460800 baud |
| `1` | 137000 baud (default) | 230400 baud (default) |
| `2` | 75000 baud | 115200 baud |
| `3` | 39000 baud | 57600 baud |
| `4` | 26000 baud | 38400 baud |
| `5` | 20000 baud | 19200 baud |
Alternatively you can specify the baudrate directly by defining `SERIAL_USART_SPEED`.
### Timeout
This is the default time window in milliseconds in which a successful communication has to complete. Usually you don't want to change this value. But you can do so anyways by defining an alternate one in your keyboards `config.h` file:
```c
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
```
You must also enable the ChibiOS `SERIAL` feature:
* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
<hr>
Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
## Troubleshooting
#### Pins for USART Peripherals with Alternate Functions for selected STM32 MCUs
If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file:
##### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
```c
#define SERIAL_DEBUG
```
?> The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
## Alternate Functions for selected STM32 MCUs
Pins for USART Peripherals with
### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
Pin Swap available: :heavy_check_mark:
| Pin | Function | Mode |
| Pin | Function | Mode |
| ---------- | -------- | ---- |
| **USART1** | | |
| PA9 | TX | AF7 |
@@ -151,11 +323,11 @@ Pin Swap available: :heavy_check_mark:
| PD8 | TX | AF7 |
| PD9 | RX | AF7 |
##### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf)
### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf)
Pin Swap available: :heavy_check_mark:
| Pin | Function | Mode |
| Pin | Function | Mode |
| ------ | -------- | ---- |
| USART1 | | |
| PA9 | TX | AF1 |
@@ -180,7 +352,7 @@ Pin Swap available: :heavy_check_mark:
| PA0 | TX | AF4 |
| PA1 | RX | AF4 |
##### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
Pin Swap available: N/A
@@ -190,7 +362,7 @@ Pin remapping:
The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked **bold**. Add the appropriate defines to your config.h file.
| Pin | Function | Mode | USART_REMAP |
| Pin | Function | Mode | USART_REMAP |
| ---------- | -------- | ---- | ------------------- |
| **USART1** | | | |
| **PA9** | TX | AFPP | |

View File

@@ -188,7 +188,10 @@ If you've done all of this, and your firmware is still too large, then it's time
That said, there are a number of Pro Micro replacements with ARM controllers:
* [Proton C](https://qmk.fm/proton-c/) (out of stock)
* [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA)
* [Raspberry Pi 2040](https://www.sparkfun.com/products/18288) (not currently supported, no ETA)
* [STeMCell](https://github.com/megamind4089/STeMCell) (Open Source, DIY/PCBA)
* [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040)
* [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288)
* [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622)
There are other, non-Pro Micro compatible boards out there. The most popular being:
* [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD)

View File

@@ -155,7 +155,6 @@ The `process_record()` function itself is deceptively simple, but hidden within
* [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
* [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
* `bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`
* [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing.

View File

@@ -11,11 +11,12 @@ These LEDs are called "addressable" because instead of using a wire per color, e
## Supported Driver Types
| | AVR | ARM |
|----------|--------------------|--------------------|
| -------- | ------------------ | ------------------ |
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
| I2C | :heavy_check_mark: | |
| SPI | | :heavy_check_mark: |
| PWM | | :heavy_check_mark: |
| PIO | | :heavy_check_mark: |
## Driver configuration
@@ -33,11 +34,11 @@ The default setting is 280 µs, which should work for most cases, but this can b
Some variants of the WS2812 may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB.
In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
|Byte order |Known devices |
|---------------------------------|-----------------------------|
|`WS2812_BYTE_ORDER_GRB` (default)|Most WS2812's, SK6812, SK6805|
|`WS2812_BYTE_ORDER_RGB` |WS2812B-2020 |
|`WS2812_BYTE_ORDER_BGR` |TM1812 |
| Byte order | Known devices |
| --------------------------------- | ----------------------------- |
| `WS2812_BYTE_ORDER_GRB` (default) | Most WS2812's, SK6812, SK6805 |
| `WS2812_BYTE_ORDER_RGB` | WS2812B-2020 |
| `WS2812_BYTE_ORDER_BGR` | TM1812 |
### Bitbang
@@ -54,13 +55,13 @@ WS2812_DRIVER = bitbang
The WS2812 LED communication topology depends on a serialized timed window. Different versions of the addressable LEDs have differing requirements for the timing parameters, for instance, of the SK6812.
You can tune these parameters through the definition of the following macros:
| Macro |Default | AVR | ARM |
|---------------------|--------------------------------------------|--------------------|--------------------|
|`WS2812_TIMING` |`1250` | :heavy_check_mark: | :heavy_check_mark: |
|`WS2812_T0H` |`350` | :heavy_check_mark: | :heavy_check_mark: |
|`WS2812_T0L` |`WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: |
|`WS2812_T1H` |`900` | :heavy_check_mark: | :heavy_check_mark: |
|`WS2812_T1L` |`WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: |
| Macro | Default | AVR | ARM |
| --------------- | ---------------------------- | ------------------ | ------------------ |
| `WS2812_TIMING` | `1250` | :heavy_check_mark: | :heavy_check_mark: |
| `WS2812_T0H` | `350` | :heavy_check_mark: | :heavy_check_mark: |
| `WS2812_T0L` | `WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: |
| `WS2812_T1H` | `900` | :heavy_check_mark: | :heavy_check_mark: |
| `WS2812_T1L` | `WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: |
### I2C
Targeting boards where WS2812 support is offloaded to a 2nd MCU. Currently the driver is limited to AVR given the known consumers are ps2avrGB/BMC. To configure it, add this to your rules.mk:
@@ -107,16 +108,16 @@ To adjust the baudrate at which the SPI peripheral is configured, users will nee
Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware.
|Define |Default|Description |
|--------------------|-------|-------------------------------------|
|`WS2812_SPI_DIVISOR`|`16` |SPI source clock peripheral divisor |
| Define | Default | Description |
| -------------------- | ------- | ----------------------------------- |
| `WS2812_SPI_DIVISOR` | `16` | SPI source clock peripheral divisor |
#### Testing Notes
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
| | SPI1 | SPI2 | SPI3 |
|------|---------------------------------------------|-----------------------------------------|-----------------------|
| ---- | ------------------------------------------- | --------------------------------------- | --------------------- |
| f072 | ? | B15 :heavy_check_mark: (needs SCK: B13) | N/A |
| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A |
| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: |
@@ -150,15 +151,32 @@ You must also turn on the PWM feature in your halconf.h and mcuconf.h
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
| | Status |
|-|-|
| f072 | ? |
| f103 | :heavy_check_mark: |
| f303 | :heavy_check_mark: |
| | Status |
| --------- | ------------------ |
| f072 | ? |
| f103 | :heavy_check_mark: |
| f303 | :heavy_check_mark: |
| f401/f411 | :heavy_check_mark: |
*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.*
### PIO
Targeting Raspberry Pi RP2040 boards only where WS2812 support is offloaded to an dedicated PIO implementation. This offloads processing of the WS2812 protocol from the MCU to a dedicated PIO program using DMA transfers.
To configure it, add this to your rules.mk:
```make
WS2812_DRIVER = vendor
```
Configure the hardware via your config.h:
```c
#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
```
The WS2812 PIO programm uses 1 state machine, 4 instructions and does not use any interrupt handlers.
### Push Pull and Open Drain Configuration
The default configuration is a push pull on the defined pin.
This can be configured for bitbang, PWM and SPI.

View File

@@ -91,7 +91,6 @@
* [换手](zh-cn/feature_swap_hands.md)
* [一键多用](zh-cn/feature_tap_dance.md)
* [点按配置](zh-cn/tap_hold.md)
* [终端](zh-cn/feature_terminal.md)
* [Unicode](zh-cn/feature_unicode.md)
* [用户空间](zh-cn/feature_userspace.md)
* [WPM计算](zh-cn/feature_wpm.md)

View File

@@ -240,7 +240,7 @@ void suspend_wakeup_init_user(void) {
```c
layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) {
switch (get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb (0x00, 0x00, 0xFF);
break;
@@ -267,7 +267,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
### `layer_state_set_*` 函数文档
* 键盘/各子版本:`uint32_t layer_state_set_kb(uint32_t state)`
* 键盘/各子版本:`layer_state_t layer_state_set_kb(layer_state_t state)`
* 布局: `layer_state_t layer_state_set_user(layer_state_t state)`
@@ -325,7 +325,7 @@ void keyboard_post_init_user(void) {
```c
layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) {
switch (get_highest_layer(state)) {
case _RAISE:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
break;
@@ -474,4 +474,3 @@ cancel_deferred_exec(my_token);
```c
#define MAX_DEFERRED_EXECUTORS 16
```

View File

@@ -54,6 +54,11 @@
# define EXTERNAL_EEPROM_PAGE_SIZE 32
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_24LC32A)
# define EXTERNAL_EEPROM_BYTE_COUNT 4096
# define EXTERNAL_EEPROM_PAGE_SIZE 32
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_MB85RC256V)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 128

View File

@@ -58,14 +58,20 @@ static bool spi_eeprom_start(void) {
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
uint32_t deadline = timer_read32() + timeout;
spi_status_t response;
do {
spi_status_t response = SR_WIP;
while (response & SR_WIP) {
if (!spi_eeprom_start()) {
return SPI_STATUS_ERROR;
}
spi_write(CMD_RDSR);
response = spi_read();
spi_stop();
if (timer_read32() >= deadline) {
return SPI_STATUS_TIMEOUT;
}
} while (response & SR_WIP);
}
return SPI_STATUS_SUCCESS;
}
@@ -105,27 +111,21 @@ void eeprom_driver_erase(void) {
void eeprom_read_block(void *buf, const void *addr, size_t len) {
//-------------------------------------------------
// Wait for the write-in-progress bit to be cleared
bool res = spi_eeprom_start();
if (!res) {
dprint("failed to start SPI for WIP check\n");
memset(buf, 0, len);
return;
}
spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
spi_stop();
if (response == SPI_STATUS_TIMEOUT) {
dprint("SPI timeout for WIP check\n");
if (response != SPI_STATUS_SUCCESS) {
spi_stop();
memset(buf, 0, len);
dprint("SPI timeout for WIP check\n");
return;
}
//-------------------------------------------------
// Perform read
res = spi_eeprom_start();
bool res = spi_eeprom_start();
if (!res) {
dprint("failed to start SPI for read\n");
spi_stop();
memset(buf, 0, len);
dprint("failed to start SPI for read\n");
return;
}
@@ -158,15 +158,9 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
//-------------------------------------------------
// Wait for the write-in-progress bit to be cleared
res = spi_eeprom_start();
if (!res) {
dprint("failed to start SPI for WIP check\n");
return;
}
spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
spi_stop();
if (response == SPI_STATUS_TIMEOUT) {
if (response != SPI_STATUS_SUCCESS) {
spi_stop();
dprint("SPI timeout for WIP check\n");
return;
}
@@ -175,6 +169,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
// Enable writes
res = spi_eeprom_start();
if (!res) {
spi_stop();
dprint("failed to start SPI for write-enable\n");
return;
}
@@ -186,6 +181,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
// Perform the write
res = spi_eeprom_start();
if (!res) {
spi_stop();
dprint("failed to start SPI for write\n");
return;
}

View File

@@ -0,0 +1,23 @@
// Copyright 2022 Nick Brassel (@tzarc)
// SPDX-License-Identifier: GPL-2.0-or-later
#include <stdint.h>
#include <string.h>
#include "eeprom_driver.h"
#include "wear_leveling.h"
void eeprom_driver_init(void) {
wear_leveling_init();
}
void eeprom_driver_erase(void) {
wear_leveling_erase();
}
void eeprom_read_block(void *buf, const void *addr, size_t len) {
wear_leveling_read((uint32_t)addr, buf, len);
}
void eeprom_write_block(const void *buf, void *addr, size_t len) {
wear_leveling_write((uint32_t)addr, buf, len);
}

View File

@@ -207,7 +207,7 @@ flash_status_t flash_erase_sector(uint32_t addr) {
/* Check that the address exceeds the limit. */
if ((addr + (EXTERNAL_FLASH_SECTOR_SIZE)) >= (EXTERNAL_FLASH_SIZE) || ((addr % (EXTERNAL_FLASH_SECTOR_SIZE)) != 0)) {
dprintf("Flash erase sector address over limit! [addr:0x%x]\n", (uint32_t)addr);
dprintf("Flash erase sector address over limit! [addr:0x%lx]\n", (uint32_t)addr);
return FLASH_STATUS_ERROR;
}
@@ -247,7 +247,7 @@ flash_status_t flash_erase_block(uint32_t addr) {
/* Check that the address exceeds the limit. */
if ((addr + (EXTERNAL_FLASH_BLOCK_SIZE)) >= (EXTERNAL_FLASH_SIZE) || ((addr % (EXTERNAL_FLASH_BLOCK_SIZE)) != 0)) {
dprintf("Flash erase block address over limit! [addr:0x%x]\n", (uint32_t)addr);
dprintf("Flash erase block address over limit! [addr:0x%lx]\n", (uint32_t)addr);
return FLASH_STATUS_ERROR;
}
@@ -303,7 +303,7 @@ flash_status_t flash_read_block(uint32_t addr, void *buf, size_t len) {
}
#if defined(CONSOLE_ENABLE) && defined(DEBUG_FLASH_SPI_OUTPUT)
dprintf("[SPI FLASH R] 0x%08lX: ", addr);
dprintf("[SPI FLASH R] 0x%08lx: ", addr);
for (size_t i = 0; i < len; ++i) {
dprintf(" %02X", (int)(((uint8_t *)read_buf)[i]));
}
@@ -339,7 +339,7 @@ flash_status_t flash_write_block(uint32_t addr, const void *buf, size_t len) {
}
#if defined(CONSOLE_ENABLE) && defined(DEBUG_FLASH_SPI_OUTPUT)
dprintf("[SPI FLASH W] 0x%08lX: ", addr);
dprintf("[SPI FLASH W] 0x%08lx: ", addr);
for (size_t i = 0; i < write_length; i++) {
dprintf(" %02X", (int)(uint8_t)(write_buf[i]));
}

Some files were not shown because too many files have changed in this diff Show More