Compare commits

..

270 Commits

Author SHA1 Message Date
Nick Brassel
5b3508b9b5 Replace preprocessor guards for ENCODER_MAP_ENABLE with !ENCODER_CALLBACKS_ENABLE. 2025-06-03 10:06:52 +10:00
Nick Brassel
b2b6afffcb Remove any instances of rules.mk which only enabled encoder map.
- Command executed:
  find keyboards -name rules.mk | while read f ; do if [ "$(cat $f | grep -v ENCODER_MAP_ENABLE | sed -e 's@#.*@@g')" = "" ]; then echo $f ; fi; done | while read f ; do git rm -rf $f ; done
2025-06-03 10:01:45 +10:00
Nick Brassel
75adcf4da9 Invert logic for encoder map, enabling by default.
- Removes `ENCODER_MAP_ENABLE=yes` as it's now the default behaviour.
- Adds `ENCODER_CALLBACKS_ENABLE=yes` to restore historical behaviour.
- Docs updated to reflect the new logic.
2025-06-03 09:59:22 +10:00
QMK Bot
820202cd53 Merge remote-tracking branch 'origin/master' into develop 2025-05-28 06:06:21 +00:00
Joel Challis
faf77f1651 Fix typo in Battery Driver docs (#25312)
* Fix typo in Battery Driver docs

* Update battery.md
2025-05-28 16:05:44 +10:00
QMK Bot
4c773971a7 Merge remote-tracking branch 'origin/master' into develop 2025-05-28 00:47:37 +00:00
Idkau
2b8aeed02b Fix Sofle OLED layer indication code (#25311)
Fixed oled raise/lower layer order and added adjust layer text to oled display
2025-05-27 18:47:00 -06:00
QMK Bot
9e8e9af485 Merge remote-tracking branch 'origin/master' into develop 2025-05-27 22:24:59 +00:00
Sergey Radionov
9e2d8999bf Fix reference to wrong layer when LM used with right modifiers (#25303) 2025-05-27 23:24:20 +01:00
QMK Bot
4f60946513 Merge remote-tracking branch 'origin/master' into develop 2025-05-27 17:08:00 +00:00
dependabot[bot]
c8a39b69a0 Bump vite from 5.4.18 to 5.4.19 in /builddefs/docsgen (#25306)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.18 to 5.4.19.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.19/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.19
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 18:07:22 +01:00
QMK Bot
ac9318c78f Merge remote-tracking branch 'origin/master' into develop 2025-05-27 13:23:36 +00:00
Dasky
41b1bb4aef Fix dynamic keymap macro only sending first. (#25309) 2025-05-27 14:22:55 +01:00
Nick Brassel
76cf8dff93 Branch point for 2025-05-25 Breaking Change 2025-05-26 21:43:45 +10:00
Nick Brassel
75a037d2f0 Merge remote-tracking branch 'upstream/develop' 2025-05-26 21:41:49 +10:00
Joel Challis
3703699757 2025 Q2 changelog (#25297)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-05-26 21:04:52 +10:00
Joel Challis
c97a798af7 Configure boards to use development_board - T (#25294) 2025-05-24 21:20:16 +01:00
Joel Challis
dd871d0105 Configure boards to use development_board - S (#25293) 2025-05-24 21:19:52 +01:00
Joel Challis
ba5c707327 salicylic_acid3/getta25 - Fix oled keymap (#25295) 2025-05-24 19:04:01 +01:00
Joel Challis
8b7c351e56 [Docs] Fix tap_hold code blocks (#25298) 2025-05-24 19:00:22 +01:00
Joel Challis
196285c59c Configure boards to use development_board - UVWXYZ (#25288) 2025-05-23 01:27:00 +01:00
Stefan Kerkmann
f3b974f216 [Fix] lib8tion: enable fixed scale8 and blend functions (#25272)
lib8tion: enable fixed scale8 and blend functions

These FastLED derived lib8tion functions have been fixed and enabled by
default in FastLED. QMK just never set these defines, there is no reason
to keep the buggy implementation. It is assumed that nobody relied on
the buggy behavior.
2025-05-22 22:52:45 +01:00
Joel Challis
243c21568a Configure boards to use development_board - 0-9 (#25287) 2025-05-22 20:49:22 +01:00
Pablo Martínez
955809bd5a Add compiler_support.h (#25274) 2025-05-22 23:31:15 +10:00
Nick Brassel
fa24b0fcce Remove outdated nix support due to bit-rot. (#25280) 2025-05-21 07:17:58 +10:00
Stefan Kerkmann
4f0a0f32f2 [Chore] use {rgblight,rgb_matrix}_hsv_to_rgb overrides (#25271) 2025-05-20 19:23:20 +01:00
ivan
24895c46f3 Move rookiebwoy to ivndbt (#25142) 2025-05-19 22:15:19 +01:00
QMK Bot
190e0eff23 Merge remote-tracking branch 'origin/master' into develop 2025-05-19 20:53:40 +00:00
ClownFish
28720c4d34 add doio/kb03 (#24815)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2025-05-19 13:53:02 -07:00
Nick Brassel
919e2a4f5c Use relative paths for schemas, instead of $id. Enables VScode validation. (#25251) 2025-05-19 22:10:39 +10:00
Stefan Kerkmann
f686ad9e63 [Core] STM32G0x1 support (#24301) 2025-05-19 15:51:28 +10:00
Nick Brassel
a4ef1ae736 gcc15 AVR compilation fixes (#25238) 2025-05-19 09:22:31 +10:00
Florent Linguenheld
81355045cc Chew folders (#24785) 2025-05-18 18:53:00 +01:00
QMK Bot
bcd06f03a5 Merge remote-tracking branch 'origin/master' into develop 2025-05-18 15:43:21 +00:00
Joel Challis
02517bd806 Update PR checklist notes on custom matrix (#25240) 2025-05-18 16:42:43 +01:00
QMK Bot
6b25bfb0ff Merge remote-tracking branch 'origin/master' into develop 2025-05-18 15:29:20 +00:00
Joel Challis
0f948fe039 Add Waveshare RP2040-Keyboard-3 support (#25269) 2025-05-18 16:28:42 +01:00
QMK Bot
fffa553c25 Merge remote-tracking branch 'origin/master' into develop 2025-05-18 03:29:00 +00:00
Infos
e73b3c08a0 Add Zeropad (#24737)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2025-05-17 20:28:24 -07:00
Joel Challis
fa35be5135 Resolve miscellaneous keyboard lint warnings (#25268) 2025-05-16 17:35:17 +01:00
Joel Challis
0b6a460b7f Remove duplicate of SPI default config from keyboards (#25266) 2025-05-16 17:35:05 +01:00
QMK Bot
15e45b1d4b Merge remote-tracking branch 'origin/master' into develop 2025-05-16 16:09:52 +00:00
Danny
40d0de39b7 Add BDN9 Rev. 3 (#25261) 2025-05-16 12:08:51 -04:00
Joel Challis
05ff5443b1 Deprecate usb.force_nkro/FORCE_NKRO (#25262) 2025-05-14 22:02:43 +10:00
QMK Bot
e553cf7214 Merge remote-tracking branch 'origin/master' into develop 2025-05-14 12:01:11 +00:00
Joel Challis
cd95294a25 Remove more USB only branches from NKRO handling (#25263) 2025-05-14 22:01:08 +10:00
Joel Challis
8c108efb0d dlip/haritev2 - Post merge fixes (#25264) 2025-05-14 22:00:33 +10:00
QMK Bot
b4f0314b35 Merge remote-tracking branch 'origin/master' into develop 2025-05-14 10:13:34 +00:00
Dane Lipscombe
59c3612590 Add Harite v2 keyboard (#24975) 2025-05-14 11:12:59 +01:00
QMK Bot
55e4a1c7dc Merge remote-tracking branch 'origin/master' into develop 2025-05-14 03:23:53 +00:00
Wasteland Fluttershy
e0b037c2cd Fixes the numlock indicator for Magic Force MF17 numpad (#25260) 2025-05-13 20:23:16 -07:00
Matti Hiljanen
070dea4a9c Fix OS_DETECTION_KEYBOARD_RESET (#25015)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-05-12 12:15:40 +10:00
Pascal Getreuer
f4171412a6 Enable community modules to define LED matrix and RGB matrix effects. (#25187)
Co-authored-by: Joel Challis <git@zvecr.com>
2025-05-12 09:30:19 +10:00
art-was-here
7f42a5bc03 [New Feature/Core] New RGB Matrix Animation "Starlight Smooth" (#25203) 2025-05-12 08:50:36 +10:00
Joel Challis
3e7ce54902 Fix Wear Leveling compilation (#25254) 2025-05-12 08:39:38 +10:00
Joel Challis
88c094908b Add raw_hid support to host driver (#25255) 2025-05-12 08:38:48 +10:00
QMK Bot
c045c3e00c Merge remote-tracking branch 'origin/master' into develop 2025-05-11 05:58:16 +00:00
cyxae
6b1a376aee [Keyboard] Add Jason Hazel’s Bad Wings v2 (#25252)
Co-authored-by: Florent Allard <florent.allard@savoirfairelinux.com>
2025-05-10 22:57:40 -07:00
HorrorTroll
02525f683e Allow LVGL onekey keymap to be able compile for other board (#25005) 2025-05-10 19:26:50 +01:00
Drashna Jaelre
5a57d2115b [Docs] Fix typos introduced by PR #25050 (#25250)
It isn't a drashna PR if there aren't some typos in it somewhere.
2025-05-09 07:18:30 +10:00
Joel Challis
660d248549 Add debounce to duplicated defaults check (#25246) 2025-05-08 01:12:58 +01:00
QMK Bot
1bc3494494 Merge remote-tracking branch 'origin/master' into develop 2025-05-07 17:38:45 +00:00
muge
33a12ca0b6 CXT Studio 12E3: Fix encoder resolutions not applying (#25242)
* add resolution to encoders so they apply

* Tweak default keymap

* replace KC_UNDO with C(KC_Z) as well
2025-05-07 11:38:10 -06:00
QMK Bot
084ed078d6 Merge remote-tracking branch 'origin/master' into develop 2025-05-07 14:42:14 +00:00
Nathan Cain
32204095e5 Docs update for installing qmk with uv (#24995) 2025-05-07 15:41:37 +01:00
QMK Bot
b76bf29d25 Merge remote-tracking branch 'origin/master' into develop 2025-05-07 14:39:04 +00:00
VeyPatch
396fb4dde7 Fix Aurora sweep default keymap configuration (#25148) 2025-05-07 15:38:29 +01:00
QMK Bot
4836fcf831 Merge remote-tracking branch 'origin/master' into develop 2025-05-07 07:09:37 +00:00
dabstractor
1becbaefbe Fixed print statement after enabling 32-bit layers (#25027) 2025-05-07 00:09:01 -07:00
QMK Bot
e3c613c79c Merge remote-tracking branch 'origin/master' into develop 2025-05-06 06:23:47 +00:00
Duncan Sutherland
04fbcdc68d Layout corrections: Zed60 (#25003) 2025-05-05 23:23:10 -07:00
Drashna Jaelre
55909141ef [Keyboard] Update Tractyl Manuform and add F405 (weact) variant (#24764) 2025-05-05 23:19:38 -07:00
QMK Bot
cd6e065f6e Merge remote-tracking branch 'origin/master' into develop 2025-05-06 06:04:11 +00:00
Silvino R.
bb2b7ce7e4 [Keyboard] Add Binepad KnobX1 (#25222)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-05-05 23:03:30 -07:00
QMK Bot
2fbc222bb0 Merge remote-tracking branch 'origin/master' into develop 2025-05-06 05:56:06 +00:00
yiancar
a1469abc8d Keycult 60 (#25213)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <jack@pngu.org>
2025-05-05 22:55:31 -07:00
Joel Challis
ab1332bb6c Remove force disable of NKRO when Bluetooth enabled (#25201) 2025-05-06 06:47:44 +01:00
Nick Brassel
ac991405d0 Deprecate qmk generate-compilation-database. (#25237) 2025-05-06 09:52:41 +10:00
Joel Challis
842c840145 Bind Bluetooth driver to host_driver_t (#25199) 2025-05-05 04:05:04 +01:00
Joel Challis
614b631ee2 Ensure qmk_userspace_paths maintains detected order (#25204) 2025-05-05 03:43:14 +01:00
Joel Challis
5611a40064 Add battery changed callbacks (#25207) 2025-05-05 03:28:33 +01:00
QMK Bot
11c8b2841e Merge remote-tracking branch 'origin/master' into develop 2025-05-05 01:46:48 +00:00
Silvino R.
0c0d038a40 [Keyboard] Add Binepad KN01 (#25224)
* Add Binepad NeoKnob KN01

* post @waffle87 recommendations
2025-05-04 19:46:11 -06:00
Joel Challis
5f31d5cc80 Resolve alias for qmk new-keymap keyboard prompts (#25210) 2025-05-05 11:14:40 +10:00
Joel Challis
dbe30a1b6f Generate versions to keycode headers (#25219) 2025-05-05 10:44:08 +10:00
QMK Bot
a992e32bd5 Merge remote-tracking branch 'origin/master' into develop 2025-05-05 00:23:26 +00:00
Joel Challis
cf5ce64b1b Workaround for resolving keyboard alias for config file values (#25228) 2025-05-05 10:22:51 +10:00
Drashna Jaelre
12caf0be4e Add additional hooks for Community modules (#25050) 2025-05-05 10:21:47 +10:00
Nick Brassel
bb9dd05c6a [Bug] Minimise force-included files (#25194) 2025-05-05 10:07:53 +10:00
QMK Bot
59f607b963 Merge remote-tracking branch 'origin/master' into develop 2025-05-02 01:53:11 +00:00
Christopher Hoage
60ac859852 Fix Spleeb compile when pointing device is enabled (#25016) 2025-05-01 18:52:36 -07:00
Joel Challis
4fb3cf0712 Remove redundant keyboard headers (#25208) 2025-05-01 15:02:17 +01:00
QMK Bot
e98c41c02f Merge remote-tracking branch 'origin/master' into develop 2025-04-30 18:09:14 +00:00
takashicompany
45091b0473 [Keyboard] Add Gravity-45(#25206)
* add gravity-45

* readme.md

* fix readme

* Update keyboards/green_keys/gravity_45/keyboard.json

Co-authored-by: jack <0x6a73@protonmail.com>

* run qmk format-json -i keyboards/green_keys/gravity_45/keyboard.json

* add url

* Update keyboards/green_keys/gravity_45/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboard.json

* Update keyboard.json

* Update keyboards/green_keys/gravity_45/keyboard.json

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

---------

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-30 12:08:37 -06:00
Joel Challis
3cf328c644 amptrics/0422 - Prevent OOB in update_leds_for_layer (#25209) 2025-04-28 14:37:50 -07:00
Pascal Getreuer
c26449e64f [Core] Enhance Flow Tap to work better for rolls over multiple tap-hold keys. (#25200)
* Flow Tap revision for rolling press.

* Remove debugging cruft.

* Formatting fix.
2025-04-28 09:52:20 +02:00
zvecr
7fa65aa877 Merge remote-tracking branch 'origin/master' into develop 2025-04-28 07:24:00 +01:00
vchowl
4e2191ce20 Amptrics 0420 keyboard addition (#24744)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-04-27 23:08:13 -07:00
josephawilliamsiv
3de04e0386 Add Umbra keyboard (#24569)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-27 23:02:30 -07:00
Cipulot
2e648d7e48 Addition of OK-1 (#24646)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-27 22:55:51 -07:00
hen-des
1fd0139b91 Added new keyboard epssp75 (#24756)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-27 22:28:22 -07:00
mizma
3478ae5795 [Keyboard] mzmkb/slimdash/rev1 (#24804)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-04-27 22:26:47 -07:00
VeyPatch
01354fffb4 [Keyboard] Add splitkb.com's Halcyon Elora rev2 (#24790)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-27 22:25:09 -07:00
Jeremy Cook
92c4f0095d Add jcpm2 (JC Pro Macro 2) (#24816)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2025-04-27 21:03:50 -07:00
LucasMateijsen
ac8b914a11 Add handwired 4x14 LuMaWing keyboard (#24885) 2025-04-27 20:58:47 -07:00
Matheus Marques
de598ac8f0 [Keymap] Sofle RGB - fixed stuck on numpad layer and layout comments (#24942) 2025-04-27 11:42:11 -07:00
QMK Bot
142952cac8 Merge remote-tracking branch 'origin/master' into develop 2025-04-27 18:19:53 +00:00
takashicompany
a07360e0f1 Add new keyboard MirageiX (#25054)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2025-04-27 11:19:19 -07:00
QMK Bot
1fc7066713 Merge remote-tracking branch 'origin/master' into develop 2025-04-26 00:40:58 +00:00
Michał Kopeć
ca425971d5 keyboards/annepro2/ld: Add per-variant linker scripts (#24999)
C18 has an MCU with 16K SRAM, up from C15's 8K.

Split the linker script into C15 and C18 variants to make use of the
larger RAM capacity of C18.
2025-04-26 01:40:17 +01:00
QMK Bot
dffa59dca5 Merge remote-tracking branch 'origin/master' into develop 2025-04-26 00:32:07 +00:00
Aidan Gauland
3319474c5c Add Lemokey X0 keyboard (#24994) 2025-04-26 01:31:25 +01:00
QMK Bot
802e2f54c6 Merge remote-tracking branch 'origin/master' into develop 2025-04-26 00:29:24 +00:00
Álvaro A. Volpato
12d70ab1a4 First TypeK support (#22876) 2025-04-26 01:28:49 +01:00
Joel Beckmeyer
4ae24004b7 modelh: add prerequisites for via support (#24932) 2025-04-24 13:04:30 -07:00
Joel Challis
8244659b44 Extend lint checks to reject duplication of defaults (#25149) 2025-04-24 05:39:56 +01:00
Joel Challis
0bd02952ea Remove "command":false from keyboards (#25193) 2025-04-24 10:28:13 +10:00
jack
5ea7283159 Fix boardsource/beiwagon RGB Matrix coordinates (#25018) 2025-04-23 04:06:17 +01:00
QMK Bot
acedfc3fcb Merge remote-tracking branch 'origin/master' into develop 2025-04-23 02:26:26 +00:00
dependabot[bot]
e5466df800 Bump vite from 5.4.15 to 5.4.18 in /builddefs/docsgen (#25192)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 12:25:47 +10:00
Joel Challis
ce1801aeda Align new-keyboard template to current standards (#25191) 2025-04-23 12:14:11 +10:00
Joel Challis
11cb5cf347 Remove more duplication of defaults (#25189) 2025-04-23 12:11:28 +10:00
QMK Bot
24d896ca06 Merge remote-tracking branch 'origin/master' into develop 2025-04-23 02:10:54 +00:00
Joel Challis
da2e897f55 Update 'qmk generate-api' to only publish pure DD keymaps (#24782) 2025-04-23 12:10:14 +10:00
Joel Challis
07684bcc99 Remove "console":false from keyboards (#25190) 2025-04-23 12:09:56 +10:00
QMK Bot
847bef3177 Merge remote-tracking branch 'origin/master' into develop 2025-04-23 02:03:39 +00:00
Joel Challis
c6a93b5a56 Bump rlespinasse/github-slug-action from 3 to 5 (#25021) 2025-04-23 12:03:02 +10:00
Joel Challis
8cd71917ce Avoid duplication in generated community modules rules.mk (#25135) 2025-04-23 10:27:47 +10:00
eynsai
7a2cd0fa96 High resolution scrolling (without feature report parsing) (#24423)
* hires scrolling without feature report parsing

* fix valid range for exponent

* fix incorrect minimum exponent value documentation
2025-04-23 00:04:31 +02:00
Joel Challis
83818d1d6f Prompt for converter when creating new keymap (#25116) 2025-04-22 17:59:16 +01:00
Joel Challis
960c4969a5 Remove empty url fields (#25181) 2025-04-22 17:59:00 +01:00
Pascal Getreuer
73e2ef486a [Bug][Core] Fix for Flow Tap: fix handling of distinct taps and timer updates. (#25175)
* Flow Tap bug fix.

As reported by @amarz45 and @mwpardue, there is a bug where if two
tap-hold keys are pressed in distinct taps back to back, then Flow Tap
is not applied on the second tap-hold key, but it should be.

In a related bug reported by @NikGovorov, if a tap-hold key is held
followed by a tap of a tap-hold key, then Flow Tap updates its timer on
the release of the held tap-hold key, but it should be ignored.

The problem common to both these bugs is that I incorrectly assumed
`tapping_key` is cleared to noevent once it is released, when actually
`tapping_key` is still maintained for `TAPPING_TERM` ms after release
(for Quick Tap). This commit fixes that. Thanks to @amarz45, @mwpardue,
and @NikGovorov for reporting!

Details:

* Logic for converting the current tap-hold event to a tap is extracted
  to `flow_tap_key_if_within_term()`, which is now invoked also in the
  post-release "interfered with other tap key" case. This fixes the
  distinct taps bug.

* The Flow Tap timer is now updated at the beginning of each call to
  `process_record()`, provided that there is no unsettled tap-hold key
  at that time and that the record is not for a mod or layer switch key.
  By moving this update logic to `process_record()`, it is conceptually
  simpler and more robust.

* Unit tests extended to cover the reported scenarios.

* Fix formatting.

* Revision to fix @NikGovorov's scenario.

The issue is that when another key is pressed while a layer-tap hasn't
been settled yet, the `prev_keycode` remembers the keycode from before
the layer switched. This can then enable Flow Tap for the following key
when it shouldn't, or vice versa.

Thanks to @NikGovorov for reporting!

This commit revises Flow Tap in the following ways:

* The previous key and timer are both updated from `process_record()`.
  This is slightly later in the sequence of processing than before, and
  by this point, a just-settled layer-tap should have taken effect so
  that the keycode from the correct layer is remembered.

* The Flow Tap previous key and timer are updated now also on key
  release events, except for releases of modifiers and held layer
  switches.

* The Flow Tap previous key and timer are now updated together, for
  simplicity. This makes the logic easier to think about.

* A few additional unit tests, including @NikGovorov's scenario as
  "layer_tap_ignored_with_disabled_key_complex."
2025-04-22 09:59:49 +02:00
Joel Challis
b5f8f4d6a2 Align ChibiOS USB_WAIT_FOR_ENUMERATION implementation (#25184) 2025-04-22 14:31:42 +10:00
QMK Bot
0c4124c1c0 Merge remote-tracking branch 'origin/master' into develop 2025-04-22 04:15:10 +00:00
Nick Brassel
9f04023d35 Decrease firmware size for anavi/macropad8. (#25185)
Preparation for bootstrapper.
2025-04-22 14:14:28 +10:00
QMK Bot
43e3831df9 Merge remote-tracking branch 'origin/master' into develop 2025-04-21 23:56:44 +00:00
CJ Pais
ebfa3cdd5c Add handwired/footy (#25151)
Co-authored-by: jack <jack@pngu.org>
2025-04-21 16:56:10 -07:00
Joel Challis
c7cb7ba976 Implement connection keycode logic (#25176) 2025-04-21 22:27:56 +01:00
Joel Challis
ec324af22e Add lint warning for empty url (#25182) 2025-04-21 20:07:05 +01:00
Eric Molitor
2c54ff3e63 Update develop branch to Pico SDK 1.5.1 (#25178) 2025-04-21 15:05:22 +01:00
QMK Bot
402b5ba6d7 Merge remote-tracking branch 'origin/master' into develop 2025-04-21 14:03:22 +00:00
Nick Brassel
53f1f3b6d7 Fix for .clangd. (#25180) 2025-04-22 00:02:47 +10:00
QMK Bot
b779c5f567 Merge remote-tracking branch 'origin/master' into develop 2025-04-20 09:42:05 +00:00
Jan Bláha
a1cb822861 DOCS: qmk-hid missing in bootloaders list? (#25177) 2025-04-20 19:41:30 +10:00
Nick Brassel
a4aabea511 Fixup eeconfig lighting reset. (#25166) 2025-04-19 23:10:33 +01:00
QMK Bot
c8763c9fdb Merge remote-tracking branch 'origin/master' into develop 2025-04-19 22:10:27 +00:00
Joel Challis
edf34315af Fix 'Would you like to clone the submodules?' prompt under msys (#24958) 2025-04-20 08:09:54 +10:00
Joel Challis
ce8b8414d9 Remove bluefruit_le_read_battery_voltage function (#25129) 2025-04-19 22:52:25 +01:00
Less/Rikki
7e68cfc6fa [keyboard] ymdk/id75/rp2040 (#25157)
Co-authored-by: tao heihei <>
2025-04-19 13:11:08 -07:00
Nick Brassel
5c39722ab9 Allow for disabling EEPROM subsystem entirely. (#25173) 2025-04-19 20:20:00 +01:00
Pascal Getreuer
ea85ace4a9 Ignore the Layer Lock key in Repeat Key and Caps Word. (#25171) 2025-04-19 11:57:00 -07:00
Joel Challis
88453acc6a Remove duplication of RGBLight defaults (#25169) 2025-04-19 11:56:45 -07:00
QMK Bot
988d81581d Merge remote-tracking branch 'origin/master' into develop 2025-04-18 09:05:59 +00:00
lsh4711
800bc78d26 Fix missing and extra commas in JSON schema (#25057) 2025-04-18 19:05:25 +10:00
Joel Challis
b43fc33be3 Remove duplication of RGB Matrix defaults (#25146)
* Remove duplication of RGB Matrix defaults

* Remove more duplication of defaults

* fix
2025-04-17 20:59:59 -06:00
QMK Bot
d33aa82c51 Merge remote-tracking branch 'origin/master' into develop 2025-04-17 18:51:15 +00:00
JamesWilson1996
576325e2f4 [Keyboard] Add voidhhkb-hotswap (#25007)
* Added files for voidhhkb-hotswap

* Updated keyboard name to resolve build errors

* Implement suggestions from PR. Use 60_hhkb community layout.

* Update keyboards/void/voidhhkb_hotswap/readme.md

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

* Apply suggestions from code review

Co-authored-by: jack <jack@pngu.org>

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <jack@pngu.org>
2025-04-17 12:50:41 -06:00
QMK Bot
642c169bc3 Merge remote-tracking branch 'origin/master' into develop 2025-04-17 16:24:18 +00:00
ClownFish
7641359240 [Docs] Unify lighting step descriptions (#25167)
unify lighting step descriptions and defaults across docs
2025-04-17 10:23:16 -06:00
QMK Bot
944a206d1f Merge remote-tracking branch 'origin/master' into develop 2025-04-17 02:41:54 +00:00
Nick Brassel
e83b709169 [Keyboard] Kobold r1 (#25161)
* Kobold r1

* Apply suggestions from code review

Co-authored-by: jack <jack@pngu.org>

* `board_init` => `early_hardware_init_post`.

---------

Co-authored-by: jack <jack@pngu.org>
2025-04-16 20:41:20 -06:00
QMK Bot
00f07ec343 Merge remote-tracking branch 'origin/master' into develop 2025-04-14 17:28:26 +00:00
Daniel Reisch
80612c8ec0 Added Keyboard LumPy27 (#24967)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-14 10:27:52 -07:00
jack
32b9d33bbb Remove Sofle rgb_default keymap & tidy readme's (#25010) 2025-04-14 09:58:14 -07:00
QMK Bot
9208fb5adb Merge remote-tracking branch 'origin/master' into develop 2025-04-14 16:54:03 +00:00
Andrew Kannan
af141d1a5c Add Link keyboard (#25058)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-04-14 09:52:51 -07:00
Pascal Getreuer
8d8dcb089e [Core] Flow Tap tap-hold option to disable HRMs during fast typing (#25125)
aka Global Quick Tap, Require Prior Idle
2025-04-14 09:46:24 -07:00
Stefan Kerkmann
a7bf8e64a5 [chore]: move and rename mouse/scroll min/max defines (#25141)
* protocol: move {XY/HV}_REPORT_{MIN,MAX} into report.h

..to allow easier re-use in other code implementations.

* protocol: rename {XY/HV}_REPORT_{MIN/MAX} to MOUSE_REPORT_{XY/HV}_{MIN/MAX}

..to avoid naming collisions.
2025-04-13 18:36:13 +02:00
QMK Bot
d0611b0468 Merge remote-tracking branch 'origin/master' into develop 2025-04-13 16:25:00 +00:00
suikagiken
1388daa0cc [Keyboard] Add suika83opti (#24991) 2025-04-13 10:20:42 -06:00
Sylvain Huguet
d99eb01ee4 Update shuguet/shu89 (#24780)
* Update keyboard.json

Update mod keys location in RGB layout.

* Update keyboard.json

* Update keyboards/shuguet/shu89/keyboard.json

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

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
2025-04-13 10:19:12 -06:00
Olivier Mehani
e17878ad15 kradoindustries_promenade: add LAYOUT_1x2u (#25090) 2025-04-13 10:14:34 -06:00
Christian C. Berclaz
ba72094b69 New standard layout for Savage65 (65_ansi_blocker_tsangan_split_bs) (#24690)
* Added a default firmware and layout for the WindStudio Wind X R1
keyboard.

* Wind X R1: cleaned-up the folders to make clear that this firmware is
for the release 1 of this keyboard.

* Delete keyboards/windstudio/wind_x/R1 directory

Removing the uppercase R1 folder

* feat(cannonkeys/savage65): Added layout to keyboard.json
- Added the layout LAYOUT_65_ansi_blocker_tsangan_split_bs to the
  community layouts.
2025-04-13 10:11:18 -06:00
QMK Bot
0d7d75d3d5 Merge remote-tracking branch 'origin/master' into develop 2025-04-11 16:26:48 +00:00
Luis Garcia
daf6968947 fix: Fix startup sound for Preonic (#25132) (#25133)
Add `AUDIO_INIT_DELAY ` to config.h to resolve
2025-04-11 17:26:13 +01:00
Joel Challis
e27dd0f26f Exclude external userspace from lint checking (#24680) 2025-04-11 22:19:02 +10:00
QMK Bot
6624671a60 Merge remote-tracking branch 'origin/master' into develop 2025-04-11 05:26:44 +00:00
Luis Garcia
f549b30760 chore: Allow disabling underglow on Work Louder devices (#25123) (#25120)
* Allow disabling Underglow on Work Louder devices

Allows disabling Underglow on Work Louder devices by using `RGBLIGHT_ENABLE = no` on rules.mk

* Update keyboards/work_louder/rgb_functions.c

Suggested by @zvecr on review.

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

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2025-04-10 23:26:11 -06:00
Nick Brassel
6b8670fe8f Cater for use of __errno_r() in ChibiOS syscalls.c with newer picolibc revisions (#25121) 2025-04-10 01:43:25 +01:00
QMK Bot
dc26e99dd5 Merge remote-tracking branch 'origin/master' into develop 2025-04-09 14:29:06 +00:00
Nick Brassel
a0f40d9410 Include math.h where necessary. (#25122) 2025-04-09 15:28:30 +01:00
QMK Bot
4dc846f21c Merge remote-tracking branch 'origin/master' into develop 2025-04-09 00:15:49 +00:00
Nick Brassel
575abc48a3 More Windows->Unix style path fixes. (#25119) 2025-04-09 10:15:14 +10:00
QMK Bot
4643681888 Merge remote-tracking branch 'origin/master' into develop 2025-04-08 22:13:51 +00:00
Andrew Kannan
0ec96ddd52 Add Vida to QMK (#24225)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2025-04-09 08:13:16 +10:00
QMK Bot
35019fe136 Merge remote-tracking branch 'origin/master' into develop 2025-04-08 02:36:21 +00:00
Joel Challis
2645751ce1 Add warning when deprecated 'promicro_rp2040' is used (#25112) 2025-04-08 12:35:43 +10:00
QMK Bot
f35f4ee933 Merge remote-tracking branch 'origin/master' into develop 2025-04-08 02:31:52 +00:00
Joel Challis
ca84b57042 Remove direct docs.qmk.fm links from docs (#25113) 2025-04-08 12:31:17 +10:00
Joel Challis
06610c3da6 Remove CTPC/CONVERT_TO_PROTON_C options (#25111) 2025-04-08 01:55:49 +01:00
QMK Bot
ca635876ce Merge remote-tracking branch 'origin/master' into develop 2025-04-07 17:03:39 +00:00
sudo pacman -Syu
5f222a3e02 Fix coban pad9a wrong layout in keyboard.json (#25100) 2025-04-07 11:03:05 -06:00
QMK Bot
bca0aca8c5 Merge remote-tracking branch 'origin/master' into develop 2025-04-07 06:30:11 +00:00
Ivan Gromov
f94c8fd766 [Keyboard] Add Ortho Slayer (#25099)
* Add Ortho Slayer

* Update keyboards/keyten/ortho_slayer/keymaps/default/keymap.c

Co-authored-by: jack <jack@pngu.org>

* Update keyboards/keyten/ortho_slayer/readme.md

Co-authored-by: jack <jack@pngu.org>

---------

Co-authored-by: jack <jack@pngu.org>
2025-04-07 00:29:37 -06:00
QMK Bot
73ec19f0cb Merge remote-tracking branch 'origin/master' into develop 2025-04-07 04:03:57 +00:00
nonameCCC
a7ac6e4e68 [Keyboard] Add PHDesign PH60/Multi Keyboard PCB (#25086)
* Add PH60/Multi Support

* Add PCB PIcture for README

* Remove MO(_FN2)

* README Typo Fix

* Layout and README Adjustment

* Add README for PHDesign Main Folder

* Keymap Improvement

* Update README.md
2025-04-06 22:03:24 -06:00
QMK Bot
0da4c26d9c Merge remote-tracking branch 'origin/master' into develop 2025-04-06 18:03:03 +00:00
Dam Vu Duy
9e775b8e9d Add Coban Pad 12A (#25039)
Co-authored-by: jack <jack@pngu.org>
2025-04-06 10:56:19 -07:00
Pham Duc Minh
30c0036db1 Refactor Deemen17 Works DE60 (#25088) 2025-04-06 10:53:13 -07:00
QMK Bot
4d3726050e Merge remote-tracking branch 'origin/master' into develop 2025-04-05 21:22:08 +00:00
Ivan Gromov
0f1dcc0592 Add kt60HS-T v2 PCB (#25080)
* Add kt60HS-Tv2

* Update keyboards/keyten/kt60hs_t/readme.md

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/keyten/kt60hs_t/v1/readme.md

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/keyten/kt60hs_t/v2/keyboard.json

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/keyten/kt60hs_t/v2/readme.md

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/keyten/kt60hs_t/info.json

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Change of structure

* Moving the keyboard

* Update data/mappings/keyboard_aliases.hjson

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/keyten/kt60hs_t/v1/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/keyten/kt60hs_t/v2/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

---------

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2025-04-03 12:51:25 -06:00
Pascal Getreuer
da166d4d8b Add "license" field to Community Module JSON schema. (#25085)
Add "license" field to community module schema.
2025-04-01 16:06:42 +11:00
QMK Bot
3cd2924985 Merge remote-tracking branch 'origin/master' into develop 2025-03-30 00:18:16 +00:00
QMK Bot
7adb4dc6fb Merge remote-tracking branch 'origin/master' into develop 2025-03-29 13:20:13 +00:00
QMK Bot
a8fb9e1462 Merge remote-tracking branch 'origin/master' into develop 2025-03-29 02:48:02 +00:00
QMK Bot
0682cf9242 Merge remote-tracking branch 'origin/master' into develop 2025-03-28 13:38:59 +00:00
QMK Bot
cbe48b67df Merge remote-tracking branch 'origin/master' into develop 2025-03-28 10:04:33 +00:00
QMK Bot
d61798169d Merge remote-tracking branch 'origin/master' into develop 2025-03-28 09:19:41 +00:00
QMK Bot
b9e4d22765 Merge remote-tracking branch 'origin/master' into develop 2025-03-28 08:56:42 +00:00
QMK Bot
bc110b1533 Merge remote-tracking branch 'origin/master' into develop 2025-03-28 08:28:10 +00:00
QMK Bot
183b093698 Merge remote-tracking branch 'origin/master' into develop 2025-03-28 06:26:12 +00:00
yiancar
a02ed6a36d Update keymap for keycult 1800 (#25070)
Update keymap

Co-authored-by: yiancar <yiancar@gmail.com>
2025-03-27 17:25:46 -06:00
QMK Bot
c130b08f8e Merge remote-tracking branch 'origin/master' into develop 2025-03-26 19:24:00 +00:00
Nick Brassel
1a6a9a7c77 [Modules] Provide access to current path in rules.mk. (#25061) 2025-03-26 10:30:45 +00:00
jack
86c22a15ab Fix outdated GPIO control function usage (#25060) 2025-03-26 07:51:56 +00:00
QMK Bot
558b074c93 Merge remote-tracking branch 'origin/master' into develop 2025-03-23 05:17:37 +00:00
jack
2d37e80ac9 Migrate remaining split.soft_serial_pin to split.serial.pin (#25046)
* Migrate keyboards/bastardkb

* Migrate keyboards/handwired

* Migrate keyboards/helix

* Fix duplicate serial key
2025-03-22 09:58:33 -06:00
QMK Bot
38825610a5 Merge remote-tracking branch 'origin/master' into develop 2025-03-21 18:01:05 +00:00
Nick Brassel
2b00b846dc Non-volatile memory data repository pattern (#24356)
* First batch of eeconfig conversions.

* Offset and length for datablocks.

* `via`, `dynamic_keymap`.

* Fix filename.

* Commentary.

* wilba leds

* satisfaction75

* satisfaction75

* more keyboard whack-a-mole

* satisfaction75

* omnikeyish

* more whack-a-mole

* `generic_features.mk` to automatically pick up nvm repositories

* thievery

* deferred variable resolve

* whitespace

* convert api to structs/unions

* convert api to structs/unions

* convert api to structs/unions

* fixups

* code-side docs

* code size fix

* rollback

* nvm_xxxxx_erase

* Updated location of eeconfig magic numbers so non-EEPROM nvm drivers can use them too.

* Fixup build.

* Fixup compilation error with encoders.

* Build fixes.

* Add `via_ci` keymap to onekey to exercise VIA bindings (and thus dynamic keymap et.al.), fixup compilation errors based on preprocessor+sizeof.

* Build failure rectification.
2025-03-21 23:38:34 +11:00
Stefan Kerkmann
c9d62ddc78 [Core] use keycode_string in unit tests (#25042)
* tests: use keycode_string feature

With a proper keycode to string implementation in qmk there is no need
to use the unit tests only implementation anymore.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

* tests: remove keycode_util feature

This feature is no longer used as we switched the tests to the
keycode string implementation.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2025-03-21 08:47:22 +01:00
QMK Bot
d603fb0913 Merge remote-tracking branch 'origin/master' into develop 2025-03-20 22:34:52 +00:00
QMK Bot
b84ab51343 Merge remote-tracking branch 'origin/master' into develop 2025-03-20 22:22:52 +00:00
QMK Bot
ad20f8287a Merge remote-tracking branch 'origin/master' into develop 2025-03-20 22:21:55 +00:00
QMK Bot
0be239b45c Merge remote-tracking branch 'origin/master' into develop 2025-03-20 22:13:25 +00:00
QMK Bot
54dbde68e1 Merge remote-tracking branch 'origin/master' into develop 2025-03-20 22:01:02 +00:00
QMK Bot
add459f0ac Merge remote-tracking branch 'origin/master' into develop 2025-03-20 21:55:29 +00:00
Ramon Imbao
ea238d5a8a Add the plywrks ply8x hotswap variant. (#23558)
* Add hotswap variant

* Update RGB matrix

* Move files around to target develop

* Revert rules.mk for keyboards/jaykeeb/joker/rules.mk

* Update keyboards/plywrks/ply8x/hotswap/keyboard.json

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

* Apply suggestions from code review

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Add missing community layouts

* Delete keyboards/plywrks/ply8x/rules.mk

* Update missing keys in RGB matrix

* Add missing key in RGB matrix for hotswap ver

* Remove via keymaps

* Add keyboard alias for plywrks/ply8x to plywrks/ply8x/solder

* Fix typo

* Fix another typo

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2025-03-21 08:53:27 +11:00
Duncan Sutherland
14ef6c9830 Add Community Layout support to daskeyboard4 (#23884)
add ansi CL
2025-03-21 08:44:59 +11:00
QMK Bot
fd1d4d71aa Merge remote-tracking branch 'origin/master' into develop 2025-03-20 21:36:32 +00:00
QMK Bot
61479c4bf2 Merge remote-tracking branch 'origin/master' into develop 2025-03-20 05:07:29 +00:00
Joel Challis
f820a186d4 Align to latest CLI dependencies (#24553)
* Align to latest CLI dependencies

* Update docs
2025-03-20 14:04:10 +11:00
Pascal Getreuer
3484f0a0df [Core] get_keycode_string(): function to format keycodes as strings, for more readable debug logging. (#24787)
* keycode_string(): Format keycodes as strings.

This adds the `keycode_string()` function described in
https://getreuer.info/posts/keyboards/keycode-string/index.html
as a core feature.

* Fix formatting.

* keycode_string review revisions.

* Rename keycode_string() -> get_keycode_string() for consistency with
  existing string utils like get_u8_str().

* Revise custom keycode names with separate _user and _kb tables.

* Correct indent in builddefs/generic_features.mk.

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

* Add KC_NUHS, KC_NUBS, and KC_CAPS.

* Fix linking error with custom names.

* Attempt at simplifying interface.

* Formatting fix.

* Several fixes and revisions.

* Don't use PSTR in KEYCODE_STRING_NAME, since this fails to build on
  AVR. Store custom names in RAM.
* Revise the internal table of common keycode names to use its own
  storage representation, still in PROGMEM, and now more efficiently
  stored flat in 8 bytes per entry.
* Support Swap Hands keycodes and a few other keycodes.

* Revert "Formatting fix."

This reverts commit 2a2771068c.

* Revert "Attempt at simplifying interface."

This reverts commit 8eaf67de76.

* Simplify custom names API by sigprof's suggestion.

* Support more keycodes.

* Add QK_LOCK keycode.
* Add Secure keycodes.
* Add Joystick keycodes.
* Add Programmable Button keycodes.
* Add macro MC_ keycodes.
* For remaining keys in known code ranges, stringify them as
  "QK_<feature>+<number>". For instance, "QK_MIDI+7".

* Bug fix and a few improvements.

* Fix missing right-hand bit when displaying 5-bit mods numerically.
* Support KC_HYPR, KC_MEH, HYPR_T(kc), MEH_T(kc).
* Exclude one-shot keycodes when NO_ACTION_ONESHOT is defined.

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
2025-03-19 20:45:56 +01:00
QMK Bot
40a446a0ec Merge remote-tracking branch 'origin/master' into develop 2025-03-19 16:34:27 +00:00
QMK Bot
d6850bab3f Merge remote-tracking branch 'origin/master' into develop 2025-03-19 01:46:02 +00:00
QMK Bot
80b16f688c Merge remote-tracking branch 'origin/master' into develop 2025-03-18 15:49:02 +00:00
QMK Bot
40fafad6bc Merge remote-tracking branch 'origin/master' into develop 2025-03-17 19:07:56 +00:00
QMK Bot
e6dcdf2d65 Merge remote-tracking branch 'origin/master' into develop 2025-03-16 08:45:02 +00:00
QMK Bot
4f257711e0 Merge remote-tracking branch 'origin/master' into develop 2025-03-13 21:05:09 +00:00
QMK Bot
27b115151f Merge remote-tracking branch 'origin/master' into develop 2025-03-13 21:01:31 +00:00
QMK Bot
fab39d49e6 Merge remote-tracking branch 'origin/master' into develop 2025-03-13 19:21:29 +00:00
QMK Bot
3306d78bbd Merge remote-tracking branch 'origin/master' into develop 2025-03-11 09:43:13 +00:00
Duncan Sutherland
808c4d4e38 add 75_(ansi|iso) Community Layouts to mechlovin/olly/octagon (#22459)
* expand mechlovin/olly/octagon

* Update info.json

* Rename info.json to keyboard.json

* correct matrix position for key

* remove VIA
2025-03-10 00:48:35 -07:00
Joel Challis
67934546ea Only configure STM32_HSECLK within board.h (#25001) 2025-03-09 23:41:24 +00:00
Joel Challis
21c1fd5e5b Require 'x'/'y' properties for LED/RGB Matrix layout (#24997) 2025-03-09 23:40:59 +00:00
Matthijs Muller
30daeaf09f Add Icebreaker keyboard (#24723)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-03-09 00:51:29 -08:00
QMK Bot
21f7c915df Merge remote-tracking branch 'origin/master' into develop 2025-03-09 07:59:37 +00:00
QMK Bot
7cc18f2b11 Merge remote-tracking branch 'origin/master' into develop 2025-03-06 23:17:53 +00:00
Joel Challis
6e1d3d6d07 Add EOL to non-keyboard files (#24990) 2025-03-06 23:17:51 +00:00
QMK Bot
12f9f34fc8 Merge remote-tracking branch 'origin/master' into develop 2025-03-04 23:40:42 +00:00
QMK Bot
4d3a9ce13a Merge remote-tracking branch 'origin/master' into develop 2025-03-03 19:23:41 +00:00
QMK Bot
a0a999976f Merge remote-tracking branch 'origin/master' into develop 2025-03-03 19:22:27 +00:00
QMK Bot
40f08b47ae Merge remote-tracking branch 'origin/master' into develop 2025-03-03 19:19:08 +00:00
QMK Bot
a052adb659 Merge remote-tracking branch 'origin/master' into develop 2025-03-03 05:34:50 +00:00
QMK Bot
3968f5b370 Merge remote-tracking branch 'origin/master' into develop 2025-03-03 03:32:59 +00:00
QMK Bot
c46cefa898 Merge remote-tracking branch 'origin/master' into develop 2025-03-02 21:33:36 +00:00
QMK Bot
d0153368b8 Merge remote-tracking branch 'origin/master' into develop 2025-03-02 21:05:06 +00:00
QMK Bot
a076412b2b Merge remote-tracking branch 'origin/master' into develop 2025-03-02 01:00:30 +00:00
QMK Bot
37c581690c Merge remote-tracking branch 'origin/master' into develop 2025-03-02 00:49:36 +00:00
QMK Bot
ac70b81d3f Merge remote-tracking branch 'origin/master' into develop 2025-03-01 22:24:49 +00:00
QMK Bot
107f9a4cb3 Merge remote-tracking branch 'origin/master' into develop 2025-03-01 21:50:43 +00:00
QMK Bot
2f69eb5f8f Merge remote-tracking branch 'origin/master' into develop 2025-03-01 21:27:15 +00:00
QMK Bot
5151abc298 Merge remote-tracking branch 'origin/master' into develop 2025-03-01 21:02:04 +00:00
QMK Bot
cbfbd173d3 Merge remote-tracking branch 'origin/master' into develop 2025-03-01 21:00:36 +00:00
QMK Bot
8606e78920 Merge remote-tracking branch 'origin/master' into develop 2025-03-01 20:48:45 +00:00
QMK Bot
665a12b50e Merge remote-tracking branch 'origin/master' into develop 2025-03-01 20:47:51 +00:00
QMK Bot
53e61900fe Merge remote-tracking branch 'origin/master' into develop 2025-02-28 19:08:29 +00:00
Pablo Martínez
e62352e606 [Cleanup] Handling of optional *.mk files (#24952)
replace check + `include` with `-include`
2025-02-28 17:39:43 +00:00
Joel Challis
6ee806f376 Implement battery level interface (#24666)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-02-28 16:46:14 +11:00
Nick Brassel
312f42945d Branch point for 2025q2 breaking change. 2025-02-28 09:26:13 +11:00
Nick Brassel
40b9dada5c Merge remote-tracking branch 'upstream/master' into develop 2025-02-28 09:24:51 +11:00
3872 changed files with 24936 additions and 12179 deletions

View File

@@ -1,4 +1,4 @@
CompileFlags:
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
Compiler: clang

View File

@@ -38,4 +38,4 @@ body:
- type: textarea
attributes:
label: Additional Context
description: Add any other relevant information about the problem here.
description: Add any other relevant information about the problem here.

View File

@@ -39,7 +39,7 @@ jobs:
qmk format-text -a
git diff
- uses: rlespinasse/github-slug-action@v3.x
- uses: rlespinasse/github-slug-action@v5
- name: Become QMK Bot
run: |

View File

@@ -26,7 +26,7 @@ jobs:
util/regen.sh
git diff
- uses: rlespinasse/github-slug-action@v3.x
- uses: rlespinasse/github-slug-action@v5
- name: Become QMK Bot
run: |

27
.vscode/settings.json vendored
View File

@@ -10,6 +10,13 @@
"**/*.uf2": true
},
"files.associations": {
// QMK Filetypes
"keyboard.json": "jsonc",
"info.json": "jsonc",
"keymap.json": "jsonc",
"qmk.json": "jsonc",
"qmk_module.json": "jsonc",
// Standard filetypes
"*.h": "c",
"*.c": "c",
"*.inc": "c",
@@ -28,7 +35,23 @@
"[json]": {
"editor.formatOnSave": false
},
"clangd.arguments": [
"--header-insertion=never"
"clangd.arguments": ["--header-insertion=never"],
"json.schemas": [
{
"fileMatch": ["qmk.json"],
"url": "./data/schemas/user_repo_v1_1.jsonschema"
},
{
"fileMatch": ["qmk_module.json"],
"url": "./data/schemas/community_module.jsonschema"
},
{
"fileMatch": ["keyboard.json", "info.json"],
"url": "./data/schemas/keyboard.jsonschema"
},
{
"fileMatch": ["keymap.json"],
"url": "./data/schemas/keymap.jsonschema"
}
]
}

View File

@@ -59,6 +59,7 @@ ifeq ($(ROOT_DIR),)
endif
include paths.mk
include $(BUILDDEFS_PATH)/support.mk
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred

View File

@@ -25,8 +25,6 @@ $(TEST_OUTPUT)_SRC := \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
tests/test_common/mouse_report_util.cpp \
tests/test_common/keycode_util.cpp \
tests/test_common/keycode_table.cpp \
tests/test_common/test_fixture.cpp \
tests/test_common/test_keymap_key.cpp \
tests/test_common/test_logger.cpp \

View File

@@ -11,6 +11,7 @@ endif
.DEFAULT_GOAL := all
include paths.mk
include $(BUILDDEFS_PATH)/support.mk
include $(BUILDDEFS_PATH)/message.mk
# Helper to add defines with a 'QMK_' prefix
@@ -97,21 +98,12 @@ endif
# Pull in rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
include $(KEYBOARD_PATH_5)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
include $(KEYBOARD_PATH_4)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
include $(KEYBOARD_PATH_3)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
include $(KEYBOARD_PATH_2)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
-include $(KEYBOARD_PATH_5)/rules.mk
-include $(KEYBOARD_PATH_4)/rules.mk
-include $(KEYBOARD_PATH_3)/rules.mk
-include $(KEYBOARD_PATH_2)/rules.mk
-include $(KEYBOARD_PATH_1)/rules.mk
# Create dependencies on DD keyboard config - structure validated elsewhere
DD_CONFIG_FILES :=
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
@@ -260,6 +252,9 @@ generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/
endif
# Community modules
COMMUNITY_RULES_MK = $(shell $(QMK_BIN) generate-community-modules-rules-mk -kb $(KEYBOARD) --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/community_rules.mk $(KEYMAP_JSON))
include $(COMMUNITY_RULES_MK)
$(INTERMEDIATE_OUTPUT)/src/community_modules.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-modules-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(KEYMAP_JSON))
@@ -280,10 +275,19 @@ $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h: $(KEYMAP_JSON) $(D
$(eval CMD=$(QMK_BIN) generate-community-modules-introspection-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-led-matrix-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-rgb-matrix-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc $(KEYMAP_JSON))
@$(BUILD_CMD)
SRC += $(INTERMEDIATE_OUTPUT)/src/community_modules.c
generated-files: $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h
generated-files: $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc
include $(BUILDDEFS_PATH)/converters.mk
@@ -487,21 +491,11 @@ ifneq ("$(CONVERTER)","")
endif
# Pull in post_rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
include $(KEYBOARD_PATH_1)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
include $(KEYBOARD_PATH_2)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
include $(KEYBOARD_PATH_3)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
include $(KEYBOARD_PATH_4)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
include $(KEYBOARD_PATH_5)/post_rules.mk
endif
-include $(KEYBOARD_PATH_1)/post_rules.mk
-include $(KEYBOARD_PATH_2)/post_rules.mk
-include $(KEYBOARD_PATH_3)/post_rules.mk
-include $(KEYBOARD_PATH_4)/post_rules.mk
-include $(KEYBOARD_PATH_5)/post_rules.mk
define post_rules_mk_community_module_includer
ifneq ("$(wildcard $(1)/post_rules.mk)","")

View File

@@ -7,6 +7,7 @@ endif
OPT = g
include paths.mk
include $(BUILDDEFS_PATH)/support.mk
include $(BUILDDEFS_PATH)/message.mk
TARGET=test/$(TEST_OUTPUT)

View File

@@ -30,6 +30,8 @@ QUANTUM_SRC += \
$(QUANTUM_DIR)/logging/sendchar.c \
$(QUANTUM_DIR)/process_keycode/process_default_layer.c \
include $(QUANTUM_DIR)/nvm/rules.mk
VPATH += $(QUANTUM_DIR)/logging
# Fall back to lib/printf if there is no platform provided print
ifeq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk)","")
@@ -169,80 +171,82 @@ endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
ifneq ($(strip $(EEPROM_DRIVER)),none)
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
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
I2C_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
SPI_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.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
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
OPT_DEFS += -DEEPROM_VENDOR
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx AT32F415 GD32VF103),)
# Wear-leveling EEPROM implementation, backed by MCU flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER ?= embedded_flash
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
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_KINETIS_FLEXRAM
SRC += eeprom_kinetis_flexram.c
else
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
SRC += eeprom_driver.c eeprom_transient.c
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
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
I2C_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
SPI_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.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
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
OPT_DEFS += -DEEPROM_VENDOR
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G0xx STM32G4xx WB32F3G71xx WB32FQ95xx AT32F415 GD32VF103),)
# Wear-leveling EEPROM implementation, backed by MCU flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER ?= embedded_flash
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
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_KINETIS_FLEXRAM
SRC += eeprom_kinetis_flexram.c
else
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
SRC += eeprom.c
endif
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
SRC += eeprom.c
endif
endif
endif
@@ -263,18 +267,14 @@ ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
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 += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(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 += legacy_flash_ops.c wear_leveling_legacy.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_legacy_config.h
endif
endif
endif
@@ -635,6 +635,11 @@ ifeq ($(strip $(VIA_ENABLE)), yes)
TRI_LAYER_ENABLE := yes
endif
ifeq ($(strip $(RAW_ENABLE)), yes)
OPT_DEFS += -DRAW_ENABLE
SRC += raw_hid.c
endif
ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
SEND_STRING_ENABLE := yes
endif
@@ -717,6 +722,7 @@ ifeq ($(strip $(LIB8TION_ENABLE)), yes)
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
OPT_DEFS += -DLIB8_ATTINY
endif
OPT_DEFS += -DFASTLED_SCALE8_FIXED=1 -DFASTLED_BLEND_FIXED=1
SRC += $(LIB_PATH)/lib8tion/lib8tion.c
endif
@@ -888,19 +894,19 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
OPT_DEFS += -DBLUETOOTH_ENABLE
OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]'))
NO_USB_STARTUP_CHECK := yes
CONNECTION_ENABLE := yes
COMMON_VPATH += $(DRIVER_PATH)/bluetooth
SRC += outputselect.c process_connection.c
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
SPI_DRIVER_REQUIRED = yes
ANALOG_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/bluetooth_drivers.c
SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp
endif
ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42)
UART_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/bluetooth_drivers.c
SRC += $(DRIVER_PATH)/bluetooth/rn42.c
endif
endif
@@ -923,7 +929,10 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += encoder_$(strip $(ENCODER_DRIVER)).c
endif
ifeq ($(strip $(ENCODER_MAP_ENABLE)), yes)
# Encoder callbacks are now opt-in, default is encoder map
ifeq ($(strip $(ENCODER_CALLBACKS_ENABLE)), yes)
OPT_DEFS += -DENCODER_CALLBACKS_ENABLE
else
OPT_DEFS += -DENCODER_MAP_ENABLE
endif
endif
@@ -934,6 +943,28 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
endif
endif
VALID_BATTERY_DRIVER_TYPES := adc custom vendor
BATTERY_DRIVER ?= adc
ifeq ($(strip $(BATTERY_DRIVER_REQUIRED)), yes)
ifeq ($(filter $(BATTERY_DRIVER),$(VALID_BATTERY_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid BATTERY_DRIVER,BATTERY_DRIVER="$(BATTERY_DRIVER)" is not a valid battery driver)
endif
OPT_DEFS += -DBATTERY_DRIVER
OPT_DEFS += -DBATTERY_$(strip $(shell echo $(BATTERY_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(DRIVER_PATH)/battery
SRC += battery.c
SRC += battery_$(strip $(BATTERY_DRIVER)).c
# add extra deps
ifeq ($(strip $(BATTERY_DRIVER)), adc)
ANALOG_DRIVER_REQUIRED = yes
endif
endif
VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
WS2812_DRIVER ?= bitbang

View File

@@ -168,7 +168,7 @@ MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@)
# For a ChibiOS build, ensure that the board files have the hook overrides injected
define BOARDSRC_INJECT_HOOKS
$(INTERMEDIATE_OUTPUT)/$(patsubst %.c,%.o,$(patsubst ./%,%,$1)): INIT_HOOK_CFLAGS += -include $(TOP_DIR)/tmk_core/protocol/chibios/init_hooks.h
$(INTERMEDIATE_OUTPUT)/$(patsubst %.c,%.o,$(patsubst ./%,%,$1)): FILE_SPECIFIC_CFLAGS += -include $(TOP_DIR)/tmk_core/protocol/chibios/init_hooks.h
endef
$(foreach LOBJ, $(BOARDSRC), $(eval $(call BOARDSRC_INJECT_HOOKS,$(LOBJ))))
@@ -289,10 +289,10 @@ $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)
ifneq ($$(VERBOSE_C_INCLUDE),)
$$(if $$(filter $$(notdir $$(VERBOSE_C_INCLUDE)),$$(notdir $$<)),$$(eval CC_EXEC += -H))
endif
$$(eval CMD := $$(CC_EXEC) -c $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
$$(eval CMD := $$(CC_EXEC) -c $$($1_CFLAGS) $$(FILE_SPECIFIC_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
ifneq ($$(DUMP_C_MACROS),)
$$(eval CMD := $$(CC) -E -dM $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$<)
$$(eval CMD := $$(CC) -E -dM $$($1_CFLAGS) $$(FILE_SPECIFIC_CFLAGS) $$(GENDEPFLAGS) $$<)
@$$(if $$(filter $$(notdir $$(DUMP_C_MACROS)),$$(notdir $$<)),$$(BUILD_CMD))
endif
@@ -300,13 +300,13 @@ $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)
$1/%.o : %.cpp $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(FILE_SPECIFIC_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
$1/%.o : %.cc $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(FILE_SPECIFIC_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
# Assemble: create object files from assembler source files.

View File

@@ -1,10 +1,3 @@
# Note for new boards -- CTPC and CONVERT_TO_PROTON_C are deprecated terms
# and should not be replicated for new boards. These will be removed from
# documentation as well as existing keymaps in due course.
ifneq ($(findstring yes, $(CTPC)$(CONVERT_TO_PROTON_C)),)
$(call CATASTROPHIC_ERROR,The `CONVERT_TO_PROTON_C` and `CTPC` options are now deprecated. `CONVERT_TO=proton_c` should be used instead.)
endif
ifneq (,$(filter $(MCU),atmega32u4))
# TODO: opt in rather than assume everything uses a pro micro
PIN_COMPATIBLE ?= promicro

View File

@@ -1,7 +1,7 @@
{
"license": "GPL-2.0-or-later",
"devDependencies": {
"vite": "^5.4.15",
"vite": "^5.4.19",
"vitepress": "^1.1.0",
"vitepress-plugin-tabs": "^0.5.0",
"vue": "^3.4.24"

View File

@@ -766,10 +766,10 @@ tabbable@^6.2.0:
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
vite@^5.2.9, vite@^5.4.15:
version "5.4.15"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.15.tgz#2941547f10ebb4bf9b0fa0da863c06711eb7e5e5"
integrity sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==
vite@^5.2.9, vite@^5.4.19:
version "5.4.19"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959"
integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"

View File

@@ -25,6 +25,7 @@ GENERIC_FEATURES = \
CAPS_WORD \
COMBO \
COMMAND \
CONNECTION \
CRC \
DEFERRED_EXEC \
DIGITIZER \
@@ -34,6 +35,7 @@ GENERIC_FEATURES = \
DYNAMIC_TAPPING_TERM \
GRAVE_ESC \
HAPTIC \
KEYCODE_STRING \
KEY_LOCK \
KEY_OVERRIDE \
LAYER_LOCK \
@@ -60,6 +62,7 @@ define HANDLE_GENERIC_FEATURE
SRC += $$(wildcard $$(QUANTUM_DIR)/process_keycode/process_$2.c)
SRC += $$(wildcard $$(QUANTUM_DIR)/$2/$2.c)
SRC += $$(wildcard $$(QUANTUM_DIR)/$2.c)
SRC += $$(wildcard $$(QUANTUM_DIR)/nvm/$$(NVM_DRIVER_LOWER)/nvm_$2.c)
VPATH += $$(wildcard $$(QUANTUM_DIR)/$2/)
OPT_DEFS += -D$1_ENABLE
endef

View File

@@ -55,7 +55,7 @@ OTHER_OPTION_NAMES = \
HELIX ZINC \
AUTOLOG_ENABLE \
DEBUG_ENABLE \
ENCODER_MAP_ENABLE \
ENCODER_CALLBACKS_ENABLE \
ENCODER_ENABLE_CUSTOM \
GERMAN_ENABLE \
HAPTIC_ENABLE \

11
builddefs/support.mk Normal file
View File

@@ -0,0 +1,11 @@
# Helper to determine if a compiler option is supported
# Args:
# $(1) = option to test, if successful will be output
# $(2) = option to use if $(1) is not supported
# $(3) = additional arguments to pass to the compiler during the test, but aren't contained in the output
cc-option = $(shell \
if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
then echo "$(1)"; else echo "$(2)"; fi)
# Helper to pass comma character to make functions (use with `$(,)` to pass in `$(call ...)` arguments)
, := ,

View File

@@ -372,4 +372,4 @@
"label": "~",
}
}
}
}

View File

@@ -629,4 +629,4 @@
"label": "(narrow non-breaking space)",
}
}
}
}

View File

@@ -376,4 +376,4 @@
"label": "₢",
}
}
}
}

View File

@@ -638,4 +638,4 @@
"label": "÷",
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": "?",
}
}
}
}

View File

@@ -400,4 +400,4 @@
"label": "§",
}
}
}
}

View File

@@ -432,4 +432,4 @@
"label": "*",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "µ",
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": ":",
}
}
}
}

View File

@@ -314,4 +314,4 @@
"label": "@",
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": "\"",
}
}
}
}

View File

@@ -364,4 +364,4 @@
"label": "ž",
}
}
}
}

View File

@@ -593,4 +593,4 @@
"label": "…",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "µ",
}
}
}
}

View File

@@ -364,4 +364,4 @@
"label": "¤",
}
}
}
}

View File

@@ -620,4 +620,4 @@
"label": "≠",
}
}
}
}

View File

@@ -673,4 +673,4 @@
"label": "±",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "µ",
}
}
}
}

View File

@@ -653,4 +653,4 @@
"label": "—",
}
}
}
}

View File

@@ -388,4 +388,4 @@
"label": "©",
}
}
}
}

View File

@@ -344,4 +344,4 @@
"label": "÷",
}
}
}
}

View File

@@ -432,4 +432,4 @@
"label": "*",
}
}
}
}

View File

@@ -352,4 +352,4 @@
"label": "µ",
}
}
}
}

View File

@@ -352,4 +352,4 @@
"label": "´ (dead)",
}
}
}
}

View File

@@ -361,4 +361,4 @@
"label": "}",
}
}
}
}

View File

@@ -681,4 +681,4 @@
"label": "—",
}
}
}
}

View File

@@ -685,4 +685,4 @@
"label": "—",
}
}
}
}

View File

@@ -327,4 +327,4 @@
"label": "_",
}
}
}
}

View File

@@ -307,4 +307,4 @@
"label": "?",
}
}
}
}

View File

@@ -437,4 +437,4 @@
"label": "¨ (dead)",
}
}
}
}

View File

@@ -372,4 +372,4 @@
"label": "\\",
}
}
}
}

View File

@@ -365,4 +365,4 @@
"label": "+",
}
}
}
}

View File

@@ -214,4 +214,4 @@
"label": "(layer 4)",
}
}
}
}

View File

@@ -113,4 +113,4 @@
"key": "NO_MU"
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": "?",
}
}
}
}

View File

@@ -352,4 +352,4 @@
"label": "µ",
}
}
}
}

View File

@@ -83,4 +83,4 @@
"key": "PV_U"
}
}
}
}

View File

@@ -70,4 +70,4 @@
"key": "PD_U"
}
}
}
}

View File

@@ -352,4 +352,4 @@
"label": "Ń",
}
}
}
}

View File

@@ -352,4 +352,4 @@
"label": "€",
}
}
}
}

View File

@@ -617,4 +617,4 @@
"label": "",
}
}
}
}

View File

@@ -441,4 +441,4 @@
"label": "»",
}
}
}
}

View File

@@ -288,4 +288,4 @@
"label": "₽",
}
}
}
}

View File

@@ -304,4 +304,4 @@
"label": "€",
}
}
}
}

View File

@@ -404,4 +404,4 @@
"label": "§",
}
}
}
}

View File

@@ -440,4 +440,4 @@
"label": "}",
}
}
}
}

View File

@@ -400,4 +400,4 @@
"label": "§",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "}",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "}",
}
}
}
}

View File

@@ -340,4 +340,4 @@
"label": "`",
}
}
}
}

View File

@@ -356,4 +356,4 @@
"label": "µ",
}
}
}
}

View File

@@ -639,4 +639,4 @@
"label": "—",
}
}
}
}

View File

@@ -637,4 +637,4 @@
"label": "—",
}
}
}
}

View File

@@ -639,4 +639,4 @@
"label": "—",
}
}
}
}

View File

@@ -637,4 +637,4 @@
"label": "—",
}
}
}
}

View File

@@ -376,4 +376,4 @@
"label": "\\",
}
}
}
}

View File

@@ -376,4 +376,4 @@
"label": "\\",
}
}
}
}

View File

@@ -477,4 +477,4 @@
"label": "º",
}
}
}
}

View File

@@ -372,4 +372,4 @@
"label": "` (dead)",
}
}
}
}

View File

@@ -350,4 +350,4 @@
"label": "Á"
}
}
}
}

View File

@@ -292,4 +292,4 @@
"label": "ґ",
}
}
}
}

View File

@@ -585,4 +585,4 @@
"label": "̉ (dead)",
}
}
}
}

View File

@@ -505,4 +505,4 @@
"label": "¢",
}
}
}
}

View File

@@ -573,4 +573,4 @@
"label": "̉ (dead)",
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": "?",
}
}
}
}

View File

@@ -299,4 +299,4 @@
"label": "?",
}
}
}
}

View File

@@ -93,4 +93,4 @@
"key": "SAFE_RANGE"
}
}
}
}

View File

@@ -225,4 +225,4 @@
]
}
}
}
}

View File

@@ -246,4 +246,4 @@
]
}
}
}
}

View File

@@ -225,4 +225,4 @@
]
}
}
}
}

View File

@@ -37,4 +37,4 @@
"key": "SQ_SCLR"
}
}
}
}

View File

@@ -17,4 +17,4 @@
]
}
}
}
}

View File

@@ -248,4 +248,4 @@
]
}
}
}
}

View File

@@ -66,4 +66,4 @@
]
}
}
}
}

View File

@@ -0,0 +1,55 @@
{
pointing_device_init: {
ret_type: void
args: void
guard: defined(POINTING_DEVICE_ENABLE)
}
pointing_device_task: {
ret_type: report_mouse_t
args: report_mouse_t mouse_report
call_params: mouse_report
guard: defined(POINTING_DEVICE_ENABLE)
header: report.h
}
rgb_matrix_indicators: {
ret_type: bool
args: void
guard: defined(RGB_MATRIX_ENABLE)
header: rgb_matrix.h
}
rgb_matrix_indicators_advanced: {
ret_type: bool
args: uint8_t led_min, uint8_t led_max
call_params: led_min, led_max
guard: defined(RGB_MATRIX_ENABLE)
header: rgb_matrix.h
}
led_matrix_indicators: {
ret_type: bool
args: void
guard: defined(LED_MATRIX_ENABLE)
header: led_matrix.h
}
led_matrix_indicators_advanced: {
ret_type: bool
args: uint8_t led_min, uint8_t led_max
call_params: led_min, led_max
guard: defined(LED_MATRIX_ENABLE)
header: led_matrix.h
}
default_layer_state_set: {
ret_type: layer_state_t
args: layer_state_t state
call_params: state
guard: !defined(NO_ACTION_LAYER)
header: action_layer.h
}
layer_state_set: {
ret_type: layer_state_t
args: layer_state_t state
call_params: state
guard: !defined(NO_ACTION_LAYER)
header: action_layer.h
}
}

View File

@@ -0,0 +1,3 @@
{
// This version exists to signify addition of LED/RGB effect support.
}

View File

@@ -64,6 +64,9 @@
"WEAR_LEVELING_BACKING_SIZE": {"info_key": "eeprom.wear_leveling.backing_size", "value_type": "int", "to_json": false},
"WEAR_LEVELING_LOGICAL_SIZE": {"info_key": "eeprom.wear_leveling.logical_size", "value_type": "int", "to_json": false},
// host
"NKRO_DEFAULT_ON": {"info_key": "host.default.nkro", "value_type": "bool"},
// Layer locking
"LAYER_LOCK_IDLE_TIMEOUT": {"info_key": "layer_lock.timeout", "value_type": "int"},
@@ -201,6 +204,7 @@
// Tapping
"CHORDAL_HOLD": {"info_key": "tapping.chordal_hold", "value_type": "flag"},
"FLOW_TAP_TERM": {"info_key": "tapping.flow_tap_term", "value_type": "int"},
"HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "flag"},
"HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "flag"},
"PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "flag"},
@@ -214,7 +218,6 @@
"TAPPING_TOGGLE": {"info_key": "tapping.toggle", "value_type": "int"},
// USB
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "flag"},
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
@@ -252,6 +255,7 @@
"PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "flag", "deprecated": true, "replace_with": "`host.default.nkro` in info.json"},
// Items we want flagged in lint
"VIAL_KEYBOARD_UID": {"info_key": "_invalid.vial_uid", "invalid": true},

View File

@@ -0,0 +1,74 @@
{
"bootmagic": {
"matrix": [0, 0]
},
"backlight": {
"default": {
"on": true
},
"breathing_period": 6,
"levels": 3,
"on_state": 1
},
"debounce": 5,
"features": {
"command": false,
"console": false
},
"indicators": {
"on_state": 1
},
"led_matrix": {
"default": {
"animation": "solid",
"on": true,
"val": 255,
"speed": 128
},
"led_flush_limit": 16,
"max_brightness": 255,
"sleep": false,
"speed_steps": 16,
"val_steps": 16
},
"rgblight": {
"default": {
"animation": "static_light",
"on": true,
"hue": 0,
"sat": 255,
"val": 255,
"speed": 0
},
"brightness_steps": 17,
"hue_steps": 8,
"max_brightness": 255,
"saturation_steps": 17,
"sleep": false
},
"rgb_matrix": {
"default": {
"animation": "cycle_left_right",
"on": true,
"hue": 0,
"sat": 255,
"val": 255,
"speed": 128
},
"hue_steps": 8,
"led_flush_limit": 16,
"max_brightness": 255,
"sat_steps": 16,
"sleep": false,
"speed_steps": 16,
"val_steps": 16
},
"split": {
"serial": {
"driver": "bitbang"
}
},
"ws2812": {
"driver": "bitbang"
}
}

View File

@@ -53,8 +53,8 @@
"WS2812_DRIVER": {"info_key": "ws2812.driver"},
// Items we want flagged in lint
"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"},
"DEFAULT_FOLDER": {"info_key": "_deprecated.default_folder", "deprecated": true},
"CTPC": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
"CONVERT_TO_PROTON_C": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true}
}

View File

@@ -146,6 +146,9 @@
"daisy": {
"target": "ktec/daisy"
},
"deemen17/de60": {
"target": "deemen17/de60/r1"
},
"dp3000": {
"target": "dp3000/rev1"
},
@@ -347,6 +350,9 @@
"keycapsss/plaid_pad": {
"target": "keycapsss/plaid_pad/rev1"
},
"keyten/kt60hs_t": {
"target": "keyten/kt60hs_t/v1"
},
"kira75": {
"target": "kira/kira75"
},
@@ -581,6 +587,9 @@
"ploopyco/trackball": {
"target": "ploopyco/trackball/rev1_005"
},
"plywrks/ply8x": {
"target": "plywrks/ply8x/solder"
},
"polilla": {
"target": "polilla/rev1"
},
@@ -1033,7 +1042,7 @@
"target": "kprepublic/bm68hsrgb/rev1"
},
"late9/rev1": {
"target": "rookiebwoy/late9/rev1"
"target": "ivndbt/late9/rev1"
},
"latin17rgb": {
"target": "latincompass/latin17rgb"
@@ -1198,7 +1207,7 @@
"target": "spaceholdings/nebula68b"
},
"neopad/rev1": {
"target": "rookiebwoy/neopad/rev1"
"target": "ivndbt/neopad/rev1"
},
"niu_mini": {
"target": "kbdfans/niu_mini"
@@ -2095,10 +2104,16 @@
"target": "rmi_kb/wete/v2"
},
"rookiebwoy/late9": {
"target": "rookiebwoy/late9/rev1"
"target": "ivndbt/late9/rev1"
},
"rookiebwoy/neopad": {
"target": "rookiebwoy/neopad/rev1"
"target": "ivndbt/neopad/rev1"
},
"ivndbt/late9": {
"target": "ivndbt/late9/rev1"
},
"ivndbt/neopad": {
"target": "ivndbt/neopad/rev1"
},
"rura66": {
"target": "rura66/rev1"

View File

@@ -1,7 +1,7 @@
{
"$id": "qmk.api.keyboard.v1",
"allOf": [
{"$ref": "qmk.keyboard.v1"},
{"$ref": "./keyboard.jsonschema#"},
{
"properties": {
"keymaps": {
@@ -10,8 +10,8 @@
"url": {"type": "string"}
}
},
"parse_errors": {"$ref": "qmk.definitions.v1#/string_array"},
"parse_warnings": {"$ref": "qmk.definitions.v1#/string_array"},
"parse_errors": {"$ref": "./definitions.jsonschema#/string_array"},
"parse_warnings": {"$ref": "./definitions.jsonschema#/string_array"},
"processor_type": {"type": "string"},
"protocol": {"type": "string"},
"keyboard_folder": {"type": "string"},

View File

@@ -3,15 +3,16 @@
"$id": "qmk.community_module.v1",
"title": "Community Module Information",
"type": "object",
"required": ["module_name", "maintainer"]
"required": ["module_name", "maintainer"],
"properties": {
"module_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"module_name": {"$ref": "./definitions.jsonschema#/text_identifier"},
"maintainer": {"$ref": "./definitions.jsonschema#/text_identifier"},
"license": {"type": "string"},
"url": {
"type": "string",
"format": "uri"
},
"keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"features": {"$ref": "qmk.keyboard.v1#/definitions/features_config"},
"keycodes": {"$ref": "./definitions.jsonschema#/keycode_decl_array"},
"features": {"$ref": "./keyboard.jsonschema#/definitions/features_config"}
}
}

View File

@@ -17,9 +17,9 @@
"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"}
"pin_a": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"pin_b": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"resolution": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
}
}
@@ -28,22 +28,22 @@
"dip_switch_config": {
"type": "object",
"properties": {
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
"pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}
}
}
"features_config": {
"$ref": "qmk.definitions.v1#/boolean_array",
"propertyNames": {"$ref": "qmk.definitions.v1#/snake_case"},
"not": {"required": ["lto"]}
},
"features_config": {
"$ref": "./definitions.jsonschema#/boolean_array",
"propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"},
"not": {"required": ["lto"]}
}
},
"type": "object",
"not": {"required": ["vendorId", "productId"]}, // reject via keys...
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keyboard_folder": {"$ref": "qmk.definitions.v1#/keyboard"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"manufacturer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keyboard_name": {"$ref": "./definitions.jsonschema#/text_identifier"},
"keyboard_folder": {"$ref": "./definitions.jsonschema#/keyboard"},
"maintainer": {"$ref": "./definitions.jsonschema#/text_identifier"},
"manufacturer": {"$ref": "./definitions.jsonschema#/text_identifier"},
"url": {
"type": "string",
"format": "uri"
@@ -84,6 +84,7 @@
"STM32F407",
"STM32F411",
"STM32F446",
"STM32G0B1",
"STM32G431",
"STM32G474",
"STM32H723",
@@ -118,8 +119,8 @@
"type": "object",
"additionalProperties": false,
"properties": {
"data_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"clock_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"data_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"clock_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"default_brightness": {
"type": "integer",
"minimum": 0,
@@ -144,13 +145,13 @@
"enum": ["dac_additive", "dac_basic", "pwm_software", "pwm_hardware"]
},
"macro_beep": {"type": "boolean"},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"},
"power_control": {
"type": "object",
"additionalProperties": false,
"properties": {
"on_state": {"$ref": "qmk.definitions.v1#/bit"},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
"on_state": {"$ref": "./definitions.jsonschema#/bit"},
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}
}
},
"voices": {"type": "boolean"}
@@ -170,20 +171,20 @@
"properties": {
"on": {"type": "boolean"},
"breathing": {"type": "boolean"},
"brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"breathing": {"type": "boolean"},
"breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"breathing_period": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"levels": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"on_state": {"$ref": "qmk.definitions.v1#/bit"},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"},
"on_state": {"$ref": "./definitions.jsonschema#/bit"},
"as_caps_lock": {"type": "boolean"}
}
},
@@ -268,7 +269,7 @@
"type": "string",
"enum": ["COL2ROW", "ROW2COL"]
},
"debounce": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"debounce": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"caps_word": {
"type": "object",
"additionalProperties": false,
@@ -276,20 +277,20 @@
"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": "./definitions.jsonschema#/unsigned_int"},
"invert_on_shift": {"type": "boolean"}
}
},
"combo": {
"type": "object",
"properties": {
"count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"count": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"term": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"community_layouts": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/filename"}
"items": {"$ref": "./definitions.jsonschema#/filename"}
},
"dip_switch": {
"$ref": "#/definitions/dip_switch_config",
@@ -319,10 +320,10 @@
"properties": {
"driver": {
"type": "string",
"enum": ["custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"]
"enum": ["none", "custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"]
},
"backing_size": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"logical_size": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"backing_size": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"logical_size": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
}
}
@@ -337,12 +338,12 @@
"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"},
"compose": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"kana": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"on_state": {"$ref": "qmk.definitions.v1#/bit"}
"caps_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"num_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"scroll_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"compose": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"kana": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"on_state": {"$ref": "./definitions.jsonschema#/bit"}
}
},
"joystick": {
@@ -350,20 +351,20 @@
"properties": {
"enabled": {"type": "boolean"},
"driver": {"type": "string"},
"button_count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"axis_resolution": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"button_count": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"axis_resolution": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"axes": {
"type": "object",
"propertyNames": {"enum": ["x", "y", "z", "rx", "ry", "rz"]}
"propertyNames": {"enum": ["x", "y", "z", "rx", "ry", "rz"]},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"input_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"low": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"rest": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"high": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"input_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"low": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"rest": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"high": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
{
@@ -375,20 +376,20 @@
}
}
},
"keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"keycodes": {"$ref": "./definitions.jsonschema#/keycode_decl_array"},
"layer_lock": {
"type": "object",
"properties": {
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"layout_aliases": {
"type": "object",
"additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"}
"additionalProperties": {"$ref": "./definitions.jsonschema#/layout_macro"}
},
"layouts": {
"type": "object",
"propertyNames": {"$ref": "qmk.definitions.v1#/layout_macro"},
"propertyNames": {"$ref": "./definitions.jsonschema#/layout_macro"},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
@@ -403,7 +404,7 @@
"additionalProperties": false,
"required": ["x", "y"],
"properties": {
"encoder": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"encoder": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"label": {
"type": "string",
"pattern": "^[^\\n]*$"
@@ -417,13 +418,13 @@
"minimum": 0
}
},
"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"},
"w": {"$ref": "qmk.definitions.v1#/key_unit"},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
"r": {"$ref": "./definitions.jsonschema#/signed_decimal"},
"rx": {"$ref": "./definitions.jsonschema#/unsigned_decimal"},
"ry": {"$ref": "./definitions.jsonschema#/unsigned_decimal"},
"h": {"$ref": "./definitions.jsonschema#/key_unit"},
"w": {"$ref": "./definitions.jsonschema#/key_unit"},
"x": {"$ref": "./definitions.jsonschema#/key_unit"},
"y": {"$ref": "./definitions.jsonschema#/key_unit"},
"hand": {
"type": "string",
"enum": ["L", "R", "*"]
@@ -443,12 +444,24 @@
}
}
},
"host": {
"type": "object",
"properties": {
"default": {
"type": "object",
"additionalProperties": false,
"properties": {
"nkro": {"type": "boolean"}
}
}
}
},
"leader_key": {
"type": "object",
"properties": {
"timing": {"type": "boolean"},
"strict_processing": {"type": "boolean"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"matrix_pins": {
@@ -458,14 +471,14 @@
"custom": {"type": "boolean"},
"custom_lite": {"type": "boolean"},
"ghost": {"type": "boolean"},
"input_pressed_state": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"io_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"input_pressed_state": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"io_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"direct": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
"items": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}
},
"cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
"cols": {"$ref": "./definitions.jsonschema#/mcu_pin_array"},
"rows": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}
}
},
"modules": {
@@ -478,18 +491,18 @@
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"wheel_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"delay": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"interval": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"max_speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"time_to_max": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"wheel_delay": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"oneshot": {
"type": "object",
"properties": {
"tap_toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"tap_toggle": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"led_matrix": {
@@ -497,7 +510,7 @@
"properties": {
"animations": {
"type": "object",
"propertyNames": {"$ref": "qmk.definitions.v1#/snake_case"},
"propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"},
"additionalProperties": {"type": "boolean"}
},
"default": {
@@ -506,8 +519,8 @@
"properties": {
"on": {"type": "boolean"},
"animation": {"type": "string"},
"val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
@@ -533,27 +546,28 @@
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"speed_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"led_flush_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"led_process_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"react_on_keyup": {"type": "boolean"},
"sleep": {"type": "boolean"},
"split_count": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int"}
},
"layout": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["x", "y"],
"properties": {
"matrix": {
"type": "array",
@@ -564,9 +578,9 @@
"minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"y": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"x": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"y": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
}
}
@@ -577,7 +591,7 @@
"properties": {
"animations": {
"type": "object",
"propertyNames": {"$ref": "qmk.definitions.v1#/snake_case"},
"propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"},
"additionalProperties": {"type": "boolean"}
},
"default": {
@@ -586,10 +600,10 @@
"properties": {
"on": {"type": "boolean"},
"animation": {"type": "string"},
"hue": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"sat": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
@@ -617,29 +631,30 @@
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"hue_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"sat_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"sat_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"speed_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"led_flush_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"led_process_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"react_on_keyup": {"type": "boolean"},
"sleep": {"type": "boolean"},
"split_count": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int"}
},
"layout": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["x", "y"],
"properties": {
"matrix": {
"type": "array",
@@ -650,9 +665,9 @@
"minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"y": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"x": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"y": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
}
}
@@ -664,27 +679,27 @@
"properties": {
"animations": {
"type": "object",
"propertyNames": {"$ref": "qmk.definitions.v1#/snake_case"},
"propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"},
"additionalProperties": {"type": "boolean"}
},
"brightness_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"brightness_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"default": {
"type": "object",
"additionalProperties": false,
"properties": {
"on": {"type": "boolean"},
"animation": {"type": "string"},
"hue": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"sat": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
"type": "string",
"enum": ["apa102", "custom", "ws2812"]
},
"hue_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"layers": {
"type": "object",
"additionalProperties": false,
@@ -699,29 +714,29 @@
"override_rgb": {"type": "boolean"}
}
},
"led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"led_count": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"led_map": {
"type": "array",
"minItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int"}
},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"pin": {
"$ref": "qmk.definitions.v1#/mcu_pin",
"$ref": "./definitions.jsonschema#/mcu_pin",
"$comment": "Deprecated: use ws2812.pin instead"
},
"rgbw": {
"type": "boolean",
"$comment": "Deprecated: use ws2812.rgbw instead"
},
"saturation_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"saturation_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"sleep": {"type": "boolean"},
"split": {"type": "boolean"},
"split_count": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"items": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
}
},
@@ -730,8 +745,8 @@
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"unlock_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"unlock_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"idle_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"unlock_sequence": {
"type": "array",
"minItems": 1,
@@ -765,8 +780,8 @@
"properties": {
"enabled": {"type": "boolean"},
"mouse_enabled": {"type": "boolean"},
"clock_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"data_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"clock_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"data_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"driver": {
"type": "string",
"enum": ["busywait", "interrupt", "usart", "vendor"]
@@ -803,11 +818,11 @@
"properties": {
"direct": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
"items": {"$ref": "./definitions.jsonschema#/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"}
"cols": {"$ref": "./definitions.jsonschema#/mcu_pin_array"},
"rows": {"$ref": "./definitions.jsonschema#/mcu_pin_array"},
"unused": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}
}
}
}
@@ -834,16 +849,16 @@
"type": "object",
"additionalProperties": false,
"properties": {
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"matrix_grid": {
"$ref": "qmk.definitions.v1#/mcu_pin_array",
"$ref": "./definitions.jsonschema#/mcu_pin_array",
"minItems": 2,
"maxItems": 2
}
}
},
"soft_serial_pin": {
"$ref": "qmk.definitions.v1#/mcu_pin",
"$ref": "./definitions.jsonschema#/mcu_pin",
"$comment": "Deprecated: use split.serial.pin instead"
},
"soft_serial_speed": {
@@ -859,7 +874,7 @@
"type": "string",
"enum": ["bitbang", "usart", "vendor"]
},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}
}
},
"transport": {
@@ -887,7 +902,7 @@
}
},
"watchdog": {"type": "boolean"},
"watchdog_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"watchdog_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"sync_matrix_state": {
"type": "boolean",
"$comment": "Deprecated: use sync.matrix_state instead"
@@ -903,8 +918,8 @@
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"polling_interval": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"main": {
@@ -914,7 +929,7 @@
},
"matrix_grid": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"items": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"$comment": "Deprecated: use split.handedness.matrix_grid instead"
}
}
@@ -936,9 +951,9 @@
"permissive_hold_per_key": {"type": "boolean"},
"retro": {"type": "boolean"},
"retro_per_key": {"type": "boolean"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"term_per_key": {"type": "boolean"},
"toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"toggle": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
},
"usb": {
@@ -946,16 +961,20 @@
"additionalProperties": false,
"properties": {
"device_ver": {
"$ref": "qmk.definitions.v1#/hex_number_4d",
"$ref": "./definitions.jsonschema#/hex_number_4d",
"$comment": "Deprecated: use device_version instead"
},
"device_version": {"$ref": "qmk.definitions.v1#/bcd_version"},
"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"},
"device_version": {"$ref": "./definitions.jsonschema#/bcd_version"},
"force_nkro": {
"type": "boolean",
"$comment": "Deprecated: use host.default.nkro instead"
},
"pid": {"$ref": "./definitions.jsonschema#/hex_number_4d"},
"vid": {"$ref": "./definitions.jsonschema#/hex_number_4d"},
"max_power": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"no_startup_check": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"polling_interval": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"shared_endpoint": {
"type": "object",
"additionalProperties": false,
@@ -964,7 +983,7 @@
"mouse": {"type": "boolean"}
}
},
"suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"suspend_wakeup_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"wait_for_enumeration": {"type": "boolean"}
}
},
@@ -972,9 +991,9 @@
"type": "object",
"additionalProperties": false,
"properties": {
"keys_per_scan": {"$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"},
"keys_per_scan": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"tap_keycode_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"tap_capslock_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"locking": {
"type": "object",
"additionalProperties": false,
@@ -989,10 +1008,10 @@
"type": "object",
"additionalProperties": false,
"properties": {
"esc_output": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"esc_input": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"led": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"speaker": {"$ref": "qmk.definitions.v1#/mcu_pin"}
"esc_output": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"esc_input": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"led": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"speaker": {"$ref": "./definitions.jsonschema#/mcu_pin"}
}
},
"ws2812": {
@@ -1003,10 +1022,10 @@
"type": "string",
"enum": ["bitbang", "custom", "i2c", "pwm", "spi", "vendor"]
},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
"rgbw": {"type": "boolean"},
"i2c_address": {"$ref": "qmk.definitions.v1#/hex_number_2d"},
"i2c_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
"i2c_address": {"$ref": "./definitions.jsonschema#/hex_number_2d"},
"i2c_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}
}
}
}

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