Compare commits

...

741 Commits

Author SHA1 Message Date
HorrorTroll
cc3823f767 Update some changes for AT32F415 (#24766)
* Fixed SPI can't compiled issue

* Added solenoid support and use 256KB ldscript for Onekey board
2025-01-03 20:33:22 +00:00
Sylvain Huguet
9a0f4e586a Add shuguet shu89 (#24758)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
2025-01-02 22:18:38 -08:00
Philip
172c349675 [Keyboard] Add handwired/dactyl_manuform/5x8 (#24726)
* add handwired/dactyl_manuform/5x8 config

* add keymap scheme

* Update keymap.c

* Update keyboard.json

* Update keyboard.json

* fix and compile worked configs

* Update readme.md

* Update readme.md

* Update readme.md

* add dynamic macros support

* change key sets on first workday/add right2left layer

* Update keyboard.json

* Update keymap.c

* move license header to top keymap.c

* Update keyboard.json

* I rewrote the layout so that the halves are not stacked.

* I rewrote the layout so that the halves are not stacked (keymap.c)

* change "serial pin" syntactic

change 
"soft_serial_pin": "D0" 
to         
"serial": {
            "pin": "D0"
        }

* fix KC_BSPC and KC_SPC on right keyboard

* Update readme.md

* Update keymap.c

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

* Update keymap.c

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

---------

Co-authored-by: skandiPC <slinkinfs@yandex.ru>
Co-authored-by: iliorik-ph <140731596+iliorik-ph@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-01-02 12:50:43 +01:00
Tocho Tochev
ac140e563c Fix link to TMK magic commands (#24773) 2025-01-02 12:45:26 +01:00
QMK Bot
57f89e5388 [CI] Regenerate Files (#24770)
Regenerate Files
2025-01-01 13:02:16 +11:00
Joel Challis
53680fa6da Fix g_led_config parse warning (#24769) 2025-01-01 01:58:41 +00:00
Joel Challis
fe2200f73a Remove invalid "effect_max" animation from keyboards (#24767) 2024-12-31 12:36:24 +00:00
chillKB
fd0a552fc1 [Keyboard] Ghoul TKL (#24762)
Co-authored-by: jack <jack@pngu.org>
2024-12-30 13:44:51 -08:00
Joel Challis
f549948bbd Skip parsing g_led_config when matrix_size is missing (#24739) 2024-12-28 06:42:54 +11:00
Nick Brassel
5593e73ba7 [bug] Djinn theme fix. (#24754)
Theme fix.
2024-12-28 06:24:53 +11:00
Drashna Jaelre
58323017ff Add ArteryTek AT32 dfu to udev rules (#24747) 2024-12-25 02:57:30 +00:00
Joel Challis
a822545da0 Set custom effect defines for LED Matrix (#24745) 2024-12-24 10:26:08 -08:00
James Gzowski
40c93bcdc6 [Keyboard] Add Somei70 (#24444)
* Somei70 addition

* Changes made, added VIA keymap, cleaned formatting

* keymap via

* Create rules.mk

* Add files via upload

* Delete keyboards/somei70/keymaps/via directory

* Fixed RGB and matrix

* Layout corrections and LED positions

* removal of rules.mk

* Moved OLED Settings to somei70.c, formatted C removed TABs, removed _LAYERC

* Forgot to include license header

* Further changes as per suggestions, replaced _user for _kb within somei70.c

* Updated keymap 'changes in Nov24'

* Requested changes
2024-12-24 11:05:43 -07:00
chalex
276f84a9a8 add chlx piche (#24252)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
2024-12-23 23:22:22 -08:00
dztech
0b5e7052f9 add mellow keyboard (#24319)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-12-23 23:13:41 -08:00
era
18f0d11737 [Keyboard] Add SIRIND Brick65S (#24315)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-12-23 23:12:54 -08:00
Bertrand Le Roy
e6fa351d3b DecenTKL numpad (#24696) 2024-12-23 22:26:44 -08:00
Bertrand Le Roy
18cca2062e DecenTKL main keyboard (#24702) 2024-12-23 22:25:37 -08:00
J
58807b0288 Clarify keymap location and format in newbs_building_firmware.md (#24663) 2024-12-22 12:23:14 -08:00
yiancar
9877af9bf8 [Keyboard] Add keycult 1800 (#24729)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: yiancar <yiancar@gmail.com>
2024-12-22 11:57:25 -08:00
Less/Rikki
f3fe59afe2 fix: mechwild/bb65 coordinate mix-up (#24738) 2024-12-21 22:14:59 -07:00
Andrew Kannan
c988584fc1 Add Reverie to QMK (#24227)
* Add Reverie to QMK

* Add backlight to reverie

* Update reverie readme and copyright notices

* Use format json to update keyboard.json formatting

* Update to have solderable and hotswap variants split

* Update copyright noticeS

* JSON formatting updates

* inherit config.h

* fix broken keymap

* Update reverie hs keyboard.json to be accurate

* Update keyboards/cannonkeys/reverie/hotswap/keyboard.json

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

* Remove VIA keymaps

* Update keymap

---------

Co-authored-by: jack <jack@pngu.org>
2024-12-18 11:16:25 -07:00
Less/Rikki
a7d12e4e8f [Keyboard] wilba_tech/wt45_h1 (#24717) 2024-12-17 21:02:05 -08:00
Joel Challis
767dfbbd3f Resolve cli.log.warn warnings (#24551) 2024-12-15 15:00:18 +11:00
Xelus22
296e4539f5 [Keyboard] swagkeys integral (#24712)
swagkeys integral

Co-authored-by: Xelus22 <>
2024-12-14 16:15:52 -07:00
Xelus22
2d33a20956 [Keyboard] add swagkeys eave (#24711)
* add swagkeys eave

* fix up

* Update keyboards/swagkeys/eave/keyboard.json

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

* Update keyboards/swagkeys/eave/keymaps/default/keymap.c

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

---------

Co-authored-by: Xelus22 <>
Co-authored-by: jack <jack@pngu.org>
2024-12-14 10:19:11 -07:00
Nick Brassel
597bbcb567 Add licensing violations page. (#24697) 2024-12-13 20:42:47 +11:00
Guido Bartolucci
d589dbb05b Added VT-40 keyboard (#24706)
* Added VT-40 keyboard

* Remove commented out code. Oops

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

* Change name of planck_layers to layers.

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

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

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

* Removed unused features that I stole from the contra config

* Removed unused features that I stole from the contra config

* fixed lower/raise keys

* make adjust layer accessible

* Added adjust key for real this time

* Update keyboards/vt40/keyboard.json

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

---------

Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-12-12 10:59:07 -07:00
Lostdotfish
d283e27bf8 [Keymap] Update rp2040_orbweaver (#24704)
* Update keymap.c

enhancement - power down indicator LEDs when host sleeps

* Update keyboards/lostdotfish/rp2040_orbweaver/keymaps/default/keymap.c

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

* Update keyboards/lostdotfish/rp2040_orbweaver/keymaps/default/keymap.c

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

---------

Co-authored-by: jack <jack@pngu.org>
2024-12-11 13:29:36 -07:00
Cipulot
847257c3c7 Addition of EC TKL X (#24647) 2024-12-08 23:34:07 -07:00
Cipulot
388c3c6d12 Addition of EC65X (#24648) 2024-12-08 23:33:40 -07:00
Lostdotfish
39958fe854 [Keyboard] Add Orbweaver (#24692)
* Create README.md

* Add files via upload

* Create keymap.c

* Update README.md

* Update keyboards/lostdotfish/rp2040_orbweaver/README.md

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

* Update keyboards/lostdotfish/rp2040_orbweaver/keyboard.json

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

* Rename README.md to readme.md

* Update readme.md

* Update keyboards/lostdotfish/rp2040_orbweaver/keyboard.json

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

* Update keyboards/lostdotfish/rp2040_orbweaver/mcuconf.h

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

* Update keyboard.json

* Update keyboards/lostdotfish/rp2040_orbweaver/config.h

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

* Update keyboard.json

* Update mcuconf.h

* Update rp2040_orbweaver.c

* Delete keyboards/lostdotfish/rp2040_orbweaver/halconf.h

* Update config.h

* Update readme.md

* Update readme.md

* Update readme.md

* Update keyboards/lostdotfish/rp2040_orbweaver/keyboard.json

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <jack@pngu.org>
2024-12-08 23:31:49 -07:00
nuess0r
3c35952944 Adding ctrl-M replacement controller for IBM Model M (#24375)
* This is a configuration of QMK intended to be used with the [ctrl-M controller](https://github.com/nuess0r/ctrl-M).

* Move USB_MAX_POWER_CONSUMPTION to data driven due to upstream change

* Clean up according to PR checklist

Check the keymaps/nuess0r how you can make better use of your Model M
including Windows, multimedia keys etc.

* Move CAPS_HOLD feature from default build to custom keymap

* More data driven configuration

Move layout definition from ctrl_m.h to info.json
Move has_ghost to info.json -> this makes the config.h file obsolete

* Implement changes suggested by review

* Removing user keymap (nuess0r) to follow current guidelines

The nuess0r keymap which is shipped with the ctrl-M controller is kept here:
https://github.com/nuess0r/qmk_firmware/tree/nuess0r_keymap

* Changed image hosting location to Github

requested in review by drashna

* Changed image hosting location to imgur

* Settings removed from info.json that are disabled by default.

* Change URL as suggested by @dunk2k

Not pointing to the QMK firmware but to the replacement controller electronics
project.

* Migrate build target markers to keyboard.json

* Adding tindie link and implement review suggestions

* Removing via keymap to follow current guidelines

Will be moved to the https://github.com/the-via/qmk_userspace_via repo.

* Add LAYOUT_all to support ANSI and ISO keyboards with the same firmware

Add a LAYOUT_all similar to other keyboards that defines all available keys.
Change the default keymap to use the _all layout so both ANSI and ISO Model M
variants work out of the box.

* Remove unnecessary enum from default keymap

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>

---------

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2024-12-08 23:21:49 -07:00
Amund Tenstad
379bb77005 fix: KC_MEDIA_PLAY_PAUSE label (#24693) 2024-12-08 22:44:12 -07:00
Feags
1c6d3d0cbc Adding new keyboard Promenade RP24S (#24689)
* adding keymaps for krado industries

* Modified default keymap.c files to be the same as via.

* Changing vendor ID for Krado Industries

* Suggested changes made

Making changes suggested by zvecr.
Removed dynamic_layer indicator, updated copyright year, deleted unused layers in keymaps.

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

* rgbpin for ws2812 changed in info.json

* Added encoder mapping rule file for default keymaps; added Fn layer shortcuts to Promenade layouts

* Added rules.mk with encoder mapping for encoder boards at keymaps level.

* Deleted extra key in LAYOUT

* Update keyboards/kradoindustries/kousa/rules.mk

Move WS2812 Driver from rules.mk to info.json

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

* Update keyboards/kradoindustries/kousa/info.json

Move WS2812 Driver from rules.mk to info.json

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

* Update keyboards/kradoindustries/kousa/keymaps/default/keymap.c

Move WS2812 Driver from rules.mk to info.json

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

* Reverting settings.json

* Encoder map code change [2]>[NUM_DIRECTIONS]

* Adding Promenade RP24S

Adding Promenade RP24S keyboard.json, default keymap, and readme

* Adding layer access to Promenade RP24S

Adding layer access to layers 1 and 2

---------

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
2024-12-08 20:30:26 -07:00
era
782f91a73a [Keyboard] Add SIRIND Tomak79S (#24684)
* Add Tomak79S

Add Tomak79S

* Update keyboards/era/sirind/tomak79s/keymaps/default/keymap.c

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

---------

Co-authored-by: jack <jack@pngu.org>
2024-12-07 23:06:03 -07:00
Ryan
a12ff287ee Organise default community layouts summary (#24500)
* Organise default community layouts summary

* Remove erroneous layout
2024-12-07 09:05:40 +11:00
Patrickemm
03937e0c86 Add Macroflow Original macropad firmware (#24538)
* Adding Macroflow Macropad

* Macroflow_Macropad

* Macroflow_Macropad

* Adding My Macropad

* Adding Macroflow Macropad

* Adding Macroflow Macropad

* Adding Macroflow Macropad

* Adding Macroflow Macropad

* Adding Macroflow Macropad

* Added License Headers

* Updated code for merge

* Added License Header

* Added Encoder Map

* Updated Files

* Fixed Matrix

* Update keyboards/macroflow_original/keyboard.json

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

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

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

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

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

* Update keyboards/macroflow_original/keymaps/default/rules.mk

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

* Update keyboards/macroflow_original/macroflow_original.c

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

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-12-05 22:43:35 -07:00
suikagiken
09fdabf37c Fix keymap.json error of keyboard/suikagiken/suika27melo (#24677) 2024-12-06 05:58:28 +11:00
Andrew Kannan
d76f7bfac3 Add Cerberus to QMK (#24226)
* Add Cerberus to QMK

* Update readme to add hotswap callouts

* Update readme formatting

* Use format json to update keyboard.json formatting

* Split Cerberus HS and Solderable into separate folders

* Update JSON formatting

* make solderable keymaps a bit more useful

* Backlight fix on solderable

* Update keyboards/cannonkeys/cerberus/hotswap/keyboard.json

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

* Remove cerberus VIA keymaps

* Apply suggestions from code review

Change some whitespace

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

* Add RGB control keycodes to cerberus keymap

* Add backlight controls to default keymap on solderable version

* Update keyboards/cannonkeys/cerberus/readme.md

---------

Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-12-05 11:18:25 -07:00
Vino Rodrigues
3c324cb5e6 [Keyboard] Add Binepad BNK8 keyboard (#24598)
* Add Binepad BNK8 keyboard

* Moved keymap.c to keymap.json

* Fix product page URL

* RGB_ -> RM_ keycodes after this round of breaking changes

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

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
2024-12-04 10:10:11 -07:00
kbd0
d01303c060 [Keyboard] add kbd0 Curve0 60 ANSI (#24609)
* add kbd0/curve0/60_ansi keyboard

* Apply suggestions from code review

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

* Apply suggestions from code review

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

---------

Co-authored-by: unknown <code-monke>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-12-04 10:07:26 -07:00
Cipulot
5dc92edf11 Addition of EC1-AT (#24645) 2024-12-04 09:57:16 -07:00
Cipulot
8094a1d182 Addition of EC Constellation (#24644)
* Addition of EC Constellation

* Fix layout macro name
2024-12-04 09:55:08 -07:00
Marco Pelegrini
88d4462e52 [Keyboard] Add Marcopad (#24636)
* Marcopad debut

* Applying core review suggestions

* Optional layout with backlit

* Line feeds and replacing dev board configs

* Function to toggle backlight

* Move to RGB Matrix

* Fixing capitalization

* Review comments

---------

Co-authored-by: Marco Pelegrini <mpelegrini@microsoft.com>
2024-12-04 09:51:40 -07:00
Can Baytok
c2bc6e2b3c [Keyboard] Add cans12erv2 (#24628)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Can Baytok <baytok@dydocon.com>
2024-12-04 08:37:02 -08:00
GustawXYZ
a794ceeb51 [Keyboard] Add dactyl_manuform_pi_pico (#23891)
Adds new keyboard under handwired/dactyl_manuform_pi_pico

It is a dactyl_manuform(5x6) running on Pi Pico micro controller
2024-12-03 16:09:24 -07:00
Stephen Edwards
85222dfd8c Add a keyboard entry for yacobo model m replacement control boards (#23827)
* add the keyboard

* Update keyboards/ibm/model_m/yacobo/keyboard.json

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

* remove dead file

* PR Comments

* standardize comments

* PR Comments

---------

Co-authored-by: Stephen Edwards <stephenedwardsemail@gmail.com>
Co-authored-by: jack <jack@pngu.org>
2024-12-03 15:43:14 -07:00
Vaarai
e7f1388317 Add cornia keyboard (#24442)
* Add cornia keyboard

* Update Fire keymap

* [Cornia/Doc] Host image on imgur

* [Cornia/config] Remove unnecessary defines

* [Cornia] Move I2C stuff to keyboard level

* [Cornia/config] Remove unnecessary defines & move all callbacks to keymap.c

* [Cornia] Use tri-layer in default keymap

* [Cornia/makefiles] remove license headers & root makefile

* [Cornia] Put common configuration to top keyboard level

* [Cornia] Remove unecessary custom keycodes

* [Cornia] Fix readme

* [Cornia] Fix RGB keycodes

* [Cornia] Fix config files

* [Cornia] Fix readme

* [Cornia] Fix mcuconf.h license
2024-12-03 15:40:07 -07:00
dependabot[bot]
f0eb2460d9 Bump JamesIves/github-pages-deploy-action from 4.7.1 to 4.7.2 (#24672)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.1 to 4.7.2.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.1...v4.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 19:31:16 +00:00
russell-myers1
93765bb0ef Update hardware_keyboard_guidelines.md to Fix Typos (#24671)
Corrected a typo in the phrase "iOS device need lessthan 100" to "iOS devices need less than 100."
This was to improve clarity and professionalism of the doc.
2024-12-03 11:35:39 -07:00
gtips
c5eeac9686 [Keyboard] Add keyboard reviung46 (#24245)
* add keyboard reviung46

* modified keyboards/reviung/reviung46/readme.md

* modified keyboards/reviung/reviung46/keyboard.json

* modified keyboards/reviung/reviung46/readme.md

* fix keyboards/reviung/reviung46/keyboard.json

* fix keyboards/reviung/reviung46/keymaps/default/keymap.c
fix keyboards/reviung/reviung46/keymaps/via/keymap.c

* fix keyboards/reviung/reviung46/keymaps/via/keymap.c

* fix keyboards/reviung/reviung46/keyboard.json

* fix keyboards/reviung/reviung46/keyboard.json

* modified reviung/reviung46/readme.md

* fixed  keyboards/reviung/reviung46/keyboard.json

* fixed keyboards/reviung/reviung46/keymaps/default/keymap.c
deleted keyboards/reviung/reviung46/keymaps/via/keymap.c
deleted keyboards/reviung/reviung46/keymaps/via/rules.mk

* fix keyboards/reviung/reviung46/keyboard.json and keyboards/reviung/reviung46/keymaps/default/keymap.c

* Update keyboards/reviung/reviung46/readme.md

---------

Co-authored-by: jack <jack@pngu.org>
2024-12-03 00:46:37 -07:00
Sắn
191172aa4e [Keyboard] Add NCR80 ALPS SKFL/FR (#24625)
* ADD NCR80 ALPS SKFL/FR

* fix

* Update config.h

* Update config.h

* Update keyboards/salane/ncr80alpsskfl/keyboard.json

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

* Update keyboards/salane/ncr80alpsskfl/keymaps/default/keymap.c

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

* Update keyboards/salane/ncr80alpsskfl/keymaps/default/keymap.c

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

* Update keyboards/salane/ncr80alpsskfl/keyboard.json

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

* Update keyboards/salane/ncr80alpsskfl/readme.md

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

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <jack@pngu.org>
2024-12-03 00:35:24 -07:00
VeyPatch
c8fe565ee6 [Keyboard] Add splitkb.com's Halcyon Kyria rev4 (#24512)
* Add Halcyon Kyria Rev4

* Remove bootmagic and unused features

* Fix encoderindex

* Update readme.md

* Remove rgblight

* Implement requested changes

* Add encoder update user

* Remove rules.mk and add VIK configuration

* Move options to config.h

* Update RGB keycodes (qmk#24484)

* implement changes

---------

Co-authored-by: harvey-splitkb <126267034+harvey-splitkb@users.noreply.github.com>
2024-12-02 14:26:10 -07:00
takashicompany
50966934b2 Add new keyboard "Jourkey" (#24409)
* jourkey

* rotary encoder

* fix keymap

* jourkey

* format json

* Update keyboards/takashicompany/jourkey/readme.md

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

* fix layout

* Update readme.md

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2024-12-02 10:10:01 -07:00
Josh Hinnebusch
09dfbf8efe [Keyboard] Add h88 gen2 (#24454)
* initial commit

* small updates

* matrix fix

* fix rgb lighting

* updates

* fix rgb pin

* pin fixes

* readme update

* json formatting

* Update keyboards/hineybush/h88_g2/config.h

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

---------

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-12-02 09:49:11 -07:00
Thomas Queste
e4e66c61ad [murcielago] Enable split watchdog (#24463) 2024-12-02 09:48:26 -07:00
Thanh Son Tran
28320f0cb5 [Keyboard] Add support S6xty5Neo Rev.2 (#24631)
* Update support S6xty5

* Delete chconf.h

* Update manufacturer, community layout for hhkb

* Update layout

* fix row index

* Update tyson60s

* Update community layout and layout name

* Update remove rgb test mode

* Update capslock led

* Apply suggestions from code review

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

* Add support for S6xty5Neo Rev.2

* Remove deprecated s6xty5

* Update layout

* Apply suggestions from code review

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

* Move mcuconf and config to outer folder

---------

Co-authored-by: Trần Thanh Sơn <son.tt1@teko.vn>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-12-02 08:37:02 -07:00
suikagiken
cd286e4b9d [Keyboard] Add suika27melo (#24616)
* add keyboard suika27melo

* Update keyboards/suikagiken/suika27melo/keyboard.json

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

* Update keyboards/suikagiken/suika27melo/keyboard.json

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

* Update keyboards/suikagiken/suika27melo/readme.md

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

* Update keyboards/suikagiken/suika27melo/readme.md

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

* change to imgur link

---------

Co-authored-by: jack <jack@pngu.org>
2024-12-02 08:30:02 -07:00
Thanh Son Tran
0ad3ffdfbc [Keyboard] Add support E8ghty (#24632)
* Update support S6xty5

* Delete chconf.h

* Update manufacturer, community layout for hhkb

* Update layout

* fix row index

* Update tyson60s

* Update community layout and layout name

* Update remove rgb test mode

* Update capslock led

* Apply suggestions from code review

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

* Remove deprecated s6xty5

* Update support for E8ghty

* remove rgb test mode

* Update community layout

* Update fix pipeline build ci

* Apply suggestions from code review

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

---------

Co-authored-by: Trần Thanh Sơn <son.tt1@teko.vn>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-12-02 08:20:48 -07:00
Sắn
fa3be8a3fb sawnsprojects/bunnygirl65: Fix typo in name (#24668) 2024-12-02 15:02:29 +00:00
Nibell
e592a7da00 [Keyboard] Added nibell micropad4x4 (#24662)
* feat: added nibell micropad4x4

* chore: updated readme

* chore: updated keymap

* feat: added layers

* chore: added bootloader doc

* Added layers

* changed RSHIFT and RCTRL

* Update keyboards/nibell/micropad4x4/keyboard.json

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

* Update keyboards/nibell/micropad4x4/readme.md

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <jack@pngu.org>
2024-12-02 08:00:29 -07:00
Stephen Onnen
be7786bfc6 Addition of Hotdog Pad (#24650)
* Add Hotdog Pad

* remove encoder_map feature

* Add rules.mk

* move rules.mk into keymap

* Update keyboards/onnenon/hotdog_pad/keyboard.json

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

* Update keyboards/onnenon/hotdog_pad/keyboard.json

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

* Update keyboards/onnenon/hotdog_pad/keymaps/default/keymap.c

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

* Update keyboards/onnenon/hotdog_pad/keymaps/default/keymap.c

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

* add hotdog_pad.c

* fix reversed encoder pins

* Update keyboards/onnenon/hotdog_pad/hotdog_pad.c

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

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2024-12-02 07:57:34 -07:00
Christian C. Berclaz
39c40f55cb Add Xlant XL keyboard (#24608)
Co-authored-by: jack <jack@pngu.org>
2024-12-01 20:05:29 -08:00
Less/Rikki
b022d3bc6b [Keyboard] Add fistbnmp (#24595) 2024-12-01 20:01:05 -08:00
Joel Challis
5eb53be671 Avoid loading keymap rules.mk twice (#24665) 2024-12-02 06:24:44 +11:00
Ryan
1da8aa8259 Improve "feature/encoder config both specified" warnings (#24641) 2024-11-30 05:30:45 +00:00
Ryan
97547ac762 Update leftover RGB keycodes (#24653) 2024-11-30 05:30:05 +00:00
dependabot[bot]
66d0d53dc1 Bump JamesIves/github-pages-deploy-action from 4.6.9 to 4.7.1 (#24654)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.9 to 4.7.1.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.9...v4.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-28 19:45:59 +00:00
Nick Brassel
9f76541b29 Merge branch 'develop' 2024-11-27 21:29:12 +11:00
Nick Brassel
eb04b94eec Merge point for 2024q4 breaking change. 2024-11-27 21:26:34 +11:00
Nick Brassel
b7b0eb76a9 develop 2024q4 changelog. (#24638) 2024-11-27 21:19:17 +11:00
Joel Challis
36f306b4a5 Provide method to save a single default layer in the full range of 0-31 (#24639) 2024-11-25 07:35:21 +11:00
Ryan
f3bae56808 Update keycodes for keyboards with RGB Matrix (#24484) 2024-11-24 12:03:08 +00:00
Nick Brassel
7d8f193988 Allow codegen of keymap.json => keymap.c without requiring layers/layout etc. (#23451) 2024-11-24 20:32:30 +11:00
Joel Challis
859dab864a Remove keyboard use of eeconfig_read_default_layer (#24635) 2024-11-23 17:43:45 +00:00
Dasky
1f7d10902a Add pointing tests (#24513) 2024-11-23 16:34:32 +00:00
Ryan
d189de24a0 Simple Python script to show polling rate (#24622) 2024-11-23 14:07:18 +00:00
Joel Challis
e4e015c0c8 Update keymaps to use PDF keycode (#24633) 2024-11-23 13:35:34 +00:00
Joel Challis
4a5bae51cd [Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#24630)
* [Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#21881)

* Apply suggestions from code review

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

---------

Co-authored-by: Nebuleon <2391500+Nebuleon@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-11-23 10:09:34 +00:00
QMK Bot
9e9b4acbde Merge remote-tracking branch 'origin/master' into develop 2024-11-21 18:47:10 +00:00
Joel Challis
57be487161 Fix rendering of reference_configurator_support.md (#24629) 2024-11-21 18:46:36 +00:00
Joel Challis
968a611476 Review fixes for layer lock feature (#24627) 2024-11-21 13:02:49 +00:00
Ryan
65a8a5ff69 qmk find: expand operator support (#24468) 2024-11-21 22:57:36 +11:00
Drashna Jaelre
c7a04bd930 Bring supported STM32F4 configs in line with F4x1 (#24413)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2024-11-21 22:54:01 +11:00
Drashna Jaelre
36b5559b99 [Core] Add Layer Lock feature (#23430)
Co-authored-by: Daniel <1767914+iamdanielv@users.noreply.github.com>
Co-authored-by: Pascal Getreuer <getreuer@google.com>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-11-21 17:31:54 +11:00
HorrorTroll
39161b9ee7 Added MCU support for ArteryTek AT32F415 (#23445) 2024-11-21 17:28:28 +11:00
QMK Bot
074bbbfb21 Merge remote-tracking branch 'origin/master' into develop 2024-11-21 06:22:51 +00:00
Ryan
638b22d057 qmk new-keyboard: separate dev board and MCU selection (#24548) 2024-11-21 17:22:14 +11:00
Ryan
9bea332a21 qmk via2json: Improve macro parsing (#24345) 2024-11-21 17:20:05 +11:00
Ryan
8cbcdcac62 qmk new-keymap: validate keymap name (#23420) 2024-11-21 17:18:51 +11:00
Pablo Martínez
88afd53b1f [CLI] Refactor painter arguments to table instead of commandline (#24456)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-11-21 17:16:46 +11:00
Ryan
9c86583981 Backward compatibility for new RGB keycode handling (#24490)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2024-11-20 09:53:33 +11:00
QMK Bot
e66fce38b2 Merge remote-tracking branch 'origin/master' into develop 2024-11-19 21:59:43 +00:00
Nick Brassel
c843ad1268 Add Sagittarius encoder support. (#24617) 2024-11-20 08:59:07 +11:00
QMK Bot
0853a8ea35 Merge remote-tracking branch 'origin/master' into develop 2024-11-19 20:38:13 +00:00
russell-myers1
0988523851 Fix typo in docs/api_development_overview.md (#24620) 2024-11-19 13:37:39 -07:00
QMK Bot
7936a791ed Merge remote-tracking branch 'origin/master' into develop 2024-11-17 15:06:31 +00:00
Amund Tenstad
3a6df60ba5 docs: fix RWIN alias (#24610) 2024-11-17 15:05:57 +00:00
QMK Bot
5ab408aef7 Merge remote-tracking branch 'origin/master' into develop 2024-11-17 07:16:16 +00:00
Naoki Katahira
da34d652d4 [Keyboard]Add Lily58 Lite Rev3(lily58/lite_rev3) (#24255)
* add Lily58 Lite Rev3 Firmware

* fix README

* Update README

* delete lite_rev3.h

* Update keyboards/lily58/lite_rev3/halconf.h

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

* Update keyboards/lily58/lite_rev3/config.h

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

* Update keyboards/lily58/lite_rev3/keyboard.json

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

* Update keyboards/lily58/lite_rev3/keyboard.json

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

* Update keyboards/lily58/lite_rev3/mcuconf.h

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

* fix image url

* fix SERIAL_DRIVER definition

* fix VIA_ENABLE definition disable

* fix cols pin

* Update keyboards/lily58/lite_rev3/config.h

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

* Update keyboards/lily58/lite_rev3/keyboard.json

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

* delete rules.mk

* Update README

* Update keyboards/lily58/lite_rev3/readme.md

---------

Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-11-17 00:15:45 -07:00
QMK Bot
310c4847d5 Merge remote-tracking branch 'origin/master' into develop 2024-11-15 18:16:23 +00:00
Amund Tenstad
f4e58eeff4 docs: move description of host_language from Macros to Language-specific Keycodes (#24584)
Co-authored-by: フィルターペーパー <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-11-15 11:15:48 -07:00
QMK Bot
79a661fe61 Merge remote-tracking branch 'origin/master' into develop 2024-11-14 18:00:36 +00:00
Ryan
46236ce3de [docs] Improve halconf/mcuconf code examples (#24597) 2024-11-14 18:00:02 +00:00
Nick Brassel
0bda0f4775 Revert removal of QK_OUTPUT_AUTO, fixup docs to reflect. (#24593) 2024-11-14 21:16:52 +11:00
QMK Bot
f8b4e24d37 Merge remote-tracking branch 'origin/master' into develop 2024-11-14 09:43:56 +00:00
Nick Brassel
a8a47c4011 Perform test compiles during qmk doctor. (#24282)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2024-11-14 20:43:23 +11:00
QMK Bot
d04789e9ea Merge remote-tracking branch 'origin/master' into develop 2024-11-13 04:29:48 +00:00
Druah
4757ef281f [Keyboard] Add Majestouch Redux (#24586)
* [Keyboard] Add Majestouch Redux

* Apply suggestions from code review

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

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-11-12 21:29:12 -07:00
QMK Bot
4e77ab66e2 Merge remote-tracking branch 'origin/master' into develop 2024-11-12 02:21:49 +00:00
Ryan
3d4da6de29 [docs] Add "edit this page" link at the bottom (#24585) 2024-11-12 02:20:56 +00:00
QMK Bot
be7b479c4a Merge remote-tracking branch 'origin/master' into develop 2024-11-12 02:20:13 +00:00
dependabot[bot]
9cd7896760 Bump JamesIves/github-pages-deploy-action from 4.6.8 to 4.6.9 (#24592)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.8 to 4.6.9.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.8...v4.6.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 02:18:51 +00:00
QMK Bot
291f1992d3 Merge remote-tracking branch 'origin/master' into develop 2024-11-10 19:12:22 +00:00
Duncan Sutherland
8cbd631fcb remove "w": 1 from /keyboards/ (#24587) 2024-11-10 12:11:48 -07:00
Ryan
a3cfb1dab7 Joystick: add support for 8-way hat switch (#24515) 2024-11-09 14:10:10 -08:00
QMK Bot
69093f6de9 Merge remote-tracking branch 'origin/master' into develop 2024-11-09 19:04:48 +00:00
Ryan
3eb172d08e [docs] Turn on icons for external links (#24580) 2024-11-09 12:04:14 -07:00
QMK Bot
a8fc265bf1 Merge remote-tracking branch 'origin/master' into develop 2024-11-09 16:49:43 +00:00
Ryan
b3f5408e72 [docs] Fix dead link to keyboard list in newbs.md (#24579) 2024-11-09 09:49:11 -07:00
QMK Bot
b06e9fdd95 Merge remote-tracking branch 'origin/master' into develop 2024-11-09 04:24:07 +00:00
Amund Tenstad
f156e57f8e [Keyboard] Add tenstad (#24571)
* [Keyboard] Add tenstad

* fix: remove settings disabled by default

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>

* fix: add serial and transport to json

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>

* fix: format json

* docs: update img url

* fix: delete now-redundant rules.mk

* fix: format keymap.json (keeping 'layout' at the top)

---------

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2024-11-08 21:24:00 -07:00
Danny Tan
10849dac68 Add Fuyu HS (#24567)
* Add Fuyu HS

* Fix keyboard.json linting

* Fix rgbmatrix configuration

* Apply suggestions from code review

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

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2024-11-08 21:23:31 -07:00
QMK Bot
94b6039620 Merge remote-tracking branch 'origin/master' into develop 2024-11-09 04:22:23 +00:00
Danny Tan
fb3a414a40 Add Idyllic Pizza Pad (#24566)
* Initial PizzaPad firmware

* Updated files to conform to PR checklist

* Fix default keymap location

* Update keyboard.json

* Apply suggestions from code review

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

* Update keyboards/idyllic/pizzapad/keymaps/default/keymap.c

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

---------

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
2024-11-08 21:21:52 -07:00
QMK Bot
fca6ad4ebc Merge remote-tracking branch 'origin/master' into develop 2024-11-08 09:10:10 +00:00
Akshay
e31eeb85db added support for shorty KB (#24518)
* added support for shorty KB

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-11-08 09:09:35 +00:00
Eric N. Vander Weele
9523ed9e32 Expose rgb_matrix_update_pwm_buffers to be available in keymaps (#24573)
* Expose rgb_matrix_update_pwm_buffers to be available in keymaps

Exposing this API enables the examples in the keyboard shutdown/reboot
documentation to compile instead of calling `rgb_matrix_driver.flush`
directly.

* Remove extraneous rgb_matrix_update_pwm_buffers prototype declarations

Now that `rgb_matrix_update_pwm_buffers` is public, there isn't the need
for local prototype declarations.
2024-11-07 23:12:59 -07:00
QMK Bot
b17322b9b8 Merge remote-tracking branch 'origin/master' into develop 2024-11-08 04:57:57 +00:00
Nick Brassel
580d18d2e9 Speed improvements to qmk find. (#24385) 2024-11-08 04:57:22 +00:00
QMK Bot
b10fa5032f Merge remote-tracking branch 'origin/master' into develop 2024-11-08 02:53:15 +00:00
HereVoLand
4f9ef90754 Add keyboard buff75 (#24297)
* Create herevoland

* Delete keyboards/herevoland

* Add files via upload

* Delete keyboards/herevoland/buff75 directory

* Add files via upload

* Delete keyboards/herevoland/buff75/buff75.h

* Delete keyboards/herevoland/buff75/rules.mk

* Delete keyboards/herevoland/buff75/halconf.h

* Update and rename info.json to keyboard.json

* Delete keyboards/herevoland/buff75/matrix_diagram.md

* Update readme.md

* Update readme.md

* Add files via upload

* Delete keyboards/herevoland/buff75/keymaps/via directory

* Update readme.md

* Update keymap.c

* Update matrix_diagram.md

* Update readme.md

* Update keyboard.json

* Update readme.md

* Update matrix_diagram.md

* Update keyboard.json

* Update keymap.c

* Update keymap.c

* Update keyboard.json

* Update mcuconf.h

* Delete keyboards/herevoland/buff75/mcuconf.h
2024-11-07 19:52:41 -07:00
QMK Bot
f2a7f4b804 Merge remote-tracking branch 'origin/master' into develop 2024-11-08 00:59:05 +00:00
Christian C. Berclaz
3cda9ffcd6 Adding support for Windstudio's Wind X R1 keyboard (#24564)
* 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.

* Added rules.mk to the default layout

* Renamed the folder R1 into r1.

* Added readme.md files for the keyboard and default layout.

* Added a license header to keymap.c

* Update keyboards/windstudio/wind_x/r1/keyboard.json

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

* Update keyboards/windstudio/wind_x/r1/keyboard.json

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

* Update keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c

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

* Update keyboards/windstudio/wind_x/r1/readme.md

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

* Added a proper link to the image (logo of windstudio)

* Wind X R1
- Corrected the default keymap with the QK_GESC key instead of the
  KC_ESC.
- Removed the unnecessary rules.mk in the default layout

* Wind X R1:
applied `qmk format-json -i` on keyboard.json to conform with the
project formatt standards.

* Added a picture of the keyboard.

* Added a caption to the image.

---------

Co-authored-by: jack <jack@pngu.org>
2024-11-07 17:58:57 -07:00
Bennett Balogh
54860ed238 [Keyboard] Add Teton78 (#24562)
* Added Teton_78 qmk keyboard files

* Fixed a syntax issue

* Waffles suggested changes

* Read me updated

Used the Alpine65 reame to model off.

* Update keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c

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

* Accidental File

* Updated readme with missing info

* Update readme.md

* Update keyboards/mountainmechdesigns/teton_78/readme.md

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

* Update keyboards/mountainmechdesigns/teton_78/readme.md

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

* Update keyboards/mountainmechdesigns/teton_78/readme.md

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

---------

Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2024-11-07 17:58:33 -07:00
QMK Bot
83950c7dd9 Merge remote-tracking branch 'origin/master' into develop 2024-11-06 07:47:08 +00:00
Diego Andres Rabaioli
f4e6af2dbe Adding SdraKb00 keyboard (#24552)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-11-06 00:46:17 -07:00
QMK Bot
7877023b48 Merge remote-tracking branch 'origin/master' into develop 2024-11-06 07:45:57 +00:00
Michael Büchler
f5f11b7c79 Add keyboards/converter/thinkpad_t6x/rpi_pico (#23696) 2024-11-06 00:45:20 -07:00
QMK Bot
cfb870d219 Merge remote-tracking branch 'origin/master' into develop 2024-11-06 07:44:10 +00:00
takashicompany
6fbfd659ff Add new keyboard "KLEC-02" (#24559)
Co-authored-by: jack <0x6a73@protonmail.com>
2024-11-06 00:43:35 -07:00
QMK Bot
81a6f3e641 Merge remote-tracking branch 'origin/master' into develop 2024-11-03 20:14:27 +00:00
takashicompany
c8cdee3e4e [Keyboard] Add KLEC-01 (#24543) 2024-11-03 12:13:56 -08:00
Joel Challis
292e0af293 Bump minimum required Python version (#24554) 2024-10-31 23:21:20 +00:00
QMK Bot
f1f875063c Merge remote-tracking branch 'origin/master' into develop 2024-10-30 11:27:27 +00:00
Joel Challis
465cbc87de Handle 'MILCInterface' object has no attribute 'log_level' error (#24549) 2024-10-30 11:26:53 +00:00
QMK Bot
834f88b0a3 Merge remote-tracking branch 'origin/master' into develop 2024-10-30 05:44:03 +00:00
Joel Challis
6693a30671 Remove appdirs from requirements.txt (#24550) 2024-10-30 05:43:31 +00:00
QMK Bot
114b3db96a Merge remote-tracking branch 'origin/master' into develop 2024-10-30 05:17:31 +00:00
Joel Challis
e6daffce46 Handle cli._subcommand.__name__ deprecation warning (#24533) 2024-10-30 05:16:59 +00:00
QMK Bot
b8dd09994a Merge remote-tracking branch 'origin/master' into develop 2024-10-29 15:56:59 +00:00
leyew
92afc8198a [Keyboard] Add Singa Kohaku (#24309)
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-29 09:56:23 -06:00
Cipulot
2aa186873e Cipulot Updates (#24539) 2024-10-28 19:54:05 +00:00
フィルターペーパー
06b7dce565 Refactor LED Breathing effect with runner (#24540) 2024-10-28 10:56:54 -07:00
QMK Bot
95406717e7 Merge remote-tracking branch 'origin/master' into develop 2024-10-28 07:00:26 +00:00
Thanh Son Tran
7c9e650b1c [Keyboard] Add S6xty PCB (#24465)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Trần Thanh Sơn <son.tt1@teko.vn>
2024-10-27 23:59:54 -07:00
David Hoelscher
7630a80791 Change default ARM hardware PWM WS2812 tick frequency to 800kHz (#24508) 2024-10-27 23:29:43 -07:00
Nikolai Grigoriev
2c0cdcf7b2 Improve consistency of syntax within data/constants/keycodes (#24528) 2024-10-28 06:23:15 +00:00
フィルターペーパー
25fac5e737 Refactor Breathing effect with runner (#24535) 2024-10-27 23:20:38 -07:00
フィルターペーパー
dd7287bf4e Update Jellybean Raindrops to respect LED range limits (#24534) 2024-10-27 23:20:14 -07:00
フィルターペーパー
d9fedce9b9 Update Pixel Rain to respect LED range limits (#24532) 2024-10-27 23:19:45 -07:00
QMK Bot
01f6fa7cd6 Merge remote-tracking branch 'origin/master' into develop 2024-10-28 05:51:14 +00:00
フィルターペーパー
644588baef Refactor Riverflow matrix effect with runner (#24520)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-27 22:51:01 -07:00
Guido Bartolucci
7005522176 Add madjax_macropad keyboard (#24524)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-27 22:50:42 -07:00
Dasky
f5b495e06e Move pointing device driver code (#24445)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-25 18:11:51 +01:00
Dasky
5c85271e48 Add timer_save and _restore functions. (#23887)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-10-25 18:10:17 +01:00
QMK Bot
f486605bab Merge remote-tracking branch 'origin/master' into develop 2024-10-25 05:36:38 +00:00
Felix Jen
32b6faaf35 Add Vanguard65 Keyboard (#24497)
* Initial commit

* update

* added two options for the slider

* comments

* added rounding for the lower end of the LED values

* moved folder, cleaned up code

* fixed layout def

* fioxed default layout

* Update keyboards/keebfront/vanguard65/config.h

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/readme.md

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

* Update keyboards/keebfront/vanguard65/rules.mk

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

* Update keyboards/keebfront/vanguard65/info.json

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

* updated default keymap to have encoder map functionality

* Update keyboards/keebfront/vanguard65/rules.mk

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

* Update keyboards/keebfront/vanguard65/config.h

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

* Update keyboards/keebfront/vanguard65/config.h

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

* add encoder_update_kb

* Update keyboards/keebfront/vanguard65/vanguard65.c

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/vanguard65.c

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

* new qmk

* misc fixes

* Test

* Removed extraneous parts of hte rules.mk

* Remove extra layers in the keymap

* Revert "Remove extra layers in the keymap"

This reverts commit c82ee931ac.

* removed excess layers

* update for latest QMK led definition

* update

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/readme.md

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Delete vanguard65.c

* run qmk format_json

* Update keyboards/keebfront/vanguard65/rules.mk

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

* Update keyboards/keebfront/vanguard65/readme.md

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

* Update keyboards/keebfront/vanguard65/readme.md

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/info.json

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

* Update keyboards/keebfront/vanguard65/keymaps/via/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

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

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/keebfront/vanguard65/keymaps/default/keymap.c

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Confirm all keymaps compile

* update for latest QMK best definitions

* Apply suggestions from code review

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

* Added minimum slider functionality.

* update readme

* Apply suggestions from code review

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

* Update keyboards/keebfront/vanguard65/keyboard.json

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

---------

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Joel Challis <git@zvecr.com>
2024-10-24 23:35:53 -06:00
QMK Bot
d00df05df1 Merge remote-tracking branch 'origin/master' into develop 2024-10-25 05:25:43 +00:00
era
bf327f7a81 [Keyboard] Add SIRIND Tomak79H (#24505)
* Add Tomak79H

Add Tomak79H

* Update

Update

* Update keyboards/era/sirind/tomak79h/tomak79h.c

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

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-24 23:25:12 -06:00
QMK Bot
d316331ab1 Merge remote-tracking branch 'origin/master' into develop 2024-10-24 09:05:24 +00:00
Daniel Weeks
3b874ee434 [Keyboard] Add xdboards/recon keyboard (#24135)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-24 02:04:51 -07:00
Ryan
bb9625ba55 RGBLight: Improve RGB Test animation (#24477) 2024-10-24 15:27:24 +11:00
QMK Bot
11db924a31 Merge remote-tracking branch 'origin/master' into develop 2024-10-23 02:14:47 +00:00
Danny
453ec007c1 Add Iris LM series of keyboards (#24510) 2024-10-22 22:14:12 -04:00
QMK Bot
b2608e3162 Merge remote-tracking branch 'origin/master' into develop 2024-10-21 21:38:44 +00:00
Jan Bláha
459de98222 Fix 6x13 default keymap (#24509)
Update keymap.c
2024-10-21 22:38:11 +01:00
Ramon Imbao
c6b2553470 Rename saevus to concreteflowers (#24249) 2024-10-19 13:25:30 +01:00
Drashna Jaelre
baa29fef9d [Bug] Fix compiliation issues with OS Detection (#24502) 2024-10-19 12:24:42 +02:00
QMK Bot
22e6a8d15e Merge remote-tracking branch 'origin/master' into develop 2024-10-18 08:06:12 +00:00
Duncan Sutherland
7f22cb52e3 Correct layouts/default/readme.md (#23805)
Update readme.md

remove orphan layout
2024-10-18 19:04:29 +11:00
Stefan Kerkmann
3f9d464412 [Core] usb_device_state: consolidate usb state handling across implementations (#24258)
* usb_device_state: add idle_rate, led and protocol

Previously all usb drivers and platform implementations (expect for our
oddball atsam) tracked the same two global variables:

- keyboard_protocol: to indicate if we are in report or boot protocol
- keyboard_idle: for the idle_rate of the keyboard endpoint

And a local variable that was exposed trough some indirection:

- keyboard_led_state: for the currently set indicator leds (caps lock etc.)

These have all been moved into the usb_device_state struct wich is
accessible by getters and setters.

This reduces code duplication and centralizes the state management
across platforms and drivers.

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

* usb_device_state: reset protocol on reset

The usb hid specification section 7.2.6 states:

When initialized, all devices default to report protocol. However the
host should not make any assumptions about the device’s state and should
set the desired protocol whenever initializing a device.

Thus on reset we should always do exactly that.

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

* keyboards: fix oversize warnings

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

---------

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-10-18 09:57:08 +02:00
QMK Bot
80f8aae3ec Merge remote-tracking branch 'origin/master' into develop 2024-10-17 16:06:54 +00:00
David Doan
36008922f8 add vector macropad (#24487)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-17 10:06:17 -06:00
QMK Bot
6602ee04af Merge remote-tracking branch 'origin/master' into develop 2024-10-16 16:17:06 +00:00
Alabahuy
2ad13037ab [Keyboard] Add JK60 RGB (#24485) 2024-10-16 10:16:31 -06:00
QMK Bot
7e53bb9965 Merge remote-tracking branch 'origin/master' into develop 2024-10-15 14:06:17 +00:00
Ryan
85a7627641 Digitizer: fix units tag in report descriptor (#24482) 2024-10-15 07:05:43 -07:00
Joel Challis
13581820b8 horrortroll/nyx/rev1: Fix compilation of custom RGB effect (#24481) 2024-10-13 11:35:35 +11:00
Joel Challis
d0d170e6a0 xiudi/xd002: Remove broken oversized multilayer_rgb keymap (#24480) 2024-10-12 12:19:18 -07:00
Joel Challis
dd0068cfd4 keebio/nyquist: Remove invalid I2C config (#24479) 2024-10-12 12:18:23 -07:00
Ryan
9884e4982b Rename RGB/HSV structs: keyboard-level code (#24476) 2024-10-12 19:00:56 +01:00
Stefan Kerkmann
5478051d74 [Core] quantum: util: add bit and bitmask helpers (#24229)
quantum: util: add bit and bitmask helpers

These helpers are handy and can prevent off-by-one errors when working
with registers and general low level bit manipulation tasks. The macros
themself are inspired by the bits.h macros from the linux kernel source
code.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-10-12 18:48:00 +02:00
Ryan
6fa11bf219 Separate RGBLight/RGB Matrix keycode handling (#23679)
* Separate RGBLight/RGB Matrix keycode handling

* Remove `_DISABLE_KEYCODES` handling

* Update RGB Matrix keycode docs

* Update underglow keycodes for previously migrated boards

* Update keycodes for boards with custom handling

* Fix typos

* Fix bad merge
2024-10-12 18:43:50 +02:00
QMK Bot
5c97a78ce6 Merge remote-tracking branch 'origin/master' into develop 2024-10-11 23:30:07 +00:00
Joel Challis
11daef82e0 zsa/moonlander: Fix execution of user callback (#24475) 2024-10-11 16:29:32 -07:00
Sadek Baroudi
9d17779832 Add svlinky converter (#24449) 2024-10-12 00:16:25 +01:00
フィルターペーパー
8844fba607 Update combo user function variable (#24467) 2024-10-12 00:13:31 +01:00
Ryan
6129af93f4 Rename RGB and HSV structs (#24471) 2024-10-12 00:10:02 +01:00
Joel Challis
a10e7cc858 Fix rendering of keymap_config.no_gui within led_update_kb (#24473) 2024-10-12 00:06:10 +01:00
Joel Challis
40d49ee487 Fix duplication of core GU_TOGG keycode (#24474) 2024-10-12 00:05:57 +01:00
QMK Bot
9246163b77 Merge remote-tracking branch 'origin/master' into develop 2024-10-11 15:49:32 +00:00
Ryan
c95f0fb671 mykeyclub/jris65/hotswap: fix keymap (#24472) 2024-10-11 09:48:59 -06:00
QMK Bot
049865c30c Merge remote-tracking branch 'origin/master' into develop 2024-10-11 03:31:45 +00:00
Woodrow Douglass
f0b5feb858 fix hotdox76v2 oled font to more closely mirror utf8 (#23807) 2024-10-10 20:31:08 -07:00
QMK Bot
eac4053a07 Merge remote-tracking branch 'origin/master' into develop 2024-10-11 03:28:29 +00:00
Joe Scotto
f43c9127bf Add Scotto37 handwired keyboard (#23938)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-10-10 20:27:56 -07:00
Victor
27d68ef8b9 Add Ploopyco functions for host state control (#23953) 2024-10-10 20:27:15 -07:00
QMK Bot
c8a87ff3fe Merge remote-tracking branch 'origin/master' into develop 2024-10-11 03:01:33 +00:00
azhizhinov
4055798807 [Keyboard] Add Piantor UV 44 (#24247)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-10 20:01:00 -07:00
QMK Bot
29bc842fe2 Merge remote-tracking branch 'origin/master' into develop 2024-10-10 19:55:27 +00:00
Drashna Jaelre
49a1a12a32 Expand count checks in keymap introspection (#24464)
* Add check Tap Dance count check to keymap introspection

* Add checks for combos and key overrides to introspection
2024-10-11 06:54:53 +11:00
QMK Bot
00db6f2397 Merge remote-tracking branch 'origin/master' into develop 2024-10-09 04:31:06 +00:00
フィルターペーパー
fb598e7e61 Fixup Lily58 keymap comment (#24466) 2024-10-09 05:30:32 +01:00
QMK Bot
8cc6127668 Merge remote-tracking branch 'origin/master' into develop 2024-10-08 18:51:56 +00:00
yiancar
c0d57a6826 Fix indicator code for NK classics (#24462)
Fix indicator code

Co-authored-by: yiancar <yiancar@gmail.com>
2024-10-08 12:51:23 -06:00
Duncan Sutherland
c3ffbe4504 add ergodox Community Layout for LAYOUT_ergodox keyboards (#22963)
initial commit
2024-10-07 17:29:43 +13:00
QMK Bot
8c27ae8fd7 Merge remote-tracking branch 'origin/master' into develop 2024-10-07 04:29:33 +00:00
Álvaro A. Volpato
1a284f2b92 Fix Caps Lock indication on Valhalla v2 (#23012)
* Fix Caps Lock indication

* User LED state function override added

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

* Change backlight enabled check and remove backlight headers

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

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-07 17:29:03 +13:00
QMK Bot
3a5be8bd22 Merge remote-tracking branch 'origin/master' into develop 2024-10-06 17:27:18 +00:00
Joel Challis
f25624dca4 Fix thumbsup:default keymap (#24459) 2024-10-06 18:26:48 +01:00
QMK Bot
a428727897 Merge remote-tracking branch 'origin/master' into develop 2024-10-06 17:02:01 +00:00
sizezero
035dcf213c Add keyboard Jris65 (#23936)
* first compiled, flashed, and tested version of jris65

* adding readmes for mykeyclub and jris65

* removed commented out code and unneeded files

* typo in build instructions

* renamed info.json to keyboard.json as per new standard

* formatted with qmk format-json

* fixed layout offset problem

* moved some settings from c/h files to json

* moved matrix from .h file to .json

* cleaned up non-json options

* moved settings from rules.mk to keyboard.json

* fix for via after removing .h file

* converted keymap.c to keymap.json

* keymap.c has been replaced by keymap.json

* FN+Backspace loads bootload

* added custom keymap for Sean

* config.h setting is only needed by via

* formatted json

* convert via keymap from .c .h .mk to keymap.json

* moved keyboard configuration to hotswap dir; note in readme that only hotswap has been tested

* Update keyboards/mykeyclub/jris65/keymaps/default/keymap.json

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

* typo

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

* blank layers do not need to be specified

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

* added other valid layouts

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

* added other valid layouts

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

* added other valid layouts

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

* added other valid layouts

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

* removed extra newline

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

* cleaned up wording in readme

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

* QMK no longer supports user keymaps

* remove settings that are already the default (false settings)

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

* add image

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

* add missing commas (formatting)

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

* add missing commas (formatting)

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

* add missing commas (formatting)

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

* re-added second layer with QK_BOOT for backspace

* make the hotswap the default keyboard

* added keyboard director prefix to DEFAULT_FOLDER

* ran qmk format-json on keyboard.json

* DEFAULT_FOLDER option is going away so don't use it

* removed via keymap as they now reside in qmk_userspace_via

---------

Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-10-06 11:01:30 -06:00
eynsai
2cb35373c6 Extended wheel reports (#24422)
extended wheel reports
2024-10-06 11:26:55 +02:00
QMK Bot
bf6de46d7f Merge remote-tracking branch 'origin/master' into develop 2024-10-06 09:09:10 +00:00
ak66666
7446c6ea7d Added a new keyboard ThumbsUp! v9 with a default keymap (#23800)
* Added a cleaned-up set of files for ThumbsUp! v9.

* Renamed the keymap for v9 as default

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

As per PR review suggestions.

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

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

As per PR review suggestions.

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

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

As per PR review suggestions.

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

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

As per PR review suggestions.

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

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

As per PR review suggestions.

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

* Update keyboards/thumbsup/rev9_promicro_4x12/info.json

As per PR review suggestions.

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

* Update keyboards/thumbsup/rev9_promicro_4x12/readme.md

As per PR review suggestions.

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

* Update keyboards/thumbsup/rev9_promicro_4x12/readme.md

As per PR review suggestions.

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

* Update keyboards/thumbsup/rev9_promicro_4x12/rules.mk

As per PR review suggestions.

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

* Update keyboards/thumbsup/rev9_promicro_4x12/info.json

As per PR review suggestions.

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

* Apply suggestions from code review

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

* Delete keyboards/thumbsup/keymaps/default/readme.md as per review recommendation.

* v9: Fixed the layout name in keymap.c file.

* v9: PR recommendatios applied - rules.mk file removed, info.json renamed to keyboard.json.

* v9: PR recommendatios applied - rules.mk file removed, info.json renamed to keyboard.json.

* v9: Fixed the copyright header modified by mistake.

* v9: Fixed the tri-layer switch as per the review recommendation.

* v9: Fixed the copyright header modified by mistake.

---------

Co-authored-by: jack <0x6a73@protonmail.com>
2024-10-06 22:08:18 +13:00
Drashna Jaelre
c9cd92ece3 [Keyboard] Corne rev4 (#24084)
* [Keyboard] Corne rev4

* Remove unneeded update interval and moved split pin to dd

* Cleanup config and errors

* Move bootmagic config to dd

* Re-add existing configs

* Additional config fixes

* shove off via keymap
2024-10-06 22:05:10 +13:00
QMK Bot
ddfb8765ec Merge remote-tracking branch 'origin/master' into develop 2024-10-06 09:01:57 +00:00
Robin Haberkorn
ff21363627 ibm/model_m/modelh: added ISO layout and keymap for Wheelwriter 10/15 keyboard modules (#24248)
These are probably compatible with the Wheelwriter 1000 as well.
2024-10-06 22:01:20 +13:00
QMK Bot
d381bb7258 Merge remote-tracking branch 'origin/master' into develop 2024-10-06 08:57:52 +00:00
Steven Karrmann
c2dd0c1845 Update Janus keyboard firmware to use EE_HANDS (#24261)
* Use EE_HANDS https://docs.qmk.fm/features/split_keyboard#handedness-by-eeprom

* Update Janus readme to indicate EEPROM handedness is used
2024-10-06 21:52:56 +13:00
QMK Bot
50e54d8e1a Merge remote-tracking branch 'origin/master' into develop 2024-10-06 08:52:12 +00:00
rahanahu
13a87ad354 hotdox76v2: Update g_led_config.matrix_co to fix key electrical matrix to led index lookup table. (#24293)
update g_led_config on hotdox76v2/hotdox76v2.c

Co-authored-by: rahanahu <ra87who@gmail.com>
2024-10-06 21:51:06 +13:00
Andre Brait
7f475b590a Tweak OS detect, add OS_DETECTION_SINGLE_REPORT (#24379)
* Default OS_DETECTION_DEBOUNCE bumped from 200ms to 250ms
* Add OS_DETECTION_SINGLE_REPORT to prevent undesired multiple reports
* Prevents random stability issues on ARM MacBooks after switching via KVM
* Works for every device I could test, including ARM MacBooks
* Disabled by default to keep current behavior
* Add Troubleshooting section on documentation
* Tweak reset logic to prevent a freeze with some KVMs

The USB stack on ARM MacBooks is more similar to that of iOS and,
for some reason, it seems to like sending packets that influence
the OS detection and results in a second OS_MACOS report being sent
at a random period of time after plugging the keyboard back. This
does not always happen and the consequences of this vary based on
what the user is doing in the callback, but since this is not
obvious and it's hard to debug, I've decided to add a flag for
those affected by such issue. The stability issue I had in mine was
a combination of factors and I found the actual cause being my own
bad math when changing the default layer, but this change alone is
also confirmed to fix it. Lastly, soem KVMs seem to leave the USB
controlled in a suspended state when cold-booting Windows, meaning
the keyboard would hang and the reset logic would not work. This
tunes it so that it can get out of such state. Also retested for
compatibility with my old KVM to ensure the logic works for both.
2024-10-06 21:50:39 +13:00
durken1
a322107cb7 add USART configuration to config.h for PS/2 mouse support (#24398) 2024-10-06 21:47:15 +13:00
Nick Brassel
305e7baa71 Allow for get_hardware_id() to be used for serial number. (#24053)
* Allow for `get_hardware_id()` to be used for serial number.

* Length checks.

* Explain length.

* Cleanup.

* Preprocessor magic.

* Use the force, Batman.

* Swap logic; if SERIAL_NUMBER is defined use that, otherwise derive it.

* Cleanup.

* Cleanup.
2024-10-06 21:44:36 +13:00
QMK Bot
65b5dc7e0f Merge remote-tracking branch 'origin/master' into develop 2024-10-06 08:40:06 +00:00
Nick Brassel
c82f675266 Install dnf copr plugin if not present (i.e. docker containers). (#24308)
* Install `dnf copr` plugin if not present (i.e. docker containers).

* Don't need to skip prompt when invoking help.
2024-10-06 21:39:37 +13:00
Andre Brait
3cf94cb308 Add easier way to set default single layer (#24376)
* Add set_single_default_layer to match set_single_persistent_default_layer
* Implements exactly the same behavior, except the write to EEPROM
2024-10-06 21:39:21 +13:00
Ryan
208ebf54a9 WS2812 API rework (#24364)
* Begin WS2812 API rework

* Move RGBW conversion, clean up color.h, fix RGBW for AVR bitbang

* Formatting & update PS2AVRGB I2C driver (untested)

* Tested ARM bitbang RGB+RGBW

* Tested ARM SPI RGB - RGBW not working

* Tested ARM PWM RGB+RGBW

* Tested RP2040 PIO driver RGB+RGBW

* Update RGBLight

* Formatting

* Fix BM60HSRGB rev2

* Fix oddforge/vea

* Fix 1k and XD002 RGBLite

* Fix model_m/mschwingen

* Fix handwired/promethium

* Rename `WS2812_LED_TOTAL` for BM60HSRGB

* Fix work_louder boards

* Fix dawn60

* Fix rgbkb/pan

* Fix neson_design/700e and n6

* Fix ergodox_ez/shine

* ergodox_ez/shine: invert indices for left half

* Fix matrix/abelx

* Fix matrix/m20add

* Remove custom rgblight driver for matrix/noah - should be done with lighting layers

* Fix LED indexes for RGBLight split

* Rename `convert_rgb_to_rgbw()` to `ws2812_rgb_to_rgbw()`

* Update WS2812 API docs

* `ergodox_ez/shine`: simplify LED index calculation

* LED/RGB Matrix: Add weak function for LED index resolution

* Bandaid fix for RGB Matrix splits not using WS2812

* `steelseries/prime_plus`: redo custom RGBLight driver

* Update keyboards/steelseries/prime_plus/rgblight_custom.c

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

---------

Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2024-10-06 21:01:07 +13:00
Dasky
43e82ed5c7 Remove binary blobs from optical sensors. (#24428)
* remove pmw srom

* remove adns9800 srom

* Update drivers/sensors/pmw33xx_common.c
2024-10-06 20:41:55 +13:00
QMK Bot
3d8cebb1a0 Merge remote-tracking branch 'origin/master' into develop 2024-10-05 16:16:55 +00:00
yiancar
e12c1fefdf NK Classic TKL ISO (#24434)
* initial_commit

* fix keymap

* Update keyboards/novelkeys/nk_classic_tkl_iso/keyboard.json

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

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-10-05 10:16:25 -06:00
QMK Bot
4bb3741288 Merge remote-tracking branch 'origin/master' into develop 2024-10-03 00:29:10 +00:00
anubhav dhiman
6a73c8299b Add atset AT2 keyboard (#24099)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: zvecr <git@zvecr.com>
2024-10-02 17:28:41 -07:00
QMK Bot
04c5deb503 Merge remote-tracking branch 'origin/master' into develop 2024-10-03 00:28:08 +00:00
DOIO2022
6374bad540 Add KB09-01 keyboard (#24044)
Co-authored-by: jack <jack@pngu.org>
2024-10-02 17:27:36 -07:00
QMK Bot
a1597e7292 Merge remote-tracking branch 'origin/master' into develop 2024-09-30 19:31:35 +00:00
dependabot[bot]
b78118b2dd Bump JamesIves/github-pages-deploy-action from 4.6.4 to 4.6.8 (#24453)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.4 to 4.6.8.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.4...v4.6.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 20:31:03 +01:00
QMK Bot
62367b2133 Merge remote-tracking branch 'origin/master' into develop 2024-09-30 00:23:53 +00:00
Pham Duc Minh
015cd23616 [Keyboard] Add DE80 PCB (#24439) 2024-09-30 01:23:21 +01:00
QMK Bot
e31ef83495 Merge remote-tracking branch 'origin/master' into develop 2024-09-29 23:27:00 +00:00
Ryan
f18a699393 [docs] reference_info_json: add type hints (#24443) 2024-09-30 00:26:31 +01:00
QMK Bot
1118821178 Merge remote-tracking branch 'origin/master' into develop 2024-09-28 00:58:56 +00:00
Joel Challis
4d6337539d Revert "Bump JamesIves/github-pages-deploy-action from 4.6.4 to 4.6.6" (#24450)
Revert "Bump JamesIves/github-pages-deploy-action from 4.6.4 to 4.6.6 (#24446)"

This reverts commit 17fac880bf.
2024-09-28 01:58:22 +01:00
QMK Bot
c7fec10bd7 Merge remote-tracking branch 'origin/master' into develop 2024-09-27 19:39:02 +00:00
dependabot[bot]
17fac880bf Bump JamesIves/github-pages-deploy-action from 4.6.4 to 4.6.6 (#24446)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.4 to 4.6.6.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.4...v4.6.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-27 20:38:32 +01:00
QMK Bot
928b5fdf50 Merge remote-tracking branch 'origin/master' into develop 2024-09-26 18:44:11 +00:00
Eric
805cde674d input_club/ergodox_infinity ST7565 call spi_stop (#24429) 2024-09-26 11:43:39 -07:00
QMK Bot
81895940e6 Merge remote-tracking branch 'origin/master' into develop 2024-09-25 19:25:35 +00:00
nopunin10did
f7393a5ab8 Fix jabberwocky key coordinates in QMK Configurator (#24435) 2024-09-25 20:25:03 +01:00
Nick Brassel
9a8f5a80e4 Remove RING_BUFFERED_6KRO_REPORT_ENABLE due to disuse. (#24433) 2024-09-24 12:53:55 +01:00
Joel Challis
a7486a8d87 Remove STM32_PWM_USE_ADVANCED references (#24432) 2024-09-24 21:04:15 +10:00
QMK Bot
c622e1439c Merge remote-tracking branch 'origin/master' into develop 2024-09-24 08:55:52 +00:00
dependabot[bot]
93cc3f58b1 Bump rollup from 4.16.4 to 4.22.4 in /builddefs/docsgen (#24430)
Bumps [rollup](https://github.com/rollup/rollup) from 4.16.4 to 4.22.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.16.4...v4.22.4)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-24 09:55:18 +01:00
QMK Bot
5da5b179d5 Merge remote-tracking branch 'origin/master' into develop 2024-09-21 18:49:05 +00:00
pancho horrillo
6a536d5588 .editorconfig: fix inline comment, tidy name section for yaml (#24416) 2024-09-21 19:48:31 +01:00
QMK Bot
a0bce36aa1 Merge remote-tracking branch 'origin/master' into develop 2024-09-21 17:34:27 +00:00
studiokestra
4665d9c405 [Keyboard] Add Fairholme PCB (#24400)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-09-21 10:29:12 -07:00
QMK Bot
bda3300bb3 Merge remote-tracking branch 'origin/master' into develop 2024-09-21 17:25:09 +00:00
Joe Scotto
2e86b05cab Add Scotto69 (PCB Edition) (#24402)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-09-21 10:24:38 -07:00
Dasky
90b87abb11 Add SteelSeries Prime+ mouse (#24408)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-09-20 15:17:49 +10:00
QMK Bot
9cbb4a2c4c Merge remote-tracking branch 'origin/master' into develop 2024-09-20 01:29:28 +00:00
plodah
61778f6136 Fix a_jazz/akc084 render (#24411)
* Alter ZXC row to have y index of 4 and bottom row to have index of 5

* Fix other issues with `]}`,  `'"` & Enter - pointed out by noroadsleft
2024-09-19 18:28:57 -07:00
QMK Bot
17be3e4a54 Merge remote-tracking branch 'origin/master' into develop 2024-09-18 14:46:48 +00:00
Dasky
1c03574424 Fix ADNS-9800 read (#24406) 2024-09-18 15:46:13 +01:00
Dasky
49e339ba8d Add LD7032 support to QP. (#20828)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2024-09-18 21:44:33 +10:00
QMK Bot
7983f7409b Merge remote-tracking branch 'origin/master' into develop 2024-09-18 09:07:31 +00:00
kbladewht
42f1763db9 Workaround for broken STM32L433 startup (#24404)
Change STM32L433 LSI to False, this is to fix board startup issue , change is same to stm32L432 board
2024-09-18 19:06:50 +10:00
QMK Bot
a93144834c Merge remote-tracking branch 'origin/master' into develop 2024-09-18 08:57:18 +00:00
dependabot[bot]
e7c009c142 Bump vite from 5.2.10 to 5.2.14 in /builddefs/docsgen (#24403)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.2.10 to 5.2.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.2.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.2.14/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 09:56:46 +01:00
Ryan
e84104fe8d Reinstate global k_rgb_matrix_split (#24388) 2024-09-15 10:08:29 +10:00
QMK Bot
d48aac6a2c Merge remote-tracking branch 'origin/master' into develop 2024-09-14 22:09:32 +00:00
jack
aa05fa649f Update PR template (#24397)
Initial
2024-09-14 16:09:01 -06:00
QMK Bot
64f533fa47 Merge remote-tracking branch 'origin/master' into develop 2024-09-13 20:53:01 +00:00
Sergey Vlasov
0b3ece1189 qmk find: Fix handling of keys with dots in filter functions (#24393) 2024-09-14 06:52:31 +10:00
nopunin10did
ae4ab5ed31 [Keyboard] Styrka Atmel Custom PCB (#24380)
* Workaround for broken ChibiOS startup (#23822)

* Add personal keymap JSON

* Delete viktus_styrka_nopunin10did_20240529.json

* Add custom Styrka Atmel firmware

* Styrka Atmel fixes to compile and readme

* Remove VIA keymap

* Remove user keymap and edit readme

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2024-09-12 22:58:02 -06:00
QMK Bot
ccae6e596a Merge remote-tracking branch 'origin/master' into develop 2024-09-12 17:31:02 +00:00
Ryan
0c19eae916 4pplet/waffling80/rev_b_ansi: fix missing keyboard.json (#24390) 2024-09-12 18:30:28 +01:00
QMK Bot
12dae4b9b7 Merge remote-tracking branch 'origin/master' into develop 2024-09-11 05:44:07 +00:00
nonameCCC
b7729fa019 [Keyboard] Add Support for PH-AC Rhythm Game Controller (#24368)
* [Keyboard] Add PHDesign PH-AC Rhythm Game Contoller

Co-authored by alt-0191

* Detail Improvement

* Update keyboard.json

* Update readme.md

* Update readme.md

* Created Encoder Matrix

* Posted Images

* Suggested Changes

* Update keyboard.json

* Update readme.md

* Update keyboard.json

* Update readme.md
2024-09-10 23:43:36 -06:00
Dasky
2c7bf34d09 Allow for inverted SPI CS logic (#23699) 2024-09-10 08:44:35 +10:00
QMK Bot
3aaa086ac8 Merge remote-tracking branch 'origin/master' into develop 2024-09-08 18:20:09 +00:00
Cipulot
e0788d19d4 Update EC60X LED count (#24374)
Update keyboard.json
2024-09-08 12:19:39 -06:00
QMK Bot
a4c286bb34 Merge remote-tracking branch 'origin/master' into develop 2024-09-06 16:31:28 +00:00
jack
f043545144 [Docs] Remove references to bootmagic lite (#24369) 2024-09-06 17:30:54 +01:00
QMK Bot
46d2e15b1f Merge remote-tracking branch 'origin/master' into develop 2024-09-06 15:00:21 +00:00
Duncan Sutherland
c44f5375ab Correct 2u backspace matrix co-ordinate for Fave65s (#24353) 2024-09-06 07:59:39 -07:00
QMK Bot
4691b72bd5 Merge remote-tracking branch 'origin/master' into develop 2024-09-06 14:42:53 +00:00
jack
6d4f8d8963 [Keyboard] Add Klor (#24302) 2024-09-06 07:42:22 -07:00
QMK Bot
a42652f8e7 Merge remote-tracking branch 'origin/master' into develop 2024-09-06 06:35:56 +00:00
4pplet
75848477fb Add waffling80 hotswap PCB (#23551)
Co-authored-by: jack <0x6a73@protonmail.com>
2024-09-05 23:35:26 -07:00
Filios92
0fd9909657 Add combo key repress feature (#22858)
Co-authored-by: jack <jack@pngu.org>
2024-09-05 23:27:20 -07:00
Mega Mind
b5c807fb4a Refactor F4 ld files to use common files (#18059) 2024-09-05 23:24:14 -07:00
QMK Bot
6af8d4210c Merge remote-tracking branch 'origin/master' into develop 2024-09-05 22:47:01 +00:00
Ryan
4a6ba1e808 Fix RGBW for WS2812 SPI driver (#24367) 2024-09-05 23:46:29 +01:00
QMK Bot
59ac1a08c8 Merge remote-tracking branch 'origin/master' into develop 2024-09-05 21:28:06 +00:00
Perry Wang
e83a36dfbf Fixes renaming typo of uno/rev2 json back to keyboard.json (#24366)
Rename keyboard.jsono to keyboard.json
2024-09-06 07:27:35 +10:00
Ryan
c3632dce99 Remove 60_tsangan_hhkb community layout (#24355) 2024-09-05 15:21:45 +10:00
QMK Bot
deb1dcf6c7 Merge remote-tracking branch 'origin/master' into develop 2024-09-04 02:57:49 +00:00
dependabot[bot]
2b55e43e54 Bump peter-evans/create-pull-request from 6 to 7 (#24361)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-04 03:57:19 +01:00
QMK Bot
a7ed82b39b Merge remote-tracking branch 'origin/master' into develop 2024-09-02 19:46:32 +00:00
dependabot[bot]
ef3a939880 Bump JamesIves/github-pages-deploy-action from 4.6.3 to 4.6.4 (#24358)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.3 to 4.6.4.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.3...v4.6.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 20:46:02 +01:00
Joel Challis
3bd303f204 Remove arm_atsam platform (#24337) 2024-09-02 03:48:17 +01:00
QMK Bot
096aca63c5 Merge remote-tracking branch 'origin/master' into develop 2024-09-01 23:13:58 +00:00
Ryan
28b6a8841f Add 60_ansi_tsangan_split_bs_rshift to community layouts (#24186) 2024-09-02 09:13:28 +10:00
Stefan Kerkmann
d210590d4d [Maintenance] builddefs: common_rules: overhaul debug information generation (#24352)
builddefs: common_rules: overhaul debug information generation

Debug information is always generated while compiling a binary, but
debugging is not the main use-case for the majority of users. Thus the
new default is to explicitly require them with `DEBUG_ENABLE=yes`. The
same is true for linker map files which are gated by the same flag.

As we target the gcc compiler and debug with the gdb debugger we can
specify the ggdb3 flag in the most verbose to get macro expansion.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-09-01 19:54:53 +02:00
QMK Bot
07535aa2c0 Merge remote-tracking branch 'origin/master' into develop 2024-09-01 16:59:52 +00:00
Stefan Otte
884a808813 doc: "docker getting started" mentions flash limitations (#24336)
* doc: "docker getting started" mentions `flash` limitations

Mass storage bootloader don't work with `flash` target.

* Update docs/getting_started_docker.md

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

---------

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2024-09-01 10:59:21 -06:00
Stefan Kerkmann
784786c00c [Core] util: uf2families: sync with upstream (#24351)
util: uf2families: sync with upstream

The upstream revision is:
5b9299df61/utils/uf2families.json

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-09-01 15:57:41 +01:00
QMK Bot
9985f5950d Merge remote-tracking branch 'origin/master' into develop 2024-09-01 03:47:16 +00:00
Duncan Sutherland
fba0408cb3 Add matrix diagram for EC 60X (#24045)
* add matrix_diagram.md

* Update matrix_diagram.md

* Update matrix_diagram.md

* Update matrix_diagram.md

* unix line endings
2024-08-31 21:46:47 -06:00
Thomas Weißschuh
9df36b25da Remove global k_rgb_matrix_split (#24348)
All users have their own local definition.
2024-08-31 21:45:49 -06:00
QMK Bot
481e6f6440 Merge remote-tracking branch 'origin/master' into develop 2024-08-31 03:49:41 +00:00
Joe Scotto
16a811604b [Keyboard] Add ScottoHazard (#24181)
* Add ScottoHazard

* Update to proper layout

* Add header license

* Update keyboards/handwired/scottokeebs/scottohazard/config.h

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

* Update keyboards/handwired/scottokeebs/scottohazard/keyboard.json

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

* Delete keyboards/handwired/scottokeebs/scottohazard/rules.mk

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-08-30 21:46:38 -06:00
QMK Bot
81109100a9 Merge remote-tracking branch 'origin/master' into develop 2024-08-31 03:44:35 +00:00
Armin Anderson
d7e1eb3e48 [Docs] Update joystick.md (#23928)
Explicit note about compatibility with ARM boards and the ADC driver
2024-08-30 21:44:03 -06:00
Duncan Sutherland
dae5e9ee06 Cutie Club Fidelity Layout Additions (#23838)
* expand layout selection for fidelity

* remove VIA

* format-json
2024-08-30 17:10:28 -06:00
QMK Bot
99e491f8b5 Merge remote-tracking branch 'origin/master' into develop 2024-08-30 02:57:36 +00:00
fenggx-a-jazz
0da9bd2709 Add a-jazz akc084 keyboard (#24224)
Co-authored-by: jack <jack@pngu.org>
2024-08-29 19:57:06 -07:00
QMK Bot
0b6b4c23d2 Merge remote-tracking branch 'origin/master' into develop 2024-08-30 02:22:23 +00:00
jack
d4811c19b0 Fix wrong OLED code for a few keyboards (#24344)
* Initial

* Other keyboards too
2024-08-29 20:21:53 -06:00
QMK Bot
6644f41e91 Merge remote-tracking branch 'origin/master' into develop 2024-08-30 02:20:35 +00:00
Ryan
496f448090 Fix two firmware size warnings (#24343) 2024-08-29 20:20:05 -06:00
QMK Bot
141214122d Merge remote-tracking branch 'origin/master' into develop 2024-08-30 01:56:58 +00:00
Antoine Bertin
d95690d89c [Keyboard] Fix splitkb/corne OLED code (#24260) 2024-08-29 19:56:25 -06:00
QMK Bot
425a4b7c57 Merge remote-tracking branch 'origin/master' into develop 2024-08-28 14:53:11 +00:00
leyew
fd65bd5ae0 [Keyboard] Add Acid and Co. Stellaron TKL (#24154) 2024-08-28 15:52:02 +01:00
QMK Bot
a5d4ed98fd Merge remote-tracking branch 'origin/master' into develop 2024-08-28 14:39:11 +00:00
Thanh Son Tran
4b1f916b99 [Keyboard] Add Tyson60s keyboard (#24047) 2024-08-28 15:38:37 +01:00
Nick Brassel
60308a2c0f These should really have been 0.0.6. 2024-08-27 10:55:32 +10:00
Nick Brassel
70cbf08b67 Add new connection keycodes for Bluetooth, 2.4GHz. (#24251) 2024-08-27 10:52:23 +10:00
QMK Bot
ecf725b356 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 22:06:15 +00:00
Nick Brassel
0f43486537 Changelog update with actual qmk_userspace_via link. (#24332) 2024-08-26 23:05:45 +01:00
QMK Bot
4b7de2ba5d Merge remote-tracking branch 'origin/master' into develop 2024-08-26 21:28:57 +00:00
Joel Challis
530e044762 Update PR Checklist for 'via' keymaps (#24330) 2024-08-27 07:28:23 +10:00
Colin Kinloch
cc3bc2af11 Add ability to poweroff ADNS5050 sensor (#24223)
* Add ability to poweroff ADNS5050 sensor

* ploopyco/trackball_nano: Poweroff ADNS5050 on suspend
2024-08-26 14:06:53 -06:00
QMK Bot
df5800b6c4 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 11:59:18 +00:00
zlabkeeb
8b42e5fb8f [Keyboard] Add Macropad VRYNBOARD (#23931)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: ZahraNetMe <vericheri@gmail.com>
2024-08-26 21:58:48 +10:00
QMK Bot
474cc01d68 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 05:14:37 +00:00
Ryan
c134822486 Update next breaking changes date (#24331) 2024-08-26 15:14:06 +10:00
QMK Bot
b481e7a8f0 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 03:35:14 +00:00
MrMustardTBC
63206aebcf fixed spelling errors in example 4 (#24318) 2024-08-26 04:34:42 +01:00
QMK Bot
d5c98d0539 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 03:34:10 +00:00
Joel Challis
c05cafa3df Add via keymaps to gitignore (#24329) 2024-08-26 04:33:40 +01:00
QMK Bot
0c43a15ce6 Merge remote-tracking branch 'origin/master' into develop 2024-08-26 02:56:51 +00:00
Joel Challis
7a4f21d340 Reject via keymaps in lint (#24325) 2024-08-26 03:56:03 +01:00
フィルターペーパー
11f2209087 Segregrate keycode at pre-process record quantum (#24194) 2024-08-26 10:20:30 +10:00
Nick Brassel
656fea4dab Branch point for 2024q4 breaking change 2024-08-26 10:04:37 +10:00
Nick Brassel
170ed7ba9b Merge branch 'master' into develop 2024-08-26 10:04:02 +10:00
Nick Brassel
5d76c5280d Merge branch 'develop' 2024-08-26 10:01:57 +10:00
Nick Brassel
81dcf2b547 Merge point for 2024q3 breaking change -- take 2 2024-08-26 10:00:11 +10:00
Nick Brassel
5741eb7b10 Fixup python tests for missing via keymaps. 2024-08-26 09:57:35 +10:00
Nick Brassel
9976d0f547 Merge point for 2024q3 breaking change 2024-08-26 09:49:08 +10:00
Nick Brassel
acac787842 2024q3 breaking changes changelog (#24324)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-08-26 09:46:12 +10:00
Nick Brassel
45dc2499dc Remove all via-enabled keymaps, including via. (#24322) 2024-08-26 07:51:22 +10:00
Ryan
8f6d2ac53c Update Underglow keycodes (#23765)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-08-25 22:15:07 +10:00
Nebuleon
fc9d848a77 Fix build failure on zsa/moonlander with DYNAMIC_MACRO_ENABLE (#24316) 2024-08-24 14:10:48 +01:00
QMK Bot
b3bb19a96d Merge remote-tracking branch 'origin/master' into develop 2024-08-21 21:56:55 +00:00
dependabot[bot]
e6a898e3ee Bump tj-actions/changed-files from 44 to 45 (#24313)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44 to 45.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v44...v45)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-21 22:56:22 +01:00
QMK Bot
048f2ddcbf Merge remote-tracking branch 'origin/master' into develop 2024-08-21 14:16:01 +00:00
Danny
373364afd1 Add Quefrency Rev. 6 (#24291)
* Initial commit of Quefrency Rev. 6

* Use more memory for storing VIA layout options

* Add missing underglow LED

* Set bootmagic keys for each half, split transport matrix for RGB, update pinout for right half

* Enable encoders

* Add/update license headers

* Remove fudge thing

* Remove EEPROM leveling specification now that is the default

* Fix bootmagic position for right half
2024-08-21 10:15:06 -04:00
QMK Bot
31b962b339 Merge remote-tracking branch 'origin/master' into develop 2024-08-19 19:05:10 +00:00
Joel Challis
557e4e7ffc Fix dead link in porting_your_keyboard_to_qmk.md (#24306) 2024-08-19 20:04:37 +01:00
QMK Bot
97a0091bbb Merge remote-tracking branch 'origin/master' into develop 2024-08-19 18:08:45 +00:00
Joel Challis
e910c89e0b Fix auto 'keyboard' label (#24221) 2024-08-19 19:08:11 +01:00
フィルターペーパー
21b84596e7 Enhance overlapping mouse keys control (#23341)
Enhance the overlapping mouse key press acceleration (introduced in #21494) with user preprocessor controls.
2024-08-19 03:18:28 +01:00
Drashna Jaelre
e9cb9f42a5 [Keyboard] Update ZSA Moonlander (#23911) 2024-08-19 01:13:38 +01:00
QMK Bot
48d3edd66f Merge remote-tracking branch 'origin/master' into develop 2024-08-18 21:33:42 +00:00
Joel Challis
1355eb493f Default STM32G431 back to wear_leveling EFL driver (#24299) 2024-08-19 07:33:11 +10:00
Drashna Jaelre
ab4c13e835 Add dynamic macro keyboard callbacks (#24142) 2024-08-18 01:35:10 +01:00
QMK Bot
faf51c7449 Merge remote-tracking branch 'origin/master' into develop 2024-08-17 20:41:16 +00:00
marksard
072947e573 Remove like_jis keymap. (#24292) 2024-08-17 21:40:45 +01:00
QMK Bot
8db800bfba Merge remote-tracking branch 'origin/master' into develop 2024-08-15 14:22:39 +00:00
Wilfried JEANNIARD
fe50774cb4 [Keyboard] Add/Update Pimoroni keybow 2040 (#23986)
* [Keyboard] Add pimoroni/keybow2040

* [Keyboard] Update pimoroni/keybow2040

Co-Authored-By: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-Authored-By: Joel Challis <git@zvecr.com>
Co-Authored-By: Sandy Macdonald <1325593+sandyjmacdonald@users.noreply.github.com>

---------

Co-authored-by: Tony Finch <dot@dotat.at>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Sandy Macdonald <1325593+sandyjmacdonald@users.noreply.github.com>
2024-08-15 15:22:07 +01:00
QMK Bot
5f8aaf236f Merge remote-tracking branch 'origin/master' into develop 2024-08-15 13:37:59 +00:00
Joel Challis
39324e642f Update Discord URL (#24283) 2024-08-15 14:37:27 +01:00
QMK Bot
1f02cd45af Merge remote-tracking branch 'origin/master' into develop 2024-08-15 11:11:07 +00:00
Ryan
b07a68230d Fix version check in Fedora install script to be >= 39 (#24281) 2024-08-15 12:10:35 +01:00
Drashna Jaelre
2d2eed9594 [Keyboard] Move Planck EZ to ZSA vendor folder (#23917) 2024-08-14 14:27:37 +01:00
フィルターペーパー
822a4580f4 Refactor starlight RGB matrix effects (#24202)
* Use unsigned integers
* Use lib8tion random8 function
* Test for valid LED flags
* Use rgb_matrix_hsv_to_rgb function
2024-08-14 00:55:00 +01:00
フィルターペーパー
91f293d0c7 Refactor riverflow RGB matrix loop (#24203)
Check for LED flags at the start of loop to skip early
2024-08-14 00:54:01 +01:00
Izumemori
40f2575b56 Fix NKRO and Mouse Emulation on arm_atsam (#23945) 2024-08-13 09:06:24 +10:00
QMK Bot
45397a44e3 Merge remote-tracking branch 'origin/master' into develop 2024-08-12 13:26:02 +00:00
Nick Brassel
dccada95aa Remove debugging prints. (#24271) 2024-08-12 23:25:29 +10:00
QMK Bot
2c6409fdd8 Merge remote-tracking branch 'origin/master' into develop 2024-08-12 12:34:54 +00:00
Nick Brassel
380e0c9cad Userspace: add support for adding environment variables during build (#22887) 2024-08-12 22:34:22 +10:00
Joel Challis
783f97ff32 Remove handling of keyboard level keymap templates (#24234) 2024-08-12 22:29:05 +10:00
QMK Bot
ca6ba30a72 Merge remote-tracking branch 'origin/master' into develop 2024-08-12 10:36:29 +00:00
Nick Brassel
158aaef78c ChibiOS update script updates. (#24267) 2024-08-12 20:35:56 +10:00
Joel Challis
019b6f67b2 Remove keyboard level QK_BOOT implementations (#24231) 2024-08-10 13:50:36 +01:00
jack
339b820520 Fixup handwired/dactyl_minidox (#24253)
* Initial

* Fix missing bracket

* Fix keymap name

* Fix rgb matrix coordinates

* Remove unncessary centre point
2024-08-07 21:48:44 -06:00
QMK Bot
fc209e1c51 Merge remote-tracking branch 'origin/master' into develop 2024-08-07 20:44:32 +00:00
Andrew Kannan
5acc3b2b7b Add extra compatibility to Sat75 HS PCB (#24156) 2024-08-07 14:40:31 -06:00
QMK Bot
c0e2ecb825 Merge remote-tracking branch 'origin/master' into develop 2024-08-07 20:38:19 +00:00
stephen776
78900720fd JJ50 v2 Support (#24212)
* add support for JJ50 V2 PCB

* fix bootloader config

* update mousekey setting

* run format-json

---------

Co-authored-by: Steve Jacobs <sjacobs@truefit.io>
2024-08-07 14:34:21 -06:00
QMK Bot
142128740d Merge remote-tracking branch 'origin/master' into develop 2024-08-07 20:29:11 +00:00
Sắn
c67c3d375b Add support for bunnygirl65 (#24244)
* Add support for bunnygirl65

* Update keyboard.json

* Update keymap.c

* Update keymap.c

* Update keyboards/sawnsprojects/bunnygirl65/readme.md

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

* Update keyboards/sawnsprojects/bunnygirl65/keyboard.json

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

* Update keyboards/sawnsprojects/bunnygirl65/keyboard.json

---------

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
2024-08-07 14:28:41 -06:00
Joel Challis
ac1b488170 Refactor printedpad (#24236) 2024-08-04 20:34:57 +01:00
Joel Challis
b5b4e93857 Refactor orthocode (#24237) 2024-08-04 15:14:30 +01:00
Ryan
1f942bb17e Small tweaks to keymap generation (#24240) 2024-08-04 12:28:40 +01:00
Nick Brassel
5c10bd3d8c Fixup changelog entry path. 2024-08-04 11:44:24 +10:00
Joel Challis
0fbe150303 Remove unnecessary RGB Matrix shutdown hooks (#24238) 2024-08-04 02:07:02 +01:00
Ryan
0b4065b50c hs60/v1: separate into ANSI and ISO revisions (#24136) 2024-08-04 02:03:54 +01:00
QMK Bot
b04fee4ff7 Merge remote-tracking branch 'origin/master' into develop 2024-08-03 23:48:33 +00:00
eason
75402109e9 Add Void65h (#24183) 2024-08-04 00:46:12 +01:00
QMK Bot
ddc60da839 Merge remote-tracking branch 'origin/master' into develop 2024-08-03 23:38:27 +00:00
Ryan
fa657fef70 atlantis/ak81_ve: move RGB Matrix LED config to data driven (#24115) 2024-08-04 00:38:26 +01:00
Ryan
eb78ca1c1a handwired/p65rgb: move RGB Matrix LED config to data driven (#24124) 2024-08-04 00:37:57 +01:00
QMK Bot
bb20093b24 Merge remote-tracking branch 'origin/master' into develop 2024-08-03 22:17:52 +00:00
Christian Greene
d28a50e176 FX19 Support (#24220) 2024-08-03 23:11:49 +01:00
Joel Challis
8808fffc2f Refactor opendeck/32 (#24233) 2024-08-03 23:10:09 +01:00
Ryan
9f387f525c Remove handwired/pytest/has_template (#24232) 2024-08-03 16:55:02 +01:00
QMK Bot
807ba71c89 Merge remote-tracking branch 'origin/master' into develop 2024-07-31 00:08:24 +00:00
akyp
c7662e4f36 [Keyboard] Add archerkeyboard/desire65 (#23776)
Co-authored-by: jack <0x6a73@protonmail.com>
2024-07-31 10:07:51 +10:00
QMK Bot
5439507f5e Merge remote-tracking branch 'origin/master' into develop 2024-07-30 21:22:14 +00:00
Cipulot
73cb6fd89f cipulot/ec_60x: Fix VIA layout options (#24217)
This fixes the issue of one layout option not being applied correctly because it was out of bound.
2024-07-30 22:21:42 +01:00
Nick Brassel
8ca082892a Eliminate use of #include "../default/keymap.c". (#24215) 2024-07-30 13:06:15 +10:00
QMK Bot
9c1e1d1fee Merge remote-tracking branch 'origin/master' into develop 2024-07-28 18:16:45 +00:00
Dasky
d538451adb Remove AVR GCC version warning (#24206) 2024-07-28 19:16:15 +01:00
Joel Challis
02b43b4b60 Refactor use of matrix_scan_kb (#24200) 2024-07-26 22:02:51 -07:00
Joel Challis
20ae67ba01 Remove duplicate calls to housekeeping_task_user (#24201) 2024-07-26 21:56:33 -07:00
Less/Rikki
938837e881 refactor: keyboard/ncr80/r2 (#22670)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-07-26 19:14:00 -07:00
QMK Bot
b3d8d5671c Merge remote-tracking branch 'origin/master' into develop 2024-07-26 00:42:26 +00:00
Dasky
cf84ea7662 Fix Reverb lockup when using GCC14 (#24199) 2024-07-26 01:41:54 +01:00
Dasky
56ebd3b829 Rename promicro_rp2040 converter to sparkfun_pm2040 (#24192) 2024-07-25 22:51:32 +01:00
Joel Challis
f98ddf02f4 Remove split.transport.protocol=serial (#24191) 2024-07-24 22:11:18 +01:00
QMK Bot
c25b3bbe90 Merge remote-tracking branch 'origin/master' into develop 2024-07-24 05:17:22 +00:00
Nick Brassel
8c35011d0a [CLI] Only generate files if contents change. (#24038)
Don't overwrite if the content doesn't change.
2024-07-24 06:16:51 +01:00
QMK Bot
c45e75037b Merge remote-tracking branch 'origin/master' into develop 2024-07-24 03:51:08 +00:00
Joel Challis
8c5acdea12 Update to automatic-approve-action fork (#24188) 2024-07-24 04:50:38 +01:00
QMK Bot
783f465cd4 Merge remote-tracking branch 'origin/master' into develop 2024-07-23 23:06:19 +00:00
dependabot[bot]
60c5ad821c Bump actions/labeler from 4 to 5 (#22608)
* Bump actions/labeler from 4 to 5

Bumps [actions/labeler](https://github.com/actions/labeler) from 4 to 5.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* Update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: zvecr <git@zvecr.com>
2024-07-24 00:05:50 +01:00
フィルターペーパー
59c275afbc Check LED flags for Pixel Fractal effect (#23881) 2024-07-23 19:34:00 +01:00
Joel Challis
bcfe3a0718 Migrate split.soft_serial_pin to split.serial.pin H-O (#24185) 2024-07-23 15:49:11 +01:00
QMK Bot
adb884761d Merge remote-tracking branch 'origin/master' into develop 2024-07-23 11:21:45 +00:00
Ryan
622dc56250 kingly_keys/ave: adjust layout names (#24179) 2024-07-23 21:20:17 +10:00
Joel Challis
e8103722bc Migrate split.soft_serial_pin to split.serial.pin 0-H (#24155) 2024-07-23 12:13:05 +01:00
Joel Challis
ce1adce696 Migrate split.soft_serial_pin to split.serial.pin O-Z (#24146)
Migrate split.soft_serial_pin to split.serial.pin
2024-07-23 12:12:52 +01:00
QMK Bot
df2d30fd2c Merge remote-tracking branch 'origin/master' into develop 2024-07-23 11:04:03 +00:00
Ryan
d079372580 meme: adjust layout names (#24178) 2024-07-23 21:03:02 +10:00
Cipulot
883821fa62 Rename EC Type-K (#24180)
Board name order change and default brightness change
2024-07-23 11:38:03 +01:00
QMK Bot
599899c5fb Merge remote-tracking branch 'origin/master' into develop 2024-07-23 10:37:50 +00:00
Ikko Eltociear Ashimine
af70e3759a [docs] update serial.md (#24182)
capabilites -> capabilities
2024-07-23 11:37:19 +01:00
QMK Bot
1eaead3ba4 Merge remote-tracking branch 'origin/master' into develop 2024-07-22 16:13:06 +00:00
Ryan
4bcc80ad46 merge/um80: reduce firmware size (#24177) 2024-07-22 17:12:55 +01:00
Ryan
d09c11dc78 kprepublic/bm40hsrgb/rev2: reduce firmware size (#24176) 2024-07-22 17:12:34 +01:00
fauxpark
9da9b245d3 Merge remote-tracking branch 'upstream/master' into develop 2024-07-23 01:40:23 +10:00
Ryan
82f9019cc9 melgeek/mojo68/rev1: reduce firmware size (#24171) 2024-07-23 01:29:40 +10:00
Ryan
4e2effc538 rubi: reduce firmware size (#24170) 2024-07-23 01:16:00 +10:00
QMK Bot
a9d6825795 Merge remote-tracking branch 'origin/master' into develop 2024-07-22 15:05:12 +00:00
Ryan
8d5517fa63 doro67/rgb: reduce firmware size (#24169) 2024-07-23 01:04:34 +10:00
QMK Bot
8ef275789c Merge remote-tracking branch 'origin/master' into develop 2024-07-22 14:53:04 +00:00
Ryan
ee1505971f handwired/hnah108: reduce firmware size (#24168) 2024-07-23 00:52:31 +10:00
QMK Bot
a5e9926c45 Merge remote-tracking branch 'origin/master' into develop 2024-07-21 20:30:14 +00:00
yiancar
b6e1a20950 Keycult TKL (#24148)
Co-authored-by: yiancar <yiancar@gmail.com>
2024-07-21 13:29:45 -07:00
Dasky
cced3ee622 Fix incorrect conflict resolution 2024-07-21 01:53:11 +01:00
Dasky
4e20740efa Merge branch 'master' into develop 2024-07-21 01:08:51 +01:00
Dasky
f2c789bb4a Fix build failures noticed in #24163 CI log. (#24164) 2024-07-21 09:56:39 +10:00
Dasky
d5cc00ab62 Remove instances of MASTER_LEFT. (#24163) 2024-07-20 23:49:20 +01:00
QMK Bot
1e4435f22d Merge remote-tracking branch 'origin/master' into develop 2024-07-20 22:02:26 +00:00
Ryan
fab50be817 mwstudio/mw75: reduce size (#24161) 2024-07-21 07:59:45 +10:00
Ryan
f04fd13dff mechlovin/delphine/rgb_led: reduce size (#24160) 2024-07-21 07:57:10 +10:00
QMK Bot
23e7d93d0e Merge remote-tracking branch 'origin/master' into develop 2024-07-20 21:53:32 +00:00
Ryan
eb60235cd5 handwired/tractyl_manuform/5x6_right/arduinomicro: reduce size (#24159) 2024-07-21 07:53:04 +10:00
QMK Bot
8a58ad27a2 Merge remote-tracking branch 'origin/master' into develop 2024-07-20 13:04:27 +00:00
Joel Challis
2fb9816c77 Remove incorrect use of split.main (#24158) 2024-07-20 14:03:57 +01:00
QMK Bot
2764e48146 Merge remote-tracking branch 'origin/master' into develop 2024-07-20 09:57:21 +00:00
Ryan
6fbe91aecd keychron/q2: fix RGB Matrix config for JIS variant (#24138) 2024-07-20 10:56:51 +01:00
QMK Bot
a6c8c41c68 Merge remote-tracking branch 'origin/master' into develop 2024-07-19 05:56:43 +00:00
Ryan
a6857872f2 kopibeng/xt60/xt60_singa: reduce firmware size (#24149) 2024-07-19 06:56:00 +01:00
QMK Bot
78fa0f5ca0 Merge remote-tracking branch 'origin/master' into develop 2024-07-19 05:55:19 +00:00
Ryan
56323f75c6 pixelspace/capsule65i: reduce firmware size (#24150) 2024-07-19 06:54:50 +01:00
QMK Bot
ddb679ba88 Merge remote-tracking branch 'origin/master' into develop 2024-07-19 05:54:27 +00:00
Ryan
11031adc1b clueboard/66/rev3: reduce firmware size (#24152) 2024-07-19 06:53:56 +01:00
Ryan
7b4e806c25 Move LED Matrix LED config to data driven (#24122) 2024-07-19 08:13:49 +10:00
QMK Bot
8b46500a74 Merge remote-tracking branch 'origin/master' into develop 2024-07-18 22:05:16 +00:00
Ryan
d79f46e408 vertex/angler2: reduce firmware size (#24140) 2024-07-19 08:04:40 +10:00
Joel Challis
5a0112df08 Migrate half-duplex SERIAL_USART_TX_PIN to DD (#24143) 2024-07-18 22:21:26 +01:00
QMK Bot
7ca0424189 Merge remote-tracking branch 'origin/master' into develop 2024-07-18 07:11:15 +00:00
Ryan
2ddfd60be7 amjkeyboard/amj60: reduce firmware size (#24139) 2024-07-18 08:10:45 +01:00
Joel Challis
4ab36df48f Move split.soft_serial_pin to split.serial.pin (#24127) 2024-07-18 09:02:53 +10:00
Nick Brassel
daa777d6fb [WIP] Adds bus acquire/release semantics to SPI start/stop. (#23439) 2024-07-18 08:59:08 +10:00
QMK Bot
e69be076fc Merge remote-tracking branch 'origin/master' into develop 2024-07-17 19:31:51 +00:00
Joel Challis
63ef6516d3 Avoid path issues with qmk flash on Windows (#24130) 2024-07-17 20:31:18 +01:00
Ryan
275e9de350 Remove pointless RGB_MATRIX_LED_COUNTs (#24133) 2024-07-17 16:13:40 +01:00
QMK Bot
35356c4623 Merge remote-tracking branch 'origin/master' into develop 2024-07-16 04:43:55 +00:00
yiancar
522bf1daf2 Skelett40 (#24121)
Co-authored-by: yiancar <yiancar@gmail.com>
2024-07-15 21:43:26 -07:00
Nick Brassel
8abaa3bc2d Add support for key override introspection. (#24120) 2024-07-16 09:22:17 +10:00
QMK Bot
fef8e7195b Merge remote-tracking branch 'origin/master' into develop 2024-07-15 08:42:14 +00:00
Ryan
a763dd5bbd matrix/noah: move RGB Matrix LED config to data driven (#24117) 2024-07-15 18:41:44 +10:00
QMK Bot
65143b08a3 Merge remote-tracking branch 'origin/master' into develop 2024-07-15 05:30:07 +00:00
Logan Butler
c70c99367a Add matchstickworks normiepad (#23183)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-07-14 22:29:37 -07:00
QMK Bot
fd44e96110 Merge remote-tracking branch 'origin/master' into develop 2024-07-15 05:06:22 +00:00
Ryan
b5b06f1094 checkerboards/axon40: adjust layout name (#24119) 2024-07-15 06:04:27 +01:00
Ryan
caa7599b83 checkerboards/pursuit40: adjust layout name (#24118) 2024-07-15 06:04:00 +01:00
QMK Bot
40d617f812 Merge remote-tracking branch 'origin/master' into develop 2024-07-15 04:59:04 +00:00
Lex Brugman
c2dbbc060a Add MMkeyboard Class60 (#22972)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2024-07-14 21:58:35 -07:00
Robbie
d885963e38 [Keyboard] Whitefacemountain Ampersand (#23437)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-07-14 21:23:13 -07:00
Ryan
85447bd53b LED drivers: extract documentation from LED/RGB Matrix pages (#23630) 2024-07-15 12:03:30 +10:00
Tvrd Rad Keyboards
21b9b70c50 Add TRKeyboard TRK1 keyboard (#23642) 2024-07-13 23:00:26 -07:00
Joel Challis
c0aca9f45c Various fixes for keyboards not implementing callbacks correctly (#24116) 2024-07-14 06:38:04 +01:00
QMK Bot
e76069ea4e Merge remote-tracking branch 'origin/master' into develop 2024-07-13 13:41:12 +00:00
Ryan
875eb43a28 dp60: move RGB Matrix LED config to data driven (#24022) 2024-07-13 23:40:36 +10:00
QMK Bot
2db93b5945 Merge remote-tracking branch 'origin/master' into develop 2024-07-13 13:28:04 +00:00
Alabahuy
2908f0b846 Add Aums Work keyboard (#23600) 2024-07-13 06:24:11 -07:00
QMK Bot
3ebf9880ca Merge remote-tracking branch 'origin/master' into develop 2024-07-13 13:19:36 +00:00
Ryan
a3d938d822 ryanskidmore/rskeys100: move RGB Matrix LED config to data driven (#24114) 2024-07-13 14:19:07 +01:00
QMK Bot
83a7506438 Merge remote-tracking branch 'origin/master' into develop 2024-07-13 12:44:22 +00:00
Yue Wu
6dfd7ed46f Fix i2c received value in georgi and bajjak (#24113) 2024-07-13 22:43:52 +10:00
Joel Challis
f0807ea64f Migrate SPLIT_HAND_PIN to json (#23924) 2024-07-13 13:29:16 +01:00
Joel Challis
26e84c513c Migrate SERIAL_DRIVER to json (#23925) 2024-07-13 13:12:35 +01:00
Ryan
1552cf2ddc Update atomic GPIO macros in keyboard custom matrix (#23796) 2024-07-13 18:41:05 +10:00
QMK Bot
5c43a9bed1 Merge remote-tracking branch 'origin/master' into develop 2024-07-13 02:11:31 +00:00
c0ldbru
7b5d7907df adds veilid SAO macropad (#23868)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: c0ldbru <c0ldbrusec@gmail.com>
2024-07-12 19:11:00 -07:00
QMK Bot
cfd0ab2198 Merge remote-tracking branch 'origin/master' into develop 2024-07-12 20:47:09 +00:00
paradoxskin
79ad561b67 Fix typo in Keychron comments: "lcok" to "lock" (#24107) 2024-07-12 14:46:38 -06:00
QMK Bot
85cf8b5183 Merge remote-tracking branch 'origin/master' into develop 2024-07-12 09:36:02 +00:00
Ryan
5a5f68038e mechwild/bbpad: fix build (#24106) 2024-07-12 10:35:32 +01:00
Joel Challis
52ee9f2ce1 Convert eeconfig_init_kb implementations to config (#24087) 2024-07-12 08:06:19 +01:00
Joel Challis
2c2885639e Remove broken keymap from keebio/iris (#24094) 2024-07-12 02:42:23 +01:00
QMK Bot
57b7f8534b Merge remote-tracking branch 'origin/master' into develop 2024-07-12 00:20:05 +00:00
Nick Brassel
4d4d7b76b0 [CI] Disable Discord webhook when CI run is cancelled. (#24104)
* Disable Discord webhook when CI run is cancelled.

* Include link to binaries in Discord output.
2024-07-12 01:19:33 +01:00
QMK Bot
6051fc87e3 Merge remote-tracking branch 'origin/master' into develop 2024-07-12 00:19:31 +00:00
zvecr
c58c5fa8fa Fix missing hashbang 2024-07-12 01:18:50 +01:00
QMK Bot
aaf9074e85 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 23:49:18 +00:00
Nick Brassel
565bb704e0 fixup CI exec flag 2024-07-12 09:48:38 +10:00
QMK Bot
1ba4fef711 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 23:19:55 +00:00
Nick Brassel
890909c2d7 [CI] Remove via keymap builds. (#24103) 2024-07-12 09:19:04 +10:00
QMK Bot
3251f4b168 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 23:01:49 +00:00
Nick Brassel
f15fff3258 [CI] Pull full history before generating index (#24102)
For some reason the history generation is way out.
2024-07-12 00:01:20 +01:00
QMK Bot
f7a53df9d4 [CI] Format code according to conventions (#24101) 2024-07-12 09:00:17 +10:00
QMK Bot
f922ed4283 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 22:59:43 +00:00
QMK Bot
7d94db8661 [CI] Format code according to conventions (#24100) 2024-07-12 08:58:57 +10:00
QMK Bot
4827d383a8 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 22:49:15 +00:00
Joel Challis
063f1444c6 Add json index of files to CI uploads (#24097) 2024-07-12 08:48:43 +10:00
QMK Bot
ec5786bdd1 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 13:54:04 +00:00
QMK Bot
2e671cfd8b [CI] Format code according to conventions (#24095)
Format code according to conventions
2024-07-11 14:50:39 +01:00
QMK Bot
2df8046dd0 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 13:44:07 +00:00
Nick Brassel
1b8b6801d4 [CI] Add index page generator. (#23737) 2024-07-11 14:43:26 +01:00
leyew
2623a258f1 [Keyboard] Rename dnworks/9973 to dnworks/tkl87 (#23692) 2024-07-11 14:40:54 +01:00
QMK Bot
ac8759fe74 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 13:40:17 +00:00
jack
cc62eb503d [Keyboard] Add boardsource/sessenta (#23823) 2024-07-11 14:39:45 +01:00
QMK Bot
22f830d67c Merge remote-tracking branch 'origin/master' into develop 2024-07-11 12:52:22 +00:00
4pplet
0c4fd514f1 Adding support for IBE60 (#24075) 2024-07-11 13:51:43 +01:00
Ryan
9be6d76c61 mt/mt64rgb: move RGB Matrix config to data driven (#24089) 2024-07-11 13:50:26 +01:00
QMK Bot
27ea1b1332 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 12:50:20 +00:00
Ryan
3d10171e2c mt/mt84: move RGB Matrix config to data driven (#24090) 2024-07-11 13:49:45 +01:00
Joel Challis
e0809eade5 Various fixes for keyboards not implementing callbacks correctly (#24092) 2024-07-11 13:47:53 +01:00
QMK Bot
23c4704123 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 12:47:41 +00:00
tarxvf
e3ef5b2d9d mntre_v3: fix matrix bottom row (#24077) 2024-07-11 13:46:54 +01:00
QMK Bot
4d4ccdc41a Merge remote-tracking branch 'origin/master' into develop 2024-07-11 12:11:16 +00:00
Dasky
f8cf58a512 Remove a user keymap from crkbd. (#24091)
remove personal keymap
2024-07-11 13:10:28 +01:00
zvecr
b066c86e43 bad_kb_funcs1 2024-07-11 11:03:11 +01:00
jack
494af672ce Fixup boardsource/the_q RGB matrix coordinates (#24086) 2024-07-11 07:14:49 +01:00
QMK Bot
aa8d68036a Merge remote-tracking branch 'origin/master' into develop 2024-07-11 02:50:40 +00:00
era
efa5b30cfd [Keyboard] Add Linx3 FAve65S (#24034)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-07-10 19:50:09 -07:00
Joel Challis
f5319d8911 Remove DEFAULT_FOLDER from maple_computing/lets_split_eh (#24054) 2024-07-10 17:17:08 -07:00
Will Hedges
d69b44e68a refactor bear_face/v1, v2 (#24060)
Co-authored-by: jack <jack@pngu.org>
2024-07-10 17:15:35 -07:00
QMK Bot
f637ff8966 Merge remote-tracking branch 'origin/master' into develop 2024-07-11 00:10:22 +00:00
Ryan
fb54a59bba jadookb/jkb65: move RGB Matrix LED config to data driven (#24080) 2024-07-10 17:09:41 -07:00
jack
c97ec805cd [Keyboard] Add boardsource/the_q (#23782)
* initial unsplit keyboard

* move shared code

* unsplit: fix underglow led x,y & remove unecessary code

* unsplit: remove split code & tidy readme

* unsplit: limit brightness & community layout

* rename keyboard

* the_q: tidy keymap & readme

* lulu: remove accidental build target

* rename file
2024-07-10 13:19:06 -06:00
QMK Bot
07fd206370 Merge remote-tracking branch 'origin/master' into develop 2024-07-08 16:27:41 +00:00
Ryan
fbbc71ec34 kakunpc/rabbit_capture_plan: update keymap layout name (#24079)
`kakunpc/rabbit_capture_plan`: update keymap layout names
2024-07-08 10:27:09 -06:00
fauxpark
83d436581f Merge remote-tracking branch 'upstream/master' into develop 2024-07-08 16:08:57 +10:00
Ryan
a0bb7ff992 latinpad/latin60rgb: move RGB Matrix LED config to data driven (#24076) 2024-07-08 15:57:45 +10:00
Ryan
6eb6e3048a pearlboards/zeuspad: add additional layouts (#24066) 2024-07-08 15:57:29 +10:00
Ryan
d08da05cb8 mechlovin/olly/octagon: move LED Matrix LED config to data driven (#24069) 2024-07-08 15:57:13 +10:00
Ryan
8336b5c72f ash1800: add additional layouts (#24065) 2024-07-08 15:56:57 +10:00
Y.KEISUKE
54f907bfe9 Fix for encoders and support ENCODER_MAP_ENABLE on Planck rev7 (#23967)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-07-08 08:45:35 +10:00
Less/Rikki
b23ddb9ad8 [keyboard] mechwild/bbpad (#24072)
* Initial bbpad commit

* refactor: bbpad

---------

Co-authored-by: Kyle McCreery <mccreery.kyle@gmail.com>
2024-07-07 13:09:48 -06:00
Lex Brugman
67d512e639 Fix enter for two ANSI layouts on the TKD Cycle7 (#24070) 2024-07-07 00:58:04 +01:00
takashicompany
e643fa03ef Fix dogtag/info.json (#23520) 2024-07-07 00:56:57 +01:00
Ryan
4fbb395602 ano: fix layout name (#24067) 2024-07-06 09:21:11 +01:00
Nick Brassel
1c02c3dfad [docs] Fixup home link. (#24068) 2024-07-06 16:19:00 +10:00
Ryan
e4dfbb075e handwired/swiftrax/bumblebee: fix layout name (#24064) 2024-07-06 16:19:00 +10:00
Ryan
2477aa9161 [docs] Update RGBLight (Underglow) keycode names (#23999) 2024-07-06 16:18:59 +10:00
Nick Brassel
300505bd9e [docs] Fixup home link. (#24068) 2024-07-06 16:08:55 +10:00
Ryan
38f07e1fd2 handwired/swiftrax/bumblebee: fix layout name (#24064) 2024-07-06 03:23:54 +01:00
Ryan
b82f6ac402 [docs] Update RGBLight (Underglow) keycode names (#23999) 2024-07-06 11:14:09 +10:00
Nick Brassel
4ae0ca5a11 Tap dance introspection (#24049) 2024-07-06 00:57:54 +01:00
QMK Bot
b9e67347f1 Merge remote-tracking branch 'origin/master' into develop 2024-07-05 22:43:39 +00:00
Ryan
be967d42d2 playkbtw/pk64rgb: move RGB Matrix LED config to data driven (#24062) 2024-07-05 23:41:32 +01:00
QMK Bot
c5e317aad9 Merge remote-tracking branch 'origin/master' into develop 2024-07-05 22:26:17 +00:00
dependabot[bot]
af72a58c8f Bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3 (#24063)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.1 to 4.6.3.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.1...v4.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-05 23:25:48 +01:00
Joel Challis
d0e89aecca Align LUFA suspend logic (#24055) 2024-07-05 12:02:39 +01:00
QMK Bot
ecf5b26ff0 Merge remote-tracking branch 'origin/master' into develop 2024-07-05 10:58:17 +00:00
Ryan
9fb51cfe2b kbdfans/baguette66: fix layout name (#24061) 2024-07-05 11:57:39 +01:00
QMK Bot
4e8772b5cc Merge remote-tracking branch 'origin/master' into develop 2024-07-05 10:55:55 +00:00
ai03
6d21898c14 Add support for Equinox XL (#23695) 2024-07-05 11:55:25 +01:00
QMK Bot
5078ca651c Merge remote-tracking branch 'origin/master' into develop 2024-07-05 06:36:06 +00:00
Ryan
096dc672c1 kakunpc/rabbit_capture_plan: add additional layouts (#24059) 2024-07-05 16:35:48 +10:00
QMK Bot
10e2f1e29f Merge remote-tracking branch 'origin/master' into develop 2024-07-05 06:35:47 +00:00
Ryan
8e64ff574a kakunpc/angel64: add additional layouts (#24058) 2024-07-05 16:35:35 +10:00
Ryan
5e2368984e ash_xiix: add additional layouts (#24057) 2024-07-05 16:35:15 +10:00
QMK Bot
9dba1cadc9 Merge remote-tracking branch 'origin/master' into develop 2024-07-05 05:25:47 +00:00
Ryan
15af5d7d0d handwired/tkk: fix layout name (#24056) 2024-07-04 23:25:00 -06:00
QMK Bot
443d111403 Merge remote-tracking branch 'origin/master' into develop 2024-07-05 05:10:31 +00:00
Ryan
62c1787d72 dc01/arrow: fix layout name (#24025) 2024-07-05 15:10:02 +10:00
QMK Bot
777db159ac Merge remote-tracking branch 'origin/master' into develop 2024-07-05 01:36:01 +00:00
Coby Sher
8fe667a1a4 Add Sleepy Craft Studios Sleepy Keeb Split (#23844) 2024-07-04 18:35:29 -07:00
Nick Brassel
3a711f4cfa Allow overriding get_hardware_id(). (#24051) 2024-07-05 11:22:08 +10:00
QMK Bot
cd22b8a945 Merge remote-tracking branch 'origin/master' into develop 2024-07-04 23:55:04 +00:00
Ryan
031ccd4887 salicylic_acid3/setta21: fix RGB Matrix LED config (#24041) 2024-07-05 00:49:05 +01:00
QMK Bot
41878d276e Merge remote-tracking branch 'origin/master' into develop 2024-07-04 23:44:53 +00:00
Ryan
43fc7b5a4f kikoslab/kl90: add additional layouts (#24024) 2024-07-05 00:44:23 +01:00
QMK Bot
9536b86a09 Merge remote-tracking branch 'origin/master' into develop 2024-07-04 19:50:25 +00:00
Ryan Neff
4ced8d9371 Fixes duplicate pid/vid for sofle_choc (#24030) 2024-07-04 13:49:55 -06:00
QMK Bot
9adac59c29 Merge remote-tracking branch 'origin/master' into develop 2024-07-04 02:42:11 +00:00
Cipulot
1c6cdb8d74 [Keyboard] Addition of EC 60X (#24028)
* Addition of EC 60X

* Update keyboards/cipulot/ec_60x/keymaps/via/keymap.c

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

* Update keyboards/cipulot/ec_60x/keymaps/default/keymap.c

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

* Update keyboards/cipulot/ec_60x/keyboard.json

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

* Update keyboards/cipulot/ec_60x/keyboard.json

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

* Update keyboards/cipulot/ec_60x/keyboard.json

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

* Update keyboards/cipulot/ec_60x/keyboard.json

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

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5f49ef63cd.

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5fb9706acd.

* revert of what was done with the layouts

* Update keyboards/cipulot/ec_60x/mcuconf.h

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

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-07-03 20:42:07 -06:00
chalex
c663f5e9f3 [Keyboard] Add chlx lfn merro (#24026)
* add previous working files to new branch

* update config files. tested via version

* update per qmk PR requested changes - 1. rename info.json -> keyboard.json, move config.h -> keyamps/via/config.h, remove rules.mk

* update photo link for pcb

* remove redundant community keymaps

* Update keyboards/chlx/lfn_merro60/keymaps/default/keymap.c

correct keycode for iso keys

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

* switch image url to source from imgur instead of github

---------

Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-07-03 20:40:24 -06:00
QMK Bot
32ec677d8d Merge remote-tracking branch 'origin/master' into develop 2024-07-04 02:39:15 +00:00
Guanzhong Chen
977918982d monsgeek/m5: make numlock and capslock LEDs work (#24027) 2024-07-03 20:38:38 -06:00
Will Hedges
26c114a2b4 [keyboard] added bear_face/v3 (#24032)
* added keyboard.json, default, default_iso, and keymap READMEs
2024-07-03 20:38:03 -06:00
QMK Bot
17c6744c82 Merge remote-tracking branch 'origin/master' into develop 2024-07-04 02:34:47 +00:00
James Gzowski
c2f7974c8e [Keyboard] Add Ashwing66 (#24031)
* Create hello.txt

* Add files via upload

* Create keymap.c

* Ashwing66

* Update readme.md

* Update keymap.c

* Ashwing66 addition

* Ashwing66 addition

* Changes as per request

* Changes as per request

* Changes as per request, Updated repo, fixed filenames

* 02-Jul-11:04:08
2024-07-03 20:34:17 -06:00
Drashna Jaelre
bdca9318f9 Change suspend condition check order on ChibiOS (#24020) 2024-07-04 12:13:00 +10:00
DavidSannier
e07f752a57 [build_test] set CONSOLE_ENABLE=yes if DEBUG > 0 (#23097) 2024-07-04 00:15:44 +01:00
QMK Bot
eed2a74be9 Merge remote-tracking branch 'origin/master' into develop 2024-07-03 12:01:26 +00:00
Nick Brassel
bc8ac86422 Minimum python version listing. (#23989) 2024-07-03 22:00:53 +10:00
QMK Bot
ce9edc94e5 Merge remote-tracking branch 'origin/master' into develop 2024-07-03 10:32:19 +00:00
Ryan
33adb8cba0 vertex/arc60h: add additional layouts (#24023) 2024-07-03 20:31:49 +10:00
QMK Bot
a400c332d2 Merge remote-tracking branch 'origin/master' into develop 2024-07-03 08:46:37 +00:00
kopibeng
e754c9f2b4 Update keymap for KLC x TGR Lena (#23688) 2024-07-03 01:38:57 -07:00
Ryan
f8596b40a4 Normalise mouse keycodes (#23975) 2024-07-03 18:35:54 +10:00
Ryan
bc0c69570b Rename encoder pins defines (#24003) 2024-07-03 17:18:27 +10:00
QMK Bot
8471dcc563 Merge remote-tracking branch 'origin/master' into develop 2024-07-02 21:35:55 +00:00
Cipulot
869b7d9ae6 Fix index EC Dolice (#24033)
* Update keyboard.json

Fixed wrong index in keyboard.json

* Small touch layout
2024-07-02 15:35:26 -06:00
Nick Brassel
7bc3eef8cc SPI flash API cleanup, add async erase capability. (#23894) 2024-07-02 10:16:41 +10:00
QMK Bot
641a1ce568 Merge remote-tracking branch 'origin/master' into develop 2024-06-30 02:40:18 +00:00
QMK Bot
e8e5d11ed8 Merge remote-tracking branch 'origin/master' into develop 2024-06-30 01:58:04 +00:00
Joel Challis
0947299864 Remove custom keycodes from nullbitsco/snap (#24017) 2024-06-29 14:25:24 +01:00
QMK Bot
bd5da148ec Merge remote-tracking branch 'origin/master' into develop 2024-06-29 10:57:00 +00:00
QMK Bot
3e4159bc55 Merge remote-tracking branch 'origin/master' into develop 2024-06-29 09:27:40 +00:00
Joel Challis
38f72c5d2b Relocate xelus/pachi/rgb/rev2 VIA logic (#24016) 2024-06-29 10:17:47 +01:00
Joel Challis
07253bfe4a Relocate work_louder VIA logic (#24011) 2024-06-29 09:33:20 +01:00
QMK Bot
62f81cfcc3 Merge remote-tracking branch 'origin/master' into develop 2024-06-29 06:55:21 +00:00
QMK Bot
b94f70d642 Merge remote-tracking branch 'origin/master' into develop 2024-06-29 06:00:35 +00:00
Ryan
af8fe44e0f atreus: misc cleanups (#24010) 2024-06-29 05:50:08 +01:00
Joel Challis
7bc53b8baa Relocate m256ws VIA logic (#24009) 2024-06-29 04:20:08 +01:00
Joel Challis
9ca1f35333 Relocate winry315 VIA logic (#24008) 2024-06-29 04:16:52 +01:00
QMK Bot
2998d20a00 Merge remote-tracking branch 'origin/master' into develop 2024-06-29 03:08:12 +00:00
Joel Challis
be7728ae58 Relocate m256wh VIA logic (#24006) 2024-06-29 03:36:28 +01:00
QMK Bot
ffd9062190 Merge remote-tracking branch 'origin/master' into develop 2024-06-27 17:39:02 +00:00
Dasky
a7aa58cc81 Change ADNS9800 and PMW33XX SROM uploads to opt in. (#24001)
Make SROM upload optional
2024-06-27 05:10:13 +01:00
QMK Bot
276ecd4693 Merge remote-tracking branch 'origin/master' into develop 2024-06-27 03:56:17 +00:00
QMK Bot
5e3b558d5a Merge remote-tracking branch 'origin/master' into develop 2024-06-26 04:36:22 +00:00
QMK Bot
7c6dbe5e7c Merge remote-tracking branch 'origin/master' into develop 2024-06-26 04:29:16 +00:00
QMK Bot
8bccabca25 Merge remote-tracking branch 'origin/master' into develop 2024-06-26 03:48:06 +00:00
QMK Bot
2f18d4f449 Merge remote-tracking branch 'origin/master' into develop 2024-06-26 01:34:55 +00:00
QMK Bot
94586f821c Merge remote-tracking branch 'origin/master' into develop 2024-06-25 06:39:26 +00:00
Joel Challis
a2176f6a03 Migrate led_update_kb implementations to DD (#23985) 2024-06-25 03:25:05 +01:00
QMK Bot
751482580e Merge remote-tracking branch 'origin/master' into develop 2024-06-24 08:20:17 +00:00
QMK Bot
c973ee1445 Merge remote-tracking branch 'origin/master' into develop 2024-06-24 02:30:03 +00:00
QMK Bot
d4e98e9fda Merge remote-tracking branch 'origin/master' into develop 2024-06-23 18:33:57 +00:00
Joel Challis
f0471dd5b4 Remove skipped schema files (#23987) 2024-06-23 09:02:13 +01:00
Ryan
e96d6d9bd4 Migrate RGB Matrix layout for two boards (#23963) 2024-06-23 04:08:57 +01:00
QMK Bot
b4047be3eb Merge remote-tracking branch 'origin/master' into develop 2024-06-23 02:58:22 +00:00
Joel Challis
7824e7ed9b Migrate led_update_kb implementations to DD (#23983) 2024-06-22 12:14:17 +01:00
Joel Challis
17498fa48a Migrate led_update_kb implementations to DD (#23981) 2024-06-22 12:14:07 +01:00
Joel Challis
cb39df273d Remove deprecated led_set_user (#23979) 2024-06-22 09:10:58 +01:00
Joel Challis
99aa4f5191 Migrate led_update_kb implementations to DD (#23980) 2024-06-22 09:10:12 +01:00
QMK Bot
35f0a17679 Merge remote-tracking branch 'origin/master' into develop 2024-06-22 04:45:34 +00:00
QMK Bot
b180a0d415 Merge remote-tracking branch 'origin/master' into develop 2024-06-22 03:28:27 +00:00
QMK Bot
cc6bcf9bac Merge remote-tracking branch 'origin/master' into develop 2024-06-22 03:27:46 +00:00
QMK Bot
05573be7b5 Merge remote-tracking branch 'origin/master' into develop 2024-06-22 00:54:29 +00:00
Amir
751a6b5bc4 add farsi keymap extras (#23650) 2024-06-20 16:12:16 -07:00
QMK Bot
27455bba6c Merge remote-tracking branch 'origin/master' into develop 2024-06-20 08:10:13 +00:00
QMK Bot
92881d38ef Merge remote-tracking branch 'origin/master' into develop 2024-06-20 01:59:59 +00:00
Ryan
0a5b892820 [CLI] Force dump_lines() to always use Unix line endings (#23954) 2024-06-19 19:43:23 +01:00
Joel Challis
53a0cdc446 Implement data driven joysticks (#22947) 2024-06-18 03:44:22 +01:00
Joel Challis
938badc3b0 Generate keymap dd keycodes to header (#20273) 2024-06-17 21:51:53 +01:00
QMK Bot
59a3098139 Merge remote-tracking branch 'origin/master' into develop 2024-06-17 19:33:26 +00:00
QMK Bot
590281f4f2 Merge remote-tracking branch 'origin/master' into develop 2024-06-17 19:24:14 +00:00
Joel Challis
51acd35e6f Implement data driven serial driver (#23923) 2024-06-17 19:22:47 +01:00
QMK Bot
9f449246bb Merge remote-tracking branch 'origin/master' into develop 2024-06-17 10:12:58 +00:00
QMK Bot
63848603be Merge remote-tracking branch 'origin/master' into develop 2024-06-17 04:48:03 +00:00
QMK Bot
0966901f95 Merge remote-tracking branch 'origin/master' into develop 2024-06-16 20:58:08 +00:00
QMK Bot
fca1417f6b Merge remote-tracking branch 'origin/master' into develop 2024-06-16 18:16:33 +00:00
QMK Bot
1317a0732b Merge remote-tracking branch 'origin/master' into develop 2024-06-16 12:53:18 +00:00
QMK Bot
3ddd20cf51 Merge remote-tracking branch 'origin/master' into develop 2024-06-16 09:53:32 +00:00
QMK Bot
c43667fa74 Merge remote-tracking branch 'origin/master' into develop 2024-06-16 04:46:54 +00:00
QMK Bot
faa84a7c90 Merge remote-tracking branch 'origin/master' into develop 2024-06-15 09:38:16 +00:00
QMK Bot
e31418ee11 Merge remote-tracking branch 'origin/master' into develop 2024-06-14 21:58:43 +00:00
QMK Bot
0c8a968e3d Merge remote-tracking branch 'origin/master' into develop 2024-06-14 20:26:31 +00:00
QMK Bot
a2f2de7d2c Merge remote-tracking branch 'origin/master' into develop 2024-06-14 07:34:37 +00:00
QMK Bot
4f8aab748b Merge remote-tracking branch 'origin/master' into develop 2024-06-14 04:10:54 +00:00
QMK Bot
e1839238a4 Merge remote-tracking branch 'origin/master' into develop 2024-06-13 23:24:28 +00:00
QMK Bot
a98aa70f80 Merge remote-tracking branch 'origin/master' into develop 2024-06-13 22:36:55 +00:00
QMK Bot
248a09d545 Merge remote-tracking branch 'origin/master' into develop 2024-06-13 13:01:12 +00:00
Ryan
55538b2e1e APA102: API rework (#23355) 2024-06-13 22:19:45 +10:00
Ryan
c4a74be7f0 Add process_keycode handlers for new RGB Matrix and Underglow keycodes (#23896) 2024-06-13 21:59:46 +10:00
QMK Bot
dafbb92f4e Merge remote-tracking branch 'origin/master' into develop 2024-06-13 03:31:33 +00:00
QMK Bot
8fe777adff Merge remote-tracking branch 'origin/master' into develop 2024-06-13 02:56:17 +00:00
QMK Bot
49317f058a Merge remote-tracking branch 'origin/master' into develop 2024-06-13 02:02:13 +00:00
QMK Bot
b3d3a7c46f Merge remote-tracking branch 'origin/master' into develop 2024-06-13 01:56:23 +00:00
QMK Bot
9fbf4579a4 Merge remote-tracking branch 'origin/master' into develop 2024-06-12 23:48:54 +00:00
QMK Bot
52b4058ca4 Merge remote-tracking branch 'origin/master' into develop 2024-06-12 07:44:58 +00:00
QMK Bot
c785584fa5 Merge remote-tracking branch 'origin/master' into develop 2024-06-12 07:12:20 +00:00
Joel Challis
b826877c40 Decouple VIA from STM32 L0/L1 EEPROM implementation (#23901) 2024-06-12 13:00:23 +10:00
QMK Bot
e239d0383a Merge remote-tracking branch 'origin/master' into develop 2024-06-12 00:50:57 +00:00
Ryan
354a2e40cf splitkb/kyria: remove CONVERT_TO at keyboard level (#23857) 2024-06-11 13:25:51 +10:00
QMK Bot
e381f91c6e Merge remote-tracking branch 'origin/master' into develop 2024-06-10 00:24:00 +00:00
QMK Bot
d4f8b478aa Merge remote-tracking branch 'origin/master' into develop 2024-06-09 20:15:38 +00:00
QMK Bot
c6ecb9ce41 Merge remote-tracking branch 'origin/master' into develop 2024-06-09 19:48:19 +00:00
QMK Bot
186dab5619 Merge remote-tracking branch 'origin/master' into develop 2024-06-09 17:58:16 +00:00
フィルターペーパー
4926f0de8b [Keyboard] Fixup mt/mt84 (#23883) 2024-06-09 10:57:08 -07:00
Drashna Jaelre
333f8bf0d7 Add STM32F405RG ld script for tinyuf2 (#23885) 2024-06-09 11:08:53 +10:00
QMK Bot
3de5e44f52 Merge remote-tracking branch 'origin/master' into develop 2024-06-07 13:26:23 +00:00
QMK Bot
d12f090d1e Merge remote-tracking branch 'origin/master' into develop 2024-06-07 01:17:50 +00:00
QMK Bot
c561750f73 Merge remote-tracking branch 'origin/master' into develop 2024-06-06 02:10:14 +00:00
QMK Bot
0d360b64fa Merge remote-tracking branch 'origin/master' into develop 2024-06-05 02:21:27 +00:00
Fernando Birra
a82b0628b3 GC9xxx LCD family drivers (GC9107 and GC9A01) (#23091)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: jack <0x6A73@pm.me>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: フィルターペーパー <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: rookiebwoy <81021475+rookiebwoy@users.noreply.github.com>
Fixup boardsource/equals (#23106)
Fix make clean test:os_detection (#23112)
Fix make clean test:os_detection (#23112)"
Fixup boardsource/equals (#23106)"
2024-06-05 08:41:26 +10:00
dexter93
75d11e0421 [wear_leveling] efl updates (#22489)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-06-04 20:16:45 +10:00
QMK Bot
1a343cfaf4 Merge remote-tracking branch 'origin/master' into develop 2024-06-04 02:24:35 +00:00
QMK Bot
c1c7c4f6e0 Merge remote-tracking branch 'origin/master' into develop 2024-06-03 12:36:18 +00:00
QMK Bot
1c536513b3 Merge remote-tracking branch 'origin/master' into develop 2024-06-02 22:55:36 +00:00
QMK Bot
a1b2e0261d Merge remote-tracking branch 'origin/master' into develop 2024-06-02 03:19:50 +00:00
QMK Bot
c67789b717 Merge remote-tracking branch 'origin/master' into develop 2024-06-02 02:42:52 +00:00
QMK Bot
6c87500231 Merge remote-tracking branch 'origin/master' into develop 2024-06-01 00:38:08 +00:00
QMK Bot
93f566280e Merge remote-tracking branch 'origin/master' into develop 2024-05-31 00:35:30 +00:00
QMK Bot
c60554e090 Merge remote-tracking branch 'origin/master' into develop 2024-05-30 09:27:11 +00:00
QMK Bot
64098fafa6 Merge remote-tracking branch 'origin/master' into develop 2024-05-30 09:10:50 +00:00
QMK Bot
6ca94ae158 Merge remote-tracking branch 'origin/master' into develop 2024-05-30 09:00:58 +00:00
QMK Bot
47356b2201 Merge remote-tracking branch 'origin/master' into develop 2024-05-30 02:01:09 +00:00
QMK Bot
b36c7b99ae Merge remote-tracking branch 'origin/master' into develop 2024-05-30 00:44:13 +00:00
burkfers
4d32073681 BastardKB: remove legacy board tbk (#23818)
remove legacy board `tbk`
2024-05-28 22:53:48 -06:00
QMK Bot
9be50fdce5 Merge remote-tracking branch 'origin/master' into develop 2024-05-29 01:55:15 +00:00
Purdea Andrei
267dffda15 EEPROM: Don't erase if we don't have to. Adding eeprom_driver_format abstraction. (#18332) 2024-05-28 12:49:55 +01:00
Nick Brassel
6921c8a7dd Branch point for 2024q3 Breaking Change. 2024-05-28 14:42:21 +10:00
9358 changed files with 81782 additions and 252844 deletions

View File

@@ -11,7 +11,8 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[{*.yaml,*.yml}] # To match GitHub Actions formatting
# To match GitHub Actions formatting
[*.{yaml,yml}]
indent_size = 2
[*.md]

View File

@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: QMK Discord
url: https://discord.gg/Uq7gcHh
url: https://discord.gg/qmk
about: Ask questions, discuss issues and features. Chill.
- name: OLKB Subreddit
url: https://www.reddit.com/r/olkb

View File

@@ -1,6 +1,5 @@
<!--- Provide a general summary of your changes in the title above. -->
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
## Description
@@ -15,7 +14,7 @@
- [ ] New feature
- [ ] Enhancement/optimization
- [ ] Keyboard (addition or update)
- [ ] Keymap/layout/userspace (addition or update)
- [ ] Keymap/layout (addition or update)
- [ ] Documentation
## Issues Fixed or Closed by This PR

82
.github/labeler.yml vendored
View File

@@ -1,46 +1,56 @@
core:
- quantum/**/*
- tmk_core/**/*
- drivers/**/*
- tests/**/*
- util/**/*
- platforms/**/*
- builddefs/**/*
- Makefile
- '*.mk'
- changed-files:
- any-glob-to-any-file:
- quantum/**
- tmk_core/**
- drivers/**
- tests/**
- util/**
- platforms/**
- builddefs/*.mk
- Makefile
- '*.mk'
dependencies:
- any:
- 'lib/**/*'
- '!lib/python/**/*'
- changed-files:
- all-globs-to-any-file:
- lib/**
- '!lib/python/**'
keyboard:
- any:
- 'keyboards/**/*'
- '!keyboards/**/keymaps/**/*'
- changed-files:
- all-globs-to-any-file:
- keyboards/**
- '!keyboards/**/keymaps/**'
keymap:
- users/**/*
- layouts/**/*
- keyboards/**/keymaps/**/*
- changed-files:
- any-glob-to-any-file:
- users/**
- layouts/**
- keyboards/**/keymaps/**
via:
- keyboards/**/keymaps/via/*
- changed-files:
- any-glob-to-any-file:
- keyboards/**/keymaps/via/*
cli:
- requirements.txt
- lib/python/**/*
- changed-files:
- any-glob-to-any-file:
- requirements.txt
- lib/python/**
python:
- '**/*.py'
- changed-files:
- any-glob-to-any-file:
- '**/*.py'
documentation:
- docs/**/*
translation:
- docs/fr-fr/**/*
- docs/es/**/*
- docs/ja/**/*
- docs/he-il/**/*
- docs/pt-br/**/*
- docs/zh-cn/**/*
- docs/de/**/*
- docs/ru-ru/**/*
- changed-files:
- any-glob-to-any-file:
- docs/**
- builddefs/docsgen/**
CI:
- .github/**/*
- changed-files:
- any-glob-to-any-file:
- .github/**
dd:
- data/constants/**/*
- data/mappings/**/*
- data/schemas/**/*
- changed-files:
- any-glob-to-any-file:
- data/constants/**
- data/mappings/**
- data/schemas/**

View File

@@ -13,8 +13,8 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: mheap/automatic-approve-action@v1
- uses: zvecr/automatic-approve-action@safe_files
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
workflows: "format.yml,lint.yml,unit_test.yml"
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"
workflows: "labeler.yml,lint.yml,docs.yml"
safe_files: "keyboards/,docs/"

View File

@@ -52,9 +52,9 @@ jobs:
run: |
target_count=$( {
qmk find -km default 2>/dev/null
qmk find -km via 2>/dev/null
# qmk find -km xap 2>/dev/null
} | sort | uniq | wc -l)
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution as we're splitting default and via
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution
echo "slice_length=$slice_length" >> $GITHUB_OUTPUT
build_targets:
@@ -63,7 +63,8 @@ jobs:
strategy:
fail-fast: false
matrix:
keymap: [default, via]
keymap: [default]
# keymap: [default, xap]
uses: ./.github/workflows/ci_build_major_branch_keymap.yml
with:
branch: ${{ inputs.branch || github.ref_name }}
@@ -77,44 +78,59 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Disable safe.directory check
run: |
git config --global --add safe.directory '*'
- name: Checkout QMK Firmware
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download firmwares
uses: actions/download-artifact@v4
with:
pattern: firmware-*
path: firmwares
path: .
merge-multiple: true
- name: Generate index page
run: |
python3 -m pip install -r ./util/ci/requirements.txt
./util/ci/index_generator.py > index.html
./util/ci/firmware_list_generator.py > firmware_list.json
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
env:
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
SOURCE_DIR: firmwares
SOURCE_DIR: .
DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
env:
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
SOURCE_DIR: firmwares
SOURCE_DIR: .
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
- name: Check if failure marker file exists
id: check_failure_marker
uses: andstor/file-existence-action@v3
with:
files: firmwares/.failed
files: ./.failed
- name: Fail build if needed
if: steps.check_failure_marker.outputs.files_exists == 'true'

View File

@@ -172,10 +172,10 @@ jobs:
targets-${{ inputs.keymap }}
- name: 'CI Discord Notification'
if: always()
if: always() && !cancelled()
working-directory: util/ci/
env:
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
run: |
python3 -m pip install -r requirements.txt
python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --sha $(git rev-parse HEAD) --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -56,7 +56,7 @@ jobs:
- name: Deploy
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
uses: JamesIves/github-pages-deploy-action@v4.6.1
uses: JamesIves/github-pages-deploy-action@v4.7.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages

View File

@@ -35,7 +35,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v44
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -47,7 +47,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

View File

@@ -1,18 +1,13 @@
name: "Pull Request Labeler"
permissions:
contents: read
pull-requests: write
on:
pull_request_target:
types: [opened, synchronize, reopened, ready_for_review, locked]
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: '.github/labeler.yml'
- uses: actions/labeler@v5

View File

@@ -27,7 +27,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v44
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -34,7 +34,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

3
.gitignore vendored
View File

@@ -25,6 +25,8 @@
*.la
*.stackdump
*.sym
index.html
firmware_list.json
# QMK-specific
api_data/v1
@@ -116,4 +118,5 @@ compile_commands.json
# VIA(L) files that don't belong in QMK repo
via*.json
/keyboards/**/keymaps/via/*
/keyboards/**/keymaps/vial/*

View File

@@ -145,7 +145,7 @@ FILE_PATTERNS = *.c \
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */protocol/arm_atsam/*
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *

View File

@@ -21,8 +21,10 @@ $(TEST_OUTPUT)_SRC := \
$(SRC) \
$(QUANTUM_PATH)/keymap_introspection.c \
tests/test_common/matrix.c \
tests/test_common/pointing_device_driver.c \
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 \

View File

@@ -34,10 +34,13 @@ ifeq ($(strip $(DUMP_CI_METADATA)),yes)
endif
# Force expansion
TARGET := $(TARGET)
override TARGET := $(TARGET)
ifneq ($(FORCE_LAYOUT),)
TARGET := $(TARGET)_$(FORCE_LAYOUT)
override TARGET := $(TARGET)_$(FORCE_LAYOUT)
endif
ifneq ($(CONVERT_TO),)
override TARGET := $(TARGET)_$(CONVERT_TO)
endif
# Object files and generated keymap directory
@@ -58,9 +61,6 @@ ifdef SKIP_GIT
VERSION_H_FLAGS += --skip-git
endif
# Generate the board's version.h file.
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
# Determine which subfolders exist.
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
@@ -186,7 +186,10 @@ endif
# Have we found a keymap.json?
ifneq ("$(wildcard $(KEYMAP_JSON))", "")
ifneq ("$(wildcard $(KEYMAP_C))", "")
$(call WARNING_MESSAGE,Keymap is specified as both keymap.json and keymap.c -- keymap.json file wins.)
# Allow a separately-found keymap.c next to keymap.json -- the keymap.c
# generator will include the other keymap.c in the process, if supplied.
OTHER_KEYMAP_C := $(KEYMAP_C)
OPT_DEFS += -DOTHER_KEYMAP_C=\"$(OTHER_KEYMAP_C)\"
endif
KEYMAP_PATH := $(KEYMAP_JSON_PATH)
@@ -194,8 +197,10 @@ ifneq ("$(wildcard $(KEYMAP_JSON))", "")
KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c
KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h
# Load the keymap-level rules.mk if exists
-include $(KEYMAP_PATH)/rules.mk
ifeq ($(OTHER_KEYMAP_C),)
# Load the keymap-level rules.mk if exists (and we havent already loaded it for keymap.c)
-include $(KEYMAP_PATH)/rules.mk
endif
# Load any rules.mk content from keymap.json
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/rules.mk $(KEYMAP_JSON))
@@ -212,12 +217,20 @@ $(INTERMEDIATE_OUTPUT)/src/config.h: $(KEYMAP_JSON)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON))
@$(BUILD_CMD)
generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/keymap.c
$(INTERMEDIATE_OUTPUT)/src/keymap.h: $(KEYMAP_JSON)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keymap-h --quiet --output $(INTERMEDIATE_OUTPUT)/src/keymap.h $(KEYMAP_JSON))
@$(BUILD_CMD)
generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/keymap.c $(INTERMEDIATE_OUTPUT)/src/keymap.h
endif
include $(BUILDDEFS_PATH)/converters.mk
# Generate the board's version.h file.
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
MCU_ORIG := $(MCU)
include $(wildcard $(PLATFORM_PATH)/*/mcu_selection.mk)

View File

@@ -47,7 +47,8 @@ PLATFORM:=TEST
PLATFORM_KEY:=test
BOOTLOADER_TYPE:=none
ifeq ($(strip $(DEBUG)), 1)
DEBUG ?= 0
ifneq ($(strip $(DEBUG)), 0)
CONSOLE_ENABLE = yes
endif

View File

@@ -28,6 +28,7 @@ QUANTUM_SRC += \
$(QUANTUM_DIR)/sync_timer.c \
$(QUANTUM_DIR)/logging/debug.c \
$(QUANTUM_DIR)/logging/sendchar.c \
$(QUANTUM_DIR)/process_keycode/process_default_layer.c \
VPATH += $(QUANTUM_DIR)/logging
# Fall back to lib/printf if there is no platform provided print
@@ -129,13 +130,13 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
MOUSE_ENABLE := yes
VPATH += $(QUANTUM_DIR)/pointing_device
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_drivers.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_auto_mouse.c
ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom)
SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]'))
endif
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(POINTING_DEVICE_DRIVER))
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_NAME=$(strip $(POINTING_DEVICE_DRIVER))
ifeq ($(strip $(POINTING_DEVICE_DRIVER)), adns9800)
SPI_DRIVER_REQUIRED = yes
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick)
@@ -215,7 +216,7 @@ else
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 GD32VF103),)
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
@@ -238,10 +239,6 @@ else
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
# arm_atsam EEPROM
OPT_DEFS += -DEEPROM_SAMD
SRC += eeprom_samd.c
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
@@ -282,18 +279,17 @@ ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
endif
endif
VALID_FLASH_DRIVER_TYPES := spi
VALID_FLASH_DRIVER_TYPES := spi custom
FLASH_DRIVER ?= none
ifneq ($(strip $(FLASH_DRIVER)), none)
ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid FLASH_DRIVER,FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid flash driver)
else
OPT_DEFS += -DFLASH_ENABLE
OPT_DEFS += -DFLASH_ENABLE -DFLASH_DRIVER -DFLASH_DRIVER_$(strip $(shell echo $(FLASH_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(DRIVER_PATH)/flash
ifeq ($(strip $(FLASH_DRIVER)),spi)
SPI_DRIVER_REQUIRED = yes
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
SPI_DRIVER_REQUIRED = yes
endif
endif
endif
@@ -311,11 +307,11 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
OPT_DEFS += -DRGBLIGHT_$(strip $(shell echo $(RGBLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += $(QUANTUM_DIR)/process_keycode/process_underglow.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight_drivers.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), ws2812)
@@ -437,6 +433,13 @@ ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
SRC += snled27351-mono.c
endif
ifeq ($(strip $(LED_MATRIX_CUSTOM_KB)), yes)
OPT_DEFS += -DLED_MATRIX_CUSTOM_KB
endif
ifeq ($(strip $(LED_MATRIX_CUSTOM_USER)), yes)
OPT_DEFS += -DLED_MATRIX_CUSTOM_USER
endif
endif
# Deprecated driver names - do not use
@@ -461,12 +464,16 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners
POST_CONFIG_H += $(QUANTUM_DIR)/rgb_matrix/post_config.h
# TODO: Remove this
SRC += $(QUANTUM_DIR)/process_keycode/process_underglow.c
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb_matrix.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c
LIB8TION_ENABLE := yes
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216s)
SPI_DRIVER_REQUIRED = yes
@@ -569,10 +576,6 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
endif
endif
ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
endif
VARIABLE_TRACE ?= no
ifneq ($(strip $(VARIABLE_TRACE)),no)
SRC += $(QUANTUM_DIR)/variable_trace.c
@@ -882,7 +885,7 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]'))
NO_USB_STARTUP_CHECK := yes
COMMON_VPATH += $(DRIVER_PATH)/bluetooth
SRC += outputselect.c
SRC += outputselect.c process_connection.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
SPI_DRIVER_REQUIRED = yes
@@ -937,7 +940,7 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += ws2812_$(strip $(WS2812_DRIVER)).c
SRC += ws2812.c ws2812_$(strip $(WS2812_DRIVER)).c
ifeq ($(strip $(PLATFORM)), CHIBIOS)
ifeq ($(strip $(WS2812_DRIVER)), pwm)

View File

@@ -43,25 +43,25 @@ ifneq ($(USE_CCACHE),no)
CC_PREFIX ?= ccache
endif
#---------------- Debug Options ----------------
DEBUG_ENABLE ?= no
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CFLAGS += -ggdb3
CXXFLAGS += -ggdb3
ASFLAGS += -ggdb3
# Create a map file when debugging
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
#---------------- C Compiler Options ----------------
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),ARM_ATSAM)
$(info Enabling LTO on arm_atsam-targeting boards is known to have a high likelihood of failure.)
$(info If unsure, set LTO_ENABLE = no.)
endif
CDEFS += -flto
CDEFS += -DLTO_ENABLE
endif
DEBUG_ENABLE ?= yes
ifeq ($(strip $(SKIP_DEBUG_INFO)),yes)
DEBUG_ENABLE=no
endif
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CFLAGS += -g$(DEBUG)
endif
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
# add color
@@ -83,9 +83,6 @@ CFLAGS += -fcommon
#---------------- C++ Compiler Options ----------------
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CXXFLAGS += -g$(DEBUG)
endif
CXXFLAGS += $(CXXDEFS)
CXXFLAGS += -O$(OPT)
# to suppress "warning: only initialized variables can be placed into program memory area"
@@ -106,14 +103,10 @@ endif
#---------------- Linker Options ----------------
CREATE_MAP ?= yes
ifeq ($(CREATE_MAP),yes)
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
ifeq ($(VERBOSE_LD_CMD),yes)
LDFLAGS += -v
endif
#LDFLAGS += -Wl,--relax
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += -lm
@@ -126,15 +119,11 @@ ADHLNS_ENABLE ?= no
ifeq ($(ADHLNS_ENABLE),yes)
# Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time
ifeq ($(strip $(LTO_ENABLE)), yes)
LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
else
CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
ifeq ($(strip $(DEBUG_ENABLE)),yes)
ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100
else
ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
endif
ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
endif
endif

View File

@@ -32,9 +32,6 @@ ifneq ($(CONVERT_TO),)
PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2)
# force setting as value can be from environment
override TARGET := $(TARGET)_$(CONVERT_TO)
# Configure any defaults
OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]')
OPT_DEFS += -DCONVERTER_TARGET=\"$(CONVERT_TO)\"

View File

@@ -33,14 +33,21 @@ export default defineConfig(({ mode }) => {
},
title: 'QMK Firmware',
nav: [{ text: "Home", link: "./" }],
nav: [{ text: "Home", link: "/" }],
search: {
provider: "local",
},
editLink: {
pattern: 'https://github.com/qmk/qmk_firmware/edit/master/docs/:path'
},
lastUpdated: true,
sidebar: sidebar,
externalLinkIcon: true,
socialLinks: [
{ icon: { svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 29 3 C 28.0625 3 27.164063 3.382813 26.5 4 C 25.835938 4.617188 25.363281 5.433594 25 6.40625 C 24.355469 8.140625 24.085938 10.394531 24.03125 13.03125 C 19.234375 13.179688 14.820313 14.421875 11.28125 16.46875 C 10.214844 15.46875 8.855469 14.96875 7.5 14.96875 C 6.089844 14.96875 4.675781 15.511719 3.59375 16.59375 C 1.425781 18.761719 1.425781 22.238281 3.59375 24.40625 L 3.84375 24.65625 C 3.3125 26.035156 3 27.488281 3 29 C 3 33.527344 5.566406 37.585938 9.5625 40.4375 C 13.558594 43.289063 19.007813 45 25 45 C 30.992188 45 36.441406 43.289063 40.4375 40.4375 C 44.433594 37.585938 47 33.527344 47 29 C 47 27.488281 46.6875 26.035156 46.15625 24.65625 L 46.40625 24.40625 C 48.574219 22.238281 48.574219 18.761719 46.40625 16.59375 C 45.324219 15.511719 43.910156 14.96875 42.5 14.96875 C 41.144531 14.96875 39.785156 15.46875 38.71875 16.46875 C 35.195313 14.433594 30.800781 13.191406 26.03125 13.03125 C 26.09375 10.546875 26.363281 8.46875 26.875 7.09375 C 27.164063 6.316406 27.527344 5.757813 27.875 5.4375 C 28.222656 5.117188 28.539063 5 29 5 C 29.460938 5 29.683594 5.125 30.03125 5.40625 C 30.378906 5.6875 30.785156 6.148438 31.3125 6.6875 C 32.253906 7.652344 33.695313 8.714844 36.09375 8.9375 C 36.539063 11.238281 38.574219 13 41 13 C 43.75 13 46 10.75 46 8 C 46 5.25 43.75 3 41 3 C 38.605469 3 36.574219 4.710938 36.09375 6.96875 C 34.3125 6.796875 33.527344 6.109375 32.75 5.3125 C 32.300781 4.851563 31.886719 4.3125 31.3125 3.84375 C 30.738281 3.375 29.9375 3 29 3 Z M 41 5 C 42.667969 5 44 6.332031 44 8 C 44 9.667969 42.667969 11 41 11 C 39.332031 11 38 9.667969 38 8 C 38 6.332031 39.332031 5 41 5 Z M 25 15 C 30.609375 15 35.675781 16.613281 39.28125 19.1875 C 42.886719 21.761719 45 25.226563 45 29 C 45 32.773438 42.886719 36.238281 39.28125 38.8125 C 35.675781 41.386719 30.609375 43 25 43 C 19.390625 43 14.324219 41.386719 10.71875 38.8125 C 7.113281 36.238281 5 32.773438 5 29 C 5 25.226563 7.113281 21.761719 10.71875 19.1875 C 14.324219 16.613281 19.390625 15 25 15 Z M 7.5 16.9375 C 8.203125 16.9375 8.914063 17.148438 9.53125 17.59375 C 7.527344 19.03125 5.886719 20.769531 4.75 22.71875 C 3.582031 21.296875 3.660156 19.339844 5 18 C 5.714844 17.285156 6.609375 16.9375 7.5 16.9375 Z M 42.5 16.9375 C 43.390625 16.9375 44.285156 17.285156 45 18 C 46.339844 19.339844 46.417969 21.296875 45.25 22.71875 C 44.113281 20.769531 42.472656 19.03125 40.46875 17.59375 C 41.085938 17.148438 41.796875 16.9375 42.5 16.9375 Z M 17 22 C 14.800781 22 13 23.800781 13 26 C 13 28.199219 14.800781 30 17 30 C 19.199219 30 21 28.199219 21 26 C 21 23.800781 19.199219 22 17 22 Z M 33 22 C 30.800781 22 29 23.800781 29 26 C 29 28.199219 30.800781 30 33 30 C 35.199219 30 37 28.199219 37 26 C 37 23.800781 35.199219 22 33 22 Z M 17 24 C 18.117188 24 19 24.882813 19 26 C 19 27.117188 18.117188 28 17 28 C 15.882813 28 15 27.117188 15 26 C 15 24.882813 15.882813 24 17 24 Z M 33 24 C 34.117188 24 35 24.882813 35 26 C 35 27.117188 34.117188 28 33 28 C 31.882813 28 31 27.117188 31 26 C 31 24.882813 31.882813 24 33 24 Z M 34.15625 33.84375 C 34.101563 33.851563 34.050781 33.859375 34 33.875 C 33.683594 33.9375 33.417969 34.144531 33.28125 34.4375 C 33.28125 34.4375 32.757813 35.164063 31.4375 36 C 30.117188 36.835938 28.058594 37.6875 25 37.6875 C 21.941406 37.6875 19.882813 36.835938 18.5625 36 C 17.242188 35.164063 16.71875 34.4375 16.71875 34.4375 C 16.492188 34.082031 16.066406 33.90625 15.65625 34 C 15.332031 34.082031 15.070313 34.316406 14.957031 34.632813 C 14.84375 34.945313 14.894531 35.292969 15.09375 35.5625 C 15.09375 35.5625 15.863281 36.671875 17.46875 37.6875 C 19.074219 38.703125 21.558594 39.6875 25 39.6875 C 28.441406 39.6875 30.925781 38.703125 32.53125 37.6875 C 34.136719 36.671875 34.90625 35.5625 34.90625 35.5625 C 35.207031 35.273438 35.296875 34.824219 35.128906 34.441406 C 34.960938 34.058594 34.574219 33.820313 34.15625 33.84375 Z"/></svg>' }, link: "https://reddit.com/r/olkb" },
{ icon: "discord", link: "https://discord.gg/qmk" },

View File

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

View File

@@ -298,85 +298,85 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@rollup/rollup-android-arm-eabi@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062"
integrity sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==
"@rollup/rollup-android-arm-eabi@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5"
integrity sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==
"@rollup/rollup-android-arm64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz#ffb84f1359c04ec8a022a97110e18a5600f5f638"
integrity sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==
"@rollup/rollup-android-arm64@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz#654ca1049189132ff602bfcf8df14c18da1f15fb"
integrity sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==
"@rollup/rollup-darwin-arm64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz#b2fcee8d4806a0b1b9185ac038cc428ddedce9f4"
integrity sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==
"@rollup/rollup-darwin-arm64@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b"
integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==
"@rollup/rollup-darwin-x64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz#fcb25ccbaa3dd33a6490e9d1c64bab2e0e16b932"
integrity sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==
"@rollup/rollup-darwin-x64@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz#42bd19d292a57ee11734c980c4650de26b457791"
integrity sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==
"@rollup/rollup-linux-arm-gnueabihf@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz#40d46bdfe667e5eca31bf40047460e326d2e26bb"
integrity sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==
"@rollup/rollup-linux-arm-gnueabihf@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz#f23555ee3d8fe941c5c5fd458cd22b65eb1c2232"
integrity sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==
"@rollup/rollup-linux-arm-musleabihf@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz#7741df2448c11c56588b50835dbfe91b1a10b375"
integrity sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==
"@rollup/rollup-linux-arm-musleabihf@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz#f3bbd1ae2420f5539d40ac1fde2b38da67779baa"
integrity sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==
"@rollup/rollup-linux-arm64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz#0a23b02d2933e4c4872ad18d879890b6a4a295df"
integrity sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==
"@rollup/rollup-linux-arm64-gnu@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz#7abe900120113e08a1f90afb84c7c28774054d15"
integrity sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==
"@rollup/rollup-linux-arm64-musl@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz#e37ef259358aa886cc07d782220a4fb83c1e6970"
integrity sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==
"@rollup/rollup-linux-arm64-musl@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz#9e655285c8175cd44f57d6a1e8e5dedfbba1d820"
integrity sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==
"@rollup/rollup-linux-powerpc64le-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz#8c69218b6de05ee2ba211664a2d2ac1e54e43f94"
integrity sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==
"@rollup/rollup-linux-powerpc64le-gnu@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz#9a79ae6c9e9d8fe83d49e2712ecf4302db5bef5e"
integrity sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==
"@rollup/rollup-linux-riscv64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz#d32727dab8f538d9a4a7c03bcf58c436aecd0139"
integrity sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==
"@rollup/rollup-linux-riscv64-gnu@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz#67ac70eca4ace8e2942fabca95164e8874ab8128"
integrity sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==
"@rollup/rollup-linux-s390x-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz#d46097246a187d99fc9451fe8393b7155b47c5ec"
integrity sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==
"@rollup/rollup-linux-s390x-gnu@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz#9f883a7440f51a22ed7f99e1d070bd84ea5005fc"
integrity sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==
"@rollup/rollup-linux-x64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz#6356c5a03a4afb1c3057490fc51b4764e109dbc7"
integrity sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==
"@rollup/rollup-linux-x64-gnu@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0"
integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==
"@rollup/rollup-linux-x64-musl@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz#03a5831a9c0d05877b94653b5ddd3020d3c6fb06"
integrity sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==
"@rollup/rollup-linux-x64-musl@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz#f473f88219feb07b0b98b53a7923be716d1d182f"
integrity sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==
"@rollup/rollup-win32-arm64-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz#6cc0db57750376b9303bdb6f5482af8974fcae35"
integrity sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==
"@rollup/rollup-win32-arm64-msvc@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz#4349482d17f5d1c58604d1c8900540d676f420e0"
integrity sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==
"@rollup/rollup-win32-ia32-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz#aea0b7e492bd9ed46971cb80bc34f1eb14e07789"
integrity sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==
"@rollup/rollup-win32-ia32-msvc@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz#a6fc39a15db618040ec3c2a24c1e26cb5f4d7422"
integrity sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==
"@rollup/rollup-win32-x64-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f"
integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==
"@rollup/rollup-win32-x64-msvc@4.22.4":
version "4.22.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202"
integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==
"@shikijs/core@1.3.0", "@shikijs/core@^1.3.0":
version "1.3.0"
@@ -697,28 +697,28 @@ rfdc@^1.3.1:
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
rollup@^4.13.0:
version "4.16.4"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.4.tgz#fe328eb41293f20c9593a095ec23bdc4b5d93317"
integrity sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==
version "4.22.4"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.4.tgz#4135a6446671cd2a2453e1ad42a45d5973ec3a0f"
integrity sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==
dependencies:
"@types/estree" "1.0.5"
optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.16.4"
"@rollup/rollup-android-arm64" "4.16.4"
"@rollup/rollup-darwin-arm64" "4.16.4"
"@rollup/rollup-darwin-x64" "4.16.4"
"@rollup/rollup-linux-arm-gnueabihf" "4.16.4"
"@rollup/rollup-linux-arm-musleabihf" "4.16.4"
"@rollup/rollup-linux-arm64-gnu" "4.16.4"
"@rollup/rollup-linux-arm64-musl" "4.16.4"
"@rollup/rollup-linux-powerpc64le-gnu" "4.16.4"
"@rollup/rollup-linux-riscv64-gnu" "4.16.4"
"@rollup/rollup-linux-s390x-gnu" "4.16.4"
"@rollup/rollup-linux-x64-gnu" "4.16.4"
"@rollup/rollup-linux-x64-musl" "4.16.4"
"@rollup/rollup-win32-arm64-msvc" "4.16.4"
"@rollup/rollup-win32-ia32-msvc" "4.16.4"
"@rollup/rollup-win32-x64-msvc" "4.16.4"
"@rollup/rollup-android-arm-eabi" "4.22.4"
"@rollup/rollup-android-arm64" "4.22.4"
"@rollup/rollup-darwin-arm64" "4.22.4"
"@rollup/rollup-darwin-x64" "4.22.4"
"@rollup/rollup-linux-arm-gnueabihf" "4.22.4"
"@rollup/rollup-linux-arm-musleabihf" "4.22.4"
"@rollup/rollup-linux-arm64-gnu" "4.22.4"
"@rollup/rollup-linux-arm64-musl" "4.22.4"
"@rollup/rollup-linux-powerpc64le-gnu" "4.22.4"
"@rollup/rollup-linux-riscv64-gnu" "4.22.4"
"@rollup/rollup-linux-s390x-gnu" "4.22.4"
"@rollup/rollup-linux-x64-gnu" "4.22.4"
"@rollup/rollup-linux-x64-musl" "4.22.4"
"@rollup/rollup-win32-arm64-msvc" "4.22.4"
"@rollup/rollup-win32-ia32-msvc" "4.22.4"
"@rollup/rollup-win32-x64-msvc" "4.22.4"
fsevents "~2.3.2"
shiki@1.3.0, shiki@^1.3.0:
@@ -743,10 +743,10 @@ tabbable@^6.2.0:
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
vite@^5.2.10, vite@^5.2.9:
version "5.2.10"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7"
integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==
vite@^5.2.14, vite@^5.2.9:
version "5.2.14"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.14.tgz#fd5f60facf6b5f90ec7da6323c467a365d380c3d"
integrity sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA==
dependencies:
esbuild "^0.20.1"
postcss "^8.4.38"

View File

@@ -36,6 +36,7 @@ GENERIC_FEATURES = \
HAPTIC \
KEY_LOCK \
KEY_OVERRIDE \
LAYER_LOCK \
LEADER \
MAGIC \
MOUSEKEY \

View File

@@ -67,7 +67,6 @@ OTHER_OPTION_NAMES = \
PS2_DRIVER \
RAW_ENABLE \
SWAP_HANDS_ENABLE \
RING_BUFFERED_6KRO_REPORT_ENABLE \
WATCHDOG_ENABLE \
ERGOINU \
NO_USB_STARTUP_CHECK \

View File

@@ -0,0 +1,616 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ۱ │ ۲ │ ۳ │ ۴ │ ۵ │ ۶ │ ۷ │ ۸ │ ۹ │ ۰ │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ض │ ص │ ث │ ق │ ف │ غ │ ع │ ه │ خ │ ح │ ج │ چ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ش │ س │ ی │ ب │ ل │ ا │ ت │ ن │ م │ ک │ گ │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ ظ │ ط │ ز │ ر │ ذ │ د │ پ │ و │ . │ / │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FA_ZWJ",
"label": "(zero-width joiner)",
}
"KC_1": {
"key": "FA_1A",
"label": "۱",
}
"KC_2": {
"key": "FA_2A",
"label": "۲",
}
"KC_3": {
"key": "FA_3A",
"label": "۳",
}
"KC_4": {
"key": "FA_4A",
"label": "۴",
}
"KC_5": {
"key": "FA_5A",
"label": "۵",
}
"KC_6": {
"key": "FA_6A",
"label": "۶",
}
"KC_7": {
"key": "FA_7A",
"label": "۷",
}
"KC_8": {
"key": "FA_8A",
"label": "۸",
}
"KC_9": {
"key": "FA_9A",
"label": "۹",
}
"KC_0": {
"key": "FA_0A",
"label": "۰",
}
"KC_MINS": {
"key": "FA_MINS",
"label": "-",
}
"KC_EQL": {
"key": "FA_EQL",
"label": "=",
}
"KC_Q": {
"key": "FA_ZAD",
"label": "ض",
}
"KC_W": {
"key": "FA_SAD",
"label": "ص",
}
"KC_E": {
"key": "FA_SE",
"label": "ث",
}
"KC_R": {
"key": "FA_QAF",
"label": "ق",
}
"KC_T": {
"key": "FA_FE",
"label": "ف",
}
"KC_Y": {
"key": "FA_GHYN",
"label": "غ",
}
"KC_U": {
"key": "FA_EYN",
"label": "ع",
}
"KC_I": {
"key": "FA_HE",
"label": "ه",
}
"KC_O": {
"key": "FA_KHE",
"label": "خ",
}
"KC_P": {
"key": "FA_HEJ",
"label": "ح",
}
"KC_LBRC": {
"key": "FA_JIM",
"label": "ج",
}
"KC_RBRC": {
"key": "FA_CHE",
"label": "چ",
}
"KC_A": {
"key": "FA_SHIN",
"label": "ش",
}
"KC_S": {
"key": "FA_SIN",
"label": "س",
}
"KC_D": {
"key": "FA_YE",
"label": "ی",
}
"KC_F": {
"key": "FA_BE",
"label": "ب",
}
"KC_G": {
"key": "FA_LAM",
"label": "ل",
}
"KC_H": {
"key": "FA_ALEF",
"label": "ا",
}
"KC_J": {
"key": "FA_TE",
"label": "ت",
}
"KC_K": {
"key": "FA_NOON",
"label": "ن",
}
"KC_L": {
"key": "FA_MIM",
"label": "م",
}
"KC_SCLN": {
"key": "FA_KAF",
"label": "ک",
}
"KC_QUOT": {
"key": "FA_GAF",
"label": "گ",
}
"KC_BSLS": {
"key": "FA_BSLS",
"label": "\\",
}
"KC_LT": {
"key": "FA_LT",
"label": "<",
}
"KC_Z": {
"key": "FA_ZA",
"label": "ظ",
}
"KC_X": {
"key": "FA_TA",
"label": "ط",
}
"KC_C": {
"key": "FA_ZE",
"label": "ز",
}
"KC_V": {
"key": "FA_RE",
"label": "ر",
}
"KC_B": {
"key": "FA_ZAL",
"label": "ذ",
}
"KC_N": {
"key": "FA_DAL",
"label": "د",
}
"KC_M": {
"key": "FA_PE",
"label": "پ",
}
"KC_COMM": {
"key": "FA_WAW",
"label": "و",
}
"KC_DOT": {
"key": "FA_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "FA_SLSH",
"label": "/",
}
"KC_SPC": {
"key": "FA_SPC",
"label": " ",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ÷ │ ! │ ٬ │ ٫ │ ﷼ │ ٪ │ × │ ، │ * │ ) │ ( │ ـ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ْ │ ٌ │ ٍ │ ً │ ُ │ ِ │ َ │ ّ │ ] │ [ │ } │ { │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ؤ │ ئ │ ي │ إ │ أ │ آ │ ة │ » │ « │ : │ ؛ │ | │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ ك │ ٓ │ ژ │ ٰ │ │ ٔ │ ء │ │ │ ؟ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FA_ZWJ)": {
"key": "FA_DIV",
"label": "÷",
}
"S(FA_1A)": {
"key": "FA_EXLM",
"label": "!",
}
"S(FA_2A)": {
"key": "FA_THS",
"label": "٬",
}
"S(FA_3A)": {
"key": "FA_DECS",
"label": "٫",
}
"S(FA_4A)": {
"key": "FA_RIAL",
"label": "﷼",
}
"S(FA_5A)": {
"key": "FA_PRCA",
"label": "٪",
}
"S(FA_6A)": {
"key": "FA_MUL",
"label": "×",
}
"S(FA_7A)": {
"key": "FA_COMA",
"label": "،",
}
"S(FA_8A)": {
"key": "FA_ASTR",
"label": "*",
}
"S(FA_9A)": {
"key": "FA_RPRN",
"label": ")",
}
"S(FA_0A)": {
"key": "FA_LPRN",
"label": "(",
}
"S(FA_MINS)": {
"key": "FA_TATW",
"label": "ـ",
}
"S(FA_EQL)": {
"key": "FA_PLUS",
"label": "+",
}
"S(FA_ZAD)": {
"key": "FA_SUK",
"label": "ْ",
}
"S(FA_SAD)": {
"key": "FA_DMTN",
"label": "ٌ",
}
"S(FA_SE)": {
"key": "FA_KSTN",
"label": "ٍ",
}
"S(FA_QAF)": {
"key": "FA_FTHN",
"label": "ً",
}
"S(FA_FE)": {
"key": "FA_DMM",
"label": "ُ",
}
"S(FA_GHYN)": {
"key": "FA_KAS",
"label": "ِ",
}
"S(FA_EYN)": {
"key": "FA_FAT",
"label": "َ",
}
"S(FA_HE)": {
"key": "FA_TSDD",
"label": "",
}
"S(FA_KHE)": {
"key": "FA_RBRC",
"label": "]",
}
"S(FA_HEJ)": {
"key": "FA_LBRC",
"label": "[",
}
"S(FA_JIM)": {
"key": "FA_RCBR",
"label": "}",
}
"S(FA_CHE)": {
"key": "FA_LCBR",
"label": "{",
}
"S(FA_SHIN)": {
"key": "FA_HMZV",
"label": "ؤ",
}
"S(FA_SIN)": {
"key": "FA_HMZY",
"label": "ئ",
}
"S(FA_YE)": {
"key": "FA_YEA",
"label": "ي",
}
"S(FA_BE)": {
"key": "FA_HMZU",
"label": "إ",
}
"S(FA_LAM)": {
"key": "FA_HMZO",
"label": "أ",
}
"S(FA_ALEF)": {
"key": "FA_MALF",
"label": "آ",
}
"S(FA_TE)": {
"key": "FA_TEHM",
"label": "ة",
}
"S(FA_NOON)": {
"key": "FA_RQOT",
"label": "»",
}
"S(FA_MIM)": {
"key": "FA_LQOT",
"label": "«",
}
"S(FA_KAF)": {
"key": "FA_COLN",
"label": ":",
}
"S(FA_GAF)": {
"key": "FA_SCLA",
"label": "؛",
}
"S(FA_LT)": {
"key": "FA_GT",
"label": ">",
}
"S(FA_ZA)": {
"key": "FA_KAFA",
"label": "ك",
}
"S(FA_TA)": {
"key": "FA_MADO",
"label": "ٓ",
}
"S(FA_ZE)": {
"key": "FA_JEH",
"label": "ژ",
}
"S(FA_RE)": {
"key": "FA_SUPA",
"label": "ٰ",
}
"S(FA_ZAL)": {
"key": "FA_ZWNJ",
"label": "(zero-width non-joiner)",
}
"S(FA_DAL)": {
"key": "FA_HMZA",
"label": "ٔ",
}
"S(FA_PE)": {
"key": "FA_HMZ",
"label": "ء",
}
"S(FA_SLSH)": {
"key": "FA_QSA",
"label": "؟",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ` │ @ │ # │ $ │ % │ ^ │ & │ • │ │ │ _ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ° │ │ € │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ ى │ │ │ ٱ │ │ ﴿ │ ; │ " │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ ٖ │ │ ٕ │ … │ , │ ' │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FA_ZWJ)": {
"key": "FA_TILD",
"label": "~",
}
"ALGR(FA_1A)": {
"key": "FA_GRV",
"label": "`",
}
"ALGR(FA_2A)": {
"key": "FA_AT",
"label": "@",
}
"ALGR(FA_3A)": {
"key": "FA_HASH",
"label": "#",
}
"ALGR(FA_4A)": {
"key": "FA_DLR",
"label": "$",
}
"ALGR(FA_5A)": {
"key": "FA_PERC",
"label": "%",
}
"ALGR(FA_6A)": {
"key": "FA_CIRC",
"label": "^",
}
"ALGR(FA_7A)": {
"key": "FA_AMPR",
"label": "&",
}
"ALGR(FA_8A)": {
"key": "FA_BULT",
"label": "•",
}
"ALGR(FA_9A)": {
"key": "FA_LRM",
"label": "(left-to-right mark)",
}
"ALGR(FA_0A)": {
"key": "FA_RLM",
"label": "(right-to-left mark)",
}
"ALGR(FA_MINS)": {
"key": "FA_UNDS",
"label": "_",
}
"ALGR(FA_EQL)": {
"key": "FA_DMNS",
"label": " (dead)",
}
"ALGR(FA_ZAD)": {
"key": "FA_DEG",
"label": "°",
}
"ALGR(FA_SE)": {
"key": "FA_EURO",
"label": "€",
}
"ALGR(FA_HE)": {
"key": "FA_LRO",
"label": "(left-to-right override)",
}
"ALGR(FA_KHE)": {
"key": "FA_RLO",
"label": "(right-to-left override)",
}
"ALGR(FA_HEJ)": {
"key": "FA_PDF",
"label": "(pop directional formatting)",
}
"ALGR(FA_JIM)": {
"key": "FA_LRE",
"label": "(left-to-right embedding)",
}
"ALGR(FA_CHE)": {
"key": "FA_RLE",
"label": "(right-to-left embedding)",
}
"ALGR(FA_YE)": {
"key": "FA_ALFM",
"label": "ى",
}
"ALGR(FA_ALEF)": {
"key": "FA_ALFW",
"label": "ٱ",
}
"ALGR(FA_NOON)": {
"key": "FA_LORP",
"label": "",
}
"ALGR(FA_MIM)": {
"key": "FA_RORP",
"label": "﴿",
}
"ALGR(FA_KAF)": {
"key": "FA_SCLN",
"label": ";",
}
"ALGR(FA_GAF)": {
"key": "FA_DQT",
"label": "\"",
}
"ALGR(FA_BSLS)": {
"key": "FA_MINA",
"label": "-",
}
"ALGR(FA_ZA)": {
"key": "FA_PIPE",
"label": "|",
}
"ALGR(FA_RA)": {
"key": "FA_SUBA",
"label": "ٖ",
}
"ALGR(FA_DAL)": {
"key": "FA_HMZB",
"label": "ء",
}
"ALGR(FA_PE)": {
"key": "FA_ELLP",
"label": "…",
}
"ALGR(FA_WAW)": {
"key": "FA_COMM",
"label": ",",
}
"ALGR(FA_DOT)": {
"key": "FA_QUOT",
"label": "'",
}
"ALGR(FA_SLSH)": {
"key": "FA_QUES",
"label": "?",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ¦ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(FA_1A))": {
"key": "FA_1",
"label": "1",
}
"S(ALGR(FA_2A))": {
"key": "FA_2",
"label": "2",
}
"S(ALGR(FA_3A))": {
"key": "FA_3",
"label": "3",
}
"S(ALGR(FA_4A))": {
"key": "FA_4",
"label": "4",
}
"S(ALGR(FA_5A))": {
"key": "FA_5",
"label": "5",
}
"S(ALGR(FA_6A))": {
"key": "FA_6",
"label": "6",
}
"S(ALGR(FA_7A))": {
"key": "FA_7",
"label": "7",
}
"S(ALGR(FA_8A))": {
"key": "FA_8",
"label": "8",
}
"S(ALGR(FA_9A))": {
"key": "FA_9",
"label": "9",
}
"S(ALGR(FA_0A))": {
"key": "FA_0",
"label": "0",
}
"S(ALGR(FA_LT))": {
"key": "FA_BRKP",
"label": "¦",
}
"S(ALGR(FA_SPC))": {
"key": "FA_NNBS",
"label": "(narrow non-breaking space)",
}
}
}

View File

@@ -1140,7 +1140,7 @@
"0x00AE": {
"group": "media",
"key": "KC_MEDIA_PLAY_PAUSE",
"label": "Mute",
"label": "Play/Pause Track",
"aliases": [
"KC_MPLY"
]

View File

@@ -84,7 +84,7 @@
"group": "midi",
"key": "QK_MIDI_NOTE_G_SHARP_0",
"aliases": [
"MI_Gs"
"MI_Gs",
"MI_Ab"
]
},
@@ -99,7 +99,7 @@
"group": "midi",
"key": "QK_MIDI_NOTE_A_SHARP_0",
"aliases": [
"MI_As"
"MI_As",
"MI_Bb"
]
},

View File

@@ -2,131 +2,131 @@
"keycodes": {
"0x7E00": {
"group": "kb",
"key": "QK_KB_0",
"key": "QK_KB_0"
},
"0x7E01": {
"group": "kb",
"key": "QK_KB_1",
"key": "QK_KB_1"
},
"0x7E02": {
"group": "kb",
"key": "QK_KB_2",
"key": "QK_KB_2"
},
"0x7E03": {
"group": "kb",
"key": "QK_KB_3",
"key": "QK_KB_3"
},
"0x7E04": {
"group": "kb",
"key": "QK_KB_4",
"key": "QK_KB_4"
},
"0x7E05": {
"group": "kb",
"key": "QK_KB_5",
"key": "QK_KB_5"
},
"0x7E06": {
"group": "kb",
"key": "QK_KB_6",
"key": "QK_KB_6"
},
"0x7E07": {
"group": "kb",
"key": "QK_KB_7",
"key": "QK_KB_7"
},
"0x7E08": {
"group": "kb",
"key": "QK_KB_8",
"key": "QK_KB_8"
},
"0x7E09": {
"group": "kb",
"key": "QK_KB_9",
"key": "QK_KB_9"
},
"0x7E0A": {
"group": "kb",
"key": "QK_KB_10",
"key": "QK_KB_10"
},
"0x7E0B": {
"group": "kb",
"key": "QK_KB_11",
"key": "QK_KB_11"
},
"0x7E0C": {
"group": "kb",
"key": "QK_KB_12",
"key": "QK_KB_12"
},
"0x7E0D": {
"group": "kb",
"key": "QK_KB_13",
"key": "QK_KB_13"
},
"0x7E0E": {
"group": "kb",
"key": "QK_KB_14",
"key": "QK_KB_14"
},
"0x7E0F": {
"group": "kb",
"key": "QK_KB_15",
"key": "QK_KB_15"
},
"0x7E10": {
"group": "kb",
"key": "QK_KB_16",
"key": "QK_KB_16"
},
"0x7E11": {
"group": "kb",
"key": "QK_KB_17",
"key": "QK_KB_17"
},
"0x7E12": {
"group": "kb",
"key": "QK_KB_18",
"key": "QK_KB_18"
},
"0x7E13": {
"group": "kb",
"key": "QK_KB_19",
"key": "QK_KB_19"
},
"0x7E14": {
"group": "kb",
"key": "QK_KB_20",
"key": "QK_KB_20"
},
"0x7E15": {
"group": "kb",
"key": "QK_KB_21",
"key": "QK_KB_21"
},
"0x7E16": {
"group": "kb",
"key": "QK_KB_22",
"key": "QK_KB_22"
},
"0x7E17": {
"group": "kb",
"key": "QK_KB_23",
"key": "QK_KB_23"
},
"0x7E18": {
"group": "kb",
"key": "QK_KB_24",
"key": "QK_KB_24"
},
"0x7E19": {
"group": "kb",
"key": "QK_KB_25",
"key": "QK_KB_25"
},
"0x7E1A": {
"group": "kb",
"key": "QK_KB_26",
},
"key": "QK_KB_26"
},
"0x7E1B": {
"group": "kb",
"key": "QK_KB_27",
"key": "QK_KB_27"
},
"0x7E1C": {
"group": "kb",
"key": "QK_KB_28",
"key": "QK_KB_28"
},
"0x7E1D": {
"group": "kb",
"key": "QK_KB_29",
"key": "QK_KB_29"
},
"0x7E1E": {
"group": "kb",
"key": "QK_KB_30",
"key": "QK_KB_30"
},
"0x7E1F": {
"group": "kb",
"key": "QK_KB_31",
},
"key": "QK_KB_31"
}
}
}

View File

@@ -86,7 +86,7 @@
"group": "midi",
"key": "QK_MIDI_NOTE_G_SHARP_0",
"aliases": [
"MI_Gs"
"MI_Gs",
"MI_Ab"
]
},
@@ -101,7 +101,7 @@
"group": "midi",
"key": "QK_MIDI_NOTE_A_SHARP_0",
"aliases": [
"MI_As"
"MI_As",
"MI_Bb"
]
},

View File

@@ -2,131 +2,131 @@
"keycodes": {
"0x7E40": {
"group": "user",
"key": "QK_USER_0",
"key": "QK_USER_0"
},
"0x7E41": {
"group": "user",
"key": "QK_USER_1",
"key": "QK_USER_1"
},
"0x7E42": {
"group": "user",
"key": "QK_USER_2",
"key": "QK_USER_2"
},
"0x7E43": {
"group": "user",
"key": "QK_USER_3",
"key": "QK_USER_3"
},
"0x7E44": {
"group": "user",
"key": "QK_USER_4",
"key": "QK_USER_4"
},
"0x7E45": {
"group": "user",
"key": "QK_USER_5",
"key": "QK_USER_5"
},
"0x7E46": {
"group": "user",
"key": "QK_USER_6",
"key": "QK_USER_6"
},
"0x7E47": {
"group": "user",
"key": "QK_USER_7",
"key": "QK_USER_7"
},
"0x7E48": {
"group": "user",
"key": "QK_USER_8",
"key": "QK_USER_8"
},
"0x7E49": {
"group": "user",
"key": "QK_USER_9",
"key": "QK_USER_9"
},
"0x7E4A": {
"group": "user",
"key": "QK_USER_10",
"key": "QK_USER_10"
},
"0x7E4B": {
"group": "user",
"key": "QK_USER_11",
"key": "QK_USER_11"
},
"0x7E4C": {
"group": "user",
"key": "QK_USER_12",
"key": "QK_USER_12"
},
"0x7E4D": {
"group": "user",
"key": "QK_USER_13",
"key": "QK_USER_13"
},
"0x7E4E": {
"group": "user",
"key": "QK_USER_14",
"key": "QK_USER_14"
},
"0x7E4F": {
"group": "user",
"key": "QK_USER_15",
"key": "QK_USER_15"
},
"0x7E50": {
"group": "user",
"key": "QK_USER_16",
"key": "QK_USER_16"
},
"0x7E51": {
"group": "user",
"key": "QK_USER_17",
"key": "QK_USER_17"
},
"0x7E52": {
"group": "user",
"key": "QK_USER_18",
"key": "QK_USER_18"
},
"0x7E53": {
"group": "user",
"key": "QK_USER_19",
"key": "QK_USER_19"
},
"0x7E54": {
"group": "user",
"key": "QK_USER_20",
"key": "QK_USER_20"
},
"0x7E55": {
"group": "user",
"key": "QK_USER_21",
"key": "QK_USER_21"
},
"0x7E56": {
"group": "user",
"key": "QK_USER_22",
"key": "QK_USER_22"
},
"0x7E57": {
"group": "user",
"key": "QK_USER_23",
"key": "QK_USER_23"
},
"0x7E58": {
"group": "user",
"key": "QK_USER_24",
"key": "QK_USER_24"
},
"0x7E59": {
"group": "user",
"key": "QK_USER_25",
"key": "QK_USER_25"
},
"0x7E5A": {
"group": "user",
"key": "QK_USER_26",
},
"key": "QK_USER_26"
},
"0x7E5B": {
"group": "user",
"key": "QK_USER_27",
"key": "QK_USER_27"
},
"0x7E5C": {
"group": "user",
"key": "QK_USER_28",
"key": "QK_USER_28"
},
"0x7E5D": {
"group": "user",
"key": "QK_USER_29",
"key": "QK_USER_29"
},
"0x7E5E": {
"group": "user",
"key": "QK_USER_30",
"key": "QK_USER_30"
},
"0x7E5F": {
"group": "user",
"key": "QK_USER_31",
},
"key": "QK_USER_31"
}
}
}

View File

@@ -0,0 +1,175 @@
{
"keycodes": {
"0x00CD": {
"group": "mouse",
"key": "QK_MOUSE_CURSOR_UP",
"label": "Mouse cursor up",
"aliases": [
"!reset!",
"MS_UP"
]
},
"0x00CE": {
"group": "mouse",
"key": "QK_MOUSE_CURSOR_DOWN",
"label": "Mouse cursor down",
"aliases": [
"!reset!",
"MS_DOWN"
]
},
"0x00CF": {
"group": "mouse",
"key": "QK_MOUSE_CURSOR_LEFT",
"label": "Mouse cursor left",
"aliases": [
"!reset!",
"MS_LEFT"
]
},
"0x00D0": {
"group": "mouse",
"key": "QK_MOUSE_CURSOR_RIGHT",
"label": "Mouse cursor right",
"aliases": [
"!reset!",
"MS_RGHT"
]
},
"0x00D1": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_1",
"label": "Mouse button 1",
"aliases": [
"!reset!",
"MS_BTN1"
]
},
"0x00D2": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_2",
"label": "Mouse button 2",
"aliases": [
"!reset!",
"MS_BTN2"
]
},
"0x00D3": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_3",
"label": "Mouse button 3",
"aliases": [
"!reset!",
"MS_BTN3"
]
},
"0x00D4": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_4",
"label": "Mouse button 4",
"aliases": [
"!reset!",
"MS_BTN4"
]
},
"0x00D5": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_5",
"label": "Mouse button 5",
"aliases": [
"!reset!",
"MS_BTN5"
]
},
"0x00D6": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_6",
"label": "Mouse button 6",
"aliases": [
"!reset!",
"MS_BTN6"
]
},
"0x00D7": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_7",
"label": "Mouse button 7",
"aliases": [
"!reset!",
"MS_BTN7"
]
},
"0x00D8": {
"group": "mouse",
"key": "QK_MOUSE_BUTTON_8",
"label": "Mouse button 8",
"aliases": [
"!reset!",
"MS_BTN8"
]
},
"0x00D9": {
"group": "mouse",
"key": "QK_MOUSE_WHEEL_UP",
"label": "Mouse wheel up",
"aliases": [
"!reset!",
"MS_WHLU"
]
},
"0x00DA": {
"group": "mouse",
"key": "QK_MOUSE_WHEEL_DOWN",
"label": "Mouse wheel down",
"aliases": [
"!reset!",
"MS_WHLD"
]
},
"0x00DB": {
"group": "mouse",
"key": "QK_MOUSE_WHEEL_LEFT",
"label": "Mouse wheel left",
"aliases": [
"!reset!",
"MS_WHLL"
]
},
"0x00DC": {
"group": "mouse",
"key": "QK_MOUSE_WHEEL_RIGHT",
"label": "Mouse wheel right",
"aliases": [
"!reset!",
"MS_WHLR"
]
},
"0x00DD": {
"group": "mouse",
"key": "QK_MOUSE_ACCELERATION_0",
"label": "Set mouse acceleration to 0",
"aliases": [
"!reset!",
"MS_ACL0"
]
},
"0x00DE": {
"group": "mouse",
"key": "QK_MOUSE_ACCELERATION_1",
"label": "Set mouse acceleration to 1",
"aliases": [
"!reset!",
"MS_ACL1"
]
},
"0x00DF": {
"group": "mouse",
"key": "QK_MOUSE_ACCELERATION_2",
"label": "Set mouse acceleration to 2",
"aliases": [
"!reset!",
"MS_ACL2"
]
}
}
}

View File

@@ -0,0 +1,7 @@
{
"ranges": {
"0x52E0/0x001F": {
"define": "QK_PERSISTENT_DEF_LAYER"
}
}
}

View File

@@ -0,0 +1,115 @@
{
"ranges": {
"0x7780/0x003F": {
"define": "QK_CONNECTION"
}
}
"keycodes": {
"0x7780": {
"group": "connection",
"key": "QK_OUTPUT_AUTO",
"aliases": [
"OU_AUTO"
]
},
"0x7781": {
"group": "connection",
"key": "QK_OUTPUT_NEXT",
"aliases": [
"OU_NEXT"
]
},
"0x7782": {
"group": "connection",
"key": "QK_OUTPUT_PREV",
"aliases": [
"OU_PREV"
]
},
"0x7783": {
"group": "connection",
"key": "QK_OUTPUT_NONE",
"aliases": [
"OU_NONE"
]
},
"0x7784": {
"group": "connection",
"key": "QK_OUTPUT_USB",
"aliases": [
"OU_USB"
]
},
"0x7785": {
"group": "connection",
"key": "QK_OUTPUT_2P4GHZ",
"aliases": [
"OU_2P4G"
]
},
"0x7786": {
"group": "connection",
"key": "QK_OUTPUT_BLUETOOTH",
"aliases": [
"OU_BT"
]
},
"0x7790": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE_NEXT",
"aliases": [
"BT_NEXT"
]
},
"0x7791": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE_PREV",
"aliases": [
"BT_PREV"
]
},
"0x7792": {
"group": "connection",
"key": "QK_BLUETOOTH_UNPAIR",
"aliases": [
"BT_UNPR"
]
}
"0x7793": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE1",
"aliases": [
"BT_PRF1"
]
},
"0x7794": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE2",
"aliases": [
"BT_PRF2"
]
},
"0x7795": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE3",
"aliases": [
"BT_PRF3"
]
},
"0x7796": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE4",
"aliases": [
"BT_PRF4"
]
},
"0x7797": {
"group": "connection",
"key": "QK_BLUETOOTH_PROFILE5",
"aliases": [
"BT_PRF5"
]
},
}
}

View File

@@ -0,0 +1,14 @@
{
"keycodes": {
"0x7C20": "!delete!", // old QK_OUTPUT_AUTO
"0x7C21": "!delete!", // old QK_OUTPUT_USB
"0x7C22": "!delete!", // old QK_OUTPUT_BLUETOOTH
"0x7C7B": {
"group": "quantum",
"key": "QK_LAYER_LOCK",
"aliases": [
"QK_LLCK"
]
}
}
}

View File

@@ -84,6 +84,11 @@
"board": "STEMCELL",
"bootloader": "tinyuf2",
"processor": "STM32F411"
},
"svlinky": {
"board": "QMK_PM2040",
"bootloader": "rp2040",
"processor": "RP2040"
}
}
}

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},
// Layer locking
"LAYER_LOCK_IDLE_TIMEOUT": {"info_key": "layer_lock.timeout", "value_type": "int"},
// Indicators
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
@@ -72,6 +75,11 @@
"LED_KANA_PIN": {"info_key": "indicators.kana"},
"LED_PIN_ON_STATE": {"info_key": "indicators.on_state", "value_type": "int"},
// Joystick
"JOYSTICK_AXIS_COUNT": {"info_key": "joystick.axis_count", "value_type": "int"},
"JOYSTICK_AXIS_RESOLUTION": {"info_key": "joystick.axis_resolution", "value_type": "int"},
"JOYSTICK_BUTTON_COUNT": {"info_key": "joystick.button_count", "value_type": "int"},
// Leader Key
"LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "flag"},
"LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "flag"},
@@ -171,7 +179,7 @@
"SECURE_UNLOCK_TIMEOUT": {"info_key": "secure.unlock_timeout", "value_type": "int"},
// Split Keyboard
"SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"},
"SOFT_SERIAL_PIN": {"info_key": "split.serial.pin"},
"SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
"SPLIT_HAND_MATRIX_GRID": {"info_key": "split.handedness.matrix_grid", "value_type": "array", "to_c": false},
"SPLIT_HAND_PIN": {"info_key": "split.handedness.pin"},

View File

@@ -25,6 +25,8 @@
"ENCODER_DRIVER": {"info_key": "encoder.driver"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"HAPTIC_DRIVER": {"info_key": "haptic.driver"},
"JOYSTICK_DRIVER": {"info_key": "joystick.driver"},
"JOYSTICK_ENABLE": {"info_key": "joystick.enabled", "value_type": "bool"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
@@ -41,6 +43,7 @@
"RGB_MATRIX_DRIVER": {"info_key": "rgb_matrix.driver"},
"RGBLIGHT_DRIVER": {"info_key": "rgblight.driver"},
"SECURE_ENABLE": {"info_key": "secure.enabled", "value_type": "bool"},
"SERIAL_DRIVER": {"info_key": "split.serial.driver"},
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"},

View File

@@ -563,6 +563,15 @@
"plain60": {
"target": "evyd13/plain60"
},
"planck/ez": {
"target": "zsa/planck_ez/base"
},
"planck/ez/base": {
"target": "zsa/planck_ez/base"
},
"planck/ez/glow": {
"target": "zsa/planck_ez/glow"
},
"ploopyco/trackball": {
"target": "ploopyco/trackball/rev1_005"
},
@@ -1060,7 +1069,7 @@
"target": "lyso1/lefishe"
},
"lets_split_eh/eh": {
"target": "maple_computing/lets_split_eh/eh"
"target": "maple_computing/lets_split_eh"
},
"ls_60": {
"target": "weirdo/ls_60"
@@ -1080,6 +1089,9 @@
"macro1": {
"target": "laneware/macro1"
},
"maple_computing/lets_split_eh/eh": {
"target": "maple_computing/lets_split_eh"
},
"massdrop/thekey": {
"target": "drop/thekey/v1"
},
@@ -1137,6 +1149,12 @@
"mt980": {
"target": "mt/mt980"
},
"mt/ncr80/hotswap": {
"target": "mt/ncr80/r2/hotswap"
},
"mt/ncr80/solder": {
"target": "mt/ncr80/r2/solder"
},
"nafuda": {
"target": "salicylic_acid3/nafuda"
},
@@ -1347,6 +1365,12 @@
"runner3680/5x8": {
"target": "omkbd/runner3680/5x8"
},
"saevus/cor": {
"target": "concreteflowers/cor"
},
"saevus/cor_tkl": {
"target": "concreteflowers/cor_tkl"
},
"scarletbandana": {
"target": "woodkeys/scarletbandana"
},
@@ -1525,5 +1549,8 @@
},
"kprepublic/jj50": {
"target": "kprepublic/jj50/rev1"
},
"dnworks/9973": {
"target": "dnworks/tkl87"
}
}

View File

@@ -16,12 +16,6 @@
"type": "object",
"additionalProperties": {"type": "boolean"}
},
"build_target": {
"oneOf": [
{"$ref": "#/keyboard_keymap_tuple"},
{"$ref": "#/json_file_path"}
]
},
"filename": {
"type": "string",
"minLength": 1,
@@ -53,6 +47,19 @@
{"$ref": "#/keyboard"},
{"$ref": "#/filename"}
],
"minItems": 2,
"maxItems": 2,
"unevaluatedItems": false
},
"keyboard_keymap_env": {
"type": "array",
"prefixItems": [
{"$ref": "#/keyboard"},
{"$ref": "#/filename"},
{"$ref": "#/kvp_object"}
],
"minItems": 3,
"maxItems": 3,
"unevaluatedItems": false
},
"keycode": {
@@ -87,6 +94,10 @@
"maxLength": 7,
"pattern": "^[A-Z][A-Zs_0-9]*$"
},
"kvp_object": {
"type": "object",
"additionalProperties": {"type": "string"}
},
"layout_macro": {
"oneOf": [
{

View File

@@ -1 +0,0 @@
false

View File

@@ -45,7 +45,7 @@
},
"development_board": {
"type": "string",
"enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios", "liatris", "imera"]
"enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios", "liatris", "imera", "svlinky"]
},
"pin_compatible": {
"type": "string",
@@ -92,6 +92,7 @@
"GD32VF103",
"WB32F3G71",
"WB32FQ95",
"AT32F415",
"atmega16u2",
"atmega32u2",
"atmega16u4",
@@ -216,6 +217,7 @@
"type": "string",
"enum": [
"apm32-dfu",
"at32-dfu",
"atmel-dfu",
"bootloadhid",
"caterina",
@@ -342,7 +344,43 @@
"on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
"joystick": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"driver": {"type": "string"},
"button_count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"axis_resolution": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"axes": {
"type": "object",
"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"}
}
},
{
"type": "string",
"enum": ["virtual"]
}
]
}
}
}
},
"keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"layer_lock": {
"type": "object",
"properties": {
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"layout_aliases": {
"type": "object",
"additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"}
@@ -793,12 +831,26 @@
}
}
},
"soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"soft_serial_pin": {
"$ref": "qmk.definitions.v1#/mcu_pin",
"$comment": "Deprecated: use split.serial.pin instead"
},
"soft_serial_speed": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"serial": {
"type": "object",
"additionalProperties": false,
"properties": {
"driver": {
"type": "string",
"enum": ["bitbang", "usart", "vendor"]
},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
}
},
"transport": {
"type": "object",
"additionalProperties": false,

View File

@@ -72,10 +72,5 @@
"notes": {
"type": "string"
}
},
"required": [
"keyboard",
"layout",
"layers"
]
}
}

View File

@@ -1 +0,0 @@
true

View File

@@ -3,6 +3,14 @@
"$id": "qmk.user_repo.v1",
"title": "User Repository Information",
"type": "object",
"definitions": {
"build_target": {
"oneOf": [
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
{"$ref": "qmk.definitions.v1#/json_file_path"}
]
},
},
"required": [
"userspace_version",
"build_targets"
@@ -15,7 +23,7 @@
"build_targets": {
"type": "array",
"items": {
"$ref": "qmk.definitions.v1#/build_target"
"$ref": "#/definitions/build_target"
}
}
}

View File

@@ -0,0 +1,31 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.user_repo.v1_1",
"title": "User Repository Information",
"type": "object",
"definitions": {
"build_target": {
"oneOf": [
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
{"$ref": "qmk.definitions.v1#/keyboard_keymap_env"},
{"$ref": "qmk.definitions.v1#/json_file_path"}
]
},
},
"required": [
"userspace_version",
"build_targets"
],
"properties": {
"userspace_version": {
"type": "string",
"enum": ["1.1"]
},
"build_targets": {
"type": "array",
"items": {
"$ref": "#/definitions/build_target"
}
}
}
}

198
docs/ChangeLog/20240825.md Normal file
View File

@@ -0,0 +1,198 @@
# QMK Breaking Changes - 2024 August 25 Changelog
## Notable Features
August 2024 brings another maintenance release of QMK. Almost all PRs this cycle were to do with cleanup or re-organization of existing features and code.
One key item is that there are no longer any `via`-enabled keymaps in the QMK repository -- these have all transitioned to an [External Userspace](../newbs_external_userspace) repository under the VIA team's control. Going forward, all PRs to `qmk_firmware` must not contain `via` keymaps; these should instead be redirected to the [VIA QMK Userspace](https://github.com/the-via/qmk_userspace_via) repository.
## Changes Requiring User Action
### Updated Keyboard Codebases
One note with updated keyboard names -- historical keyboard names are still considered valid when using [External Userspace](../newbs_external_userspace) for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
| Old Keyboard Name | New Keyboard Name |
|----------------------------------|-------------------------------|
| dnworks/9973 | dnworks/tkl87 |
| maple_computing/lets_split_eh/eh | maple_computing/lets_split_eh |
| planck/ez/base | zsa/planck_ez/base |
### SparkFun Pro Micro RP2040 converter renamed ([#24192](https://github.com/qmk/qmk_firmware/pull/24192))
The converter for the SparkFun Pro Micro RP2040 has been renamed.
| Old | New |
|-------------------|-------------------|
| `promicro_rp2040` | `sparkfun_rp2040` |
This change was made to avoid confusion between the clones named ProMicro RP2040 and the SparkFun Pro Micro RP2040. The clones should be using the `rp2040_ce` option.
### Key Override `keymap.c` signature change ([#24120](https://github.com/qmk/qmk_firmware/pull/24120))
Changes were made to key overrides in order to hook them into the keymap introspection system.
If you're using key overrides, your `keymap.c` will need a change to the signature of your list of key overrides, as well as removing the `NULL` terminator.
For example, you'll need to change existing code from (note the highlighted lines):
```c{1,4-5}
const key_override_t **key_overrides = (const key_override_t *[]){
&my_override_1,
&my_override_2,
NULL
};
```
to:
```c{1,4}
const key_override_t *key_overrides[] = {
&my_override_1,
&my_override_2,
};
```
### ADNS9800 and PMW33xx firmware upload now opt-in ([#24001](https://github.com/qmk/qmk_firmware/pull/24001))
Due to ambiguity with licensing compatibility, QMK has made the firmware ROM uploads for the ADNS9800 and PMW33xx lines of pointing device sensors temporarily opt-in with the view to removing them. Historically they were included by default, but as of this PR this is now no longer the case.
Please get in touch with the QMK team if your sensor no longer functions without the firmware upload -- so far we've tested each device type and they still seem to function without a new firmware, but this has not been a 100% exhaustive validation.
To re-enable firmware upload for your own builds, add the following to your keymap's `config.h`:
| Sensor | Define |
|----------|--------------------------------|
| ADNS9800 | `#define ADNS9800_UPLOAD_SROM` |
| PMW33xx | `#define PMW33XX_UPLOAD_SROM` |
:::info Note
If no issues arise during this current breaking changes cycle, these sensor firmware ROMs will be removed from QMK entirely.
:::
## Deprecation Notices
In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here.
### Migration of VIA keymaps to VIA team control
Last breaking changes cycle, the QMK team informed that [`via` keymaps are moving](./20240526#migration-of-via-keymaps-to-via-team-control) to the control of the VIA team. As of this merge, any `via`-enabled keymaps should now be PR'ed to the [VIA QMK Userspace](https://github.com/the-via/qmk_userspace_via) repository.
Any existing or newly-opened PRs against `qmk_firmware` will now be asked to remove any `via`-enabled keymaps from their submissions.
### ADNS9800 and PMW33xx sensor firmware ROM removal
As mentioned above, there's license compatibility issues between QMK and the firmware blobs historically uploaded for the ADNS9800 and PMW33xx sensors. This notice is to inform users that these firmware blobs will almost certainly be removed from QMK in the next breaking changes merge.
As previously noted this does not seem to have any detrimental effect to any of those devices, as they seem to include firmware on-chip without requiring one to be uploaded. Please get in touch with the QMK team on Discord if your sensor is no longer functional.
## Full changelist
Core:
* EEPROM: Don't erase if we don't have to. Adding eeprom_driver_format abstraction. ([#18332](https://github.com/qmk/qmk_firmware/pull/18332))
* Generate keymap dd keycodes to header ([#20273](https://github.com/qmk/qmk_firmware/pull/20273))
* [wear_leveling] efl updates ([#22489](https://github.com/qmk/qmk_firmware/pull/22489))
* GC9xxx LCD family drivers (GC9107 and GC9A01) ([#23091](https://github.com/qmk/qmk_firmware/pull/23091))
* [build_test] set CONSOLE_ENABLE=yes if DEBUG > 0 ([#23097](https://github.com/qmk/qmk_firmware/pull/23097))
* Enhance overlapping mouse keys control ([#23341](https://github.com/qmk/qmk_firmware/pull/23341))
* APA102: API rework ([#23355](https://github.com/qmk/qmk_firmware/pull/23355))
* [WIP] Adds bus acquire/release semantics to SPI start/stop. ([#23439](https://github.com/qmk/qmk_firmware/pull/23439))
* add farsi keymap extras ([#23650](https://github.com/qmk/qmk_firmware/pull/23650))
* Update atomic GPIO macros in keyboard custom matrix ([#23796](https://github.com/qmk/qmk_firmware/pull/23796))
* Check LED flags for Pixel Fractal effect ([#23881](https://github.com/qmk/qmk_firmware/pull/23881))
* Add STM32F405RG ld script for tinyuf2 ([#23885](https://github.com/qmk/qmk_firmware/pull/23885))
* SPI flash API cleanup, add async erase capability. ([#23894](https://github.com/qmk/qmk_firmware/pull/23894))
* Add process_keycode handlers for new RGB Matrix and Underglow keycodes ([#23896](https://github.com/qmk/qmk_firmware/pull/23896))
* Decouple VIA from STM32 L0/L1 EEPROM implementation ([#23901](https://github.com/qmk/qmk_firmware/pull/23901))
* Normalise mouse keycodes ([#23975](https://github.com/qmk/qmk_firmware/pull/23975))
* Remove deprecated `led_set_user` ([#23979](https://github.com/qmk/qmk_firmware/pull/23979))
* Change ADNS9800 and PMW33XX SROM uploads to opt in. ([#24001](https://github.com/qmk/qmk_firmware/pull/24001))
* Rename encoder pins defines ([#24003](https://github.com/qmk/qmk_firmware/pull/24003))
* Change suspend condition check order on ChibiOS ([#24020](https://github.com/qmk/qmk_firmware/pull/24020))
* Tap dance introspection ([#24049](https://github.com/qmk/qmk_firmware/pull/24049))
* Allow overriding `get_hardware_id()`. ([#24051](https://github.com/qmk/qmk_firmware/pull/24051))
* Align LUFA suspend logic ([#24055](https://github.com/qmk/qmk_firmware/pull/24055))
* Add support for key override introspection. ([#24120](https://github.com/qmk/qmk_firmware/pull/24120))
* Dynamic macro callbacks ([#24142](https://github.com/qmk/qmk_firmware/pull/24142))
* Rename promicro_rp2040 converter to sparkfun_pm2040 ([#24192](https://github.com/qmk/qmk_firmware/pull/24192))
* Refactor starlight RGB matrix effects ([#24202](https://github.com/qmk/qmk_firmware/pull/24202))
* Refactor riverflow RGB matrix loop ([#24203](https://github.com/qmk/qmk_firmware/pull/24203))
CLI:
* Remove handling of keyboard level keymap templates ([#24234](https://github.com/qmk/qmk_firmware/pull/24234))
* Small tweaks to keymap generation ([#24240](https://github.com/qmk/qmk_firmware/pull/24240))
Keyboards:
* refactor: keyboard/ncr80/r2 ([#22670](https://github.com/qmk/qmk_firmware/pull/22670))
* Implement data driven joysticks ([#22947](https://github.com/qmk/qmk_firmware/pull/22947))
* Whitefacemountain Ampersand ([#23437](https://github.com/qmk/qmk_firmware/pull/23437))
* Add TRKeyboard TRK1 keyboard ([#23642](https://github.com/qmk/qmk_firmware/pull/23642))
* Rename dnworks/9973 to dnworks/tkl87 ([#23692](https://github.com/qmk/qmk_firmware/pull/23692))
* Update Underglow keycodes ([#23765](https://github.com/qmk/qmk_firmware/pull/23765))
* Add boardsource/the_q ([#23782](https://github.com/qmk/qmk_firmware/pull/23782))
* BastardKB: remove legacy board `tbk` ([#23818](https://github.com/qmk/qmk_firmware/pull/23818))
* Update ZSA Moonlander ([#23911](https://github.com/qmk/qmk_firmware/pull/23911))
* Move Planck EZ to ZSA vendor folder ([#23917](https://github.com/qmk/qmk_firmware/pull/23917))
* Migrate SPLIT_HAND_PIN to json ([#23924](https://github.com/qmk/qmk_firmware/pull/23924))
* Migrate SERIAL_DRIVER to json ([#23925](https://github.com/qmk/qmk_firmware/pull/23925))
* Migrate RGB Matrix layout for two boards ([#23963](https://github.com/qmk/qmk_firmware/pull/23963))
* Migrate `led_update_kb` implementations to DD ([#23980](https://github.com/qmk/qmk_firmware/pull/23980))
* Migrate `led_update_kb` implementations to DD ([#23981](https://github.com/qmk/qmk_firmware/pull/23981))
* Migrate `led_update_kb` implementations to DD ([#23983](https://github.com/qmk/qmk_firmware/pull/23983))
* Migrate `led_update_kb` implementations to DD ([#23985](https://github.com/qmk/qmk_firmware/pull/23985))
* Relocate m256wh VIA logic ([#24006](https://github.com/qmk/qmk_firmware/pull/24006))
* Relocate winry315 VIA logic ([#24008](https://github.com/qmk/qmk_firmware/pull/24008))
* Relocate m256ws VIA logic ([#24009](https://github.com/qmk/qmk_firmware/pull/24009))
* `atreus`: misc cleanups ([#24010](https://github.com/qmk/qmk_firmware/pull/24010))
* Relocate work_louder VIA logic ([#24011](https://github.com/qmk/qmk_firmware/pull/24011))
* Relocate xelus/pachi/rgb/rev2 VIA logic ([#24016](https://github.com/qmk/qmk_firmware/pull/24016))
* Remove custom keycodes from nullbitsco/snap ([#24017](https://github.com/qmk/qmk_firmware/pull/24017))
* added bear_face/v3 ([#24032](https://github.com/qmk/qmk_firmware/pull/24032))
* Remove DEFAULT_FOLDER from maple_computing/lets_split_eh ([#24054](https://github.com/qmk/qmk_firmware/pull/24054))
* refactor bear_face/v1, v2 ([#24060](https://github.com/qmk/qmk_firmware/pull/24060))
* Convert `eeconfig_init_kb` implementations to config ([#24087](https://github.com/qmk/qmk_firmware/pull/24087))
* Remove broken keymap from keebio/iris ([#24094](https://github.com/qmk/qmk_firmware/pull/24094))
* Move LED Matrix LED config to data driven ([#24122](https://github.com/qmk/qmk_firmware/pull/24122))
* Move split.soft_serial_pin to split.serial.pin ([#24127](https://github.com/qmk/qmk_firmware/pull/24127))
* Remove pointless `RGB_MATRIX_LED_COUNT`s ([#24133](https://github.com/qmk/qmk_firmware/pull/24133))
* `hs60/v1`: separate into ANSI and ISO revisions ([#24136](https://github.com/qmk/qmk_firmware/pull/24136))
* Migrate half-duplex `SERIAL_USART_TX_PIN` to DD ([#24143](https://github.com/qmk/qmk_firmware/pull/24143))
* Migrate split.soft_serial_pin to split.serial.pin O-Z ([#24146](https://github.com/qmk/qmk_firmware/pull/24146))
* Migrate split.soft_serial_pin to split.serial.pin 0-H ([#24155](https://github.com/qmk/qmk_firmware/pull/24155))
* Remove instances of MASTER_LEFT. ([#24163](https://github.com/qmk/qmk_firmware/pull/24163))
* Rename EC Type-K ([#24180](https://github.com/qmk/qmk_firmware/pull/24180))
* Migrate split.soft_serial_pin to split.serial.pin H-O ([#24185](https://github.com/qmk/qmk_firmware/pull/24185))
* Remove split.transport.protocol=serial ([#24191](https://github.com/qmk/qmk_firmware/pull/24191))
* Refactor use of `matrix_scan_kb` ([#24200](https://github.com/qmk/qmk_firmware/pull/24200))
* Eliminate use of `#include "../default/keymap.c"`. ([#24215](https://github.com/qmk/qmk_firmware/pull/24215))
* Remove keyboard level `QK_BOOT` implementations ([#24231](https://github.com/qmk/qmk_firmware/pull/24231))
* Remove `handwired/pytest/has_template` ([#24232](https://github.com/qmk/qmk_firmware/pull/24232))
* Refactor opendeck/32 ([#24233](https://github.com/qmk/qmk_firmware/pull/24233))
* Refactor printedpad ([#24236](https://github.com/qmk/qmk_firmware/pull/24236))
* Refactor orthocode ([#24237](https://github.com/qmk/qmk_firmware/pull/24237))
* Remove unnecessary RGB Matrix shutdown hooks ([#24238](https://github.com/qmk/qmk_firmware/pull/24238))
* Remove all via-enabled keymaps, including `via`. ([#24322](https://github.com/qmk/qmk_firmware/pull/24322))
Keyboard fixes:
* Fix dogtag/info.json ([#23520](https://github.com/qmk/qmk_firmware/pull/23520))
* splitkb/kyria: remove `CONVERT_TO` at keyboard level ([#23857](https://github.com/qmk/qmk_firmware/pull/23857))
* Fixup mt/mt84 ([#23883](https://github.com/qmk/qmk_firmware/pull/23883))
* Fix for encoders and support ENCODER_MAP_ENABLE on Planck rev7 ([#23967](https://github.com/qmk/qmk_firmware/pull/23967))
* `handwired/swiftrax/bumblebee`: fix layout name ([#24064](https://github.com/qmk/qmk_firmware/pull/24064))
* Fixup boardsource/the_q RGB matrix coordinates ([#24086](https://github.com/qmk/qmk_firmware/pull/24086))
* Various fixes for keyboards not implementing callbacks correctly ([#24092](https://github.com/qmk/qmk_firmware/pull/24092))
* Various fixes for keyboards not implementing callbacks correctly ([#24116](https://github.com/qmk/qmk_firmware/pull/24116))
* Remove duplicate calls to `housekeeping_task_user` ([#24201](https://github.com/qmk/qmk_firmware/pull/24201))
* Fixup `handwired/dactyl_minidox` ([#24253](https://github.com/qmk/qmk_firmware/pull/24253))
* Fix build failure on zsa/moonlander with DYNAMIC_MACRO_ENABLE ([#24316](https://github.com/qmk/qmk_firmware/pull/24316))
Others:
* LED drivers: extract documentation from LED/RGB Matrix pages ([#23630](https://github.com/qmk/qmk_firmware/pull/23630))
* Implement data driven serial driver ([#23923](https://github.com/qmk/qmk_firmware/pull/23923))
* Remove skipped schema files ([#23987](https://github.com/qmk/qmk_firmware/pull/23987))
* Update RGBLight (Underglow) keycode names ([#23999](https://github.com/qmk/qmk_firmware/pull/23999))
Bugs:
* Fix NKRO and Mouse Emulation on arm_atsam ([#23945](https://github.com/qmk/qmk_firmware/pull/23945))
* Force `dump_lines()` to always use Unix line endings ([#23954](https://github.com/qmk/qmk_firmware/pull/23954))
* Fixup home link. ([#24068](https://github.com/qmk/qmk_firmware/pull/24068))

122
docs/ChangeLog/20241124.md Normal file
View File

@@ -0,0 +1,122 @@
# QMK Breaking Changes - 2024 November 24 Changelog
## Notable Features
November 2024 brings a relatively lightweight QMK release. As with previous cycles, almost all PRs were related to cleanup or re-organization of aspects of QMK.
One notable item is the removal of `arm_atsam` -- this affects users with `massdrop/ctrl` or `massdrop/alt` keyboards. These have no current replacement, but support for an alternative to the `arm_atsam` backend is nearing completion. Unfortunately the alternative backend didn't make this quarter's list of merges, so there's a temporary removal of these boards. Users who need to build for these targets should stay on the `0.26.x` version of QMK until these boards have been restored.
## Changes Requiring User Action
### Updated Keyboard Codebases
One note with updated keyboard names -- historical keyboard names are still considered valid when using [External Userspace](../newbs_external_userspace) for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
| Old Keyboard Name | New Keyboard Name |
|-------------------|-------------------------|
| saevus/cor | concreteflowers/cor |
| saevus/cor_tkl | concreteflowers/cor_tkl |
## Deprecation Notices
In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here.
### RGB Keycode Overhaul ([#23679](https://github.com/qmk/qmk_firmware/pull/23679), [#24484](https://github.com/qmk/qmk_firmware/pull/24484), [#24490](https://github.com/qmk/qmk_firmware/pull/24490))
RGB keycodes have been reworked to allow for both rgblight and rgb_matrix to coexist for the handful of boards in the repo with both enabled. Previously, `RGB_xxx` style keycodes were available, but now for rgblight we have `UG_xxx` (underglow), and `RM_xxx` for rgb_matrix. Default keymaps have been updated to reflect whichever system the respective board enables.
Longer-term, `RGB_xxx` style keycodes will be removed, but for now they act as if they're `UG_xxx`, and `UG_xxx` keycodes act upon both rgblight and rgb_matrix simultaneously. Put simply, the existing `RGB_xxx` keycodes act as they always have, giving users time to transition across to the new keycodes instead.
### ADNS9800 and PMW33xx sensor firmware ROM removal ([#24428](https://github.com/qmk/qmk_firmware/pull/24428))
Following on from the last Breaking Changes cycle, Binary blobs for optical sensors have been removed from the QMK codebase. Hooks allowing users to supply their own have been put in place; users wishing to source firmware blobs and integrate them into their keymap may do so. Doing so renders their firmware un-distributable due to licensing incompatibility with the GPL -- as such user firmware containing such blobs must not be distributed.
Please get in touch with the QMK team on Discord if your sensor is no longer functional.
## Full changelist
Core:
* Refactor F4 ld files to use common files ([#18059](https://github.com/qmk/qmk_firmware/pull/18059))
* Add LD7032 support to QP. ([#20828](https://github.com/qmk/qmk_firmware/pull/20828))
* Add combo key repress feature ([#22858](https://github.com/qmk/qmk_firmware/pull/22858))
* Add Layer Lock feature ([#23430](https://github.com/qmk/qmk_firmware/pull/23430))
* Added MCU support for ArteryTek AT32F415 ([#23445](https://github.com/qmk/qmk_firmware/pull/23445))
* Allow codegen of `keymap.json` => `keymap.c` without requiring layers/layout etc. ([#23451](https://github.com/qmk/qmk_firmware/pull/23451))
* Separate RGBLight/RGB Matrix keycode handling ([#23679](https://github.com/qmk/qmk_firmware/pull/23679))
* Allow for inverted SPI CS logic ([#23699](https://github.com/qmk/qmk_firmware/pull/23699))
* Add timer_save and _restore functions. ([#23887](https://github.com/qmk/qmk_firmware/pull/23887))
* Allow for `get_hardware_id()` to be used for serial number. ([#24053](https://github.com/qmk/qmk_firmware/pull/24053))
* Segregrate keycode at pre-process record quantum ([#24194](https://github.com/qmk/qmk_firmware/pull/24194))
* Add ability to poweroff ADNS5050 sensor ([#24223](https://github.com/qmk/qmk_firmware/pull/24223))
* quantum: util: add bit and bitmask helpers ([#24229](https://github.com/qmk/qmk_firmware/pull/24229))
* Add new connection keycodes for Bluetooth, 2.4GHz. ([#24251](https://github.com/qmk/qmk_firmware/pull/24251))
* `usb_device_state`: consolidate usb state handling across implementations ([#24258](https://github.com/qmk/qmk_firmware/pull/24258))
* Remove global k_rgb_matrix_split ([#24348](https://github.com/qmk/qmk_firmware/pull/24348))
* util: uf2families: sync with upstream ([#24351](https://github.com/qmk/qmk_firmware/pull/24351))
* [Maintenance] builddefs: common_rules: overhaul debug information generation ([#24352](https://github.com/qmk/qmk_firmware/pull/24352))
* Add easier way to set default single layer ([#24376](https://github.com/qmk/qmk_firmware/pull/24376))
* Tweak OS detect, add OS_DETECTION_SINGLE_REPORT ([#24379](https://github.com/qmk/qmk_firmware/pull/24379))
* Reinstate global `k_rgb_matrix_split` ([#24388](https://github.com/qmk/qmk_firmware/pull/24388))
* Bring supported STM32F4 configs in line with F4x1 ([#24413](https://github.com/qmk/qmk_firmware/pull/24413))
* Extended wheel reports ([#24422](https://github.com/qmk/qmk_firmware/pull/24422))
* Remove binary blobs from optical sensors. ([#24428](https://github.com/qmk/qmk_firmware/pull/24428))
* Remove `STM32_PWM_USE_ADVANCED` references ([#24432](https://github.com/qmk/qmk_firmware/pull/24432))
* Remove `RING_BUFFERED_6KRO_REPORT_ENABLE` due to disuse. ([#24433](https://github.com/qmk/qmk_firmware/pull/24433))
* Move pointing device driver code ([#24445](https://github.com/qmk/qmk_firmware/pull/24445))
* Add svlinky converter ([#24449](https://github.com/qmk/qmk_firmware/pull/24449))
* Update combo user function variable ([#24467](https://github.com/qmk/qmk_firmware/pull/24467))
* `qmk find`: expand operator support ([#24468](https://github.com/qmk/qmk_firmware/pull/24468))
* Rename RGB and HSV structs ([#24471](https://github.com/qmk/qmk_firmware/pull/24471))
* RGBLight: Improve RGB Test animation ([#24477](https://github.com/qmk/qmk_firmware/pull/24477))
* Change default ARM hardware PWM WS2812 tick frequency to 800kHz ([#24508](https://github.com/qmk/qmk_firmware/pull/24508))
* Add pointing tests ([#24513](https://github.com/qmk/qmk_firmware/pull/24513))
* Joystick: add support for 8-way hat switch ([#24515](https://github.com/qmk/qmk_firmware/pull/24515))
* Refactor Riverflow matrix effect with runner ([#24520](https://github.com/qmk/qmk_firmware/pull/24520))
* Update Pixel Rain to respect LED range limits ([#24532](https://github.com/qmk/qmk_firmware/pull/24532))
* Update Jellybean Raindrops to respect LED range limits ([#24534](https://github.com/qmk/qmk_firmware/pull/24534))
* Refactor Breathing effect with runner ([#24535](https://github.com/qmk/qmk_firmware/pull/24535))
* Refactor LED Breathing effect with runner ([#24540](https://github.com/qmk/qmk_firmware/pull/24540))
* Expose rgb_matrix_update_pwm_buffers to be available in keymaps ([#24573](https://github.com/qmk/qmk_firmware/pull/24573))
* Simple Python script to show polling rate ([#24622](https://github.com/qmk/qmk_firmware/pull/24622))
* Add keycode PDF(layer) to set the default layer in EEPROM ([#24630](https://github.com/qmk/qmk_firmware/pull/24630))
* Provide method to save a single default layer in the full range of 0-31 ([#24639](https://github.com/qmk/qmk_firmware/pull/24639))
CLI:
* Refactor painter arguments to table instead of commandline ([#24456](https://github.com/qmk/qmk_firmware/pull/24456))
* `qmk new-keyboard`: separate dev board and MCU selection ([#24548](https://github.com/qmk/qmk_firmware/pull/24548))
* Bump minimum required Python version ([#24554](https://github.com/qmk/qmk_firmware/pull/24554))
Submodule updates:
* Remove `arm_atsam` platform ([#24337](https://github.com/qmk/qmk_firmware/pull/24337))
Keyboards:
* add ergodox Community Layout for LAYOUT_ergodox keyboards ([#22963](https://github.com/qmk/qmk_firmware/pull/22963))
* Cutie Club Fidelity Layout Additions ([#23838](https://github.com/qmk/qmk_firmware/pull/23838))
* Add Ploopyco functions for host state control ([#23953](https://github.com/qmk/qmk_firmware/pull/23953))
* Corne rev4 ([#24084](https://github.com/qmk/qmk_firmware/pull/24084))
* Rename saevus to concreteflowers ([#24249](https://github.com/qmk/qmk_firmware/pull/24249))
* Remove `60_tsangan_hhkb` community layout ([#24355](https://github.com/qmk/qmk_firmware/pull/24355))
* add USART configuration to config.h for PS/2 mouse support ([#24398](https://github.com/qmk/qmk_firmware/pull/24398))
* Add SteelSeries Prime+ mouse ([#24408](https://github.com/qmk/qmk_firmware/pull/24408))
* Rename RGB/HSV structs: keyboard-level code ([#24476](https://github.com/qmk/qmk_firmware/pull/24476))
* xiudi/xd002: Remove broken oversized `multilayer_rgb` keymap ([#24480](https://github.com/qmk/qmk_firmware/pull/24480))
* Update keycodes for keyboards with RGB Matrix ([#24484](https://github.com/qmk/qmk_firmware/pull/24484))
* Cipulot Updates ([#24539](https://github.com/qmk/qmk_firmware/pull/24539))
* Update keymaps to use PDF keycode ([#24633](https://github.com/qmk/qmk_firmware/pull/24633))
* Remove keyboard use of eeconfig_read_default_layer ([#24635](https://github.com/qmk/qmk_firmware/pull/24635))
Keyboard fixes:
* Fix rendering of `keymap_config.no_gui` within `led_update_kb` ([#24473](https://github.com/qmk/qmk_firmware/pull/24473))
* Fix duplication of core `GU_TOGG` keycode ([#24474](https://github.com/qmk/qmk_firmware/pull/24474))
* keebio/nyquist: Remove invalid I2C config ([#24479](https://github.com/qmk/qmk_firmware/pull/24479))
* horrortroll/nyx/rev1: Fix compilation of custom RGB effect ([#24481](https://github.com/qmk/qmk_firmware/pull/24481))
Others:
* Improve consistency of syntax within `data/constants/keycodes` ([#24528](https://github.com/qmk/qmk_firmware/pull/24528))
Bugs:
* WS2812 API rework ([#24364](https://github.com/qmk/qmk_firmware/pull/24364))
* Backward compatibility for new RGB keycode handling ([#24490](https://github.com/qmk/qmk_firmware/pull/24490))
* Fix compiliation issues with OS Detection ([#24502](https://github.com/qmk/qmk_firmware/pull/24502))
* Revert removal of `QK_OUTPUT_AUTO`, fixup docs to reflect. ([#24593](https://github.com/qmk/qmk_firmware/pull/24593))
* Review fixes for layer lock feature ([#24627](https://github.com/qmk/qmk_firmware/pull/24627))

View File

@@ -16,6 +16,8 @@
"/tutorial": "/newbs",
"/unicode": "/feature_unicode",
"/features/bluetooth": "/features/wireless",
"/adc_driver": "/drivers/adc",
"/apa102_driver": "/drivers/apa102",
"/audio_driver": "/drivers/audio",
@@ -24,7 +26,7 @@
"/feature_auto_shift": "/features/auto_shift",
"/feature_autocorrect": "/features/autocorrect",
"/feature_backlight": "/features/backlight",
"/feature_bluetooth": "/features/bluetooth",
"/feature_bluetooth": "/features/wireless",
"/feature_bootmagic": "/features/bootmagic",
"/feature_caps_word": "/features/caps_word",
"/feature_combo": "/features/combo",

View File

@@ -21,7 +21,8 @@
{ "text": "Debugging QMK", "link": "/faq_debug" },
{ "text": "Keymap FAQ", "link": "/faq_keymap" },
{ "text": "Squeezing Space from AVR", "link": "/squeezing_avr" },
{ "text": "Glossary", "link": "/reference_glossary" }
{ "text": "Glossary", "link": "/reference_glossary" },
{ "text": "License Violations", "link": "/license_violations" }
]
},
{
@@ -123,6 +124,7 @@
{ "text": "Key Lock", "link": "/features/key_lock" },
{ "text": "Key Overrides", "link": "/features/key_overrides" },
{ "text": "Layers", "link": "/feature_layers" },
{ "text": "Layer Lock", "link": "/features/layer_lock" },
{ "text": "One Shot Keys", "link": "/one_shot_keys" },
{ "text": "OS Detection", "link": "/features/os_detection" },
{ "text": "Raw HID", "link": "/features/rawhid" },
@@ -166,8 +168,7 @@
]
},
{ "text": "Audio", "link": "/features/audio" },
{ "text": "Bluetooth", "link": "/features/bluetooth" },
{ "text": "Bootmagic Lite", "link": "/features/bootmagic" },
{ "text": "Bootmagic", "link": "/features/bootmagic" },
{ "text": "Converters", "link": "/feature_converters" },
{ "text": "Custom Matrix", "link": "/custom_matrix" },
{ "text": "DIP Switch", "link": "/features/dip_switch" },
@@ -179,7 +180,8 @@
{ "text": "Pointing Device", "link": "/features/pointing_device" },
{ "text": "PS/2 Mouse", "link": "/features/ps2_mouse" },
{ "text": "Split Keyboard", "link": "/features/split_keyboard" },
{ "text": "Stenography", "link": "/features/stenography" }
{ "text": "Stenography", "link": "/features/stenography" },
{ "text": "Wireless", "link": "/features/wireless" }
]
},
{
@@ -204,7 +206,7 @@
{ "text": "My Pull Request Was Flagged", "link": "/breaking_changes_instructions" },
{
"text": "Most Recent ChangeLog",
"link": "/ChangeLog/20240526"
"link": "/ChangeLog/20241124"
},
{ "text": "Past Breaking Changes", "link": "/breaking_changes_history" },
{ "text": "Deprecation Policy", "link": "/support_deprecation_policy" }

View File

@@ -4,7 +4,7 @@ This page attempts to introduce developers to the QMK Compiler. It does not go i
# Overview
The QMK Compile API consists of a few movings parts:
The QMK Compile API consists of a few moving parts:
![Architecture Diagram](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)

View File

@@ -10,25 +10,25 @@ Practically, this means QMK merges the `develop` branch into the `master` branch
## What has been included in past Breaking Changes?
* [2024 Nov 24](ChangeLog/20241124)
* [2024 Aug 25](ChangeLog/20240825)
* [2024 May 26](ChangeLog/20240526)
* [2024 Feb 25](ChangeLog/20240225)
* [2023 Nov 26](ChangeLog/20231126)
* [Older Breaking Changes](breaking_changes_history)
## When is the next Breaking Change?
The next Breaking Change is scheduled for August 25, 2024.
The next Breaking Change is scheduled for February 23, 2025.
### Important Dates
* 2024 May 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* 2024 Jul 28 - `develop` closed to new PRs.
* 2024 Jul 28 - Call for testers.
* 2024 Aug 4 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* 2024 Aug 18 - `develop` is locked, only critical bugfix PRs merged.
* 2024 Aug 22 - `master` is locked, no PRs merged.
* 2024 Aug 25 - Merge `develop` to `master`.
* 2024 Aug 25 - `master` is unlocked. PRs can be merged again.
* 2024 Nov 24 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* 2025 Jan 26 - `develop` closed to new PRs.
* 2025 Jan 26 - Call for testers.
* 2025 Feb 9 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* 2025 Feb 16 - `develop` is locked, only critical bugfix PRs merged.
* 2024 Nov 21 - `master` is locked, no PRs merged.
* 2025 Feb 23 - Merge `develop` to `master`.
* 2025 Feb 23 - `master` is unlocked. PRs can be merged again.
## What changes will be included?
@@ -48,7 +48,7 @@ Criteria for acceptance:
Strongly suggested:
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20240526`.
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20241124`.
* This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PRs ID.
* One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.

View File

@@ -2,6 +2,8 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
* [2024 Nov 24](ChangeLog/20241124) - version 0.27.0
* [2024 Aug 25](ChangeLog/20240825) - version 0.26.0
* [2024 May 26](ChangeLog/20240526) - version 0.25.0
* [2024 Feb 25](ChangeLog/20240225) - version 0.24.0
* [2023 Nov 26](ChangeLog/20231126) - version 0.23.0

View File

@@ -31,4 +31,4 @@ Commenting on your pull request and being responsive to questions, comments, and
### Ask for Help
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/Uq7gcHh).
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/qmk).

View File

@@ -153,20 +153,26 @@ qmk cd
This command allows for searching through keyboard/keymap targets, filtering by specific criteria. `info.json` and `rules.mk` files contribute to the search data, as well as keymap configurations, and the results can be filtered using "dotty" syntax matching the overall `info.json` file format.
For example, one could search for all keyboards using STM32F411:
For example, one could search for all keyboards powered by the STM32F411 microcontroller:
```
qmk find -f 'processor=STM32F411'
qmk find -f 'processor==STM32F411'
```
...and one can further constrain the list to keyboards using STM32F411 as well as rgb_matrix support:
The list can be further constrained by passing additional filter expressions:
```
qmk find -f 'processor=STM32F411' -f 'features.rgb_matrix=true'
qmk find -f 'processor==STM32F411' -f 'features.rgb_matrix==true'
```
The following filter expressions are also supported:
The following filter expressions are supported:
- `key == value`: Match targets where `key` is equal to `value`. May include wildcards such as `*` and `?`.
- `key != value`: Match targets where `key` is not `value`. May include wildcards such as `*` and `?`.
- `key < value`: Match targets where `key` is a number less than `value`.
- `key > value`: Match targets where `key` is a number greater than `value`.
- `key <= value`: Match targets where `key` is a number less than or equal to `value`.
- `key >= value`: Match targets where `key` is a number greater than or equal to `value`.
- `exists(key)`: Match targets where `key` is present.
- `absent(key)`: Match targets where `key` is not present.
- `contains(key, value)`: Match targets where `key` contains `value`. Can be used for strings, arrays and object keys.
@@ -175,7 +181,7 @@ The following filter expressions are also supported:
You can also list arbitrary values for each matched target with `--print`:
```
qmk find -f 'processor=STM32F411' -p 'keyboard_name' -p 'features.rgb_matrix'
qmk find -f 'processor==STM32F411' -p 'keyboard_name' -p 'features.rgb_matrix'
```
**Usage**:

View File

@@ -57,6 +57,10 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [WB32F3G71xx](http://www.westberrytech.com)
* [WB32FQ95xx](http://www.westberrytech.com)
### Artery (AT32)
* [AT32F415](https://www.arterychip.com/en/product/AT32F415.jsp)
### NXP (Kinetis)
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
@@ -75,10 +79,6 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
For a detailed overview about the RP2040 support by QMK see the [dedicated RP2040 page](platformdev_rp2040).
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop). However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.
## RISC-V
### GigaDevice

View File

@@ -413,7 +413,7 @@ Use these to enable or disable building certain features. The more you have enab
* `MAGIC_ENABLE`
* MAGIC actions (BOOTMAGIC without the boot)
* `BOOTMAGIC_ENABLE`
* Enable Bootmagic Lite
* Enable Bootmagic
* `MOUSEKEY_ENABLE`
* Mouse keys
* `EXTRAKEY_ENABLE`
@@ -426,8 +426,6 @@ Use these to enable or disable building certain features. The more you have enab
* Key combo feature
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `RING_BUFFERED_6KRO_REPORT_ENABLE`
* USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`

View File

@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DOWN, BL_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_TOGG, UG_NEXT, UG_HUED, UG_HUEU, UG_SATD, UG_SATU, UG_VALD, UG_VALU, BL_TOGG, BL_DOWN, BL_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -82,7 +82,7 @@ The default keymap uses the `LAYOUT_all` macro, so that will be the value of the
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
],
[
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_HUD", "RGB_HUI", "RGB_SAD", "RGB_SAI", "RGB_VAD", "RGB_VAI", "BL_TOGG", "BL_DOWN", "BL_UP",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "UG_TOGG", "UG_NEXT", "UG_HUED", "UG_HUEU", "UG_SATD", "UG_SATU", "UG_VALD", "UG_VALU", "BL_TOGG", "BL_DOWN", "BL_UP",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "QK_BOOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MNXT", "KC_VOLD",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",

View File

@@ -11,7 +11,7 @@ Third-party contributions help us grow and improve QMK. We want to make the pull
## I Don't Want to Read This Whole Thing! I Just Have a Question!
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/Uq7gcHh).
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/qmk).
Please keep these things in mind:
@@ -29,7 +29,7 @@ QMK is largely written in C, with specific features and parts written in C++. It
# Where Can I Go for Help?
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/Uq7gcHh).
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/qmk).
# How Do I Make a Contribution?
@@ -128,7 +128,7 @@ We also ask that you follow these guidelines:
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understanding QMK](understanding_qmk), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
* [Chat on Discord](https://discord.gg/Uq7gcHh)
* [Chat on Discord](https://discord.gg/qmk)
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.

View File

@@ -184,7 +184,7 @@ Whenever possible you should customize your keyboard by using `process_record_*(
### Example `matrix_scan_*` Implementation
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/Uq7gcHh).
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/qmk).
### `matrix_scan_*` Function Documentation

View File

@@ -8,8 +8,8 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have
## Installation
Put your keyboard into bootloader mode, either by hitting the `QK_BOOT` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic Lite](features/bootmagic) docs for more details). Some boards use [Command](features/command) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](features/bootmagic) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
Put your keyboard into bootloader mode, either by hitting the `QK_BOOT` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](features/bootmagic) docs for more details). Some boards use [Command](features/command) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic](features/bootmagic) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button.
Alternatively, hold `BOOT` while inserting the USB cable.
@@ -98,6 +98,7 @@ The device name here is the name that appears in Zadig, and may not be what the
|`bootloadhid` |HIDBoot |`16C0:05DF` |HidUsb |
|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`at32-dfu` |AT32 Bootloader DFU |`2E3C:DF11` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`gd32v-dfu` |GD32V BOOTLOADER |`28E9:0189` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |

View File

@@ -26,20 +26,51 @@ Add the following to your `config.h`:
## API {#api}
### `void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds)`
### `void apa102_init(void)` {#api-apa102-init}
Send RGB data to the APA102 LED chain.
#### Arguments {#api-apa102-setleds-arguments}
- `rgb_led_t *start_led`
A pointer to the LED array.
- `uint16_t num_leds`
The length of the LED array.
Initialize the LED driver. This function should be called first.
---
### `void apa102_set_brightness(uint8_t brightness)`
### `void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-apa102-set-color}
Set the color of a single LED. This function does not immediately update the LEDs; call `apa102_flush()` after you are finished.
#### Arguments {#api-apa102-set-color-arguments}
- `uint16_t index`
The LED index in the APA102 chain.
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-apa102-set-color-all}
Set the color of all LEDs.
#### Arguments {#api-apa102-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void apa102_flush(void)` {#api-apa102-flush}
Flush the PWM values to the LED chain.
---
### `void apa102_set_brightness(uint8_t brightness)` {#api-apa102-set-brightness}
Set the global brightness.

View File

@@ -57,27 +57,32 @@ This driver needs one Timer per enabled/used DAC channel, to trigger conversion;
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_DAC TRUE // [!code focus]
#define HAL_USE_GPT TRUE // [!code focus]
#include_next <halconf.h>
```
```c [mcuconf.h]
#pragma once
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
#define STM32_DAC_USE_DAC1_CH1 TRUE
#undef STM32_DAC_USE_DAC1_CH2
#define STM32_DAC_USE_DAC1_CH2 TRUE
#undef STM32_GPT_USE_TIM6
#define STM32_GPT_USE_TIM6 TRUE
#undef STM32_GPT_USE_TIM7
#define STM32_GPT_USE_TIM7 TRUE
#undef STM32_GPT_USE_TIM8
#define STM32_GPT_USE_TIM8 TRUE
#undef STM32_DAC_USE_DAC1_CH1 // [!code focus]
#define STM32_DAC_USE_DAC1_CH1 TRUE // [!code focus]
#undef STM32_DAC_USE_DAC1_CH2 // [!code focus]
#define STM32_DAC_USE_DAC1_CH2 TRUE // [!code focus]
#undef STM32_GPT_USE_TIM6 // [!code focus]
#define STM32_GPT_USE_TIM6 TRUE // [!code focus]
#undef STM32_GPT_USE_TIM7 // [!code focus]
#define STM32_GPT_USE_TIM7 TRUE // [!code focus]
#undef STM32_GPT_USE_TIM8 // [!code focus]
#define STM32_GPT_USE_TIM8 TRUE // [!code focus]
```
:::
::: tip
Note: DAC1 (A4) uses TIM6, DAC2 (A5) uses TIM7, and the audio state timer uses TIM8 (configurable).
@@ -95,23 +100,28 @@ only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; t
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:
```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_DAC TRUE // [!code focus]
#define HAL_USE_GPT TRUE // [!code focus]
#include_next <halconf.h>
```
```c [mcuconf.h]
#pragma once
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
#define STM32_DAC_USE_DAC1_CH1 TRUE
#undef STM32_DAC_USE_DAC1_CH2
#define STM32_DAC_USE_DAC1_CH2 TRUE
#undef STM32_GPT_USE_TIM6
#define STM32_GPT_USE_TIM6 TRUE
#undef STM32_DAC_USE_DAC1_CH1 // [!code focus]
#define STM32_DAC_USE_DAC1_CH1 TRUE // [!code focus]
#undef STM32_DAC_USE_DAC1_CH2 // [!code focus]
#define STM32_DAC_USE_DAC1_CH2 TRUE // [!code focus]
#undef STM32_GPT_USE_TIM6 // [!code focus]
#define STM32_GPT_USE_TIM6 TRUE // [!code focus]
```
:::
### DAC Config
@@ -170,19 +180,25 @@ This driver uses the ChibiOS-PWM system to produce a square-wave on specific out
The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
```c
//halconf.h:
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_PWM TRUE // [!code focus]
#define HAL_USE_PAL TRUE // [!code focus]
#include_next <halconf.h>
```
```c [mcuconf.h]
#pragma once
```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE
#undef STM32_PWM_USE_TIM1 // [!code focus]
#define STM32_PWM_USE_TIM1 TRUE // [!code focus]
```
:::
If we now target pin A8, looking through the data-sheet of the STM32F103C8, for the timers and alternate functions
- TIM1_CH1 = PA8 <- alternate0

133
docs/drivers/aw20216s.md Normal file
View File

@@ -0,0 +1,133 @@
# AW20216S Driver {#aw20216s-driver}
SPI 18x12 LED matrix driver by Awinic. Supports a maximum of four drivers, each controlling up to 216 single-color LEDs, or 72 RGB LEDs.
[AW20216S Datasheet](https://doc.awinic.com/doc/20230609wm/b6a9c70b-e1bd-495b-925f-bcbed3fc2620.pdf)
## Usage {#usage}
The AW20216S driver code is automatically included if you are using the [RGB Matrix](../features/rgb_matrix) feature with the `aw20216s` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += aw20216s.c
SPI_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------------------|-------------|-------------------------------------------------------------|
|`AW20216S_CS_PIN_1` |*Not defined*|The GPIO pin connected to the first driver's Chip Select pin |
|`AW20216S_CS_PIN_2` |*Not defined*|The GPIO pin connected to the second driver's Chip Select pin|
|`AW20216S_EN_PIN` |*Not defined*|The GPIO pin connected to the drivers' Enable pins |
|`AW20216S_SPI_MODE` |`0` |The SPI mode to use |
|`AW20216S_SPI_DIVISOR` |`4` |The SPI divisor to use |
|`AW20216S_SCALING_MAX` |`150` |The scaling value |
|`AW20216S_GLOBAL_CURRENT_MAX`|`150` |The global current control value |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. To adjust it, add the following to your `config.h`:
```c
#define AW20216S_GLOBAL_CURRENT_MAX 150
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure SPI](spi#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the first LED index on driver 0 has its red channel on `SW1_CS1`, green on `SW1_CS2` and blue on `SW1_CS3`.
These values correspond to the matrix locations as shown in the datasheet on page 16, figure 16.
## API {#api}
### `struct aw20216s_led_t` {#api-aw20216s-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-aw20216s-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel.
- `uint8_t g`
The output PWM register address for the LED's green channel.
- `uint8_t b`
The output PWM register address for the LED's blue channel.
---
### `void aw20216s_init(pin_t cs_pin)` {#api-aw20216s-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-aw20216s-init-arguments}
- `pin_t cs_pin`
The GPIO connected to the Chip Select pin of the LED driver to initialize.
---
### `void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-aw20216s-set-color}
Set the color of a single LED. This function does not immediately update the LEDs; call `aw20216s_update_pwm_buffers()` after you are finished.
#### Arguments {#api-aw20216s-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_aw20216s_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-aw20216s-set-color-all}
Set the color of all LEDs.
#### Arguments {#api-aw20216s-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)` {#api-aw20216s-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-aw20216s-update-pwm-buffers-arguments}
- `pin_t cs_pin`
The GPIO connected to the Chip Select pin of the driver.
- `uint8_t index`
The index of the driver.

View File

@@ -119,13 +119,14 @@ This driver performs writes to the embedded flash storage embedded in the MCU. I
Configurable options in your keyboard's `config.h`:
`config.h` override | Default | Description
-----------------------------------------|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.
`config.h` override | Default | Description
---------------------------------------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
`#define WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT` | `0` | Number of sectors to omit at the end of the flash. These sectors will not be allocated to the driver and the usable flash block will be offset, but keeping the set flash size. Useful on devices with bootloaders requiring a check flag at the end of flash to be present in order to confirm a valid, bootable firmware.
`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.
::: warning
If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.

View File

@@ -13,7 +13,7 @@ The following macros provide basic control of GPIOs and are found in `platforms/
|`gpio_set_pin_input_low(pin)` |Set pin as input with builtin pull-down resistor (unavailable on AVR)|
|`gpio_set_pin_output(pin)` |Set pin as output (alias of `gpio_set_pin_output_push_pull`) |
|`gpio_set_pin_output_push_pull(pin)` |Set pin as output, push/pull mode |
|`gpio_set_pin_output_open_drain(pin)`|Set pin as output, open-drain mode (unavailable on AVR and ATSAM) |
|`gpio_set_pin_output_open_drain(pin)`|Set pin as output, open-drain mode (unavailable on AVR) |
|`gpio_write_pin_high(pin)` |Set pin level as high, assuming it is an output |
|`gpio_write_pin_low(pin)` |Set pin level as low, assuming it is an output |
|`gpio_write_pin(pin, level)` |Set pin level, assuming it is an output |

View File

@@ -54,18 +54,25 @@ The ATmega16/32U2 does not possess I2C functionality, and so cannot use this dri
You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
To enable I2C, modify your board's `halconf.h` to enable I2C:
To enable I2C, modify your board's `halconf.h` to enable I2C, then modify your board's `mcuconf.h` to enable the peripheral you've chosen:
```c
#define HAL_USE_I2C TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_I2C TRUE // [!code focus]
#include_next <halconf.h>
```
```c [mcuconf.h]
#pragma once
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
#include_next <mcuconf.h>
```c
#undef STM32_I2C_USE_I2C2
#define STM32_I2C_USE_I2C2 TRUE
#undef STM32_I2C_USE_I2C2 // [!code focus]
#define STM32_I2C_USE_I2C2 TRUE // [!code focus]
```
:::
|`mcuconf.h` Setting |Description |Default|
|----------------------------|----------------------------------------------------------------------------------|-------|

194
docs/drivers/is31fl3218.md Normal file
View File

@@ -0,0 +1,194 @@
# IS31FL3218 Driver {#is31fl3218-driver}
I²C LED driver by Lumissil. Supports up to 18 single-color LEDs, or 6 RGB LEDs.
[IS31FL3218 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3218_DS.pdf)
## Usage {#usage}
The IS31FL3218 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3218` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3218-mono.c # For single-color
SRC += is31fl3218.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|-------------|---------------------------------------------------|
|`IS31FL3218_SDB_PIN` |*Not defined*|The GPIO pin connected to the driver's shutdown pin|
|`IS31FL3218_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3218_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
### I²C Addressing {#i2c-addressing}
The IS31FL3218's 7-bit I²C address is `0x54`, available as `IS31FL3218_I2C_ADDRESS`.
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {
/* R G B */
{OUT1, OUT2, OUT3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index all have their anodes connected to `VCC`, and their cathodes on the `OUT1`, `OUT2` and `OUT3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {
/* V */
{OUT1},
// etc...
};
```
## API {#api}
### `struct is31fl3218_led_t` {#api-is31fl3218-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3218-led-t-members}
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3218_init(void)` {#api-is31fl3218-init}
Initialize the LED driver. This function should be called first.
---
### `void is31fl3218_write_register(uint8_t reg, uint8_t data)` {#api-is31fl3218-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3218-write-register-arguments}
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3218-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3218_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3218-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3218_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3218-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3218-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3218_set_value(int index, uint8_t value)` {#api-is31fl3218-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3218_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3218-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3218_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3218_set_value_all(uint8_t value)` {#api-is31fl3218-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3218-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3218-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3218_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3218-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3218_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3218_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3218-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3218_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3218-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3218_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3218_update_pwm_buffers(void)` {#api-is31fl3218-update-pwm-buffers}
Flush the PWM values to the LED driver.
---
### `void is31fl3218_update_led_control_registers(void)` {#api-is31fl3218-update-led-control-registers}
Flush the LED control register values to the LED driver.

228
docs/drivers/is31fl3236.md Normal file
View File

@@ -0,0 +1,228 @@
# IS31FL3236 Driver {#is31fl3236-driver}
I²C LED driver by Lumissil. Supports a maximum of four drivers, each controlling up to 36 single-color LEDs, or 12 RGB LEDs.
[IS31FL3236 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3236_DS.pdf)
## Usage {#usage}
The IS31FL3236 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3236` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3236-mono.c # For single-color
SRC += is31fl3236.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|-------------|----------------------------------------------------|
|`IS31FL3236_SDB_PIN` |*Not defined*|The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3236_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3236_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3236_I2C_ADDRESS_1` |*Not defined*|The I²C address of driver 0 |
|`IS31FL3236_I2C_ADDRESS_2` |*Not defined*|The I²C address of driver 1 |
|`IS31FL3236_I2C_ADDRESS_3` |*Not defined*|The I²C address of driver 2 |
|`IS31FL3236_I2C_ADDRESS_4` |*Not defined*|The I²C address of driver 3 |
### I²C Addressing {#i2c-addressing}
The IS31FL3236 has four possible 7-bit I²C addresses, depending on how the `AD` pin is connected.
To configure this, set the `IS31FL3236_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|----------------------------|------|
|`IS31FL3236_I2C_ADDRESS_GND`|`0x3C`|
|`IS31FL3236_I2C_ADDRESS_SCL`|`0x3D`|
|`IS31FL3236_I2C_ADDRESS_SDA`|`0x3E`|
|`IS31FL3236_I2C_ADDRESS_VCC`|`0x3F`|
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {
/* Driver
| R G B */
{0, OUT1, OUT2, OUT3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to `VCC`, and their cathodes on the `OUT1`, `OUT2` and `OUT3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {
/* Driver
| V */
{0, OUT1},
// etc...
};
```
## API {#api}
### `struct is31fl3236_led_t` {#api-is31fl3236-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3236-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3236_init(uint8_t index)` {#api-is31fl3236-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3236-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3236-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3236-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3236-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3236_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3236-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3236_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3236-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3236-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3236_set_value(int index, uint8_t value)` {#api-is31fl3236-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3236_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3236-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3236_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3236_set_value_all(uint8_t value)` {#api-is31fl3236-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3236-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3236-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3236_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3236-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3236_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3236_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3236-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3236_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3236-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3236_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3236_update_pwm_buffers(uint8_t index)` {#api-is31fl3236-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3236-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3236_update_led_control_registers(uint8_t index)` {#api-is31fl3236-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3236-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

300
docs/drivers/is31fl3729.md Normal file
View File

@@ -0,0 +1,300 @@
# IS31FL3729 Driver {#is31fl3729-driver}
I²C 16x8/15x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 135 single-color LEDs, or 45 RGB LEDs.
[IS31FL3729 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3729_DS.pdf)
## Usage {#usage}
The IS31FL3729 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3729` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3729-mono.c # For single-color
SRC += is31fl3729.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|--------------------------------------|----------------------------------------------------|
|`IS31FL3729_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3729_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3729_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3729_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3729_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3729_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3729_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3729_PWM_FREQUENCY` |`IS31FL3729_PWM_FREQUENCY_32K_HZ` |The PWM frequency of the LEDs |
|`IS31FL3729_SW_PULLDOWN` |`IS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFF`|The `SWx` pullup resistor value |
|`IS31FL3729_CS_PULLUP` |`IS31FL3729_CS_PULLUP_2K_OHM_CS_OFF` |The `CSx` pulldown resistor value |
|`IS31FL3729_GLOBAL_CURRENT` |`0x40` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3729 has four possible 7-bit I²C addresses, depending on how the `AD` pin is connected.
To configure this, set the `IS31FL3729_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|----------------------------|------|
|`IS31FL3729_I2C_ADDRESS_GND`|`0x34`|
|`IS31FL3729_I2C_ADDRESS_SCL`|`0x35`|
|`IS31FL3729_I2C_ADDRESS_SDA`|`0x36`|
|`IS31FL3729_I2C_ADDRESS_VCC`|`0x37`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted by adding the following to your `config.h`:
```c
#define IS31FL3729_PWM_FREQUENCY IS31FL3729_PWM_FREQUENCY_32K_HZ
```
Valid values are:
|Define |Frequency |
|----------------------------------|----------------|
|`IS31FL3729_PWM_FREQUENCY_55K_HZ` |55 kHz |
|`IS31FL3729_PWM_FREQUENCY_32K_HZ` |32 kHz (default)|
|`IS31FL3729_PWM_FREQUENCY_4K_HZ` |4 kHz |
|`IS31FL3729_PWM_FREQUENCY_2K_HZ` |2 kHz |
|`IS31FL3729_PWM_FREQUENCY_1K_HZ` |1 kHz |
|`IS31FL3729_PWM_FREQUENCY_500_HZ` |500 Hz |
|`IS31FL3729_PWM_FREQUENCY_250_HZ` |250 Hz |
|`IS31FL3729_PWM_FREQUENCY_80K_HZ` |80 kHz |
### De-Ghosting {#de-ghosting}
These settings control the pulldown and pullup resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3729_SW_PULLDOWN IS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFF
#define IS31FL3729_CS_PULLUP IS31FL3729_CS_PULLUP_2K_OHM_CS_OFF
```
Valid values for `IS31FL3729_SW_PULLDOWN` are:
|Define |Resistance |
|---------------------------------------|------------------------------|
|`IS31FL3729_SW_PULLDOWN_0_OHM` |None |
|`IS31FL3729_SW_PULLDOWN_0K5_OHM_SW_OFF`|0.5 kΩ in SWy off time |
|`IS31FL3729_SW_PULLDOWN_1K_OHM_SW_OFF` |1 kΩ in SWy off time |
|`IS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFF` |2 kΩ in SWy off time (default)|
|`IS31FL3729_SW_PULLDOWN_1K_OHM` |1 kΩ |
|`IS31FL3729_SW_PULLDOWN_2K_OHM` |2 kΩ |
|`IS31FL3729_SW_PULLDOWN_4K_OHM` |4 kΩ |
|`IS31FL3729_SW_PULLDOWN_8K_OHM` |8 kΩ |
Valid values for `IS31FL3729_CS_PULLUP` are:
|Define |Resistance |
|-------------------------------------|------------------------------|
|`IS31FL3729_CS_PULLUP_0_OHM` |None |
|`IS31FL3729_CS_PULLUP_0K5_OHM_CS_OFF`|0.5 kΩ in CSx off time |
|`IS31FL3729_CS_PULLUP_1K_OHM_CS_OFF` |1 kΩ in CSx off time |
|`IS31FL3729_CS_PULLUP_2K_OHM_CS_OFF` |2 kΩ in CSx off time (default)|
|`IS31FL3729_CS_PULLUP_1K_OHM` |1 kΩ |
|`IS31FL3729_CS_PULLUP_2K_OHM` |2 kΩ |
|`IS31FL3729_CS_PULLUP_4K_OHM` |4 kΩ |
|`IS31FL3729_CS_PULLUP_8K_OHM` |8 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is 64, but if you need to adjust it, add the following to your `config.h`:
```c
#define IS31FL3729_GLOBAL_CURRENT 0x40
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 12, figure 9.
## API {#api}
### `struct is31fl3729_led_t` {#api-is31fl3729-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3729-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3729_init(uint8_t index)` {#api-is31fl3729-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3729-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3729-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3729-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3729-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3729_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3729-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3729_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3729-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3729-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3729_set_value(int index, uint8_t value)` {#api-is31fl3729-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3729_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3729-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3729_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3729_set_value_all(uint8_t value)` {#api-is31fl3729-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3729-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3729-set-scaling-register-rgb}
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3729_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3729-set-scaling-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3729_leds` array).
- `uint8_t red`
The scaling value for the red channel.
- `uint8_t green`
The scaling value for the green channel.
- `uint8_t blue`
The scaling value for the blue channel.
---
### `void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)` {#api-is31fl3729-set-scaling-register-mono}
Configure the scaling registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3729_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3729-set-scaling-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3729_leds` array).
- `uint8_t value`
The scaling value for the LED.
---
### `void is31fl3729_update_pwm_buffers(uint8_t index)` {#api-is31fl3729-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3729-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3729_update_scaling_registers(uint8_t index)` {#api-is31fl3729-update-scaling-registers}
Flush the scaling register values to the LED driver.
#### Arguments {#api-is31fl3729-update-scaling-registers-arguments}
- `uint8_t index`
The driver index.

254
docs/drivers/is31fl3731.md Normal file
View File

@@ -0,0 +1,254 @@
# IS31FL3731 Driver {#is31fl3731-driver}
I²C Charlieplexed 16x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.
[IS31FL3731 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3731_DS.pdf)
## Usage {#usage}
The IS31FL3731 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3731` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731-mono.c # For single-color
SRC += is31fl3731.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|-------------|----------------------------------------------------|
|`IS31FL3731_SDB_PIN` |*Not defined*|The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3731_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3731_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3731_I2C_ADDRESS_1` |*Not defined*|The I²C address of driver 0 |
|`IS31FL3731_I2C_ADDRESS_2` |*Not defined*|The I²C address of driver 1 |
|`IS31FL3731_I2C_ADDRESS_3` |*Not defined*|The I²C address of driver 2 |
|`IS31FL3731_I2C_ADDRESS_4` |*Not defined*|The I²C address of driver 3 |
|`IS31FL3731_DEGHOST` |*Not defined*|Enable ghost image prevention |
### I²C Addressing {#i2c-addressing}
The IS31FL3731 has four possible 7-bit I²C addresses, depending on how the `AD` pin is connected.
To configure this, set the `IS31FL3731_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|----------------------------|------|
|`IS31FL3731_I2C_ADDRESS_GND`|`0x74`|
|`IS31FL3731_I2C_ADDRESS_SCL`|`0x75`|
|`IS31FL3731_I2C_ADDRESS_SDA`|`0x76`|
|`IS31FL3731_I2C_ADDRESS_VCC`|`0x77`|
### De-Ghosting {#de-ghosting}
This setting enables the de-ghosting feature on the IS31FL3731. See this [Application Note](https://www.lumissil.com/assets/pdf/core/IS31FL3731_AN.pdf) (p. 15) for more information.
To enable, add the following to your `config.h`:
```c
#define IS31FL3731_DEGHOST
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Driver
* | R G B */
{0, C1_1, C1_2, C1_3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the `CA1` pin, and their anodes on the `CA2`, `CA3` and `CA4` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Driver
* | V */
{0, C1_1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 11, figure 8.
## API {#api}
### `struct is31fl3731_led_t` {#api-is31fl3731-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3731-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3731_init(uint8_t index)` {#api-is31fl3731-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3731-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3731-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3731-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3731_select_page(uint8_t index, uint8_t page)` {#api-is31fl3731-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3731-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3731-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3731_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3731-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3731_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3731-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3731-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3731_set_value(int index, uint8_t value)` {#api-is31fl3731-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3731_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3731-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3731_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3731_set_value_all(uint8_t value)` {#api-is31fl3731-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3731-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3731-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3731_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3731-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3731_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3731_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3731-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3731_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3731-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3731_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3731_update_pwm_buffers(uint8_t index)` {#api-is31fl3731-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3731-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3731_update_led_control_registers(uint8_t index)` {#api-is31fl3731-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3731-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

338
docs/drivers/is31fl3733.md Normal file
View File

@@ -0,0 +1,338 @@
# IS31FL3733 Driver {#is31fl3733-driver}
I²C 12x16 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 192 single-color LEDs, or 64 RGB LEDs.
[IS31FL3733 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3733_DS.pdf)
## Usage {#usage}
The IS31FL3733 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3733` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733-mono.c # For single-color
SRC += is31fl3733.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|---------------------------------|----------------------------------------------------|
|`IS31FL3733_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3733_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3733_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3733_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3733_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3733_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3733_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3733_SYNC_1` |`IS31FL3733_SYNC_NONE` |The sync configuration for driver 0 |
|`IS31FL3733_SYNC_2` |`IS31FL3733_SYNC_NONE` |The sync configuration for driver 1 |
|`IS31FL3733_SYNC_3` |`IS31FL3733_SYNC_NONE` |The sync configuration for driver 2 |
|`IS31FL3733_SYNC_4` |`IS31FL3733_SYNC_NONE` |The sync configuration for driver 3 |
|`IS31FL3733_PWM_FREQUENCY` |`IS31FL3733_PWM_FREQUENCY_8K4_HZ`|The PWM frequency of the LEDs (IS31FL3733B only) |
|`IS31FL3733_SW_PULLUP` |`IS31FL3733_PUR_0_OHM` |The `SWx` pullup resistor value |
|`IS31FL3733_CS_PULLDOWN` |`IS31FL3733_PDR_0_OHM` |The `CSx` pulldown resistor value |
|`IS31FL3733_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3733 has 16 possible 7-bit I²C addresses, depending on how the `ADDR1` and `ADDR2` pins are connected.
To configure this, set the `IS31FL3733_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|--------------------------------|------|
|`IS31FL3733_I2C_ADDRESS_GND_GND`|`0x50`|
|`IS31FL3733_I2C_ADDRESS_GND_SCL`|`0x51`|
|`IS31FL3733_I2C_ADDRESS_GND_SDA`|`0x52`|
|`IS31FL3733_I2C_ADDRESS_GND_VCC`|`0x53`|
|`IS31FL3733_I2C_ADDRESS_SCL_GND`|`0x54`|
|`IS31FL3733_I2C_ADDRESS_SCL_SCL`|`0x55`|
|`IS31FL3733_I2C_ADDRESS_SCL_SDA`|`0x56`|
|`IS31FL3733_I2C_ADDRESS_SCL_VCC`|`0x57`|
|`IS31FL3733_I2C_ADDRESS_SDA_GND`|`0x58`|
|`IS31FL3733_I2C_ADDRESS_SDA_SCL`|`0x59`|
|`IS31FL3733_I2C_ADDRESS_SDA_SDA`|`0x5A`|
|`IS31FL3733_I2C_ADDRESS_SDA_VCC`|`0x5B`|
|`IS31FL3733_I2C_ADDRESS_VCC_GND`|`0x5C`|
|`IS31FL3733_I2C_ADDRESS_VCC_SCL`|`0x5D`|
|`IS31FL3733_I2C_ADDRESS_VCC_SDA`|`0x5E`|
|`IS31FL3733_I2C_ADDRESS_VCC_VCC`|`0x5F`|
### Multi-Driver Synchronization {#multi-driver-synchronization}
Multiple IS31FL3733 drivers can be synchronized by connecting the `SYNC` pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the `IS31FL3733_SYNC_n` defines accordingly in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|------------------------|---------------------------|
|`IS31FL3733_SYNC_NONE` |No synchronization |
|`IS31FL3733_SYNC_MASTER`|Driver configured as master|
|`IS31FL3733_SYNC_SLAVE` |Driver configured as slave |
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted (for IS31FL3733B only) by adding the following to your `config.h`:
```c
#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ
```
Valid values are:
|Define |Frequency |
|----------------------------------|-----------------|
|`IS31FL3733_PWM_FREQUENCY_8K4_HZ` |8.4 kHz (default)|
|`IS31FL3733_PWM_FREQUENCY_4K2_HZ` |4.2 kHz |
|`IS31FL3733_PWM_FREQUENCY_26K7_HZ`|26.7 kHz |
|`IS31FL3733_PWM_FREQUENCY_2K1_HZ` |2.1 kHz |
|`IS31FL3733_PWM_FREQUENCY_1K05_HZ`|1.05 kHz |
### De-Ghosting {#de-ghosting}
These settings control the pullup and pulldown resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM
#define IS31FL3733_CS_PULLDOWN IS31FL3733_PUR_0_OHM
```
Valid values for `IS31FL3733_SW_PULLUP` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3733_PUR_0_OHM` |None (default)|
|`IS31FL3733_PUR_0K5_OHM`|0.5 kΩ |
|`IS31FL3733_PUR_1K_OHM` |1 kΩ |
|`IS31FL3733_PUR_2K_OHM` |2 kΩ |
|`IS31FL3733_PUR_4K_OHM` |4 kΩ |
|`IS31FL3733_PUR_8K_OHM` |8 kΩ |
|`IS31FL3733_PUR_16K_OHM`|16 kΩ |
|`IS31FL3733_PUR_32K_OHM`|32 kΩ |
Valid values for `IS31FL3733_CS_PULLDOWN` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3733_PDR_0_OHM` |None (default)|
|`IS31FL3733_PDR_0K5_OHM`|0.5 kΩ |
|`IS31FL3733_PDR_1K_OHM` |1 kΩ |
|`IS31FL3733_PDR_2K_OHM` |2 kΩ |
|`IS31FL3733_PDR_4K_OHM` |4 kΩ |
|`IS31FL3733_PDR_8K_OHM` |8 kΩ |
|`IS31FL3733_PDR_16K_OHM`|16 kΩ |
|`IS31FL3733_PDR_32K_OHM`|32 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3733_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the `SW1` pin, and their anodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 15, figure 9.
## API {#api}
### `struct is31fl3733_led_t` {#api-is31fl3733-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3733-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3733_init(uint8_t index)` {#api-is31fl3733-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3733-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3733-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3733-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3733_select_page(uint8_t index, uint8_t page)` {#api-is31fl3733-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3733-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3733-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3733_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3733-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3733_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3733-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3733-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3733_set_value(int index, uint8_t value)` {#api-is31fl3733-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3733_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3733-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3733_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3733_set_value_all(uint8_t value)` {#api-is31fl3733-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3733-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3733-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3733_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3733-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3733_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3733_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3733-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3733_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3733-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3733_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3733_update_pwm_buffers(uint8_t index)` {#api-is31fl3733-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3733-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3733_update_led_control_registers(uint8_t index)` {#api-is31fl3733-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3733-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

322
docs/drivers/is31fl3736.md Normal file
View File

@@ -0,0 +1,322 @@
# IS31FL3736 Driver {#is31fl3736-driver}
I²C 12x8 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 96 single-color LEDs, or 32 RGB LEDs.
[IS31FL3736 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3736_DS.pdf)
## Usage {#usage}
The IS31FL3736 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3736` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3736-mono.c # For single-color
SRC += is31fl3736.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|---------------------------------|----------------------------------------------------|
|`IS31FL3736_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3736_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3736_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3736_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3736_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3736_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3736_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3736_PWM_FREQUENCY` |`IS31FL3736_PWM_FREQUENCY_8K4_HZ`|The PWM frequency of the LEDs (IS31FL3736B only) |
|`IS31FL3736_SW_PULLUP` |`IS31FL3736_PUR_0_OHM` |The `SWx` pullup resistor value |
|`IS31FL3736_CS_PULLDOWN` |`IS31FL3736_PDR_0_OHM` |The `CSx` pulldown resistor value |
|`IS31FL3736_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3736 has 16 possible 7-bit I²C addresses, depending on how the `ADDR1` and `ADDR2` pins are connected.
To configure this, set the `IS31FL3736_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|--------------------------------|------|
|`IS31FL3736_I2C_ADDRESS_GND_GND`|`0x50`|
|`IS31FL3736_I2C_ADDRESS_GND_SCL`|`0x51`|
|`IS31FL3736_I2C_ADDRESS_GND_SDA`|`0x52`|
|`IS31FL3736_I2C_ADDRESS_GND_VCC`|`0x53`|
|`IS31FL3736_I2C_ADDRESS_SCL_GND`|`0x54`|
|`IS31FL3736_I2C_ADDRESS_SCL_SCL`|`0x55`|
|`IS31FL3736_I2C_ADDRESS_SCL_SDA`|`0x56`|
|`IS31FL3736_I2C_ADDRESS_SCL_VCC`|`0x57`|
|`IS31FL3736_I2C_ADDRESS_SDA_GND`|`0x58`|
|`IS31FL3736_I2C_ADDRESS_SDA_SCL`|`0x59`|
|`IS31FL3736_I2C_ADDRESS_SDA_SDA`|`0x5A`|
|`IS31FL3736_I2C_ADDRESS_SDA_VCC`|`0x5B`|
|`IS31FL3736_I2C_ADDRESS_VCC_GND`|`0x5C`|
|`IS31FL3736_I2C_ADDRESS_VCC_SCL`|`0x5D`|
|`IS31FL3736_I2C_ADDRESS_VCC_SDA`|`0x5E`|
|`IS31FL3736_I2C_ADDRESS_VCC_VCC`|`0x5F`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted (for IS31FL3736B only) by adding the following to your `config.h`:
```c
#define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ
```
Valid values are:
|Define |Frequency |
|----------------------------------|-----------------|
|`IS31FL3736_PWM_FREQUENCY_8K4_HZ` |8.4 kHz (default)|
|`IS31FL3736_PWM_FREQUENCY_4K2_HZ` |4.2 kHz |
|`IS31FL3736_PWM_FREQUENCY_26K7_HZ`|26.7 kHz |
|`IS31FL3736_PWM_FREQUENCY_2K1_HZ` |2.1 kHz |
|`IS31FL3736_PWM_FREQUENCY_1K05_HZ`|1.05 kHz |
### De-Ghosting {#de-ghosting}
These settings control the pullup and pulldown resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 25) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM
#define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM
```
Valid values for `IS31FL3736_SW_PULLUP` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3736_PUR_0_OHM` |None (default)|
|`IS31FL3736_PUR_0K5_OHM`|0.5 kΩ |
|`IS31FL3736_PUR_1K_OHM` |1 kΩ |
|`IS31FL3736_PUR_2K_OHM` |2 kΩ |
|`IS31FL3736_PUR_4K_OHM` |4 kΩ |
|`IS31FL3736_PUR_8K_OHM` |8 kΩ |
|`IS31FL3736_PUR_16K_OHM`|16 kΩ |
|`IS31FL3736_PUR_32K_OHM`|32 kΩ |
Valid values for `IS31FL3736_CS_PULLDOWN` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3736_PDR_0_OHM` |None (default)|
|`IS31FL3736_PDR_0K5_OHM`|0.5 kΩ |
|`IS31FL3736_PDR_1K_OHM` |1 kΩ |
|`IS31FL3736_PDR_2K_OHM` |2 kΩ |
|`IS31FL3736_PDR_4K_OHM` |4 kΩ |
|`IS31FL3736_PDR_8K_OHM` |8 kΩ |
|`IS31FL3736_PDR_16K_OHM`|16 kΩ |
|`IS31FL3736_PDR_32K_OHM`|32 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3736_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the `SW1` pin, and their anodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 16, figure 9.
## API {#api}
### `struct is31fl3736_led_t` {#api-is31fl3736-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3736-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3736_init(uint8_t index)` {#api-is31fl3736-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3736-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3736-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3736-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3736_select_page(uint8_t index, uint8_t page)` {#api-is31fl3736-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3736-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3736-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3736_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3736-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3736_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3736-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3736-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3736_set_value(int index, uint8_t value)` {#api-is31fl3736-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3736_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3736-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3736_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3736_set_value_all(uint8_t value)` {#api-is31fl3736-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3736-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3736-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3736_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3736-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3736_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3736_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3736-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3736_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3736-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3736_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3736_update_pwm_buffers(uint8_t index)` {#api-is31fl3736-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3736-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3736_update_led_control_registers(uint8_t index)` {#api-is31fl3736-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3736-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

310
docs/drivers/is31fl3737.md Normal file
View File

@@ -0,0 +1,310 @@
# IS31FL3737 Driver {#is31fl3737-driver}
I²C 12x12 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.
[IS31FL3737 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3737_DS.pdf)
## Usage {#usage}
The IS31FL3737 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3737` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737-mono.c # For single-color
SRC += is31fl3737.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|---------------------------------|----------------------------------------------------|
|`IS31FL3737_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3737_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3737_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3737_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3737_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3737_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3737_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3737_PWM_FREQUENCY` |`IS31FL3737_PWM_FREQUENCY_8K4_HZ`|The PWM frequency of the LEDs (IS31FL3737B only) |
|`IS31FL3737_SW_PULLUP` |`IS31FL3737_PUR_0_OHM` |The `SWx` pullup resistor value |
|`IS31FL3737_CS_PULLDOWN` |`IS31FL3737_PDR_0_OHM` |The `CSx` pulldown resistor value |
|`IS31FL3737_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3737 has four possible 7-bit I²C addresses, depending on how the `ADDR` pin is connected.
To configure this, set the `IS31FL3737_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|----------------------------|------|
|`IS31FL3737_I2C_ADDRESS_GND`|`0x50`|
|`IS31FL3737_I2C_ADDRESS_SCL`|`0x55`|
|`IS31FL3737_I2C_ADDRESS_SDA`|`0x5A`|
|`IS31FL3737_I2C_ADDRESS_VCC`|`0x5F`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted (for IS31FL3737B only) by adding the following to your `config.h`:
```c
#define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ
```
Valid values are:
|Define |Frequency |
|----------------------------------|-----------------|
|`IS31FL3737_PWM_FREQUENCY_8K4_HZ` |8.4 kHz (default)|
|`IS31FL3737_PWM_FREQUENCY_4K2_HZ` |4.2 kHz |
|`IS31FL3737_PWM_FREQUENCY_26K7_HZ`|26.7 kHz |
|`IS31FL3737_PWM_FREQUENCY_2K1_HZ` |2.1 kHz |
|`IS31FL3737_PWM_FREQUENCY_1K05_HZ`|1.05 kHz |
### De-Ghosting {#de-ghosting}
These settings control the pullup and pulldown resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM
#define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM
```
Valid values for `IS31FL3737_SW_PULLUP` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3737_PUR_0_OHM` |None (default)|
|`IS31FL3737_PUR_0K5_OHM`|0.5 kΩ |
|`IS31FL3737_PUR_1K_OHM` |1 kΩ |
|`IS31FL3737_PUR_2K_OHM` |2 kΩ |
|`IS31FL3737_PUR_4K_OHM` |4 kΩ |
|`IS31FL3737_PUR_8K_OHM` |8 kΩ |
|`IS31FL3737_PUR_16K_OHM`|16 kΩ |
|`IS31FL3737_PUR_32K_OHM`|32 kΩ |
Valid values for `IS31FL3737_CS_PULLDOWN` are:
|Define |Resistance |
|------------------------|--------------|
|`IS31FL3737_PDR_0_OHM` |None (default)|
|`IS31FL3737_PDR_0K5_OHM`|0.5 kΩ |
|`IS31FL3737_PDR_1K_OHM` |1 kΩ |
|`IS31FL3737_PDR_2K_OHM` |2 kΩ |
|`IS31FL3737_PDR_4K_OHM` |4 kΩ |
|`IS31FL3737_PDR_8K_OHM` |8 kΩ |
|`IS31FL3737_PDR_16K_OHM`|16 kΩ |
|`IS31FL3737_PDR_32K_OHM`|32 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3737_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the `SW1` pin, and their anodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 15, figure 9.
## API {#api}
### `struct is31fl3737_led_t` {#api-is31fl3737-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3737-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3737_init(uint8_t index)` {#api-is31fl3737-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3737-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3737-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3737-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3737_select_page(uint8_t index, uint8_t page)` {#api-is31fl3737-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3737-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3737-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3737_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3737-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3737_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3737-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3737-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3737_set_value(int index, uint8_t value)` {#api-is31fl3737-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3737_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3737-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3737_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3737_set_value_all(uint8_t value)` {#api-is31fl3737-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3737-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3737-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3737_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3737-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3737_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3737_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3737-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3737_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3737-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3737_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3737_update_pwm_buffers(uint8_t index)` {#api-is31fl3737-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3737-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3737_update_led_control_registers(uint8_t index)` {#api-is31fl3737-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3737-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

310
docs/drivers/is31fl3741.md Normal file
View File

@@ -0,0 +1,310 @@
# IS31FL3741 Driver {#is31fl3741-driver}
I²C 39x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 351 single-color LEDs, or 117 RGB LEDs.
[IS31FL3741A Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3741A_DS.pdf)
## Usage {#usage}
The IS31FL3741 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3741` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741-mono.c # For single-color
SRC += is31fl3741.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|---------------------------------|----------------------------------------------------|
|`IS31FL3741_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3741_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3741_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3741_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3741_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3741_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3741_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3741_CONFIGURATION` |`1` |The value of the configuration register |
|`IS31FL3741_PWM_FREQUENCY` |`IS31FL3741_PWM_FREQUENCY_29K_HZ`|The PWM frequency of the LEDs (IS31FL3741A only) |
|`IS31FL3741_SW_PULLUP` |`IS31FL3741_PUR_32K_OHM` |The `SWx` pullup resistor value |
|`IS31FL3741_CS_PULLDOWN` |`IS31FL3741_PDR_32K_OHM` |The `CSx` pulldown resistor value |
|`IS31FL3741_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3741 has four possible 7-bit I²C addresses, depending on how the `ADDR` pin is connected.
To configure this, set the `IS31FL3741_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|----------------------------|------|
|`IS31FL3741_I2C_ADDRESS_GND`|`0x30`|
|`IS31FL3741_I2C_ADDRESS_SCL`|`0x31`|
|`IS31FL3741_I2C_ADDRESS_SDA`|`0x32`|
|`IS31FL3741_I2C_ADDRESS_VCC`|`0x33`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted (for IS31FL3741A only) by adding the following to your `config.h`:
```c
#define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ
```
Valid values are:
|Define |Frequency |
|---------------------------------|----------------|
|`IS31FL3741_PWM_FREQUENCY_29K_HZ`|29 kHz (default)|
|`IS31FL3741_PWM_FREQUENCY_3K6_HZ`|3.6 kHz |
|`IS31FL3741_PWM_FREQUENCY_1K8_HZ`|1.8 kHz |
|`IS31FL3741_PWM_FREQUENCY_900_HZ`|900 Hz |
### De-Ghosting {#de-ghosting}
These settings control the pullup and pulldown resistor values on the `CSx` and `SWy` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM
#define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM
```
Valid values for `IS31FL3741_SW_PULLUP` are:
|Define |Resistance |
|------------------------|---------------|
|`IS31FL3741_PUR_0_OHM` |None |
|`IS31FL3741_PUR_0K5_OHM`|0.5 kΩ |
|`IS31FL3741_PUR_1K_OHM` |1 kΩ |
|`IS31FL3741_PUR_2K_OHM` |2 kΩ |
|`IS31FL3741_PUR_4K_OHM` |4 kΩ |
|`IS31FL3741_PUR_8K_OHM` |8 kΩ |
|`IS31FL3741_PUR_16K_OHM`|16 kΩ |
|`IS31FL3741_PUR_32K_OHM`|32 kΩ (default)|
Valid values for `IS31FL3741_CS_PULLDOWN` are:
|Define |Resistance |
|------------------------|---------------|
|`IS31FL3741_PDR_0_OHM` |None |
|`IS31FL3741_PDR_0K5_OHM`|0.5 kΩ |
|`IS31FL3741_PDR_1K_OHM` |1 kΩ |
|`IS31FL3741_PDR_2K_OHM` |2 kΩ |
|`IS31FL3741_PDR_4K_OHM` |4 kΩ |
|`IS31FL3741_PDR_8K_OHM` |8 kΩ |
|`IS31FL3741_PDR_16K_OHM`|16 kΩ |
|`IS31FL3741_PDR_32K_OHM`|32 kΩ (default)|
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3741_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 12, figure 8.
## API {#api}
### `struct is31fl3741_led_t` {#api-is31fl3741-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3741-led-t-members}
- `uint32_t driver`
The driver index of the LED, from 0 to 3.
- `uint32_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint32_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint32_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint32_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3741_init(uint8_t index)` {#api-is31fl3741-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3741-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3741-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3741-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3741_select_page(uint8_t index, uint8_t page)` {#api-is31fl3741-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3741-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3741-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3741_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3741-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3741_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3741-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3741-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3741_set_value(int index, uint8_t value)` {#api-is31fl3741-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3741_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3741-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3741_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3741_set_value_all(uint8_t value)` {#api-is31fl3741-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3741-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-is31fl3741-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3741_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3741-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3741_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void is31fl3741_set_led_control_register(uint8_t index, bool value)` {#api-is31fl3741-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3741_update_led_control_registers()` after you are finished.
#### Arguments {#api-is31fl3741-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3741_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void is31fl3741_update_pwm_buffers(uint8_t index)` {#api-is31fl3741-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3741-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3741_update_led_control_registers(uint8_t index)` {#api-is31fl3741-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-is31fl3741-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

310
docs/drivers/is31fl3742a.md Normal file
View File

@@ -0,0 +1,310 @@
# IS31FL3742A Driver {#is31fl3742a-driver}
I²C 30x6 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 180 single-color LEDs, or 60 RGB LEDs.
[IS31FL3742A Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3742A_DS.pdf)
## Usage {#usage}
The IS31FL3742A driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3742a` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3742a-mono.c # For single-color
SRC += is31fl3742a.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------------------|----------------------------------|----------------------------------------------------|
|`IS31FL3742A_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3742A_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3742A_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3742A_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3742A_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3742A_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3742A_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3742A_CONFIGURATION` |`0x31` |The value of the configuration register |
|`IS31FL3742A_PWM_FREQUENCY` |`IS31FL3742A_PWM_FREQUENCY_29K_HZ`|The PWM frequency of the LEDs |
|`IS31FL3742A_SW_PULLDOWN` |`IS31FL3742A_PDR_8K_OHM` |The `SWx` pulldown resistor value |
|`IS31FL3742A_CS_PULLUP` |`IS31FL3742A_PUR_8K_OHM` |The `CSx` pullup resistor value |
|`IS31FL3742A_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3742A has four possible 7-bit I²C addresses, depending on how the `ADDR` pin is connected.
To configure this, set the `IS31FL3742A_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|-----------------------------|------|
|`IS31FL3742A_I2C_ADDRESS_GND`|`0x30`|
|`IS31FL3742A_I2C_ADDRESS_SCL`|`0x31`|
|`IS31FL3742A_I2C_ADDRESS_SDA`|`0x32`|
|`IS31FL3742A_I2C_ADDRESS_VCC`|`0x33`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted by adding the following to your `config.h`:
```c
#define IS31FL3742A_PWM_FREQUENCY IS31FL3742A_PWM_FREQUENCY_29K_HZ
```
Valid values are:
|Define |Frequency |
|----------------------------------|----------------|
|`IS31FL3742A_PWM_FREQUENCY_29K_HZ`|29 kHz (default)|
|`IS31FL3742A_PWM_FREQUENCY_3K6_HZ`|3.6 kHz |
|`IS31FL3742A_PWM_FREQUENCY_1K8_HZ`|1.8 kHz |
|`IS31FL3742A_PWM_FREQUENCY_900_HZ`|900 Hz |
### De-Ghosting {#de-ghosting}
These settings control the pulldown and pullup resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3742A_SW_PULLDOWN IS31FL3742A_PDR_8K_OHM
#define IS31FL3742A_CS_PULLUP IS31FL3742A_PUR_8K_OHM
```
Valid values for `IS31FL3742A_SW_PULLDOWN` are:
|Define |Resistance |
|-------------------------|--------------|
|`IS31FL3742A_PDR_0_OHM` |None |
|`IS31FL3742A_PDR_0K5_OHM`|0.5 kΩ |
|`IS31FL3742A_PDR_1K_OHM` |1 kΩ |
|`IS31FL3742A_PDR_2K_OHM` |2 kΩ |
|`IS31FL3742A_PDR_4K_OHM` |4 kΩ |
|`IS31FL3742A_PDR_8K_OHM` |8 kΩ (default)|
|`IS31FL3742A_PDR_16K_OHM`|16 kΩ |
|`IS31FL3742A_PDR_32K_OHM`|32 kΩ |
Valid values for `IS31FL3742A_CS_PULLUP` are:
|Define |Resistance |
|-------------------------|--------------|
|`IS31FL3742A_PUR_0_OHM` |None |
|`IS31FL3742A_PUR_0K5_OHM`|0.5 kΩ |
|`IS31FL3742A_PUR_1K_OHM` |1 kΩ |
|`IS31FL3742A_PUR_2K_OHM` |2 kΩ |
|`IS31FL3742A_PUR_4K_OHM` |4 kΩ |
|`IS31FL3742A_PUR_8K_OHM` |8 kΩ (default)|
|`IS31FL3742A_PUR_16K_OHM`|16 kΩ |
|`IS31FL3742A_PUR_32K_OHM`|32 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSx` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3742A_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 12, figure 8.
## API {#api}
### `struct is31fl3742a_led_t` {#api-is31fl3742a-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3742a-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3742a_init(uint8_t index)` {#api-is31fl3742a-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3742a-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3742a-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3742a-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3742a_select_page(uint8_t index, uint8_t page)` {#api-is31fl3742a-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3742a-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3742a-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3742a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3742a-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3742a_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3742a-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3742a-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3742a_set_value(int index, uint8_t value)` {#api-is31fl3742a-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3742a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3742a-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3742a_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3742a_set_value_all(uint8_t value)` {#api-is31fl3742a-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3742a-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3742a-set-scaling-register-rgb}
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3742a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3742a-set-scaling-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3742a_leds` array).
- `uint8_t red`
The scaling value for the red channel.
- `uint8_t green`
The scaling value for the green channel.
- `uint8_t blue`
The scaling value for the blue channel.
---
### `void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)` {#api-is31fl3742a-set-scaling-register-mono}
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3742a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3742a-set-scaling-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3742a_leds` array).
- `uint8_t value`
The scaling value for the LED.
---
### `void is31fl3742a_update_pwm_buffers(uint8_t index)` {#api-is31fl3742a-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3742a-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3742a_update_scaling_registers(uint8_t index)` {#api-is31fl3742a-update-scaling-registers}
Flush the scaling register values to the LED driver.
#### Arguments {#api-is31fl3742a-update-scaling-registers-arguments}
- `uint8_t index`
The driver index.

320
docs/drivers/is31fl3743a.md Normal file
View File

@@ -0,0 +1,320 @@
# IS31FL3743A Driver {#is31fl3743a-driver}
I²C 18x11 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 198 single-color LEDs, or 66 RGB LEDs.
[IS31FL3743A Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf)
## Usage {#usage}
The IS31FL3743A driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3743a` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3743a-mono.c # For single-color
SRC += is31fl3743a.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------------------|-------------------------------|----------------------------------------------------|
|`IS31FL3743A_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3743A_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3743A_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3743A_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3743A_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3743A_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3743A_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3743A_SYNC_1` |`IS31FL3743A_SYNC_NONE` |The sync configuration for driver 0 |
|`IS31FL3743A_SYNC_2` |`IS31FL3743A_SYNC_NONE` |The sync configuration for driver 1 |
|`IS31FL3743A_SYNC_3` |`IS31FL3743A_SYNC_NONE` |The sync configuration for driver 2 |
|`IS31FL3743A_SYNC_4` |`IS31FL3743A_SYNC_NONE` |The sync configuration for driver 3 |
|`IS31FL3743A_CONFIGURATION` |`0x01` |The value of the configuration register |
|`IS31FL3743A_SW_PULLDOWN` |`IS31FL3743A_PDR_2K_OHM_SW_OFF`|The `SWx` pulldown resistor value |
|`IS31FL3743A_CS_PULLUP` |`IS31FL3743A_PUR_2K_OHM_CS_OFF`|The `CSx` pullup resistor value |
|`IS31FL3743A_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3743A has 16 possible 7-bit I²C addresses, depending on how the `ADDR1` and `ADDR2` pins are connected.
To configure this, set the `IS31FL3743A_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|---------------------------------|------|
|`IS31FL3743A_I2C_ADDRESS_GND_GND`|`0x20`|
|`IS31FL3743A_I2C_ADDRESS_GND_SCL`|`0x21`|
|`IS31FL3743A_I2C_ADDRESS_GND_SDA`|`0x22`|
|`IS31FL3743A_I2C_ADDRESS_GND_VCC`|`0x23`|
|`IS31FL3743A_I2C_ADDRESS_SCL_GND`|`0x24`|
|`IS31FL3743A_I2C_ADDRESS_SCL_SCL`|`0x25`|
|`IS31FL3743A_I2C_ADDRESS_SCL_SDA`|`0x26`|
|`IS31FL3743A_I2C_ADDRESS_SCL_VCC`|`0x27`|
|`IS31FL3743A_I2C_ADDRESS_SDA_GND`|`0x28`|
|`IS31FL3743A_I2C_ADDRESS_SDA_SCL`|`0x29`|
|`IS31FL3743A_I2C_ADDRESS_SDA_SDA`|`0x2A`|
|`IS31FL3743A_I2C_ADDRESS_SDA_VCC`|`0x2B`|
|`IS31FL3743A_I2C_ADDRESS_VCC_GND`|`0x2C`|
|`IS31FL3743A_I2C_ADDRESS_VCC_SCL`|`0x2D`|
|`IS31FL3743A_I2C_ADDRESS_VCC_SDA`|`0x2E`|
|`IS31FL3743A_I2C_ADDRESS_VCC_VCC`|`0x2F`|
### Multi-Driver Synchronization {#multi-driver-synchronization}
Multiple IS31FL3743A drivers can be synchronized by connecting the `SYNC` pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the `IS31FL3743A_SYNC_n` defines accordingly in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|-------------------------|---------------------------|
|`IS31FL3743A_SYNC_NONE` |No synchronization |
|`IS31FL3743A_SYNC_MASTER`|Driver configured as master|
|`IS31FL3743A_SYNC_SLAVE` |Driver configured as slave |
### De-Ghosting {#de-ghosting}
These settings control the pulldown and pullup resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3743A_SW_PULLDOWN IS31FL3743A_PDR_2K_OHM_SW_OFF
#define IS31FL3743A_CS_PULLUP IS31FL3743A_PUR_2K_OHM_CS_OFF
```
Valid values for `IS31FL3743A_SW_PULLDOWN` are:
|Define |Resistance |
|--------------------------------|------------------------------|
|`IS31FL3743A_PDR_0_OHM` |None (default) |
|`IS31FL3743A_PDR_0K5_OHM_SW_OFF`|0.5 kΩ in SWx off time |
|`IS31FL3743A_PDR_1K_OHM_SW_OFF` |1 kΩ in SWx off time |
|`IS31FL3743A_PDR_2K_OHM_SW_OFF` |2 kΩ in SWx off time (default)|
|`IS31FL3743A_PDR_1K_OHM` |1 kΩ |
|`IS31FL3743A_PDR_2K_OHM` |2 kΩ |
|`IS31FL3743A_PDR_4K_OHM` |4 kΩ |
|`IS31FL3743A_PDR_8K_OHM` |8 kΩ |
Valid values for `IS31FL3743A_CS_PULLUP` are:
|Define |Resistance |
|--------------------------------|------------------------------|
|`IS31FL3743A_PUR_0_OHM` |None (default) |
|`IS31FL3743A_PUR_0K5_OHM_CS_OFF`|0.5 kΩ in CSy off time |
|`IS31FL3743A_PUR_1K_OHM_CS_OFF` |1 kΩ in CSy off time |
|`IS31FL3743A_PUR_2K_OHM_CS_OFF` |2 kΩ in CSy off time (default)|
|`IS31FL3743A_PUR_1K_OHM` |1 kΩ |
|`IS31FL3743A_PUR_2K_OHM` |2 kΩ |
|`IS31FL3743A_PUR_4K_OHM` |4 kΩ |
|`IS31FL3743A_PUR_8K_OHM` |8 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSy` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3743A_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 12, figure 8.
## API {#api}
### `struct is31fl3743a_led_t` {#api-is31fl3743a-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3743a-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3743a_init(uint8_t index)` {#api-is31fl3743a-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3743a-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3743a-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3743a-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3743a_select_page(uint8_t index, uint8_t page)` {#api-is31fl3743a-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3743a-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3743a-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3743a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3743a-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3743a_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3743a-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3743a-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3743a_set_value(int index, uint8_t value)` {#api-is31fl3743a-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3743a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3743a-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3743a_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3743a_set_value_all(uint8_t value)` {#api-is31fl3743a-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3743a-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3743a-set-scaling-register-rgb}
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3743a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3743a-set-scaling-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3743a_leds` array).
- `uint8_t red`
The scaling value for the red channel.
- `uint8_t green`
The scaling value for the green channel.
- `uint8_t blue`
The scaling value for the blue channel.
---
### `void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)` {#api-is31fl3743a-set-scaling-register-mono}
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3743a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3743a-set-scaling-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3743a_leds` array).
- `uint8_t value`
The scaling value for the LED.
---
### `void is31fl3743a_update_pwm_buffers(uint8_t index)` {#api-is31fl3743a-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3743a-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3743a_update_scaling_registers(uint8_t index)` {#api-is31fl3743a-update-scaling-registers}
Flush the scaling register values to the LED driver.
#### Arguments {#api-is31fl3743a-update-scaling-registers-arguments}
- `uint8_t index`
The driver index.

320
docs/drivers/is31fl3745.md Normal file
View File

@@ -0,0 +1,320 @@
# IS31FL3745 Driver {#is31fl3745-driver}
I²C 18x8 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.
[IS31FL3745 Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3745_DS.pdf)
## Usage {#usage}
The IS31FL3745 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3745` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3745-mono.c # For single-color
SRC += is31fl3745.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|------------------------------|----------------------------------------------------|
|`IS31FL3745_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3745_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3745_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3745_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3745_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3745_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3745_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3745_SYNC_1` |`IS31FL3745_SYNC_NONE` |The sync configuration for driver 0 |
|`IS31FL3745_SYNC_2` |`IS31FL3745_SYNC_NONE` |The sync configuration for driver 1 |
|`IS31FL3745_SYNC_3` |`IS31FL3745_SYNC_NONE` |The sync configuration for driver 2 |
|`IS31FL3745_SYNC_4` |`IS31FL3745_SYNC_NONE` |The sync configuration for driver 3 |
|`IS31FL3745_CONFIGURATION` |`0x31` |The value of the configuration register |
|`IS31FL3745_SW_PULLDOWN` |`IS31FL3745_PDR_2K_OHM_SW_OFF`|The `SWx` pulldown resistor value |
|`IS31FL3745_CS_PULLUP` |`IS31FL3745_PUR_2K_OHM_CS_OFF`|The `CSx` pullup resistor value |
|`IS31FL3745_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3745 has 16 possible 7-bit I²C addresses, depending on how the `ADDR1` and `ADDR2` pins are connected.
To configure this, set the `IS31FL3745_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|--------------------------------|------|
|`IS31FL3745_I2C_ADDRESS_GND_GND`|`0x20`|
|`IS31FL3745_I2C_ADDRESS_GND_SCL`|`0x21`|
|`IS31FL3745_I2C_ADDRESS_GND_SDA`|`0x22`|
|`IS31FL3745_I2C_ADDRESS_GND_VCC`|`0x23`|
|`IS31FL3745_I2C_ADDRESS_SCL_GND`|`0x24`|
|`IS31FL3745_I2C_ADDRESS_SCL_SCL`|`0x25`|
|`IS31FL3745_I2C_ADDRESS_SCL_SDA`|`0x26`|
|`IS31FL3745_I2C_ADDRESS_SCL_VCC`|`0x27`|
|`IS31FL3745_I2C_ADDRESS_SDA_GND`|`0x28`|
|`IS31FL3745_I2C_ADDRESS_SDA_SCL`|`0x29`|
|`IS31FL3745_I2C_ADDRESS_SDA_SDA`|`0x2A`|
|`IS31FL3745_I2C_ADDRESS_SDA_VCC`|`0x2B`|
|`IS31FL3745_I2C_ADDRESS_VCC_GND`|`0x2C`|
|`IS31FL3745_I2C_ADDRESS_VCC_SCL`|`0x2D`|
|`IS31FL3745_I2C_ADDRESS_VCC_SDA`|`0x2E`|
|`IS31FL3745_I2C_ADDRESS_VCC_VCC`|`0x2F`|
### Multi-Driver Synchronization {#multi-driver-synchronization}
Multiple IS31FL3745 drivers can be synchronized by connecting the `SYNC` pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the `IS31FL3745_SYNC_n` defines accordingly in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|------------------------|---------------------------|
|`IS31FL3745_SYNC_NONE` |No synchronization |
|`IS31FL3745_SYNC_MASTER`|Driver configured as master|
|`IS31FL3745_SYNC_SLAVE` |Driver configured as slave |
### De-Ghosting {#de-ghosting}
These settings control the pulldown and pullup resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3745_SW_PULLDOWN IS31FL3745_PDR_2K_OHM_SW_OFF
#define IS31FL3745_CS_PULLUP IS31FL3745_PUR_2K_OHM_CS_OFF
```
Valid values for `IS31FL3745_SW_PULLDOWN` are:
|Define |Resistance |
|-------------------------------|------------------------------|
|`IS31FL3745_PDR_0_OHM` |None (default) |
|`IS31FL3745_PDR_0K5_OHM_SW_OFF`|0.5 kΩ in SWx off time |
|`IS31FL3745_PDR_1K_OHM_SW_OFF` |1 kΩ in SWx off time |
|`IS31FL3745_PDR_2K_OHM_SW_OFF` |2 kΩ in SWx off time (default)|
|`IS31FL3745_PDR_1K_OHM` |1 kΩ |
|`IS31FL3745_PDR_2K_OHM` |2 kΩ |
|`IS31FL3745_PDR_4K_OHM` |4 kΩ |
|`IS31FL3745_PDR_8K_OHM` |8 kΩ |
Valid values for `IS31FL3745_CS_PULLUP` are:
|Define |Resistance |
|-------------------------------|------------------------------|
|`IS31FL3745_PUR_0_OHM` |None (default) |
|`IS31FL3745_PUR_0K5_OHM_CS_OFF`|0.5 kΩ in CSy off time |
|`IS31FL3745_PUR_1K_OHM_CS_OFF` |1 kΩ in CSy off time |
|`IS31FL3745_PUR_2K_OHM_CS_OFF` |2 kΩ in CSy off time (default)|
|`IS31FL3745_PUR_1K_OHM` |1 kΩ |
|`IS31FL3745_PUR_2K_OHM` |2 kΩ |
|`IS31FL3745_PUR_4K_OHM` |4 kΩ |
|`IS31FL3745_PUR_8K_OHM` |8 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSy` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3745_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 12, figure 9.
## API {#api}
### `struct is31fl3745_led_t` {#api-is31fl3745-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3745-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3745_init(uint8_t index)` {#api-is31fl3745-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3745-init-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3745-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3745-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3745_select_page(uint8_t index, uint8_t page)` {#api-is31fl3745-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3745-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3745-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3745_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3745-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3745_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3745-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3745-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3745_set_value(int index, uint8_t value)` {#api-is31fl3745-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3745_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3745-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3745_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3745_set_value_all(uint8_t value)` {#api-is31fl3745-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3745-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3745-set-scaling-register-rgb}
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3745_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3745-set-scaling-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3745_leds` array).
- `uint8_t red`
The scaling value for the red channel.
- `uint8_t green`
The scaling value for the green channel.
- `uint8_t blue`
The scaling value for the blue channel.
---
### `void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)` {#api-is31fl3745-set-scaling-register-mono}
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3745_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3745-set-scaling-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3745_leds` array).
- `uint8_t value`
The scaling value for the LED.
---
### `void is31fl3745_update_pwm_buffers(uint8_t index)` {#api-is31fl3745-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3745-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3745_update_scaling_registers(uint8_t index)` {#api-is31fl3745-update-scaling-registers}
Flush the scaling register values to the LED driver.
#### Arguments {#api-is31fl3745-update-scaling-registers-arguments}
- `uint8_t index`
The driver index.

327
docs/drivers/is31fl3746a.md Normal file
View File

@@ -0,0 +1,327 @@
# IS31FL3746A Driver {#is31fl3746a-driver}
I²C 18x4 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 72 single-color LEDs, or 24 RGB LEDs.
[IS31FL3746A Datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3746A_DS.pdf)
## Usage {#usage}
The IS31FL3746A driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `is31fl3746a` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3746a-mono.c # For single-color
SRC += is31fl3746a.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------------------|----------------------------------|----------------------------------------------------|
|`IS31FL3746A_SDB_PIN` |*Not defined* |The GPIO pin connected to the drivers' shutdown pins|
|`IS31FL3746A_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`IS31FL3746A_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`IS31FL3746A_I2C_ADDRESS_1` |*Not defined* |The I²C address of driver 0 |
|`IS31FL3746A_I2C_ADDRESS_2` |*Not defined* |The I²C address of driver 1 |
|`IS31FL3746A_I2C_ADDRESS_3` |*Not defined* |The I²C address of driver 2 |
|`IS31FL3746A_I2C_ADDRESS_4` |*Not defined* |The I²C address of driver 3 |
|`IS31FL3746A_CONFIGURATION` |`0x01` |The value of the configuration register |
|`IS31FL3746A_PWM_FREQUENCY` |`IS31FL3746A_PWM_FREQUENCY_29K_HZ`|The PWM frequency of the LEDs |
|`IS31FL3746A_SW_PULLDOWN` |`IS31FL3746A_PDR_2K_OHM_SW_OFF` |The `SWx` pulldown resistor value |
|`IS31FL3746A_CS_PULLUP` |`IS31FL3746A_PUR_2K_OHM_CS_OFF` |The `CSx` pullup resistor value |
|`IS31FL3746A_GLOBAL_CURRENT` |`0xFF` |The global current control value |
### I²C Addressing {#i2c-addressing}
The IS31FL3746A has 16 possible 7-bit I²C addresses, depending on how the `ADDR1` and `ADDR2` pins are connected.
To configure this, set the `IS31FL3746A_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|---------------------------------|------|
|`IS31FL3746A_I2C_ADDRESS_GND_GND`|`0x60`|
|`IS31FL3746A_I2C_ADDRESS_GND_SCL`|`0x61`|
|`IS31FL3746A_I2C_ADDRESS_GND_SDA`|`0x62`|
|`IS31FL3746A_I2C_ADDRESS_GND_VCC`|`0x63`|
|`IS31FL3746A_I2C_ADDRESS_SCL_GND`|`0x64`|
|`IS31FL3746A_I2C_ADDRESS_SCL_SCL`|`0x65`|
|`IS31FL3746A_I2C_ADDRESS_SCL_SDA`|`0x66`|
|`IS31FL3746A_I2C_ADDRESS_SCL_VCC`|`0x67`|
|`IS31FL3746A_I2C_ADDRESS_SDA_GND`|`0x68`|
|`IS31FL3746A_I2C_ADDRESS_SDA_SCL`|`0x69`|
|`IS31FL3746A_I2C_ADDRESS_SDA_SDA`|`0x6A`|
|`IS31FL3746A_I2C_ADDRESS_SDA_VCC`|`0x6B`|
|`IS31FL3746A_I2C_ADDRESS_VCC_GND`|`0x6C`|
|`IS31FL3746A_I2C_ADDRESS_VCC_SCL`|`0x6D`|
|`IS31FL3746A_I2C_ADDRESS_VCC_SDA`|`0x6E`|
|`IS31FL3746A_I2C_ADDRESS_VCC_VCC`|`0x6F`|
### PWM Frequency {#pwm-frequency}
The PWM frequency can be adjusted by adding the following to your `config.h`:
```c
#define IS31FL3746A_PWM_FREQUENCY IS31FL3746A_PWM_FREQUENCY_29K_HZ
```
Valid values are:
|Define |Frequency |
|-----------------------------------|----------------|
|`IS31FL3746A_PWM_FREQUENCY_29K_HZ` |29 kHz (default)|
|`IS31FL3746A_PWM_FREQUENCY_14K5_HZ`|14.5 kHz |
|`IS31FL3746A_PWM_FREQUENCY_7K25_HZ`|7.25 kHz |
|`IS31FL3746A_PWM_FREQUENCY_3K63_HZ`|3.63 kHz |
|`IS31FL3746A_PWM_FREQUENCY_1K81_HZ`|1.81 kHz |
|`IS31FL3746A_PWM_FREQUENCY_906_HZ` |906 Hz |
|`IS31FL3746A_PWM_FREQUENCY_453_HZ` |453 Hz |
### De-Ghosting {#de-ghosting}
These settings control the pulldown and pullup resistor values on the `SWy` and `CSx` pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your `config.h`:
```c
#define IS31FL3746A_SW_PULLDOWN IS31FL3746A_PDR_2K_OHM_SW_OFF
#define IS31FL3746A_CS_PULLUP IS31FL3746A_PUR_2K_OHM_CS_OFF
```
Valid values for `IS31FL3746A_SW_PULLDOWN` are:
|Define |Resistance |
|--------------------------------|------------------------------|
|`IS31FL3746A_PDR_0_OHM` |None |
|`IS31FL3746A_PDR_0K5_OHM_SW_OFF`|0.5 kΩ in SWx off time |
|`IS31FL3746A_PDR_1K_OHM_SW_OFF` |1 kΩ in SWx off time |
|`IS31FL3746A_PDR_2K_OHM_SW_OFF` |2 kΩ in SWx off time (default)|
|`IS31FL3746A_PDR_1K_OHM` |1 kΩ |
|`IS31FL3746A_PDR_2K_OHM` |2 kΩ |
|`IS31FL3746A_PDR_4K_OHM` |4 kΩ |
|`IS31FL3746A_PDR_8K_OHM` |8 kΩ |
Valid values for `IS31FL3746A_CS_PULLUP` are:
|Define |Resistance |
|--------------------------------|------------------------------|
|`IS31FL3746A_PUR_0_OHM` |None (default) |
|`IS31FL3746A_PUR_0K5_OHM_CS_OFF`|0.5 kΩ in CSy off time |
|`IS31FL3746A_PUR_1K_OHM_CS_OFF` |1 kΩ in CSy off time |
|`IS31FL3746A_PUR_2K_OHM_CS_OFF` |2 kΩ in CSy off time (default)|
|`IS31FL3746A_PUR_1K_OHM` |1 kΩ |
|`IS31FL3746A_PUR_2K_OHM` |2 kΩ |
|`IS31FL3746A_PUR_4K_OHM` |4 kΩ |
|`IS31FL3746A_PUR_8K_OHM` |8 kΩ |
### Global Current Control {#global-current-control}
This setting controls the current sunk by the `CSy` pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your `config.h`:
```c
#define IS31FL3746A_GLOBAL_CURRENT 0xFF
```
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {
/* Driver
* | R G B */
{0, SW1_CS1, SW1_CS2, SW1_CS3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the `SW1` pin, and their cathodes on the `CS1`, `CS2` and `CS3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {
/* Driver
* | V */
{0, SW1_CS1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 13, figure 8.
## API {#api}
### `struct is31fl3746a_led_t` {#api-is31fl3746a-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-is31fl3746a-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void is31fl3746a_init(uint8_t index)` {#api-is31fl3746a-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-is31fl3746a-init-arguments}
- `uint8_t index`
The driver index.
- `uint8_t sync`
Sync configuration of the LED driver.
---
### `void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-is31fl3746a-write-register}
Set the value of the given register.
#### Arguments {#api-is31fl3746a-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void is31fl3746a_select_page(uint8_t index, uint8_t page)` {#api-is31fl3746a-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-is31fl3746a-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3746a-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3746a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3746a-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3746a_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3746a-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-is31fl3746a-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void is31fl3746a_set_value(int index, uint8_t value)` {#api-is31fl3746a-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3746a_update_pwm_buffers()` after you are finished.
#### Arguments {#api-is31fl3746a-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_is31fl3746a_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3746a_set_value_all(uint8_t value)` {#api-is31fl3746a-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-is31fl3746a-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)` {#api-is31fl3746a-set-scaling-register-rgb}
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `is31fl3746a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3746a-set-scaling-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3746a_leds` array).
- `uint8_t red`
The scaling value for the red channel.
- `uint8_t green`
The scaling value for the green channel.
- `uint8_t blue`
The scaling value for the blue channel.
---
### `void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)` {#api-is31fl3746a-set-scaling-register-mono}
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call `is31fl3746a_update_scaling_registers()` after you are finished.
#### Arguments {#api-is31fl3746a-set-scaling-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_is31fl3746a_leds` array).
- `uint8_t value`
The scaling value for the LED.
---
### `void is31fl3746a_update_pwm_buffers(uint8_t index)` {#api-is31fl3746a-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-is31fl3746a-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void is31fl3746a_update_scaling_registers(uint8_t index)` {#api-is31fl3746a-update-scaling-registers}
Flush the scaling register values to the LED driver.
#### Arguments {#api-is31fl3746a-update-scaling-registers-arguments}
- `uint8_t index`
The driver index.

View File

@@ -1,6 +1,6 @@
# 'serial' Driver
The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilites of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilities of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
| Driver | AVR | ARM | Connection between halves |
| --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- |
@@ -12,8 +12,6 @@ The Serial driver powers the [Split Keyboard](../features/split_keyboard) featur
Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards.
:::
<hr>
## Bitbang
This is the Default driver, absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use.
@@ -53,11 +51,15 @@ SERIAL_DRIVER = bitbang
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
```
3. On ARM platforms you must turn on ChibiOS `PAL_USE_CALLBACKS` feature:
3. On ARM platforms you must turn on ChibiOS PAL callbacks:
* In `halconf.h` add the line `#define PAL_USE_CALLBACKS TRUE`.
```c
#pragma once
<hr>
#define PAL_USE_CALLBACKS TRUE // [!code focus]
#include_next <halconf.h>
```
## USART Half-duplex
@@ -117,8 +119,6 @@ For STM32 MCUs several GPIO configuration options can be changed as well. See th
4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
<hr>
## USART Full-duplex
Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage; therefore it is advised to choose this driver over all others where possible. Due to its internal design Full-duplex is slightly more efficient than the Half-duplex driver, but Full-duplex should be primarily chosen if Half-duplex operation is not supported by the controller's USART peripheral.
@@ -179,38 +179,46 @@ For STM32 MCUs several GPIO configuration options, including the ability for `TX
4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
<hr>
## Choosing a driver subsystem
### The `SERIAL` driver
The `SERIAL` Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it:
1. In your keyboards `halconf.h` add:
1. Enable the SERIAL subsystem in the ChibiOS HAL.
```c
#define HAL_USE_SERIAL TRUE
```
Add the following to your keyboard's `halconf.h`, creating it if necessary:
2. In your keyboards `mcuconf.h`: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
Just below `#include_next <mcuconf.h>` add:
```c
#pragma once
```c
#include_next <mcuconf.h>
#define HAL_USE_SERIAL TRUE // [!code focus]
#undef STM32_SERIAL_USE_USARTn
#define STM32_SERIAL_USE_USARTn TRUE
```
#include_next <halconf.h>
```
Where 'n' matches the peripheral number of your selected USART on the MCU.
2. Activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
3. In you keyboards `config.h`: override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`.
Add the following to your keyboard's `mcuconf.h`, creating it if necessary:
```c
#define SERIAL_USART_DRIVER SD3
```
```c
#pragma once
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USARTn // [!code focus]
#define STM32_SERIAL_USE_USARTn TRUE // [!code focus]
```
Where *n* matches the peripheral number of your selected USART on the MCU.
3. Override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`.
Add the following to your keyboard's `config.h`:
```c
#define SERIAL_USART_DRIVER SD3
```
### The `SIO` driver
@@ -218,31 +226,41 @@ The `SIO` Subsystem was added to ChibiOS with the 21.11 release and is only supp
Follow these steps in order to activate it:
1. In your keyboards `halconf.h` add:
1. Enable the SIO subsystem in the ChibiOS HAL.
```c
#define HAL_USE_SIO TRUE
```
Add the following to your keyboard's `halconf.h`, creating it if necessary:
2. In your keyboards `mcuconf.h:` activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
Just below `#include_next <mcuconf.h>` add:
```c
#pragma once
```c
#include_next <mcuconf.h>
#define HAL_USE_SIO TRUE // [!code focus]
#undef STM32_SIO_USE_USARTn
#define STM32_SIO_USE_USARTn TRUE
```
#include_next <halconf.h>
```
Where 'n' matches the peripheral number of your selected USART on the MCU.
2. Activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
3. In the keyboard's `config.h` file: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`.
Add the following to your keyboard's `mcuconf.h`, creating it if necessary:
```c
#pragma once
#include_next <mcuconf.h>
#undef STM32_SIO_USE_USARTn // [!code focus]
#define STM32_SIO_USE_USARTn TRUE // [!code focus]
```
Where *n* matches the peripheral number of your selected USART on the MCU.
3. Override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`.
Add the following to your keyboard's `config.h`:
```c
#define SERIAL_USART_DRIVER SIOD3
```
```c
#define SERIAL_USART_DRIVER SIOD3
```
### The `PIO` driver
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor **is not required**.
@@ -254,8 +272,6 @@ Optionally, the PIO peripheral utilized for split communication can be changed w
The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.
<hr>
## Advanced Configuration
There are several advanced configuration options that can be defined in your keyboards `config.h` file:
@@ -265,9 +281,11 @@ There are several advanced configuration options that can be defined in your key
If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
```c
#define SELECT_SOFT_SERIAL_SPEED {#}
#define SELECT_SOFT_SERIAL_SPEED n
```
Where *n* is one of:
| Speed | Bitbang | Half-duplex and Full-duplex |
| ----- | -------------------------- | --------------------------- |
| `0` | 189000 baud (experimental) | 460800 baud |
@@ -287,8 +305,6 @@ This is the default time window in milliseconds in which a successful communicat
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
```
<hr>
## Troubleshooting
If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file:

245
docs/drivers/snled27351.md Normal file
View File

@@ -0,0 +1,245 @@
# SNLED27351 Driver {#snled27351-driver}
I²C 16x12 LED matrix driver by Sonix. Supports a maximum of four drivers, each controlling up to 192 single-color LEDs, or 64 RGB LEDs.
A slightly modified version of this IC is also known as "CKLED2001".
[SNLED27351 Datasheet](https://www.sonix.com.tw/files/1/D235860C0C037C28E050007F01001CBE)
## Usage {#usage}
The SNLED27351 driver code is automatically included if you are using the [LED Matrix](../features/led_matrix) or [RGB Matrix](../features/rgb_matrix) feature with the `snled27351` driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your `rules.mk`:
```make
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += snled27351-mono.c # For single-color
SRC += snled27351.c # For RGB
I2C_DRIVER_REQUIRED = yes
```
## Basic Configuration {#basic-configuration}
Add the following to your `config.h`:
|Define |Default |Description |
|----------------------------|-------------|----------------------------------------------------|
|`SNLED27351_SDB_PIN` |*Not defined*|The GPIO pin connected to the drivers' shutdown pins|
|`SNLED27351_I2C_TIMEOUT` |`100` |The I²C timeout in milliseconds |
|`SNLED27351_I2C_PERSISTENCE`|`0` |The number of times to retry I²C transmissions |
|`SNLED27351_I2C_ADDRESS_1` |*Not defined*|The I²C address of driver 0 |
|`SNLED27351_I2C_ADDRESS_2` |*Not defined*|The I²C address of driver 1 |
|`SNLED27351_I2C_ADDRESS_3` |*Not defined*|The I²C address of driver 2 |
|`SNLED27351_I2C_ADDRESS_4` |*Not defined*|The I²C address of driver 3 |
### I²C Addressing {#i2c-addressing}
The SNLED27351 has four possible 7-bit I²C addresses, depending on how the `ADDR` pin is connected.
To configure this, set the `SNLED27351_I2C_ADDRESS_n` defines to one of the following in your `config.h`, where *n* denotes the driver index:
|Define |Value |
|------------------------------|------|
|`SNLED27351_I2C_ADDRESS_GND` |`0x74`|
|`SNLED27351_I2C_ADDRESS_SCL` |`0x75`|
|`SNLED27351_I2C_ADDRESS_SDA` |`0x76`|
|`SNLED27351_I2C_ADDRESS_VDDIO`|`0x77`|
## ARM/ChibiOS Configuration {#arm-configuration}
Depending on the ChibiOS board configuration, you may need to [enable and configure I²C](i2c#arm-configuration) at the keyboard level.
## LED Mapping {#led-mapping}
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
```c
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Driver
* | R G B */
{0, CB1_CA1, CB1_CA2, CB1_CA3},
// etc...
};
```
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the `CB1` pin, and their anodes on the `CA1`, `CA2` and `CA3` pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
```c
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Driver
* | V */
{0, CB1_CA1},
// etc...
};
```
These values correspond to the register indices as shown in the datasheet on page 13.
## API {#api}
### `struct snled27351_led_t` {#api-snled27351-led-t}
Contains the PWM register addresses for a single RGB LED.
#### Members {#api-snled27351-led-t-members}
- `uint8_t driver`
The driver index of the LED, from 0 to 3.
- `uint8_t r`
The output PWM register address for the LED's red channel (RGB driver only).
- `uint8_t g`
The output PWM register address for the LED's green channel (RGB driver only).
- `uint8_t b`
The output PWM register address for the LED's blue channel (RGB driver only).
- `uint8_t v`
The output PWM register address for the LED (single-color driver only).
---
### `void snled27351_init(uint8_t index)` {#api-snled27351-init}
Initialize the LED driver. This function should be called first.
#### Arguments {#api-snled27351-init-arguments}
- `uint8_t index`
The driver index.
---
### `void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)` {#api-snled27351-write-register}
Set the value of the given register.
#### Arguments {#api-snled27351-write-register-arguments}
- `uint8_t index`
The driver index.
- `uint8_t reg`
The register address.
- `uint8_t data`
The value to set.
---
### `void snled27351_select_page(uint8_t index, uint8_t page)` {#api-snled27351-select-page}
Change the current page for configuring the LED driver.
#### Arguments {#api-snled27351-select-page-arguments}
- `uint8_t index`
The driver index.
- `uint8_t page`
The page number to select.
---
### `void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-snled27351-set-color}
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call `snled27351_update_pwm_buffers()` after you are finished.
#### Arguments {#api-snled27351-set-color-arguments}
- `int index`
The LED index (ie. the index into the `g_snled27351_leds` array).
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-snled27351-set-color-all}
Set the color of all LEDs (RGB driver only).
#### Arguments {#api-snled27351-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void snled27351_set_value(int index, uint8_t value)` {#api-snled27351-set-value}
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call `snled27351_update_pwm_buffers()` after you are finished.
#### Arguments {#api-snled27351-set-value-arguments}
- `int index`
The LED index (ie. the index into the `g_snled27351_leds` array).
- `uint8_t value`
The brightness value to set.
---
### `void snled27351_set_value_all(uint8_t value)` {#api-snled27351-set-value-all}
Set the brightness of all LEDs (single-color driver only).
#### Arguments {#api-snled27351-set-value-all-arguments}
- `uint8_t value`
The brightness value to set.
---
### `void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)` {#api-snled27351-set-led-control-register-rgb}
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call `snled27351_update_led_control_registers()` after you are finished.
#### Arguments {#api-snled27351-set-led-control-register-rgb-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_snled27351_leds` array).
- `bool red`
Enable or disable the red channel.
- `bool green`
Enable or disable the green channel.
- `bool blue`
Enable or disable the blue channel.
---
### `void snled27351_set_led_control_register(uint8_t index, bool value)` {#api-snled27351-set-led-control-register-mono}
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call `snled27351_update_led_control_registers()` after you are finished.
#### Arguments {#api-snled27351-set-led-control-register-mono-arguments}
- `uint8_t index`
The LED index (ie. the index into the `g_snled27351_leds` array).
- `bool value`
Enable or disable the LED.
---
### `void snled27351_update_pwm_buffers(uint8_t index)` {#api-snled27351-update-pwm-buffers}
Flush the PWM values to the LED driver.
#### Arguments {#api-snled27351-update-pwm-buffers-arguments}
- `uint8_t index`
The driver index.
---
### `void snled27351_update_led_control_registers(uint8_t index)` {#api-snled27351-update-led-control-registers}
Flush the LED control register values to the LED driver.
#### Arguments {#api-snled27351-update-led-control-registers-arguments}
- `uint8_t index`
The driver index.

View File

@@ -32,20 +32,27 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
To enable SPI, modify your board's `halconf.h` to enable SPI:
To enable SPI, modify your board's `halconf.h` to enable SPI, then modify your board's `mcuconf.h` to enable the peripheral you've chosen:
```c
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_SPI TRUE // [!code focus]
#define SPI_USE_WAIT TRUE // [!code focus]
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD // [!code focus]
#include_next <halconf.h>
```
```c [mcuconf.h]
#pragma once
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
#include_next <mcuconf.h>
```c
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE
#undef STM32_SPI_USE_SPI2 // [!code focus]
#define STM32_SPI_USE_SPI2 TRUE // [!code focus]
```
:::
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

View File

@@ -35,8 +35,12 @@ You'll need to determine which pins can be used for UART -- as an example, STM32
To enable UART, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
```c
#undef STM32_SERIAL_USE_USART2
#define STM32_SERIAL_USE_USART2 TRUE
#pragma once
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USART2 // [!code focus]
#define STM32_SERIAL_USE_USART2 TRUE // [!code focus]
```
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

View File

@@ -160,15 +160,23 @@ To configure the DI pin for open drain configuration, add the following to your
Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like:
`halconf.h`:
```c
#define HAL_USE_SPI TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_SPI TRUE // [!code focus]
#include_next <halconf.h>
```
`mcuconf.h`:
```c
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE
```c [mcuconf.h]
#pragma once
#include_next <mcuconf.h>
#undef STM32_SPI_USE_SPI1 // [!code focus]
#define STM32_SPI_USE_SPI1 TRUE // [!code focus]
```
:::
The following `define`s apply only to the `spi` driver:
@@ -213,15 +221,23 @@ The following `#define`s apply only to the PIO driver:
Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:
`halconf.h`:
```c
#define HAL_USE_PWM TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_PWM TRUE // [!code focus]
#include_next <halconf.h>
```
`mcuconf.h`:
```c
#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE
```c [mcuconf.h]
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM2 // [!code focus]
#define STM32_PWM_USE_TIM2 TRUE // [!code focus]
```
:::
The following `#define`s apply only to the `pwm` driver:
@@ -236,18 +252,49 @@ The following `#define`s apply only to the `pwm` driver:
|`WS2812_PWM_COMPLEMENTARY_OUTPUT`|*Not defined* |Whether the PWM output is complementary (`TIMx_CHyN`) |
::: tip
Using a complementary timer output (`TIMx_CHyN`) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in `mcuconf.h` must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.
Using a complementary timer output (`TIMx_CHyN`) is possible only for advanced-control timers (1, 8 and 20 on STM32). Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.
:::
## API {#api}
### `void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)` {#api-ws2812-setleds}
### `void ws2812_init(void)` {#api-ws2812-init}
Send RGB data to the WS2812 LED chain.
Initialize the LED driver. This function should be called first.
#### Arguments {#api-ws2812-setleds-arguments}
---
- `rgb_led_t *ledarray`
A pointer to the LED array.
- `uint16_t number_of_leds`
The length of the LED array.
### `void ws2812_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)` {#api-ws2812-set-color}
Set the color of a single LED. This function does not immediately update the LEDs; call `ws2812_flush()` after you are finished.
#### Arguments {#api-ws2812-set-color-arguments}
- `int index`
The LED index in the WS2812 chain.
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void ws812_set_color_all(uint8_t red, uint8_t green, uint8_t blue)` {#api-ws2812-set-color-all}
Set the color of all LEDs.
#### Arguments {#api-ws2812-set-color-all-arguments}
- `uint8_t red`
The red value to set.
- `uint8_t green`
The green value to set.
- `uint8_t blue`
The blue value to set.
---
### `void ws2812_flush(void)` {#api-ws2812-flush}
Flush the PWM values to the LED chain.

View File

@@ -129,7 +129,7 @@ needed for older distros.
## Can't Get Message on Console
Check:
- *hid_listen* finds your device. See above.
- Enable debug by pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- Enable debug by pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard/wiki#magic-commands-for-debug).
- Set `debug_enable=true`. See [Debugging](#debugging)
- Try using `print` function instead of debug print. See **common/print.h**.
- Disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).

View File

@@ -40,7 +40,7 @@ That's amazing! We would love to assist you with that!
In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/qmk).
## What Differences Are There Between QMK and TMK?

View File

@@ -34,7 +34,7 @@ On first run, the VIA code in the firmware will copy the keymap from flash memor
The simple fix for this is to clear the EEPROM. You can do this in several ways:
* Hold the Bootmagic Lite key (usually top left/Escape) while plugging the board in, which will also place the board into bootloader mode; then unplug and replug the board.
* Hold the Bootmagic key (usually top left/Escape) while plugging the board in, which will also place the board into bootloader mode; then unplug and replug the board.
* Press the `QK_CLEAR_EEPROM`/`EE_CLR` keycode if it is accessible on your keymap.
* Place the board into bootloader mode and hit the "Clear EEPROM" button. This may not be available for all bootloaders, and you may need to reflash the board afterwards.

View File

@@ -11,7 +11,7 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` |
|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` |
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |

View File

@@ -10,7 +10,7 @@ The following converters are available at this time:
|------------|-------------------|
| `promicro` | `proton_c` |
| `promicro` | `kb2040` |
| `promicro` | `promicro_rp2040` |
| `promicro` | `sparkfun_pm2040` |
| `promicro` | `blok` |
| `promicro` | `bit_c_pro` |
| `promicro` | `stemcell` |
@@ -21,6 +21,7 @@ The following converters are available at this time:
| `promicro` | `liatris` |
| `promicro` | `imera` |
| `promicro` | `michi` |
| `promicro` | `svlinky` |
| `elite_c` | `stemcell` |
| `elite_c` | `rp2040_ce` |
| `elite_c` | `elite_pi` |
@@ -77,7 +78,7 @@ If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.co
|------------------------------------------------------------------------------------------|-------------------|
| [Proton C](https://qmk.fm/proton-c/) | `proton_c` |
| [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040) | `kb2040` |
| [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `promicro_rp2040` |
| [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `sparkfun_pm2040` |
| [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622) | `blok` |
| [Bit-C PRO](https://nullbits.co/bit-c-pro) | `bit_c_pro` |
| [STeMCell](https://github.com/megamind4089/STeMCell) | `stemcell` |
@@ -87,6 +88,7 @@ If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.co
| [Liatris](https://splitkb.com/products/liatris) | `liatris` |
| [Imera](https://splitkb.com/products/imera) | `imera` |
| [Michi](https://github.com/ci-bus/michi-promicro-rp2040) | `michi` |
| [Svlinky](https://github.com/sadekbaroudi/svlinky) | `svlinky` |
Converter summary:
@@ -94,7 +96,7 @@ Converter summary:
|-------------------|---------------------------------|------------------------------|-------------------------------------|
| `proton_c` | `-e CONVERT_TO=proton_c` | `CONVERT_TO=proton_c` | `#ifdef CONVERT_TO_PROTON_C` |
| `kb2040` | `-e CONVERT_TO=kb2040` | `CONVERT_TO=kb2040` | `#ifdef CONVERT_TO_KB2040` |
| `promicro_rp2040` | `-e CONVERT_TO=promicro_rp2040` | `CONVERT_TO=promicro_rp2040` | `#ifdef CONVERT_TO_PROMICRO_RP2040` |
| `sparkfun_pm2040` | `-e CONVERT_TO=sparkfun_pm2040` | `CONVERT_TO=sparkfun_pm2040` | `#ifdef CONVERT_TO_SPARKFUN_PM2040` |
| `blok` | `-e CONVERT_TO=blok` | `CONVERT_TO=blok` | `#ifdef CONVERT_TO_BLOK` |
| `bit_c_pro` | `-e CONVERT_TO=bit_c_pro` | `CONVERT_TO=bit_c_pro` | `#ifdef CONVERT_TO_BIT_C_PRO` |
| `stemcell` | `-e CONVERT_TO=stemcell` | `CONVERT_TO=stemcell` | `#ifdef CONVERT_TO_STEMCELL` |
@@ -105,6 +107,7 @@ Converter summary:
| `liatris` | `-e CONVERT_TO=liatris` | `CONVERT_TO=liatris` | `#ifdef CONVERT_TO_LIATRIS` |
| `imera` | `-e CONVERT_TO=imera` | `CONVERT_TO=imera` | `#ifdef CONVERT_TO_IMERA` |
| `michi` | `-e CONVERT_TO=michi` | `CONVERT_TO=michi` | `#ifdef CONVERT_TO_MICHI` |
| `svlinky` | `-e CONVERT_TO=svlinky` | `CONVERT_TO=svlinky` | `#ifdef CONVERT_TO_SVLINKY` |
### Proton C {#proton_c}
@@ -135,7 +138,7 @@ The following defaults are based on what has been implemented for [RP2040](platf
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
| [Split keyboards](features/split_keyboard) | Partial via `PIO` vendor driver - heavily dependent on enabled features |
### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi {#promicro_rp2040 }
### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi {#sparkfun_pm2040 }
Feature set is identical to [Adafruit KB2040](#kb2040).
@@ -170,6 +173,9 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro
Feature set is identical to [Adafruit KB2040](#kb2040). VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the [Community Edition pinout](platformdev_rp2040#rp2040_ce) docs.
### Svlinky {#svlinky}
Feature set is a pro micro equivalent of the [RP2040 Community Edition](#rp2040_ce), except that two of the analog GPIO have been replaced with digital only GPIO. These two were moved to the FPC connector to support the [VIK specification](https://github.com/sadekbaroudi/vik). This means that if you are expecting analog support on all 4 pins as provided on a RP2040 Community Edition pinout, you will not have that. Please see the [Svlinky github page](https://github.com/sadekbaroudi/svlinky) for more details.
## Elite-C

View File

@@ -109,7 +109,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
```
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EE_CLR` keycode or [Bootmagic Lite](features/bootmagic) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EE_CLR` keycode or [Bootmagic](features/bootmagic) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
```c
void eeconfig_init_user(void) { // EEPROM is getting reset!

View File

@@ -8,7 +8,8 @@ For a detailed explanation of how the layer stack works, checkout [Keymap Overvi
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions#programming-the-behavior-of-any-keycode).)
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. Note that this is a temporary switch that only persists until the keyboard loses power.
* `PDF(layer)` - sets a persistent default layer. This switch, which will last through a power loss, might be used to switch from QWERTY to Dvorak layout and only switch again when you want to.
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15. The modifiers this keycode accept are prefixed with `MOD_`, not `KC_`. These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`.
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
@@ -17,6 +18,9 @@ These functions allow you to activate layers in various ways. Note that layers a
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
See also the [Layer Lock key](features/layer_lock), which locks the highest
active layer until pressed again.
### Caveats {#caveats}
Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
@@ -74,6 +78,7 @@ There are a number of functions (and variables) related to how you can use or ma
| `default_layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing default layer state. |
| `default_layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing default layer state. |
| `default_layer_debug(layer_mask)` | Prints out the current bit mask and highest active default layer to debugger console. |
| [`set_single_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer, but does _not_ write it to persistent memory (EEPROM). |
| [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer and writes it to persistent memory (EEPROM). |
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |

View File

@@ -42,38 +42,7 @@ You can define up to 32 macros in a `keymap.json` file, as used by [Configurator
### Selecting Your Host Keyboard Layout
If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your `keymap.json`, like so:
```json
{
"keyboard": "handwired/my_macropad",
"keymap": "my_keymap",
"host_language": "dvorak",
"macros": [
["Hello, World!"]
],
"layout": "LAYOUT_all",
"layers": [
["QK_MACRO_0"]
]
}
```
The current list of available languages is:
| belgian | bepo | br_abnt2 | canadian_multilingual |
|:-------:|:----:|:--------:|:---------------------:|
| **colemak** | **croatian** | **czech** | **danish** |
| **dvorak_fr** | **dvorak** | **dvp** | **estonian** |
| **finnish** | **fr_ch** | **french_afnor** | **french** |
| **french_osx** | **german_ch** | **german** | **german_osx** |
| **hungarian** | **icelandic** | **italian** | **italian_osx_ansi** |
| **italian_osx_iso** | **jis** | **latvian** | **lithuanian_azerty** |
| **lithuanian_qwerty** | **norman** | **norwegian** | **portuguese** |
| **portuguese_osx_iso** | **romanian** | **serbian_latin** | **slovak** |
| **slovenian** | **spanish_dvorak** | **spanish_latin_america** | **spanish** |
| **swedish** | **turkish_f** | **turkish_q** | **uk** |
| **us_international** | **workman** | **workman_zxcvm** |
If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros you may need to type different keys to get the same letters! To address this you can use [language-specific keycodes](reference_keymap_extras).
### Macro Basics

View File

@@ -161,15 +161,23 @@ Note that the choice of timer may conflict with the [Audio](audio) feature.
Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:
`halconf.h`:
```c
#define HAL_USE_PWM TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_PWM TRUE // [!code focus]
#include_next <halconf.h>
```
`mcuconf.h`:
```c
#undef STM32_PWM_USE_TIM4
#define STM32_PWM_USE_TIM4 TRUE
```c [mcuconf.h]
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM4 // [!code focus]
#define STM32_PWM_USE_TIM4 TRUE // [!code focus]
```
:::
The following `#define`s apply only to the `pwm` driver:
@@ -187,15 +195,23 @@ Refer to the ST datasheet for your particular MCU to determine these values. For
Depending on the ChibiOS board configuration, you may need to enable general-purpose timers at the keyboard level. For STM32, this would look like:
`halconf.h`:
```c
#define HAL_USE_GPT TRUE
::: code-group
```c [halconf.h]
#pragma once
#define HAL_USE_GPT TRUE // [!code focus]
#include_next <halconf.h>
```
`mcuconf.h`:
```c
#undef STM32_GPT_USE_TIM15
#define STM32_GPT_USE_TIM15 TRUE
```c [mcuconf.h]
#pragma once
#include_next <mcuconf.h>
#undef STM32_GPT_USE_TIM15 // [!code focus]
#define STM32_GPT_USE_TIM15 TRUE // [!code focus]
```
:::
The following `#define`s apply only to the `timer` driver:

View File

@@ -1,46 +0,0 @@
# Bluetooth
## Bluetooth Known Supported Hardware
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip|
|----------------------------------------------------------------|--------------------|---------------|---------------------------------|--------------|
|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = rn42` |RN-42 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = bluefruit_le`|nRF51822 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
* HC-05 boards flashed with RN-42 firmware. They apparently both use the CSR BC417 Chip. Flashing it with RN-42 firmware gives it HID capability.
* Sparkfun Bluetooth Mate
* HM-13 based boards
### Adafruit BLE SPI Friend
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
* `#define BLUEFRUIT_LE_RST_PIN D4`
* `#define BLUEFRUIT_LE_CS_PIN B4`
* `#define BLUEFRUIT_LE_IRQ_PIN E6`
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
<!-- FIXME: Document bluetooth support more completely. -->
## Bluetooth Rules.mk Options
The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](../reference_glossary#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
Add the following to your `rules.mk`:
```make
BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = bluefruit_le # or rn42
```
## Bluetooth Keycodes
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
|Key |Aliases |Description |
|---------------------|---------|----------------------------------------------|
|`QK_OUTPUT_AUTO` |`OU_AUTO`|Automatically switch between USB and Bluetooth|
|`QK_OUTPUT_USB` |`OU_USB` |USB only |
|`QK_OUTPUT_BLUETOOTH`|`OU_BT` |Bluetooth only |

View File

@@ -152,14 +152,15 @@ In order to use these features, the following configuration options and function
| Config Flag | Function | Description |
|-----------------------------|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| `COMBO_TERM_PER_COMBO` | uint16_t get_combo_term(uint16_t index, combo_t \*combo) | Optional per-combo timeout window. (default: `COMBO_TERM`) |
| `COMBO_MUST_HOLD_PER_COMBO` | bool get_combo_must_hold(uint16_t index, combo_t \*combo) | Controls if a given combo should fire immediately on tap or if it needs to be held. (default: `false`) |
| `COMBO_MUST_TAP_PER_COMBO` | bool get_combo_must_tap(uint16_t index, combo_t \*combo) | Controls if a given combo should fire only if tapped within `COMBO_HOLD_TERM`. (default: `false`) |
| `COMBO_MUST_PRESS_IN_ORDER_PER_COMBO` | bool get_combo_must_press_in_order(uint16_t index, combo_t \*combo) | Controls if a given combo should fire only if its keys are pressed in order. (default: `true`) |
| `COMBO_TERM_PER_COMBO` | `uint16_t get_combo_term(uint16_t combo_index, combo_t *combo)` | Optional per-combo timeout window. (default: `COMBO_TERM`) |
| `COMBO_MUST_HOLD_PER_COMBO` | `bool get_combo_must_hold(uint16_t combo_index, combo_t *combo)` | Controls if a given combo should fire immediately on tap or if it needs to be held. (default: `false`) |
| `COMBO_MUST_TAP_PER_COMBO` | `bool get_combo_must_tap(uint16_t combo_index, combo_t *combo)` | Controls if a given combo should fire only if tapped within `COMBO_HOLD_TERM`. (default: `false`) |
| `COMBO_MUST_PRESS_IN_ORDER_PER_COMBO` | `bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo)` | Controls if a given combo should fire only if its keys are pressed in order. (default: `true`) |
Examples:
```c
uint16_t get_combo_term(uint16_t index, combo_t *combo) {
#ifdef COMBO_TERM_PER_COMBO
uint16_t get_combo_term(uint16_t combo_index, combo_t *combo) {
// decide by combo->keycode
switch (combo->keycode) {
case KC_X:
@@ -167,7 +168,7 @@ uint16_t get_combo_term(uint16_t index, combo_t *combo) {
}
// or with combo index, i.e. its name from enum.
switch (index) {
switch (combo_index) {
case COMBO_NAME_HERE:
return 9001;
}
@@ -182,8 +183,10 @@ uint16_t get_combo_term(uint16_t index, combo_t *combo) {
return COMBO_TERM;
}
#endif
bool get_combo_must_hold(uint16_t index, combo_t *combo) {
#ifdef COMBO_MUST_HOLD_PER_COMBO
bool get_combo_must_hold(uint16_t combo_index, combo_t *combo) {
// Same as above, decide by keycode, the combo index, or by the keys in the chord.
if (KEYCODE_IS_MOD(combo->keycode) ||
@@ -192,15 +195,17 @@ bool get_combo_must_hold(uint16_t index, combo_t *combo) {
return true;
}
switch (index) {
switch (combo_index) {
case COMBO_NAME_HERE:
return true;
}
return false;
}
#endif
bool get_combo_must_tap(uint16_t index, combo_t *combo) {
#ifdef COMBO_MUST_TAP_PER_COMBO
bool get_combo_must_tap(uint16_t combo_index, combo_t *combo) {
// If you want all combos to be tap-only, just uncomment the next line
// return true
@@ -219,7 +224,9 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) {
return false;
}
#endif
#ifdef COMBO_MUST_PRESS_IN_ORDER_PER_COMBO
bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) {
switch (combo_index) {
/* List combos here that you want to only activate if their keys
@@ -231,6 +238,7 @@ bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) {
return false;
}
}
#endif
```
### Generic hook to (dis)allow a combo activation
@@ -307,6 +315,50 @@ bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key
return false;
}
```
### Customizable key repress
By defining `COMBO_PROCESS_KEY_REPRESS` and implementing `bool process_combo_key_repress(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode)` you can run your custom code when you repress just released key of a combo. By combining it with custom `process_combo_event` we can for example make special handling for Alt+Tab to switch windows, which, on combo F+G activation, registers Alt and presses Tab - then we can switch windows forward by releasing G and pressing it again, or backwards with F key. Here's the full example:
```c
enum combos {
CMB_ALTTAB
};
const uint16_t PROGMEM combo_alttab[] = {KC_F, KC_G, COMBO_END};
combo_t key_combos[COMBO_LENGTH] = {
[CMB_ALTTAB] = COMBO(combo_alttab, KC_NO), // KC_NO to leave processing for process_combo_event
};
void process_combo_event(uint16_t combo_index, bool pressed) {
switch (combo_index) {
case CMB_ALTTAB:
if (pressed) {
register_mods(MOD_LALT);
tap_code(KC_TAB);
} else {
unregister_mods(MOD_LALT);
}
break;
}
}
bool process_combo_key_repress(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) {
switch (combo_index) {
case CMB_ALTTAB:
switch (keycode) {
case KC_F:
tap_code16(S(KC_TAB));
return true;
case KC_G:
tap_code(KC_TAB);
return true;
}
}
return false;
}
```
### Layer independent combos
If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.

View File

@@ -1,6 +1,6 @@
# Command
Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic Lite](bootmagic). There is a lot of overlap between this functionality and the [Magic Keycodes](../keycodes_magic). Wherever possible we encourage you to use that feature instead of Command.
Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic](bootmagic). There is a lot of overlap between this functionality and the [Magic Keycodes](../keycodes_magic). Wherever possible we encourage you to use that feature instead of Command.
On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk`:

View File

@@ -9,15 +9,15 @@ ENCODER_ENABLE = yes
and this to your `config.h`:
```c
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
#define ENCODER_A_PINS { B12 }
#define ENCODER_B_PINS { B13 }
```
Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:
```c
#define ENCODERS_PAD_A { encoder1a, encoder2a }
#define ENCODERS_PAD_B { encoder1b, encoder2b }
#define ENCODER_A_PINS { encoder1a, encoder2a }
#define ENCODER_B_PINS { encoder1b, encoder2b }
```
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions. They can also be flipped with a define:
@@ -49,8 +49,8 @@ For 4× encoders you also can assign default position if encoder skips pulses wh
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:
```c
#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
#define ENCODER_A_PINS_RIGHT { encoder1a, encoder2a }
#define ENCODER_B_PINS_RIGHT { encoder1b, encoder2b }
#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }
```
@@ -59,11 +59,11 @@ If the `_RIGHT` definitions aren't specified in your `config.h`, then the non-`_
Additionally, if one side does not have an encoder, you can specify `{}` for the pins/resolution -- for example, a split keyboard with only a right-side encoder:
```c
#define ENCODERS_PAD_A { }
#define ENCODERS_PAD_B { }
#define ENCODER_A_PINS { }
#define ENCODER_B_PINS { }
#define ENCODER_RESOLUTIONS { }
#define ENCODERS_PAD_A_RIGHT { B12 }
#define ENCODERS_PAD_B_RIGHT { B13 }
#define ENCODER_A_PINS_RIGHT { B12 }
#define ENCODER_B_PINS_RIGHT { B13 }
#define ENCODER_RESOLUTIONS_RIGHT { 4 }
```
@@ -84,10 +84,10 @@ Your `keymap.c` will then need an encoder mapping defined (for four layers and t
```c
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
[3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
[0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU) },
[2] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) },
[3] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
};
#endif
```
@@ -174,13 +174,13 @@ Multiple encoders may share pins so long as each encoder has a distinct pair of
For example you can support two encoders using only 3 pins like this
```
#define ENCODERS_PAD_A { B1, B1 }
#define ENCODERS_PAD_B { B2, B3 }
#define ENCODER_A_PINS { B1, B1 }
#define ENCODER_B_PINS { B2, B3 }
```
You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:
```
#define ENCODERS_PAD_A { B1, B1, B2 }
#define ENCODERS_PAD_B { B2, B3, B3 }
#define ENCODER_A_PINS { B1, B1, B2 }
#define ENCODER_B_PINS { B2, B3, B3 }
```
Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case

View File

@@ -1,6 +1,6 @@
# Joystick {#joystick}
This feature provides game controller input as a joystick device supporting up to 6 axes and 32 buttons. Axes can be read either from an [ADC-capable input pin](../drivers/adc), or can be virtual, so that its value is provided by your code.
This feature provides game controller input as a joystick device supporting up to 6 axes, 32 buttons and a hat switch. Axes can be read either from an [ADC-capable input pin](../drivers/adc), or can be virtual, so that its value is provided by your code.
An analog device such as a [potentiometer](https://en.wikipedia.org/wiki/Potentiometer) found on an analog joystick's axes is based on a voltage divider, where adjusting the movable wiper controls the output voltage which can then be read by the microcontroller's ADC.
@@ -18,6 +18,8 @@ By default the joystick driver is `analog`, but you can change this with:
JOYSTICK_DRIVER = digital
```
When using `analog` with ARM, [you must use 3.3v with your Joystick](../drivers/adc). Although ARM boards such as the [Helios](https://keeb.supply/products/0xcb-helios) have 5v pin output, the ADC driver does not support it.
## Configuration {#configuration}
By default, two axes and eight buttons are defined, with a reported resolution of 8 bits (-127 to +127). This can be changed in your `config.h`:
@@ -35,6 +37,42 @@ By default, two axes and eight buttons are defined, with a reported resolution o
You must define at least one button or axis. Also note that the maximum ADC resolution of the supported AVR MCUs is 10-bit, and 12-bit for most STM32 MCUs.
:::
### Hat Switch {#hat-switch}
To enable the 8-way hat switch, add the following to your `config.h`:
```c
#define JOYSTICK_HAS_HAT
````
The position can be set by calling `joystick_set_hat(value)`. The range of values moves clockwise from the top (ie. north), with the default "center" position represented by a value of `-1`:
```
0
7 N 1
NW .--'--. NE
/ \
6 W | -1 | E 2
\ /
SW '--.--' SE
5 S 3
4
```
Alternatively you can use these predefined names:
|Define |Value|Angle|
|------------------------|-----|-----|
|`JOYSTICK_HAT_CENTER` |`-1` | |
|`JOYSTICK_HAT_NORTH` |`0` |0° |
|`JOYSTICK_HAT_NORTHEAST`|`1` |45° |
|`JOYSTICK_HAT_EAST` |`2` |90° |
|`JOYSTICK_HAT_SOUTHEAST`|`3` |135° |
|`JOYSTICK_HAT_SOUTH` |`4` |180° |
|`JOYSTICK_HAT_SOUTHWEST`|`5` |225° |
|`JOYSTICK_HAT_WEST` |`6` |270° |
|`JOYSTICK_HAT_NORTHWEST`|`7` |315° |
### Axes {#axes}
When defining axes for your joystick, you must provide a definition array typically in your `keymap.c`.
@@ -147,6 +185,8 @@ Contains the state of the joystick.
A bit-packed array containing the joystick button states. The size is calculated as `(JOYSTICK_BUTTON_COUNT - 1) / 8 + 1`.
- `int16_t axes[]`
An array of analog values for each defined axis.
- `int8_t hat`
The hat switch position.
- `bool dirty`
Whether the current state needs to be sent to the host.
@@ -220,3 +260,14 @@ Set the value of the given axis.
The axis to set the value of.
- `int16_t value`
The value to set.
---
### `void joystick_set_hat(int8_t value)` {#api-joystick-set-hat}
Set the position of the hat switch.
#### Arguments {#api-joystick-set-hat-arguments}
- `int8_t value`
The hat switch position to set.

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