Compare commits

..

834 Commits

Author SHA1 Message Date
Drashna Jaelre
43f8d365ba [Bug] Fix issue with mousekey movement getting stuck (#17493)
* [Bug] Fix issue with mousekey movement getting stuck

* Lint
2022-06-28 15:28:44 -07:00
Nick Brassel
1e402060a6 Bump revision for auto-tagging.
Seems there was an error, but it wasn't failing the actions run.

https://github.com/anothrNick/github-tag-action/releases/tag/1.39.0
2022-06-29 08:13:38 +10:00
Joel Challis
fa3dd373b4 Fix error message in generated code (#17484) 2022-06-27 08:58:31 +10:00
rooski15
410686dc03 [Keyboard] Add blockboy/ac980mini keyboard (#16839)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-25 12:45:45 -07:00
precondition
e13bb58c40 Only omit paths containing "/keymaps/" (#17468)
This allows keyboard names to contain the word "keymaps"
2022-06-25 20:40:49 +01:00
Drashna Jaelre
7fd3d76faa [Split] Ensure SOFT_SERIAL_PIN is defined if USE_I2C isn't defined (#17466) 2022-06-25 12:34:40 -07:00
jack
cbbdcec290 [Keyboard] Fixup skergo - missing keycode in keymaps (#17458) 2022-06-25 12:15:00 -07:00
Evelien Dekkers
31dfdaa1ba [Keyboard] Fix firmware size for via keymap on Atom47 (#17472) 2022-06-24 15:02:33 -07:00
Nick Brassel
a8677ed296 Fix up Djinn fuse handling. (#17465) 2022-06-24 14:11:06 +10:00
David Kosorin
71472a1692 Update ref_functions.md (replaced deprecated RESET) (#17436) 2022-06-23 02:26:08 +01:00
Dasky
aaaf3ff66a Fix 0 delta results in size_regression.sh (#17457) 2022-06-23 11:23:13 +10:00
James Young
666cba5c2e Cf/evyd13 wasdat (#17452)
* evyd13/wasdat: add LAYOUT_all Configurator data

* info.json: fix JSON syntax errors
2022-06-23 02:15:38 +01:00
Salicylic-acid3
47fcb40a81 [Keyboard] Fix RGB_matrix coordinates for gl516/j73gl (#17450) 2022-06-22 17:52:16 -07:00
Kevin Zhao
8ea836f2b2 [Keyboard] Update SKErgo for hardware changes (#17449)
Co-authored-by: kevinzhao-tech <kevin@keyz.io>
2022-06-22 17:39:19 -07:00
James Young
0a04064362 Chaos 65 Community Layout Support (#17447)
* move ISO Enter position to home row

This commit makes the ISO layout macros compatible with QMK's `65_iso_blocker` and `65_iso_blocker_tsangan` community layouts.

* info.json: apply friendly formatting

- add key labels
- add line breaks between physical rows

* enable Community Layout support

* chaos65.h: add matrix diagram
2022-06-22 09:40:48 -07:00
James Young
27f9e4775e Checkerboards SNOP60 Refactor (#17446) 2022-06-22 07:29:47 -07:00
Greg Dietsche
701db278e4 [Keymap] farmergreg's kint41 Kinesis Advantage 2 Layout (#16784) 2022-06-21 22:10:17 -07:00
Muhammad Rivaldi
46644b0a64 [Keyboard] Add n60a pcb (#17273)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-21 19:14:36 -07:00
paulgali
3e9f000a97 [Keyboard] Zeno 60% Ergo PCB (#17403)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-21 18:53:04 -07:00
Joel Challis
de4262f9aa Add missing snop60 default keymap (#17443) 2022-06-21 16:49:58 +01:00
James Young
03d0182541 alt34 rev1: Configurator Compilation Fix (#17442)
* move USE_I2C and EE_HANDS definitions to keyboard level

Allow this keyboard to be compiled by QMK Configurator.

* remove redundant DEFAULT_FOLDER rule
2022-06-21 13:22:53 +01:00
bbrfkr
c2e5953bc1 [Keyboard] add dynamis keyboard (#15994)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-20 20:41:46 -07:00
alabbe9545
84718c0ab7 [Keyboard] Add labbeminiv1 (#16401)
* [Keyboard] Add labbeminiv1

* Adjust vendor id

The used vendor id was in use

* Remove comment in the rgb keymap

* Update keyboards/labbe/labbeminiv1/rules.mk

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

* Rename rgb matrix keymap folder

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-20 20:33:29 -07:00
Ryan Baker
712f6cf450 [Keyboard] Add rb18 keyboard (#17306) 2022-06-20 20:24:58 -07:00
Ramon Imbao
7b7fb63f4b [Keyboard] Add Nayeon by Abats Keyboard Club (#16659)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-06-20 20:16:13 -07:00
Albert Y
c114996034 [Keyboard] Add more bootloader options for id75 (#17441) 2022-06-20 20:11:37 -07:00
Wolf Van Herreweghe
3077123bf0 [Keyboard] Add base FAve65H firmware (#17147)
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-06-20 19:23:50 -07:00
Wolf Van Herreweghe
1c26c0bc9b [Keyboard] Update firmware for the FAve 87H (#16920)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-06-20 19:23:34 -07:00
Wolf Van Herreweghe
e8e45bca98 [Keyboard] Update FAve 84H RGB firmware (#16919)
* Add base FAve 84H firmware

* Update keyboards/linworks/fave84h/readme.md

Thank you, apologies for the oversight

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

* Update keyboards/linworks/fave84h/keymaps/via/keymap.c

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

* Update keyboards/linworks/fave84h/keymaps/default/keymap.c

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

* Move LED config in ifdef

* update read me

* Update Product Name

* Update keyboards/linworks/fave84h/rules.mk

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

* Add Via RGB Matrix Control

* Add base FAve 84H firmware

* Add Via RGB Matrix Control

* fix merge conflict

* reduce max brightness

* remove action macro and action function

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

* Remove / update code to work with the build in QMK via hack

* Update Read me

* Add newline at end of rules

Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-20 19:22:53 -07:00
evils
0a45a19801 [Docs] clarify inner array of direct pin matrix (#17437) 2022-06-21 01:52:11 +01:00
bomb
5ab90cc72a [Keyboard] Add tegic for melgeek! (#17400)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-20 17:26:08 -07:00
Nick Brassel
aa06893b58 Add Djinn. (#17382)
* Add Djinn.

* Review comments.

* Further cleanup.
2022-06-20 14:20:56 +10:00
anubhav dhiman
ad2e853611 [Keyboard] add at6 keyboard (#17346)
Co-authored-by: zvecr <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-19 11:16:24 -07:00
Markus Weimar
7982957f75 [Keymap] Update XD75 keymap by markus (#17417) 2022-06-19 10:59:00 -07:00
coliss86
fd01feae4b Add a note about using differents MCU family (#17416) 2022-06-19 08:32:22 +10:00
Nick Brassel
b5104c3a93 Fixup stale labels lists. (#17415) 2022-06-18 17:33:55 +10:00
jack
545923b0a0 Fixup handwired/macroboard (#17405) 2022-06-17 04:50:14 +01:00
Dmitry Nosachev
6d2f9c9c1e [Keyboard] Atreus: add STM32F103C8T6 based variant (#16846)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-16 15:36:11 -07:00
Michał Szczepaniak
82a7f4adda [handwired/macroboard] Add separate f401 and f411 configs… (#16338)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-16 15:35:40 -07:00
Gordon
89921e917a [Keyboard] Fix 1U space in Keebio/sinc/rev2 layout macros (#16901) 2022-06-16 15:35:13 -07:00
minibois
6d7026e561 [Keyboard] mini_ten_key_plus edited info.json (#15574)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-16 15:34:05 -07:00
Yoshihiro Saito
811dbda20a [Keymap] Update yoshimaru46 keymap (#17402) 2022-06-16 14:46:04 -07:00
Nick Brassel
5ccb2fd003 Swap to actions/stale. (#17404) 2022-06-17 07:16:01 +10:00
Lorenzo Leonini
8be0496347 [Keyboard] Add ADM42 Keyboard (#17366)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-16 11:20:31 -07:00
peepeetee
8e128452db [Keyboard] Idobao Montex V2(RGB) (#15865)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Christian Hofstede <4440939+chofstede@users.noreply.github.com>
Co-authored-by: Vino Rodrigues <github@m.vinorodrigues.com>
Co-authored-by: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com>
2022-06-16 12:08:01 +10:00
IBNobody
8e5f8a5ff9 [Keyboard] Add Idobao Montex RGB (V2) (#16897)
* Add Montex V2 (#10)

* Update readme.md

* Update rules.mk

* Update config.h

* Update keyboards/idobao/montex/v2/config.h

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

* Update keyboards/idobao/montex/v2/rules.mk

Add Layouts

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

* Merged code fron work done with @vinorodrigues

* Update keyboards/idobao/montex/v2/rules.mk

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

* Update keyboards/idobao/montex/v2/v2.h

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

* Update keyboards/idobao/montex/v2/config.h

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

* Removing via_nug keymap

* update to montex code (#11)

* remove VIA_QMK_RGBLIGHT_ENABLE

* more data driven config, simple copyright headers, some code cleanup

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com>
2022-06-15 19:04:30 -07:00
Joel Challis
d3dfa83b40 Fix clean arg handling (#17392) 2022-06-15 22:43:54 +01:00
Felicia Kuan
7224d84167 edit typo in comment (#17394) 2022-06-15 21:31:13 +01:00
ALTAiN
afbba27f42 BLASTER75 info.json position fixes (#17395) 2022-06-15 21:30:35 +01:00
Arturo Avila
de207b97fa [Keymap+] SnailMap port for the Kintsugi keyboard. (#17341) 2022-06-14 17:13:37 -07:00
Forrest Cahoon
b7ce3b1967 [Keymap] New keymap for Keebio FoldKB (#17364) 2022-06-14 16:42:41 -07:00
kb-elmo
dc2ce36d63 [Keyboard] Add Chaos65 keyboard (#17369)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-14 16:42:15 -07:00
Yutong Zhou
1c45845178 [Keyboard] Flip encoder pads on basketweave (#17375) 2022-06-14 16:32:07 -07:00
Joel Challis
f37de9a212 Perform stricter lint checks (#17348) 2022-06-14 14:54:46 +01:00
Nick Brassel
15dab01e6a Inform people that things may not work. (#17391) 2022-06-14 20:15:01 +10:00
Tom Barnes
026d0e8bf1 Update feature_midi.md (#17390)
Add caveat about usb endpoints.
2022-06-14 11:12:52 +01:00
npspears
e49fa43a7f [Keyboard] add SNOP60 (#17131)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-13 11:30:35 -07:00
ALTAiN
5149728b23 [Keyboard] Add BLASTER75 keyboard (#16887)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-12 22:14:33 -07:00
Nick Brassel
f18afffc8d actions/stale: 150 operations, oldest-first. 2022-06-13 11:15:24 +10:00
Nick Brassel
856029f7c5 Swap to 1000 stale actions while debugging. 2022-06-13 11:05:25 +10:00
Nick Brassel
9d07ab88af Fixup stale action. (#17373) 2022-06-13 10:55:16 +10:00
Nick Brassel
f7ab10a3c1 Add stale action. (#17372)
* Add stale action.

* Allow for manual trigger.
2022-06-13 10:43:52 +10:00
HorrorTroll
c2045558d9 [Keyboard] Add Lemon40 keyboard (#17357) 2022-06-12 11:30:08 -07:00
Albert Y
b5a53a9946 Add encoder map (#17361) 2022-06-12 15:34:29 +01:00
Drashna Jaelre
3f841a24f0 [Keyboard] Remove terminal commands from m48 (#17363) 2022-06-12 20:47:24 +10:00
durken1
a50b09cba5 [Keyboard] add pierce (#17000)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Dan Abrahamsson <dan.abrahamsson@imsystech.com>
2022-06-11 11:24:58 -07:00
Alin Marin Elena
51cfb1b457 [Keyboard] mlego fix product id and sync oled code (#16237)
* sync oled code over the keymaps

* put different product ids

* put different product ids for the rest

* put different product ids for the rest

* try to reduce code duplication

* make ifdefs nice and correct

* move the leds code out of keymap

* try to reduce code duplication

* move the rgb code outside the keymaps for reuse

* Update keyboards/mlego/m65/m65.c

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

* Update keyboards/mlego/m65/m65.c

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

* move more code outside keymaps for reuse

* add few more xps

* add mic mute

* update to new name of macros for reset

* style for matrix

* clean split

* use tinyuf2 as bootloader

* Update keyboards/mlego/m65/rev4/rules.mk

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

* radionalise product id and device version

* add tinyuf2 as default bootloader for stm32f4

* update tinyuf2

* update tinyuf2 and via. f411 remove tinyuf2 since is not really working. make the config more conditional

* sync the keymap with default

* revert via non building with gcc 11

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-11 11:18:45 -07:00
jack
dbd4ac5a3f [Keyboard] Fix checkboards/quark_lp (another) (#17296) 2022-06-11 10:52:45 -07:00
Ryan
b4b34cd2cd Wasdat: move some stuff to info.json (#17327) 2022-06-11 08:24:29 +10:00
Joel Challis
92665aef33 Promote 'layouts require matrix data' to api error (#17349) 2022-06-10 11:44:48 +01:00
Joel Challis
7baf9b3f35 Promote label with newlines to lint error (#17347) 2022-06-10 11:44:23 +01:00
jack
d8ace624c8 initial (#17345) 2022-06-10 08:45:31 +01:00
Derek
7c097ee6b4 [Keyboard] Add Sodium keyboards (#17078)
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: nacly <nacly@pop-os.localdomain>
2022-06-09 20:42:53 -07:00
Zac Scott
93c3a959a7 [Keymap] Add planck/scottzach1 keymap (#17083) 2022-06-09 20:40:43 -07:00
zv0n
9da1b86d71 [keyboard] annepro2 Add and use functions to directly control led colors (#17196) 2022-06-10 13:25:48 +10:00
Gabriel Oliveira
9316023290 [Keyboard] Improve the durgot k3x0 readme.md (#17214) 2022-06-09 18:15:44 -07:00
ILWrites
2f8704143e [Keyboard] Adding Sunsetter R2 keyboard to Charue family (#17269)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-09 18:12:31 -07:00
Joel Challis
a599550adb Add support for linting deprecated and removed functionality (#17063)
* Add support for more lint warnings/errors

* Develop currently needs extra deps installed

* Lint a few more scenarios

* fix tests
2022-06-09 21:02:16 +01:00
jack
de43b09d25 [Keyboard] Fix kprepublic/bm60hsrgb_ec/rev2 (#17334) 2022-06-09 11:53:28 -07:00
Tomasz Janeczko
6567b21688 Move more UART-based keyboards to use timeout correctly. (#17329)
Co-authored-by: Tomasz Janeczko <tomasz.j@hey.com>
2022-06-08 14:51:41 -07:00
peepeetee
f6a7bf2a83 [Keyboard] Add KPrepublic BM60hsrgb_ec V1 and V2 (#15104)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-08 12:20:26 -07:00
Jason Dunsmore
c9b71f953f [Keymap] Update keymap for user jasondunsmore (#17312) 2022-06-07 23:23:41 -07:00
JunZuloo
5f72d54299 Update other_vscode.md (#17317)
Bracket pair colorizer has been deprecated since it is now a native feature, and VIM Keymap no longer exists, so I removed those 2 links.
2022-06-08 02:47:57 +01:00
Nick Brassel
1d75e20cd8 Add WB32 evaluation board onekey targets. (#17330) 2022-06-08 10:47:56 +10:00
jpe230
5c7972760c [Keymap] CRKBD: Update jpe230 Keymap (#17280) 2022-06-07 11:31:28 -07:00
Andrew Kannan
1c97a0375e [Keyboard] Add BrutalV2 65 Keyboard (#17252)
* Add Brutal65 V2 to QMK

* Update info.json and copyright notices

* Update info.json]

* Update readme and delete chconf

* Update matrix and keymaps to match info json

* Update keyboards/cannonkeys/brutalv2_65/config.h

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

* Update keyboards/cannonkeys/brutalv2_65/readme.md

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

* Update keyboards/cannonkeys/brutalv2_65/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-07 11:30:35 -07:00
Andrew Kannan
fbe236fa77 [Keyboard] Add Cloudline PCB support (#17253)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-07 11:29:31 -07:00
Uy Bui
b8bbd0cb9a [Keyboard] Add Stello65 keyboard (#17168)
* [Keyboard] add Stello65 keyboard

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* [Keyboard] update config pinout for stello65_sl_rev1

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-07 11:28:13 -07:00
Tomasz Janeczko
c681b6dbf3 [Keyboard] Handle timeout on UART for Redox Wireless (#17203)
* Handle timeout on UART for Redox Wireless receiver-to-keyboard communication.

- This fixes the issue of a keyboard deadlocking on the first matrix
  scan with Redox Wireless keyboards

* Remove an explicit cast.

Co-authored-by: Tomasz Janeczko <tomasz.j@hey.com>
2022-06-07 11:22:13 -07:00
Tommy Alatalo
5d767f8361 [Keyboard] Add alt34 keyboard (#17223)
* Add files for alt34 keyboard

* Add link to hardware bill of materials for alt34

* Change keyboard image link to imgur

* Remove platform specific defines from rev1.h

* Remove bluetooth and sleep led rules etc

* Add GPL license header to all source code files

* Shorten comment for NKRO_ENABLE

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

* Simplify option usage comment in rules.mk

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

* Set imgur link to largest size option

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

* Move rules.mk into rev1 folder entirely

* Remove .noci file

* Update keyboards/alt34/rev1/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-07 11:14:44 -07:00
trwnh
cf1e66b352 [Keymap] add trwnh keymap for gmmk pro (#17267) 2022-06-07 11:01:23 -07:00
anubhav dhiman
f0b1c8ced9 add new keyboard atset (#17195)
Co-authored-by: zvecr <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-07 23:31:56 +10:00
Travis Rigg
b85c224b7c docs: reflect systemd's change in language (#17322)
Like much of our field, systemd has renamed their `master` branch to `main`
2022-06-06 23:29:59 +01:00
Stefan Kerkmann
4c48760558 Apply EXPECT_REPORT and EXPECT_EMPTY_REPORT (#17311)
...convenience macros to test cases that where missed during #17284
2022-06-05 20:06:05 +01:00
Pascal Getreuer
95d20e6d8b Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284)
* Fix Caps Word and Unicode Map

* Tests for Caps Word + Auto Shift and Unicode Map.

* Fix formatting

* Add additional keyboard report expectation macros

This commit defines five test utilities, EXPECT_REPORT, EXPECT_UNICODE,
EXPECT_EMPTY_REPORT, EXPECT_ANY_REPORT and EXPECT_NO_REPORT for use with
TestDriver.

EXPECT_REPORT sets a gmock expectation that a given keyboard report will
be sent. For instance,

  EXPECT_REPORT(driver, (KC_LSFT, KC_A));

is shorthand for

  EXPECT_CALL(driver,
      send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A)));

EXPECT_UNICODE sets a gmock expectation that a given Unicode code point
will be sent using UC_LNX input mode. For instance for U+2013,

  EXPECT_UNICODE(driver, 0x2013);

expects the sequence of keys:

  "Ctrl+Shift+U, 2, 0, 1, 3, space".

EXPECT_EMPTY_REPORT sets a gmock expectation that a given keyboard
report will be sent. For instance

  EXPECT_EMPTY_REPORT(driver);

expects a single report without keypresses or modifiers.

EXPECT_ANY_REPORT sets a gmock expectation that a arbitrary keyboard
report will be sent, without matching its contents. For instance

  EXPECT_ANY_REPORT(driver).Times(1);

expects a single arbitrary keyboard report will be sent.

EXPECT_NO_REPORT sets a gmock expectation that no keyboard report will
be sent at all.

* Add tap_key() and tap_keys() to TestFixture.

This commit adds a `tap_key(key)` method to TestFixture that taps a
given KeymapKey, optionally with a specified delay between press and
release.

Similarly, the method `tap_keys(key_a, key_b, key_c)` taps a sequence of
KeymapKeys.

* Use EXPECT_REPORT, tap_keys, etc. in most tests.

This commit uses EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT,
EXPECT_NO_REPORT, tap_key() and tap_keys() test utilities from the
previous two commits in most tests. Particularly the EXPECT_REPORT
macro is frequently useful and makes a nice reduction in boilerplate
needed to express many tests.

Co-authored-by: David Kosorin <david@kosorin.net>
2022-06-05 09:14:02 +02:00
eason
787165718d Disable features known to cause BIOS/suspend issues (#17270) 2022-06-04 01:44:53 +01:00
Drashna Jaelre
706194b336 Add Encoder Map Swap Hands config for boards that support both features (#17294) 2022-06-03 12:12:15 +01:00
Joel Challis
5bcfc273ce Fix lint errors (#17293) 2022-06-02 19:30:07 +01:00
takishim
71b928fbec [Keyboard] Organized versions of mikeneko65 (#16985)
Co-authored-by: takishim <tadashi@kishimo.to>
2022-06-02 10:20:02 -07:00
Ryan Skidmore
9a587275cf keyboards: fix malformed info.json files (#17292) 2022-06-02 17:50:08 +01:00
Aidan Gauland
7c3cb99164 [Keymap] Fix maddie layout for ploopy/trackball_nano (#17213) 2022-06-02 09:37:28 -07:00
Václav Kučera
7ff666340c [Keyboard] Acheron Shark alpha Encoder support (#17266) 2022-06-02 09:17:47 -07:00
wavtype
f330ef12b6 Add wavtype/p01_ultra (#16513)
* new fork (manta and foundation)

added foundation and manta firmware

* removed manta

* VIA compliant changes

added readme, info.json edits

* Update keyboards/wavtype/foundation/config.h

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

* Update keyboards/wavtype/foundation/readme.md

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

* removed via.json and updated readme

* Update keyboards/wavtype/foundation/rules.mk

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

* Update keyboards/wavtype/foundation/config.h

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

* Update keyboards/wavtype/foundation/config.h

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

* Update keymap.c

* added p01 ultra

* updated diode direction

proto used opposite diode direction

* removed foundation

* Update keyboards/wavtype/p01_ultra/rules.mk

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

* Update keyboards/wavtype/p01_ultra/config.h

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

* Update keyboards/wavtype/p01_ultra/config.h

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

* Update keyboards/wavtype/p01_ultra/config.h

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

* Update keyboards/wavtype/p01_ultra/config.h

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

* Update keyboards/wavtype/p01_ultra/readme.md

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

* Update keyboards/wavtype/p01_ultra/info.json

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

* Update keyboards/wavtype/p01_ultra/keymaps/via/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/default/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/default/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/via/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/via/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/default/keymap.c

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

* Update keyboards/wavtype/p01_ultra/keymaps/default/keymap.c

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

* Update keyboards/wavtype/p01_ultra/rules.mk

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

* Update keyboards/wavtype/p01_ultra/readme.md

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

* Update keyboards/wavtype/p01_ultra/config.h

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-02 14:02:36 +01:00
Carlo Sala
5b16671d7a move RESET to QK_BOOT (#17278)
* move RESET to QK_BOOT

* fix tapping_term
2022-05-31 22:37:28 +01:00
Forrest Cahoon
8153b55e07 Add trailing parens to get_oneshot_mods in feature_advanced_keycodes.md (#17211) 2022-05-31 21:31:47 +10:00
moyi4681
d5ed3ae967 [Keyboard] fix dz64rgb rgb sleep (#17209) 2022-05-31 01:22:07 -07:00
Drashna Jaelre
cda343acbe [Keymap] Drashna update for post Q2 merge (#17241) 2022-05-30 22:02:55 -07:00
trwnh
b554e4b612 Change AW20216 SPI Mode from 0 to 3, to fix RGB LEDs on GMMK Pro (#17262) 2022-05-31 14:46:21 +10:00
Sergey Vlasov
650be92cf9 Nix shell updates (#17243) 2022-05-31 14:08:23 +10:00
Joel Challis
0e11b511e4 Convert ergodone to use core mcp23018 driver (#17005) 2022-05-31 03:08:56 +01:00
Joel Challis
2879573688 Fix various lint errors (#17255)
* Fix various lint errors

* reduce complexity
2022-05-30 23:43:36 +01:00
Dasky
25ec68c408 Fix docs typo (#17254) 2022-05-30 23:05:57 +01:00
chalex
3826fca637 [Keyboard] Add str.merro60 pcb (#17097)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Alexander Lee <aclee3@CGHan-Macbook-2015.local>
Co-authored-by: chalex <chlxbsmt@gmail.com>
2022-05-30 14:45:27 -07:00
Juno Nguyen
15a86d5c53 [Keymap] Updates to layouts/community/ortho_4x12/junonum (#17249) 2022-05-30 11:28:35 -07:00
Seth Barberee
cc7a3f8dc7 [Keymap] Update sethbarberee code to QK_BOOT and try out DVVORAK (#17230) 2022-05-30 11:07:16 -07:00
Joel Challis
a06b5cae41 Fix API errors (#17239) 2022-05-30 15:34:20 +01:00
Joel Challis
e22a183329 Use correct container for unit test workflow (#17242) 2022-05-29 20:15:54 +01:00
Joel Challis
6a0ed63eb1 Fix quark_lp via firmware size (#17233) 2022-05-29 06:17:49 +01:00
jack
07f5147621 Fixup iron165r2 (#17119)
* initial

* revert some defines

* formatting

* apply changes

* update readme

* suggestion
2022-05-29 06:09:42 +01:00
Nick Brassel
89a5d5aea0 Fixup command sequencing for master/develop. (#17227) 2022-05-29 09:07:11 +10:00
Nick Brassel
b835171008 Merge branch 'develop' -- breaking changes 2022-05-28. 2022-05-29 07:57:11 +10:00
Nick Brassel
0c8f78020d Merge point for 2022-05-28 Breaking Change 2022-05-29 07:53:50 +10:00
Nick Brassel
d0af56da33 Breaking changes for 2022q2. (#17221) 2022-05-29 07:50:21 +10:00
Joel Challis
ebd4027883 Refactor legacy quantum keycodes in default-ish keymaps (#17150) 2022-05-27 06:07:42 +10:00
QMK Bot
d83fda01cf Merge remote-tracking branch 'origin/master' into develop 2022-05-25 12:11:52 +00:00
Takeshi ISHII
f5d091a9d5 Small update to Symmetric70 keyboard readme (#17188)
Added a little description to reademe.md under `handwired/symmetric70_proto/{matrix_debug|matrix_fast}`.
2022-05-25 21:11:13 +09:00
QMK Bot
23732068a4 Merge remote-tracking branch 'origin/master' into develop 2022-05-24 17:09:41 +00:00
James Young
c3ff06c534 SkeletonNumPad Configurator Key Sequence Fix (#17204)
* info.json: apply friendly formatting

* info.json: fix key sequence
2022-05-24 18:08:37 +01:00
zvecr
6342354cf6 Disable python formatting for some files 2022-05-24 02:35:59 +01:00
zvecr
cbc68dfd21 Update keyboard aliases 2022-05-24 02:20:12 +01:00
zvecr
de6360feca stub changelog 2022-05-24 01:55:34 +01:00
QMK Bot
f5e1d2f76a Merge remote-tracking branch 'origin/master' into develop 2022-05-23 06:22:01 +00:00
Xelus22
00fcfd9181 [Keyboard][Fix] Change default keymap tilde to grv (#17185) 2022-05-22 23:21:23 -07:00
QMK Bot
64e2dbedc3 Merge remote-tracking branch 'origin/master' into develop 2022-05-23 06:11:55 +00:00
Ramon Imbao
5aef750379 [Keyboard] Add plywrks Ahgase (#17191) 2022-05-22 23:11:17 -07:00
QMK Bot
0bef2bfeb6 Merge remote-tracking branch 'origin/master' into develop 2022-05-23 06:04:11 +00:00
Albert Y
c9abb03662 [Keyboard] mj64 Increase LED count (#17194) 2022-05-22 23:03:38 -07:00
Joy Lee
1c7e8b9a9d Added support for Wb32fq95 (#16871) 2022-05-23 15:57:24 +10:00
QMK Bot
1182f5b4be Merge remote-tracking branch 'origin/master' into develop 2022-05-23 05:06:35 +00:00
Xyverz
416c59fc52 [Keyboard] Atreus62update (#17179)
Co-authored-by: Ian Sterling <503326@MC02YT9K9LVCF.tld>
Co-authored-by: Ian Sterling <80361942+iansterlingaaa@users.noreply.github.com>
Co-authored-by: Ian Sterling <xyverz@paeroa-arch.localdomain>
2022-05-22 22:05:55 -07:00
QMK Bot
ac1c5f8dfe Merge remote-tracking branch 'origin/master' into develop 2022-05-21 22:54:42 +00:00
-k
a1fb86b17a Add massdrop/alt:charlesrocket keymap (#17173) 2022-05-21 15:54:09 -07:00
QMK Bot
f5b3f12544 Merge remote-tracking branch 'origin/master' into develop 2022-05-21 16:37:24 +00:00
Diego Palacios
e6071b891a Added Cantor keyboard (#16552) 2022-05-21 17:36:54 +01:00
QMK Bot
afdf1c23dc Merge remote-tracking branch 'origin/master' into develop 2022-05-20 17:23:16 +00:00
James Young
0103f7877a PJB Eros Community Layout Support (#17158) 2022-05-20 10:23:03 -07:00
James Young
a9c8a88e43 Ryan Skidmore rskeys100 Community Layout Support (#17159) 2022-05-20 10:22:42 -07:00
QMK Bot
bb7572b42f Merge remote-tracking branch 'origin/master' into develop 2022-05-20 17:13:33 +00:00
James Young
caa5dcc672 Dailycraft Sandbox Configurator Data (#17169) 2022-05-20 10:12:58 -07:00
QMK Bot
b5725c05bd Merge remote-tracking branch 'origin/master' into develop 2022-05-20 17:10:54 +00:00
James Young
2a544710d7 Small Markdown Patch for docs/feature_rgb_matrix.md (#17171) 2022-05-20 10:10:17 -07:00
QMK Bot
9fa106f76e Merge remote-tracking branch 'origin/master' into develop 2022-05-20 16:15:13 +00:00
jpe230
f296e1d1e2 [Docs] Align LED Matrix docs with RGB matrix docs (#17140) 2022-05-20 09:13:40 -07:00
QMK Bot
5ac861efa5 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 16:12:15 +00:00
Albert Y
799a7f98ce [Keyboard] yeti LED index correction (#17138) 2022-05-20 09:10:31 -07:00
Kyle McCreery
c60c19e8d5 [Keyboard] Add eeprom IC-less rev for MechWild OBE and Waka60 (#17126) 2022-05-20 09:10:05 -07:00
QMK Bot
90f3e139e6 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 16:09:40 +00:00
Albert Y
713ce7b276 [Keyboard] rskeys100 LED index correction (#17139) 2022-05-20 09:09:19 -07:00
QMK Bot
f155db37d4 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 16:09:04 +00:00
Kyle McCreery
d5aab127d2 [Docs] Update Steno Keycode Table (#17155) 2022-05-20 09:09:00 -07:00
AnthonyNguyen168
e1759cd638 [Keyboard] Update Layouts for MB-65S and MB-65H (#17160) 2022-05-20 09:08:33 -07:00
QMK Bot
c421ecdc37 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 05:51:48 +00:00
QMK Bot
92548bb3e7 [CI] Format code according to conventions (#17164) 2022-05-20 15:51:11 +10:00
QMK Bot
becf0307d7 [CI] Format code according to conventions (#17165) 2022-05-20 15:50:48 +10:00
QMK Bot
1557455f7f Merge remote-tracking branch 'origin/master' into develop 2022-05-20 05:44:45 +00:00
Albert Y
90612fce92 [Keyboard] 0xc_pad LED index correction (#17120) 2022-05-19 22:44:28 -07:00
Albert Y
5591489747 [Keyboard] launch_1 LED index correction (#17118) 2022-05-19 22:44:08 -07:00
QMK Bot
0dbaa7e057 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 05:38:49 +00:00
aadriance
94d89dfe82 [Keyboard] Add Eu isolation Keyboard (#17102)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: TuckTuckFloof <stnashmore@gmail.com>
2022-05-19 22:38:15 -07:00
QMK Bot
8b33ca9fe2 Merge remote-tracking branch 'origin/master' into develop 2022-05-20 05:29:11 +00:00
anubhav dhiman
c7e114e0bb [Keyboard] add rad keyboard (#17088)
Co-authored-by: zvecr <git@zvecr.com>
2022-05-19 22:28:41 -07:00
QMK Bot
a97ed8a1fd Merge remote-tracking branch 'origin/master' into develop 2022-05-20 04:38:48 +00:00
takashicompany
38073c3d44 [Keyboard] Add miniZone keyboard (#16644)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-19 21:38:00 -07:00
GloriousThrall
83fa6fe916 Move GMMK Pro to allow for multiple revisions (#16423)
* Added GMMK PRO Rev2 WBG7 MCU compatibility. Added GMMK 2 WBG7 MCU compatibility.

* GMMK PRO MCU Updates only (removed other kbs)

* fix problems

* Optimize the code.

* Update form develop branch

* Update

* Updater from qmk/develop

* Update

* Update config.h

* Update config.h

* Remove gmmk pro rev2

* move moults31/keymap.c

* Update

* tidy up

Co-authored-by: Joy <chang.li@westberrytech.com>
Co-authored-by: zvecr <git@zvecr.com>
2022-05-20 01:47:22 +01:00
Pascal Getreuer
b5608cbb6d Continue Caps Word when AltGr (right Alt) is held. (#17156)
This is a minor bug fix for Caps Word. Currently, Caps Word turns off
whenever a non-shift mod becomes active. This is done to avoid
interfering with hotkeys.

This commit makes an exception to continue Caps Word when AltGr (right
Alt) is held. Outside the US, the AltGr key is used to type additional
symbols (https://en.wikipedia.org/wiki/AltGr_key). Depending on the
language, these may include symbols used within words like accented
letters where it would be desirable to continue Caps Word.
2022-05-20 01:39:00 +01:00
QMK Bot
36c8462f0a Merge remote-tracking branch 'origin/master' into develop 2022-05-19 20:26:30 +00:00
James Young
c4c67f2eb2 KBDfans Tiger80 Community Layout Support and Keymap Touch-Up (#17149)
* info.json: apply friendly formatting

* rename LAYOUT_all to LAYOUT_tkl_f13_ansi_tsangan

* enable Community Layout support

* refactor keymaps to use grid alignment
2022-05-19 13:25:56 -07:00
QMK Bot
b4d65aac7f Merge remote-tracking branch 'origin/master' into develop 2022-05-19 17:55:45 +00:00
James Young
394f147897 KBDfans Phase One Layout Macro Additions and Configurator Data (#17148)
* phaseone.h: add matrix diagram

* add QMK Configurator data

* add LAYOUT_65_ansi_blocker_split_bs macro

* add LAYOUT_65_ansi_wkl_split_bs macro

* add LAYOUT_65_iso_blocker macro

* add LAYOUT_65_iso_blocker_split_bs macro

* add LAYOUT_65_iso_wkl macro

* add LAYOUT_65_iso_wkl_split_bs macro

* rename LAYOUT_65_ansi_wkl to LAYOUT_65_ansi_blocker_tsangan_wkl

Differentiates the layout supported here from QMK's `65_ansi_blocker_tsangan` Community Layout, which is equivalent to this but with a 1u GUI key between Left Ctrl and Left Alt.

* rename new layout macros for codebase consistency

- `LAYOUT_65_ansi_wkl_split_bs` -> `LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs`
- `LAYOUT_65_iso_wkl` -> `LAYOUT_65_iso_blocker_tsangan_wkl`
- `LAYOUT_65_iso_wkl_split_bs` -> `LAYOUT_65_iso_blocker_tsangan_wkl_split_bs`

* add reference keymaps

Add keymaps which demonstrate the layout macro implementations.
2022-05-19 10:54:57 -07:00
QMK Bot
19e6e6d1de Merge remote-tracking branch 'origin/master' into develop 2022-05-19 07:48:36 +00:00
James Young
89e0fba75d Hineybush Ibis Layout Additions and Configurator Rendering Update (#17132)
* info.json: apply friendly formatting

* info.json: remove dead space from rendering

* info.json: insert line breaks between physical rows in layout data

* info.json: fix overlap in key rendering

Fixes an issue where the ANSI Enter key renders on top of the ISO Hash/Tilde key, visually hiding the latter.

* add LAYOUT_ansi_all macro with associated keymap

Duplicates `LAYOUT_all`, but with the ISO Hash/Tilde and ISO Backslash keys removed.

    - ANSI Enter and 2.25u Left Shift
    - Backspace, Right Shift, Numpad Plus and Numpad Enter all split
    - 1.5 / 1 / 1.5 / 6.25 / 1.25 / 1.25 / 1.25 Bottom Row

* add LAYOUT_iso_all macro with associated keymap

Duplicates `LAYOUT_all`, but with the ANSI Backslash key removed.

    - ISO Enter and 1.25u Left Shift
    - Backspace, Right Shift, Numpad Plus and Numpad Enter all split
    - 1.5 / 1 / 1.5 / 6.25 / 1.25 / 1.25 / 1.25 Bottom Row
2022-05-19 00:48:01 -07:00
QMK Bot
ce9a5aaef3 Merge remote-tracking branch 'origin/master' into develop 2022-05-18 19:58:37 +00:00
Takeshi ISHII
80405c6d96 Fix platforms/avr/drivers/ws2812.c (#17043)
* Fix platforms/avr/drivers/ws2812.c

`platforms/avr/drivers/ws2812.c` has been changed to use `DDRx_ADDRESS()` and `PORTx_ADDRESS()` instead of `_SFR_IO8()` in #8646.  To use them, `#include <pin_defs.h>` is required.

 ## Error Log
* create new keyboard
```shell
bash-3.2$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory

Name Your Keyboard Project
For more infomation, see:
https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject

Keyboard Name? ws2812_test
..................................
     36. WB32F3G71
Please enter your choice:  [12]
Ψ Created a new keyboard called ws2812_test.
Ψ To start working on things, `cd` into keyboards/ws2812_test,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb ws2812_test -km default.
```
* Enable RGBLIGHT.
```shell
bash-3.2$ echo RGBLIGHT_ENABLE=yes >> ./keyboards/ws2812_test/rules.mk
bash-3.2$ echo '#define RGB_DI_PIN B1' >> ./keyboards/ws2812_test/config.h
bash-3.2$ echo '#define RGBLED_NUM 6' >> ./keyboards/ws2812_test/config.h
```
* Compile
```shell
bash-3.2$ make ws2812_test:default

QMK Firmware 0.16.9
Making ws2812_test with keymap default

avr-gcc (Homebrew AVR GCC 8.4.0_2) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

.....................
Compiling: quantum/process_keycode/process_rgb.c                                                    [OK]
Compiling: platforms/avr/drivers/ws2812.c                                                          platforms/avr/drivers/ws2812.c: In function 'ws2812_setleds':
platforms/avr/drivers/ws2812.c:40:5: error: implicit declaration of function 'DDRx_ADDRESS' [-Werror=implicit-function-declaration]
     DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
     ^~~~~~~~~~~~
In file included from <command-line>:
./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
 #define RGB_DI_PIN B1
                    ^~
platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
     DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
                  ^~~~~~~~~~
./keyboards/ws2812_test/config.h:21:20: note: each undeclared identifier is reported only once for each function it appears in
 #define RGB_DI_PIN B1
                    ^~
platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
     DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
                  ^~~~~~~~~~
platforms/avr/drivers/ws2812.c:42:47: error: implicit declaration of function 'PORTx_ADDRESS' [-Werror=implicit-function-declaration]
     uint8_t masklo = ~(pinmask(RGB_DI_PIN)) & PORTx_ADDRESS(RGB_DI_PIN);
                                               ^~~~~~~~~~~~~
In file included from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/io.h:99,
                 from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/interrupt.h:38,
                 from platforms/avr/drivers/ws2812.c:24:
platforms/avr/drivers/ws2812.c: In function 'ws2812_sendarray_mask':
./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
 #define RGB_DI_PIN B1
                    ^~
platforms/avr/drivers/ws2812.c:167:69: note: in expansion of macro 'RGB_DI_PIN'
                      : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGB_DI_PIN))), "r"(maskhi), "r"(masklo));
                                                                     ^~~~~~~~~~
cc1: all warnings being treated as errors
 [ERRORS]
 |
 |
 |
make[1]: *** [.build/obj_ws2812_test_default/ws2812.o] Error 1
make: *** [ws2812_test:default] Error 1
Make finished with errors
```

* change include order
2022-05-18 20:58:03 +01:00
QMK Bot
3904a6afbe Merge remote-tracking branch 'origin/master' into develop 2022-05-18 17:33:52 +00:00
Takeshi ISHII
33d568e29b Update mtei's keymap (helix/rev2:five_rows, helix/pico:mtei, helix/rev3_5rows:five_rows) (#16966)
* add users/mtei/key_blocks.h

This change does not alter the binary of the build result.

Moved common macro definitions in the following files to users/mtei/key_blocks.h.
 * keyboards/helix/rev2/keymaps/five_rows/keymap.c
 * keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c

* remove INIT_HELIX_OLED() in helix:five_rows

This change does not alter the binary of the build result.

* update helix/pico/keymaps/mtei/keymap.c

Changed helix/pico/keymaps/mtei/keymap.c to use users/mtei/key_blocks.h.

This change does not alter the binary of the build result.

* Remove old SSD1306OLED code from users/mtei/oled_display.c

This change does not alter the binary of the build result.

* add options ENABLE_COLEMAK, ENABLE_DVORAK and ENABLE_EUCALYN into five_rows/keymap.c

* add users/mtei/{config.h,rules.mk,user_featues.mk,user_options.mk}

* move layer_names[] from users/mtei/oled_display.c to keymaps/five_rows/keymap.c

* Update keyboards/helix/pico/keymaps/mtei/config.h

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

* Update keyboards/helix/pico/keymaps/mtei/config.h

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

* Update keyboards/helix/pico/keymaps/mtei/keymap.c

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

* Update keyboards/helix/rev2/keymaps/five_rows/config.h

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

* Update keyboards/helix/rev2/keymaps/five_rows/config.h

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

* Update keyboards/helix/rev2/keymaps/five_rows/keymap.c

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

* Update keyboards/helix/rev3_5rows/keymaps/five_rows/config.h

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

* Update keyboards/helix/rev3_5rows/keymaps/five_rows/config.h

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

* Update keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c

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

* Update users/mtei/config.h

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

* Update users/mtei/config.h

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

* Update users/mtei/cpp_map.h

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

* Update users/mtei/cpp_map.h

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

* Update users/mtei/debug_config.h

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

* Update users/mtei/debug_config.h

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

* Update users/mtei/layer_number_util.h

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-19 02:33:17 +09:00
Joel Challis
6503987c84 Workaround for recent -Werror=array-bounds AVR issues (#17136) 2022-05-18 11:06:55 +01:00
Joel Challis
40e33d03a8 Recommend pillow as part of manual MSYS install (#17133) 2022-05-17 21:50:48 +01:00
QMK Bot
37eee020ed Merge remote-tracking branch 'origin/master' into develop 2022-05-17 18:49:34 +00:00
Ryan
d241e80533 Keymap FAQ updates (#17130) 2022-05-18 04:48:59 +10:00
QMK Bot
6a11331a41 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 16:13:31 +00:00
James Young
f736828fa8 Frooastside Walnut Community Layout Support (#17112)
* LAYOUT_iso: move Enter to home row

This commit makes the layout macro compatible with QMK's `tkl_nofrow_iso` Community Layout.

* rename LAYOUT_ansi to LAYOUT_tkl_nofrow_ansi

* rename LAYOUT_iso to LAYOUT_tkl_nofrow_iso

* enable Community Layout support
2022-05-17 09:12:52 -07:00
QMK Bot
8b79f30cd5 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 13:20:51 +00:00
durken1
dba5b730a3 Update pr_checklist.md (#17122) 2022-05-17 14:20:13 +01:00
QMK Bot
cc8c539d00 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 12:01:31 +00:00
John-Schreiber
6560903350 Adding VIA support for bfo-9000 (#17116) 2022-05-17 13:01:26 +01:00
Xelus22
654baebb2c fix non-working builds (#17123) 2022-05-17 13:00:26 +01:00
QMK Bot
7541e75c3e Merge remote-tracking branch 'origin/master' into develop 2022-05-17 05:05:36 +00:00
HorrorTroll
e9e83b4da7 [Keyboard] Fixed Gas75 info.json and keymap for M64 RGB (#17081) 2022-05-16 22:05:05 -07:00
QMK Bot
978e2fcd14 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 05:03:38 +00:00
Albert Y
b6ee006060 [Keyboard] lulu LED index correction (#17108) 2022-05-16 22:03:08 -07:00
QMK Bot
1a61f1f578 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 05:02:48 +00:00
Albert Y
8b9cb030a7 [Keyboard] Latinpad LED index correction (#17109) 2022-05-16 22:02:35 -07:00
Albert Y
aa970e8560 [Keyboard] mach3 LED index correction (#17110) 2022-05-16 22:02:14 -07:00
QMK Bot
68f466db87 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 04:46:07 +00:00
Álvaro A. Volpato
467f3ae872 [Keyboard] Add Iron165R2 PCB support (#16948) 2022-05-16 21:45:56 -07:00
Drashna Jaelre
f22e8585a1 [Keyboard] Fix too many elements in g_led_config for quark_lp (#17117) 2022-05-16 21:45:11 -07:00
QMK Bot
ac1173c3d4 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 03:28:01 +00:00
Drashna Jaelre
4b7555117a [Keyboard] Fix compilation issues for Quark LP (#17009)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-16 20:27:22 -07:00
QMK Bot
6f499cfa12 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 01:45:33 +00:00
James Young
bc2a6cf6ae DigiCarpice Configurator Rendering Fix (#17113)
* info.json: apply friendly formatting

* info.json: rebuild layout data
2022-05-17 02:44:34 +01:00
QMK Bot
d47c4ed4d0 Merge remote-tracking branch 'origin/master' into develop 2022-05-16 11:47:33 +00:00
moyi4681
6a94a9547d fix tiger80 matrix error (#17107) 2022-05-16 12:46:37 +01:00
Nick Brassel
5816288926 Warn about LTO with arm_atsam, not ChibiOS. (#17106) 2022-05-16 15:29:55 +10:00
Joel Challis
85289e34ae Various fixes for g_led_config lint warnings (#17104) 2022-05-16 09:40:56 +10:00
Joel Challis
608fa5154c Data driven g_led_config (#16728) 2022-05-16 07:39:29 +10:00
Joel Challis
b7771ec25b RESET -> QK_BOOT default keymaps (#17037) 2022-05-15 20:26:27 +01:00
Ryan
4a8bd7b9a5 Rename keymap_extras headers for consistency (#16939) 2022-05-15 21:27:01 +10:00
Drashna Jaelre
f090881aeb [Feature] Add support for multiple switchs/solenoids to Haptic Feedback engine (#15657) 2022-05-15 21:24:35 +10:00
Stefan Kerkmann
4d107feca9 Check for ongoing transfers on the OUT endpoint (#16974)
...when attempting to start a receiving USB transfer. Previously, we would
check on the IN endpoint which is the transmitting part of the USB endpoint.
This is wrong and lead to two USB transfers being started immediately
after each other in case of e.g. RAW HID endpoints:

1. When finishing an OUT transfer the low level USB driver calls the out_cb
callback, which in turn initiates another OUT transfer by calling
qmkusbDataReceived.

2. When the raw hid receive channel runs empty inside the raw_hid task,
another OUT transfer is started to potentially fill the channel again. This
happens by calling ibnotify.

Both events occur directly after each other, thus triggering the bug.
2022-05-14 23:17:14 +01:00
QMK Bot
da63289505 Format code according to conventions (#17096) 2022-05-14 23:14:49 +01:00
QMK Bot
a899c097ce Merge remote-tracking branch 'origin/master' into develop 2022-05-14 22:09:12 +00:00
Mateusz Ż
94755308e0 Fix anchors with <code> in table of content (#15169) 2022-05-14 23:08:32 +01:00
Drashna Jaelre
db887e63d7 Enhancement and fixes of "Secure" feature (#16958) 2022-05-14 23:07:08 +01:00
QMK Bot
baa8d07fdb Merge remote-tracking branch 'origin/master' into develop 2022-05-14 21:29:01 +00:00
James Young
3a543d8990 Eason Capsule65 Community Layout Support (#17090)
* capsule65.h: modify matrix diagram

Taken from the VIA layout data.

* rename LAYOUT to LAYOUT_all

* add LAYOUT_65_ansi macro

* add LAYOUT_65_ansi_blocker macro

* add LAYOUT_65_ansi_blocker_tsangan macro

* add LAYOUT_65_ansi_split_bs macro

* add LAYOUT_65_ansi_blocker_split_bs macro

* add LAYOUT_65_ansi_blocker_tsangan_split_bs macro

* add LAYOUT_65_iso macro

* add LAYOUT_65_iso_split_bs macro

* add LAYOUT_65_iso_blocker macro

* add LAYOUT_65_iso_blocker_split_bs macro

* add LAYOUT_65_iso_blocker_tsangan macro

* add LAYOUT_65_iso_blocker_tsangan_split_bs macro

* enable Community Layout support

* info.json: update maintainer value

This field is meant to reference the maintainer's GitHub username.
2022-05-14 22:28:29 +01:00
QMK Bot
710e8c0ccc Merge remote-tracking branch 'origin/master' into develop 2022-05-14 21:25:09 +00:00
James Young
90a43f9884 Axolstudio Foundation Gamma: Community Layout Support (#17080)
* LAYOUT_tkl_f13_ansi_tsangan support

Renames `LAYOUT_ansi_tsangan` to `LAYOUT_tkl_f13_ansi_tsangan`. Also enables Community Layout support.

* LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift support
2022-05-14 22:23:58 +01:00
QMK Bot
c0f0f594d4 Merge remote-tracking branch 'origin/master' into develop 2022-05-14 21:23:13 +00:00
James Young
8c58af39af Avalanche: add QMK Configurator data (#17092)
* avalanche/v1: add info.json

* avalanche/v2: add info.json

* avalanche/v3: add info.json
2022-05-14 22:22:39 +01:00
QMK Bot
78a9e1708a Merge remote-tracking branch 'origin/master' into develop 2022-05-14 21:22:05 +00:00
James Young
24f378e6c3 Clickety Split Leeloo: QMK Configurator Fixes (#17093)
* info.json: fix key sequence error

* info.json: fix visual rendering

Clarify the physical locations of the keys.

* info.json: update maintainer field

This field is meant to reference the maintainer's GitHub username.
2022-05-14 22:21:31 +01:00
Drashna Jaelre
cd8d2b7f7f Revert "Fix kinetic mouse mode (#16951)" (#17095) 2022-05-14 13:03:07 -07:00
QMK Bot
3eb6558602 Merge remote-tracking branch 'origin/master' into develop 2022-05-14 16:15:06 +00:00
James Young
2f9197cfcd F13 TKL with Split Backspace and Split Right Shift Community Layouts (#17082)
* add tkl_f13_ansi_split_bs_rshift Community Layout

* add tkl_f13_ansi_tsangan_split_bs_rshift Community Layout

* add tkl_f13_iso_split_bs_rshift Community Layout

* add tkl_f13_iso_tsangan_split_bs_rshift Community Layout
2022-05-14 09:14:19 -07:00
Pascal Getreuer
68b16bba68 [Core] Add Caps Word feature to core (#16588)
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-14 16:00:32 +10:00
Yorick Peterse
90eef4cd15 Fix kinetic mouse mode (#16951)
Co-authored-by: Jan Christoph Ebersbach <jceb@e-jc.de>
2022-05-14 15:26:12 +10:00
Drashna Jaelre
787a68948f [Core] Add Reboot keycode to core (#15990) 2022-05-14 13:35:49 +10:00
QMK Bot
425c54cf8c Merge remote-tracking branch 'origin/master' into develop 2022-05-14 03:17:20 +00:00
HorrorTroll
8e2b8413b4 [Keyboard] Add M64 RGB (#17069) 2022-05-13 20:16:46 -07:00
QMK Bot
e0cdeab951 Merge remote-tracking branch 'origin/master' into develop 2022-05-13 16:54:39 +00:00
takashicompany
82828c3205 [Keyboard] Add keyboard "Spreadwriter" (#17031)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-13 09:53:43 -07:00
QMK Bot
158dc6829a Merge remote-tracking branch 'origin/master' into develop 2022-05-13 16:35:28 +00:00
HorrorTroll
3a80275fa1 [Keyboard] Fixed info.json issue, some key got wrong pos for Gas75 (#17070) 2022-05-13 09:34:47 -07:00
QMK Bot
75a32de441 Merge remote-tracking branch 'origin/master' into develop 2022-05-13 06:36:47 +00:00
Stephon Parker
e5e7039368 [Keymap] Contra - QWERTY US basic layout; MechWild Marcuio - EN update layout (#16787)
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: Stephon Parker <stephonparker@Stephons-MacBook-Pro.local>
2022-05-12 23:36:12 -07:00
QMK Bot
c4b2e9101d Merge remote-tracking branch 'origin/master' into develop 2022-05-13 06:34:42 +00:00
Josh Hinnebusch
ffe16386f0 [Keyboard] H60 updates (#16999)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-12 23:33:53 -07:00
QMK Bot
ff8c962d2e Merge remote-tracking branch 'origin/master' into develop 2022-05-13 06:22:36 +00:00
Andrew Kannan
fc3d3ef076 [Keyboard] Add caps and num indicators to Balance keyboard (#17075) 2022-05-12 23:22:03 -07:00
QMK Bot
478f83f711 Merge remote-tracking branch 'origin/master' into develop 2022-05-13 06:21:56 +00:00
Kyle McCreery
c199514372 [Bug] Updated Cirque Pinnacle SPI driver to read data correctly (#17074) 2022-05-12 23:21:25 -07:00
QMK Bot
e53e75f4ce Merge remote-tracking branch 'origin/master' into develop 2022-05-12 20:11:40 +00:00
James Young
58c37c0814 65_iso_split_bs Community Layout keymap bugfix (#17072)
Fix the layout macro reference in the `keymap.c` file, which caused this keymap to not be able to be compiled.
2022-05-12 21:11:02 +01:00
QMK Bot
6b39a38212 Merge remote-tracking branch 'origin/master' into develop 2022-05-12 18:24:53 +00:00
James Young
b26ba52bdd [Keyboard] KBIC65 Refactor (#17066) 2022-05-12 11:24:40 -07:00
jack
59fa34a6fa [Keyboard] Refactor mechwild/mokulua (#17068) 2022-05-12 11:24:03 -07:00
QMK Bot
a8183340d0 Merge remote-tracking branch 'origin/master' into develop 2022-05-12 06:49:59 +00:00
Astrid Yu
c0ab4ed539 Allow overriding Niv inputs in shell.nix (#16602) 2022-05-12 09:49:15 +03:00
QMK Bot
ec7801e2cb Merge remote-tracking branch 'origin/master' into develop 2022-05-12 05:52:09 +00:00
HorrorTroll
8a4ef2b3c4 [Keyboard] Move M63 RGB into maker folder (#17061) 2022-05-11 22:51:37 -07:00
QMK Bot
ff9aca781a Merge remote-tracking branch 'origin/master' into develop 2022-05-12 05:28:32 +00:00
jack
77aba32bc6 initial (#17067) 2022-05-12 06:27:58 +01:00
QMK Bot
56ca807f85 Merge remote-tracking branch 'origin/master' into develop 2022-05-12 04:49:18 +00:00
Kyle McCreery
d6e1de8c83 [Keyboard] Add Mokulua keyboard (#17055)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-11 21:49:11 -07:00
JX
4d1332b62c [Keyboard] Cleanup zhou65 and add nz64 keyboard (#17032)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-11 21:48:47 -07:00
QMK Bot
a284b99876 Merge remote-tracking branch 'origin/master' into develop 2022-05-12 04:48:35 +00:00
HorrorTroll
ffa1b37634 [Keyboard] Add Black E6.5 keyboard (#16807) 2022-05-11 21:47:41 -07:00
QMK Bot
b03daac76b Merge remote-tracking branch 'origin/master' into develop 2022-05-12 00:09:49 +00:00
Vino Rodrigues
7fd05afb10 [Keyboard] Revert "Fix id67 RGB Matrix (#16916)" - on IDOBAO ID67 kb (#16917)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-11 17:09:10 -07:00
QMK Bot
12fe4c49de Merge remote-tracking branch 'origin/master' into develop 2022-05-11 23:55:09 +00:00
Vino Rodrigues
37417d531d [Keyboard] remove handwired/reddot as per #14211 (#17033) 2022-05-11 16:54:27 -07:00
QMK Bot
d3443a4e8b Merge remote-tracking branch 'origin/master' into develop 2022-05-11 23:40:13 +00:00
sauvehoo
fa6fe11c33 [Keyboard] Add ano keyboard (#16885)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-11 16:39:59 -07:00
TJ
767e7db0ed [Keyboard] Littlefoot lx dev (#16771)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-11 16:39:35 -07:00
QMK Bot
da02de5413 Merge remote-tracking branch 'origin/master' into develop 2022-05-11 23:38:15 +00:00
4pplet
ddba52325c [Keyboard] Yakiimo PCB (#16984)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2022-05-11 16:37:43 -07:00
QMK Bot
bc6956909a Merge remote-tracking branch 'origin/master' into develop 2022-05-11 23:09:53 +00:00
Minke Zhang
df9c266f45 [Keyboard] Update YMDK Split 64 config (#16979)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-11 16:09:14 -07:00
QMK Bot
be08c86451 Merge remote-tracking branch 'origin/master' into develop 2022-05-11 22:39:48 +00:00
Daniel Osipishin
ba59927018 [Keyboard] Add subrezon/la_nc keyboard (#16833)
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: Daniel Osipishin <daniel.osipishin@retarus.de>
2022-05-11 15:39:08 -07:00
QMK Bot
6024ade4fa Merge remote-tracking branch 'origin/master' into develop 2022-05-11 19:52:13 +00:00
James Young
8e9a81a860 KBDfans KBD75 Refactor - 2022 Edition (#17052)
* add license headers

* tidy-up revision rules.mk files

- convert tabs to spaces
- align inline comments
- update rule ordering

* touch-up readme.md

* touch-up rev1/rev1.h

- convert tabs to spaces
- convert to QMK 3-character notation for matrix positions

* rev1/rev1.h: add matrix diagram

* touch-up rev2/rev2.h

- convert tabs to spaces
- convert to QMK 3-character notation for matrix positions

* rev2/rev2.h: add matrix diagrams

* rev1/info.json: apply friendly formatting

* rev2/info.json: apply friendly formatting

* refactor layout macros

- switch `LAYOUT_ansi_1u` with `LAYOUT_75_ansi`
  - makes `LAYOUT_75_ansi` the canonical macro name, with `LAYOUT_ansi_1u` as an alias for backwards compatibility
  - move `LAYOUT_ansi_1u` alias to `info.json` files from revision headers
- remove `LAYOUT_iso_1u` (was unused)
- rename `LAYOUT_ansi` to `LAYOUT_75_ansi_rwkl`
- rename `LAYOUT_iso` to `LAYOUT_75_iso_rwkl`

* refactor default keymap

- use four-space indent
- update grid alignment

* refactor iso keymap

- refactor to use `LAYOUT_75_iso` macro
  - change from Split to 2u Backspace
  - change from Split to Standard Spacebar
  - change `KC_BSLS` keycode to `KC_NUHS`, and place on home row
- use four-space indent
- update grid alignment

* refactor via keymap

- use four-space indent
- update grid alignment

* touch-up readme.md again

Fix a broken link.

* update section comments in revision header files

* add Full Winkeyless layouts

- add `LAYOUT_75_ansi_wkl` and `LAYOUT_75_iso_wkl` layout macros
2022-05-11 12:51:39 -07:00
QMK Bot
48eafd98ef Merge remote-tracking branch 'origin/master' into develop 2022-05-11 11:30:44 +00:00
Willy Breitenbach
c9e336fde6 [Keyboard] fix tf65rgbv2 keyboard layout (#17029) 2022-05-11 04:30:05 -07:00
QMK Bot
8c16efabaf Merge remote-tracking branch 'origin/master' into develop 2022-05-11 11:13:23 +00:00
Albert Y
214d2a31ed [Keyboard] Add usable tap-hold defaults for ferris via (#16696) 2022-05-11 04:12:47 -07:00
QMK Bot
7a7a413730 Merge remote-tracking branch 'origin/master' into develop 2022-05-11 10:58:18 +00:00
peepeetee
371499c3a7 [Keyboard] Momokai Tap Trio (#16463)
* add winry3m3w

* change name to Momokai Tap Trio

* Delete settings.json

* add rgb effects

* amend default keymap

* add limited RGB controls to default keymap

* fix VAD

* Update keyboards/momokai/tap_trio/tap_trio.h

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

* Update keyboards/momokai/tap_trio/tap_trio.h

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

* Update keyboards/momokai/tap_trio/config.h

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

* Update keyboards/momokai/tap_trio/rules.mk

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

* implement RGB matrix, change default keymap

* change keymaps

* change rgb effects

* comment out the RGB matrix and switch back to RGB light due to VIA not playing ball

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-11 03:57:46 -07:00
QMK Bot
869b3a030e Merge remote-tracking branch 'origin/master' into develop 2022-05-11 10:15:08 +00:00
kb-elmo
f3fdd6ae5d [Keyboard] Add Axostudio Yeti hotswap version (#16820)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-11 03:13:50 -07:00
QMK Bot
6641c4cecb Merge remote-tracking branch 'origin/master' into develop 2022-05-10 18:07:59 +00:00
takashicompany
615dbd62e9 [Keyboard] Fix led num for center_enter/qoolee (#17050) 2022-05-10 11:07:01 -07:00
QMK Bot
bda47ad467 Merge remote-tracking branch 'origin/master' into develop 2022-05-10 16:01:25 +00:00
Eugene-Yuan Kou
a3e057e779 Adding akira (#16982)
* keyboard:akira initial commit

* Update keyboards/ekow/akira/akira.h

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

* Update keyboards/ekow/akira/keymaps/via/rules.mk

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

* Update keyboards/ekow/akira/readme.md

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

* Update .gitignore

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

* Update readme.md

* Update keyboards/ekow/akira/rules.mk

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

* Update rules.mk

remove redundant content.

* added keyboard/ekow/keymaps/via/keymap.c

* remove .ccls-cache

* add instructions of enter the bootloader

* add instructions of enter the bootloader

* modify ekow/akira:via

* Update keyboards/ekow/akira/readme.md

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

* Update keyboards/ekow/akira/keymaps/via/rules.mk

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-10 17:00:30 +01:00
QMK Bot
4957a633e9 Merge remote-tracking branch 'origin/master' into develop 2022-05-10 12:26:23 +00:00
8bits4ever
796ededd59 converter/a1200/mistress1200: further firmware shrinking to fit on Atmega16U4 (16kb) (#17040)
* Create dummy.txt

* Add files via upload

* Add files via upload

* Delete dummy.txt

* Update config.h

* Update rules.mk

* Update keymap.c

* Update keyboards/converter/a1200/mistress1200/rules.mk

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

* Update keyboards/converter/a1200/mistress1200/rules.mk

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

* Update keyboards/converter/a1200/mistress1200/rules.mk

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

* Update keyboards/converter/a1200/mistress1200/config.h

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

* Update keyboards/converter/a1200/mistress1200/config.h

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

* Update keyboards/converter/a1200/mistress1200/config.h

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

* Update keyboards/converter/a1200/mistress1200/rules.mk

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

* Update config.h

* Update rules.mk

* Update readme.md

* Update config.h

* Update rules.mk

* Update config.h

* Update keyboards/converter/a1200/mistress1200/config.h

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-10 13:25:42 +01:00
QMK Bot
bfa04efada Merge remote-tracking branch 'origin/master' into develop 2022-05-10 01:29:03 +00:00
Jay Greco
120d5d5520 Update RMKB to support SNAP (#17042) 2022-05-10 02:28:16 +01:00
QMK Bot
f1c69e5d2c Merge remote-tracking branch 'origin/master' into develop 2022-05-09 01:05:49 +00:00
Guillaume Gérard
76eff706f6 feat: add support for JJ50 VIA (#16420) 2022-05-09 02:05:05 +01:00
Ryan
7177434a02 MSYS2 install: add some Python dependencies through Pacman (#17025) 2022-05-07 13:01:46 +01:00
QMK Bot
785444199e Merge remote-tracking branch 'origin/master' into develop 2022-05-07 00:01:50 +00:00
Doomsdayrs
5acdb4c921 Sol3 fix rgb map (#17019)
* Fix for key -> LED mapping

* Revert whitespace changes

* Revert whitespace changes 2

Co-authored-by: theVDude <rb.cubed@gmail.com>
2022-05-07 01:01:16 +01:00
Ryan
4e9a811e58 converter/usb_usb: remove surplus commas (#17024) 2022-05-07 01:00:55 +01:00
Ryan
ceb9b0f7b8 gboards/gergoplex: move COMBO_ENABLE to keymap level (#16667) 2022-05-07 09:58:38 +10:00
Ryan
a8a03b108c usb-usb converter: community layout support (#16773) 2022-05-07 09:48:26 +10:00
QMK Bot
84ffd4f72d Merge remote-tracking branch 'origin/master' into develop 2022-05-06 12:18:51 +00:00
Ryan
8c23f87c51 Ensure .hex file output for ARM Teensys (#17014) 2022-05-06 13:18:03 +01:00
QMK Bot
7598f1f3af Merge remote-tracking branch 'origin/master' into develop 2022-05-06 06:16:19 +00:00
Xelus22
49267b135b [Bug] Fix RS60 Rev2 I2C (#17015) 2022-05-06 16:15:49 +10:00
QMK Bot
5de74ce494 Merge remote-tracking branch 'origin/master' into develop 2022-05-05 10:32:25 +00:00
Josh Hinnebusch
890dfebe8d Add ibis PCB (#17001)
* initial ibis commit

* updates etc

* layout updates to fix mismatched keys

* Apply suggestions from code review

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

* Update keyboards/hineybush/ibis/info.json

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

* Update keyboards/hineybush/ibis/readme.md

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-05 11:31:52 +01:00
QMK Bot
034854ae39 Merge remote-tracking branch 'origin/master' into develop 2022-05-05 08:09:13 +00:00
Xelus22
3fbf9dc290 [Keyboard] RS60 Rev2 Addition (#16988) 2022-05-05 01:08:35 -07:00
QMK Bot
5a6c2711fa Merge remote-tracking branch 'origin/master' into develop 2022-05-05 02:56:19 +00:00
Mateusz Mojsiejuk
11e20fa0c9 Add missing dependency for qmk setup on Fedora (#17003) 2022-05-04 19:55:47 -07:00
QMK Bot
4b337b228a Merge remote-tracking branch 'origin/master' into develop 2022-05-04 15:11:15 +00:00
npspears
7608902794 [Keyboard] Add per-key RGB for Quark LP RGB variants (#16671)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-04 08:10:35 -07:00
QMK Bot
f64d30f38e Merge remote-tracking branch 'origin/master' into develop 2022-05-04 15:09:27 +00:00
E.Iosifidis
5e6f9dfc4d [Keymap] Introduced New layer & Improvements (#16921)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-04 08:08:47 -07:00
Nick Brassel
be9fa68785 Also format *.hpp files. (#16997) 2022-05-04 05:48:41 +10:00
QMK Bot
34e6be748a Merge remote-tracking branch 'origin/master' into develop 2022-05-03 10:22:46 +00:00
jonavin
c03e18f728 Jonavin-kb67-Reduce mem usage (#16991)
Co-authored-by: Jonavin <=>
2022-05-03 11:22:10 +01:00
QMK Bot
766c2eeb16 Merge remote-tracking branch 'origin/master' into develop 2022-05-02 19:35:44 +00:00
Ryan Skidmore
66fc18c756 keyboards/ryanskidmore: add rskeys100 keyboard (#15506)
* keyboards/ryanskidmore/rskeys100: add rskeys100 draft firmware

* keyboards/ryanskidmore/rskeys100: fix firmware

* ryanskidmore/rskeys100: fix remaining bugs

* keyboards/ryanskidmore/rskeys100: finishing touches on firmware

* keyboards/ryanskidmore/rskeys100: migrate from full replacement matrix scanning to lite, move rgb matrix enable call to keymap

* keyboards/ryanskidmore/rskeys100: remove undefines, clarify comments

* ryanskidmore/rskeys100: remove unused imports

* keyboards/ryanskidmore/rskeys100: pr feedback
2022-05-02 12:34:44 -07:00
QMK Bot
bca6367ba9 Merge remote-tracking branch 'origin/master' into develop 2022-05-01 18:00:33 +00:00
ROYMEETSWORLD
8b668a24d6 [Keyboard] Add gameroyadvance (#16882)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-05-01 10:59:51 -07:00
QMK Bot
2b6df95894 Merge remote-tracking branch 'origin/master' into develop 2022-04-29 22:56:43 +00:00
Hunter Haugen
b2d0dd2f32 [Keymap] Improve Pain27 default keymap readability (#16956) 2022-04-30 08:56:04 +10:00
QMK Bot
48580cd08a Merge remote-tracking branch 'origin/master' into develop 2022-04-29 10:46:32 +00:00
jack
28e1cfc278 Fix fjlabs/solanis (#16965) 2022-04-29 20:45:56 +10:00
QMK Bot
a99494c400 Merge remote-tracking branch 'origin/master' into develop 2022-04-29 08:14:35 +00:00
Rucker Machine
d84a1fb9a4 [Keyboard] RM_Numpad: Fix layout bug (#16857)
Co-authored-by: jason <jrucker2004@gmail.com>
2022-04-29 01:13:26 -07:00
QMK Bot
e6ea4ce3af Merge remote-tracking branch 'origin/master' into develop 2022-04-29 07:07:34 +00:00
Felix Jen
3e9fec5dcc [Keyboard] Solanis H87C/H88C Compatible Replacement PCBs (#16942)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-29 00:06:49 -07:00
QMK Bot
676bbc6f63 Merge remote-tracking branch 'origin/master' into develop 2022-04-29 06:59:07 +00:00
Joel Challis
ef8db9f104 Remove ARM pgm_read_word workaround in rgblight (#16961) 2022-04-28 23:58:55 -07:00
Nicholas Granado
ff4a6a2fd7 [Keymap] Add keymap for kinesis advantage (#16862)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-28 23:58:22 -07:00
Joel Challis
6e819945ed Remove some layout exceptions (#16957)
* LAYOUT_JP -> LAYOUT_jp

* LAYOUT_ANSI_DEFAULT -> LAYOUT

* LAYOUT_reviung34_2uL -> LAYOUT_reviung34_2u
2022-04-29 01:31:55 +01:00
Joel Challis
d458d4a596 Move disable_jtag to platforms (#16960) 2022-04-29 01:23:50 +01:00
Ryan
0de08b09e7 Sendstring keycode overhaul (#16941) 2022-04-29 09:36:48 +10:00
QMK Bot
e2802ca2cb Merge remote-tracking branch 'origin/master' into develop 2022-04-28 18:17:09 +00:00
skeletonkbd
2275b35e92 [Keyboard] Add SkeletonNumPad (#16753)
* add SkeletonNumPad keyboard

* fix

* fix

* fixed info.json

* Update keyboards/skeletonkbd/skeletonnumpad/rules.mk

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

* Change RGBLIGHT_LIMIT_VAL

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-28 11:16:21 -07:00
QMK Bot
35062b00d3 Merge remote-tracking branch 'origin/master' into develop 2022-04-28 17:38:44 +00:00
Felix Jen
a2a9611f18 [Keyboard] Add Maker Keyboards Alexa Solder PCB (#16943) 2022-04-28 10:37:57 -07:00
QMK Bot
c0af83cdde Merge remote-tracking branch 'origin/master' into develop 2022-04-28 17:36:09 +00:00
XScorpion2
0edc0c05e1 [Keyboard] Small fix for Sol3 with only a slave touch bar (#16952) 2022-04-28 10:35:27 -07:00
QMK Bot
fc52a30780 Merge remote-tracking branch 'origin/master' into develop 2022-04-27 23:12:15 +00:00
Ryan
e99d6d582c Add Ukrainian keymap header (#16947)
* Add Ukrainian keymap header

* Docs
2022-04-28 00:11:41 +01:00
QMK Bot
a8459aa242 Merge remote-tracking branch 'origin/master' into develop 2022-04-26 14:10:21 +00:00
Ryan
14d6c0b441 dactyl_manuform/3x5_3: fix layout (#16944) 2022-04-26 15:09:47 +01:00
Ryan
645359e5d0 Joystick: Simplify report descriptor and clean up error messages (#16926) 2022-04-26 08:54:34 +10:00
QMK Bot
178b70f355 Merge remote-tracking branch 'origin/master' into develop 2022-04-25 09:30:59 +00:00
Ryan
73688057f4 Add missing dead key LUTs for sendstring headers (#16929) 2022-04-25 19:30:20 +10:00
QMK Bot
f1804c18b4 Merge remote-tracking branch 'origin/master' into develop 2022-04-25 05:08:44 +00:00
tuvietnamm
0369fb0047 Fix backslash bug (#16935) 2022-04-25 15:08:11 +10:00
QMK Bot
0395840eb9 Merge remote-tracking branch 'origin/master' into develop 2022-04-24 13:01:58 +00:00
Ryan
e1f6fa579a gergoplex: small cleanup (#16928) 2022-04-24 14:01:29 +01:00
QMK Bot
056f7b3676 Merge remote-tracking branch 'origin/master' into develop 2022-04-24 02:01:33 +00:00
Albert Y
c2bf039893 [Keyboard] Add missing KC_QUOT (#16925) 2022-04-23 19:00:54 -07:00
QMK Bot
54427509d5 Merge remote-tracking branch 'origin/master' into develop 2022-04-23 20:57:30 +00:00
Felix Jen
857178e779 [Keyboard] Add Rooboard 65 (#15294)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-04-23 13:56:58 -07:00
QMK Bot
16c41c20cf Merge remote-tracking branch 'origin/master' into develop 2022-04-22 11:50:45 +00:00
jack
d973734976 Fix id67 RGB Matrix (#16916) 2022-04-22 21:50:11 +10:00
QMK Bot
62ff93f62a Merge remote-tracking branch 'origin/master' into develop 2022-04-22 08:19:39 +00:00
Daniel Weeks
8020950976 Added massdrop/ctrl:xanimos keymap (#16187)
Co-authored-by: xanimos <dan@xanimos.com>
2022-04-22 18:19:06 +10:00
QMK Bot
7808ddac0a Merge remote-tracking branch 'origin/master' into develop 2022-04-22 08:17:09 +00:00
DL Ford
56b125ad77 Add Dactyl_Manuform/3x5_3 (#16238) 2022-04-22 18:16:33 +10:00
Nick Brassel
a727bd6463 Update ChibiOS-Contrib (#16915) 2022-04-22 09:14:00 +01:00
Stefan Kerkmann
b1681fb6a1 [Core] Allow usage of AVRs minimal printf library (#16266)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2022-04-22 18:13:31 +10:00
QMK Bot
68a3fe8347 Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:56:03 +00:00
E.Iosifidis
d64ec7cb19 [Keymap] Addition of new keymap for the anavi macropad8 keyboard (#16910)
* Creation of Visual Studio Code keymap

* Add files via upload
2022-04-22 00:55:25 -07:00
QMK Bot
97f4a75fd7 [CI] Format code according to conventions (#16914) 2022-04-22 17:48:06 +10:00
QMK Bot
fdd31468ca Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:42:25 +00:00
toinux
d8b9796a32 [Keymap] Toinux's crkbd keymap and userspace (#16437) 2022-04-22 17:41:54 +10:00
QMK Bot
f1cf119c65 Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:39:47 +00:00
Víctor Pont
97b861d104 [Keyboard] Fix Pegasus Hoof (2013) layout, matrix and pin assignment (#16042) 2022-04-22 17:38:16 +10:00
QMK Bot
05ab7453ec Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:38:00 +00:00
IskandarMa
83ce70c821 [Docs] zh-cn document translate: git parts (#15576)
Co-authored-by: peepeetee <43021794+peepeetee@users.noreply.github.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-04-22 17:37:29 +10:00
QMK Bot
c797dbfb1b Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:36:44 +00:00
dexter93
e4942df397 Chibios USB protocol: allow overriding RAW Capacity (#16339) 2022-04-22 17:36:32 +10:00
peepeetee
ba8b236727 [Keyboard]Remove RGB light implementation of ID67, revert the file structure changes by #15558 (#15854) 2022-04-22 17:36:08 +10:00
customMK
0100629fa2 Fix AVR backlight breathing: low brightness limit & exceeding breathing table max index (#16770)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: David Hoelscher <infinityis@users.noreply.github.com>
2022-04-22 17:33:59 +10:00
QMK Bot
a372ddcfed Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:32:34 +00:00
yiancar
912e24ba9a Loki65 (#16844)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-04-22 17:32:01 +10:00
QMK Bot
76f3f0858d Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:21:51 +00:00
Ladduro
336791b915 Keychron Q2 add Caps Lock indicator and layer RGB (#16641) 2022-04-22 17:21:15 +10:00
QMK Bot
5024769b78 Merge remote-tracking branch 'origin/master' into develop 2022-04-22 07:17:59 +00:00
HorrorTroll
61b3f125bf Added new keyboard Gas75 (#16768) 2022-04-22 17:17:28 +10:00
QMK Bot
f44d569144 Merge remote-tracking branch 'origin/master' into develop 2022-04-21 21:49:28 +00:00
Takeshi ISHII
c2939bf038 [Keymap] Fix build error helix:five_rows (#16847) 2022-04-21 14:48:50 -07:00
Takeshi ISHII
8f692e22e3 Helix/rev2 move to split common (#16723) 2022-04-21 14:33:08 -07:00
Joel Challis
969c68a9ad Provide better config defaults for bluepill boards (#16909) 2022-04-22 07:03:28 +10:00
QMK Bot
bcb7e471d5 Merge remote-tracking branch 'origin/master' into develop 2022-04-21 16:34:10 +00:00
Simon Arlott
1e389c7904 rgblight: Fix rgblight_blink_layer when multiple layers are active (#16824) 2022-04-21 09:33:29 -07:00
QMK Bot
f3ce93fe00 Merge remote-tracking branch 'origin/master' into develop 2022-04-21 16:09:36 +00:00
Dasky
fb4f25c0b5 [Keyboard] Fix kin80 default keymap (#16893) 2022-04-21 09:08:47 -07:00
QMK Bot
12d1eb0415 Merge remote-tracking branch 'origin/master' into develop 2022-04-20 17:11:12 +00:00
jpe230
81be7bb7b5 Fix i2c driver doc: Incorrect name (#16898) 2022-04-20 18:10:20 +01:00
QMK Bot
332d7f00c5 Merge remote-tracking branch 'origin/master' into develop 2022-04-20 07:47:19 +00:00
jels
580a5d25cb Fixed error in config (#16895) 2022-04-20 08:46:30 +01:00
peepeetee
bd8220e9fc move amj keyboards into amjkeyboard vendor folder (#15733)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-20 05:19:34 +10:00
peepeetee
314865f833 move melody96 to ymdk vendor folder (#15680)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-20 05:19:16 +10:00
Dasky
40a7714ce5 rename define checks (#16892) 2022-04-19 20:15:34 +01:00
Nick Brassel
c76a23c37a Fix build. (#16891) 2022-04-19 20:00:37 +01:00
QMK Bot
7976779e6c Merge remote-tracking branch 'origin/master' into develop 2022-04-19 17:58:36 +00:00
Danny
b310bf6ca3 [Keyboard] Add notes on Iris rev6a firmware (#16878) 2022-04-19 10:57:58 -07:00
QMK Bot
682dbb21a7 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 11:30:46 +00:00
Dmitry Nosachev
83709e7dbe kin80 (#16754)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-19 21:30:15 +10:00
QMK Bot
c3a03b6423 [CI] Format code according to conventions (#16888) 2022-04-19 21:28:14 +10:00
Joy Lee
25f849b397 Update wb32-dfu (#16438) 2022-04-19 21:21:12 +10:00
QMK Bot
b88d04eb62 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 11:20:43 +00:00
LegoWolf
499060a9a5 Dactyl manuform 5x6 5 via (#16741) 2022-04-19 21:20:11 +10:00
Drashna Jaelre
9056775e20 Add hacky via support for RGB Matrix (#16086) 2022-04-19 21:18:28 +10:00
QMK Bot
d938ccb2fd Merge remote-tracking branch 'origin/master' into develop 2022-04-19 11:05:51 +00:00
gourdo1
be7198ca49 New custom keymap for Glorious GMMK Pro ANSI layout (#16199)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-19 21:05:13 +10:00
QMK Bot
2b23237da1 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 11:04:21 +00:00
jack
ad31ea3f51 boardsource/microdox V2 (#16569) 2022-04-19 21:03:51 +10:00
KoenGoe
671b62efab Fixes #16705 : digital rain follows val (#16716)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-19 21:02:21 +10:00
QMK Bot
2a4db15f62 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 11:00:36 +00:00
Allen Choi
9ead40db0c Fix broken build for users/curry (#16492) 2022-04-19 21:00:01 +10:00
Stefan Kerkmann
7712a286dc [Core] Use a mutex guard for split shared memory (#16647) 2022-04-19 20:56:16 +10:00
QMK Bot
176ab14649 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 10:53:44 +00:00
jpe230
1acb37db7f Add initial support for the Makey Makey Classic (#16658) 2022-04-19 20:53:09 +10:00
QMK Bot
eab3be1e75 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 10:40:23 +00:00
MakotoKurauchi
bdd1f318c3 [Keyboard] New kbd 1k (#15509)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-19 20:39:43 +10:00
QMK Bot
5719353240 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 10:34:10 +00:00
Abhinav
67329cffb5 Add my planck layout (#13143)
* Add my planck layout

* Add copyright

* Address requested changes

* Fix dipswitch return type
2022-04-19 20:33:18 +10:00
QMK Bot
1dee7bc7f3 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 10:32:51 +00:00
Álvaro Cortés
50ec365806 [Keymap] A Colemak keymap for the crkbd keyboard (#16550) 2022-04-19 20:32:11 +10:00
QMK Bot
2744c1b2cf Merge remote-tracking branch 'origin/master' into develop 2022-04-19 10:31:47 +00:00
Takeshi ISHII
bde724e124 Change helix:yshrsmz keymap to use split_common (#16537) 2022-04-19 20:31:10 +10:00
uqs
690dc4bdaf Add support for multiple sensors to pmw3360 (#15996) 2022-04-19 20:29:17 +10:00
peepeetee
9f63bce70b move keyhive exclusive boards into /keyhive (#16084)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-19 20:17:21 +10:00
peepeetee
cff489bfdb move 麦田 boards into /mt (#16095)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-19 20:06:35 +10:00
peepeetee
e13aefe41d move z150_bh at101_bh omnikey_bh to viktus/ (#16004) 2022-04-19 18:57:53 +10:00
QMK Bot
860f53dac4 Merge remote-tracking branch 'origin/master' into develop 2022-04-19 02:33:59 +00:00
Sắn
958600d518 [Keyboard] Add Amber80 Solder & VCL65 Solder (#15945)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 19:33:32 -07:00
Andrew Charnley
90dd16ccd2 [Keymap] Add andrewcharnley keymap for GMMK Pro (#15320) 2022-04-18 17:23:38 -07:00
QMK Bot
02104270ed Merge remote-tracking branch 'origin/master' into develop 2022-04-19 00:18:54 +00:00
8bits4ever
773124e9c0 [Keyboard] Add converter/a1200/mistress1200 variant (#16634)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-18 17:18:10 -07:00
QMK Bot
c397720c87 Merge remote-tracking branch 'origin/master' into develop 2022-04-18 17:02:06 +00:00
jack
1ab1ce1b46 [Keyboard] Fix resume1800 - Dynamic layer count undefined (#16877) 2022-04-18 10:01:33 -07:00
Nick Brassel
6819420b0e Preinstall python dependencies before executing qmk. (#16874) 2022-04-18 15:46:52 +01:00
Nick Brassel
f50a623909 Fixup AVR builds. (#16875)
* Fixup AVR builds.

* Update platforms/avr/hardware_id.c

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 15:39:45 +01:00
Joel Challis
b8245a5507 Expose API for hardware unique ID (#16869) 2022-04-18 20:51:40 +10:00
QMK Bot
7aa9a353ac Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:30:24 +00:00
DeeDesired
ad9a137942 [Keyboard] Add CrimsonKeyboards' Resume1800 (#16842) 2022-04-18 02:29:53 -07:00
QMK Bot
886b257c3f Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:29:04 +00:00
jack
8c91e90381 [Keyboard] sandbox - fix keymaps (#16873) 2022-04-18 02:28:28 -07:00
QMK Bot
dce3dc3fe5 Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:15:38 +00:00
Md. Mashur Shalehin Sakib
f52f3f1077 [Keyboard] Add deskpad (#15602)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 02:13:44 -07:00
Denis Savran
b1ceb4bb6a Fix one-shot locked modifiers (#16114)
* Fix state updates of one-shot locked modifiers

Activating additional one-shot locked modifiers removed previously enabled locked modifiers from the state.
`get_oneshot_locked_mods` returned zero when two or more one-shot locked modifiers were enabled and then one was disabled.

* Do not delete one-shot locked modifiers on a one-shot layer toggle

Non-locked one-shot modifiers are not removed so this behavior adds inconsistency.
Also the one-shot locked modifiers state was reset without unregistering any modifiers.
2022-04-18 02:12:25 -07:00
QMK Bot
5fc8f8488f Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:12:03 +00:00
alaviss
0d67eec5e2 Ploopy Trackball Mini: only define DPI options as needed (#16160) 2022-04-18 02:11:56 -07:00
QMK Bot
9bd8d08834 Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:11:43 +00:00
Ramon Imbao
8826a1dea5 [Keyboard] Add the Ciel (#16816)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 02:11:32 -07:00
Brandon Claveria
c6de26fc6f [Keyboard] Add digicarpice (#16791)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: swiftrax <swiftrax@github.com>
2022-04-18 02:11:11 -07:00
QMK Bot
f6fd6942ef Merge remote-tracking branch 'origin/master' into develop 2022-04-18 09:08:22 +00:00
Álvaro A. Volpato
5fe3b9ffa5 [Keyboard] SharkPCB release Beta compatibility (#16713)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 02:07:49 -07:00
Michał Szczepaniak
5b6faa173b Add customizable snake and knight animation increments (#16337) 2022-04-18 02:07:36 -07:00
QMK Bot
4d67fe66a3 Merge remote-tracking branch 'origin/master' into develop 2022-04-18 07:38:07 +00:00
yfuku
fdd4af9973 [Keyboard] Add sandbox keyboard (#16021)
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-18 00:37:25 -07:00
QMK Bot
58c2bb4d64 Merge remote-tracking branch 'origin/master' into develop 2022-04-17 19:54:33 +00:00
James Young
7d60a141a2 Anne Pro 2 Refactor (#16864)
* move RGB Matrix rules to keyboard level

* move PERMISSIVE_HOLD config to keyboard level

* annepro2.c: convert tabs to spaces

* refactor rules.mk files

Reformats each version's `rules.mk` file to be arranged more similarly to those of the rest of the keyboards in QMK.

No logic change.

* annepro2.c: allow compilation without RGB Matrix

Wraps the `led_enabled` definition and the `KC_AP_RGB_*` keycodes in `#ifdef RGB_MATRIX_ENABLE`, allowing successful compilation if the user sets `RGB_MATRIX_ENABLE = no`.

* rework readme files

Reworks the main `readme.md` file to be more friendly to GitHub viewing, and removes the single-line version-specific readme files (exposes the main readme to QMK Configurator users).

* info.json: update maintainer value

* info.json: apply friendly formatting
2022-04-17 12:53:59 -07:00
QMK Bot
d958329258 Merge remote-tracking branch 'origin/master' into develop 2022-04-17 00:37:07 +00:00
Albert Y
a5a4597311 Refine LED indicator documentation (#16304) 2022-04-16 17:36:07 -07:00
Nick Brassel
df95495d5b Fix #16859. (#16865) 2022-04-17 00:09:37 +01:00
Stefan Kerkmann
147e57fd59 [QP] Check BPP capabilities before loading the palette (#16863) 2022-04-17 08:30:51 +10:00
Simon Arlott
5841c755ae rgblight: Add functions to stop blinking one or all but one layer (#16859) 2022-04-17 00:02:32 +02:00
Albert Y
e5918cf968 Heatmap incorrect matrix effect workaround (#16315) 2022-04-16 11:34:07 -07:00
QMK Bot
030a96a3f5 Merge remote-tracking branch 'origin/master' into develop 2022-04-16 18:28:19 +00:00
moyi4681
3b6e48b012 [Keyboard] Add Phase One keyboard (#16430)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-16 11:28:16 -07:00
Amber Cronin
6d13199ed0 Fix Xorg segfault with KeebCats PCBs (#16434) 2022-04-16 11:27:51 -07:00
Jouke Witteveen
8f585153c4 Add GET_TAPPING_TERM macro to reduce duplicate code (#16681)
* Add GET_TAPPING_TERM macro to reduce duplicate code

The macro gives the right tapping term depending on whether per-key
tapping terms and/or dynamic tapping terms are enabled. Unnecessary
function calls and variable resolution are avoided.

Fixes #16472.

* Use GET_TAPPING_TERM for Cirque trackpads

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-04-16 11:24:09 -07:00
QMK Bot
cad0af09a8 Merge remote-tracking branch 'origin/master' into develop 2022-04-16 18:19:59 +00:00
X-Bows Tech
7d75f88ac9 [Keyboard] Update X-Bows Keyboard (#16765)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Shulin <mumu@x-bows.com>
2022-04-16 11:19:24 -07:00
Joel Challis
92a61aa0cd Implement XAP 'secure' core requirements (#16843)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-04-16 11:13:05 -07:00
QMK Bot
ae4d518352 Merge remote-tracking branch 'origin/master' into develop 2022-04-16 17:41:18 +00:00
Simon Arlott
1cfe49714f rgblight: Limit max repeat times in rgblight_blink_layer_repeat (#16860) 2022-04-16 10:40:48 -07:00
QMK Bot
14d084ae13 Merge remote-tracking branch 'origin/master' into develop 2022-04-16 01:23:46 +00:00
Joel Challis
b331c98ca4 Resolve layout macro inconsistencies for rmkeebs/rm_numpad (#16856) 2022-04-16 02:23:19 +01:00
QMK Bot
59885d07af Merge remote-tracking branch 'origin/master' into develop 2022-04-14 18:24:36 +00:00
Will Winder
8de4065b09 [Keyboard] Add avalanche (#16407)
* [Keyboard] Add avalanche

* PR feedback

* Update keyboards/avalanche/v1/config.h

* Update keyboards/avalanche/v1/v1.h

* Update keyboards/avalanche/v2/config.h

* Update keyboards/avalanche/v2/v2.h

* Update keyboards/avalanche/v3/config.h

* Update keyboards/avalanche/v3/v3.h

* Apply suggestions from code review

* Remove rules.mk comment and fix other comments.

* Shared encoder code, follow conventions in rules.mk files.

* Remove config files which do not change defaul behavior.
2022-04-14 11:23:32 -07:00
QMK Bot
399de0be12 Merge remote-tracking branch 'origin/master' into develop 2022-04-14 17:02:01 +00:00
Tim Liu
b9e11253c4 [Keyboard] Add via support for creatkeebs/glacier (#16747)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-04-14 10:01:26 -07:00
QMK Bot
cbc59e383f Merge remote-tracking branch 'origin/master' into develop 2022-04-14 16:27:09 +00:00
holtenc
812f97e241 [Keyboard] move/rename obro to Meridian RGB (#16828)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-04-14 09:26:24 -07:00
QMK Bot
a6884e6933 Merge remote-tracking branch 'origin/master' into develop 2022-04-14 05:43:00 +00:00
Drashna Jaelre
a4a67d515e Ignore VIA(L) json files (#16845) 2022-04-14 15:42:24 +10:00
QMK Bot
88028dd982 Merge remote-tracking branch 'origin/master' into develop 2022-04-14 03:28:03 +00:00
leah-splitkb
18e56902c9 Fix external flash on AVR (#16851) 2022-04-14 13:27:26 +10:00
QMK Bot
2858415789 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 16:45:55 +00:00
jack
46c0db458e [Keyboard] Fix kay65 - Missing keycode (#16849) 2022-04-13 09:45:16 -07:00
QMK Bot
4a8743cdb1 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 16:27:55 +00:00
jack
f3004d960f [Keyboard] Fix waffling80 - Missing comma (#16848) 2022-04-13 09:27:20 -07:00
QMK Bot
6814e32757 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:31:55 +00:00
ClicketySplit
8580380eec [Keyboard] The inaugural commit for Leeloo's firmware. (#16599)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-13 07:31:11 -07:00
QMK Bot
294ef95bc9 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:29:44 +00:00
N L
0272621133 [Keymap] bépo layout on Lily58L (#16243)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-13 07:29:06 -07:00
QMK Bot
1e6ef5d42e Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:29:05 +00:00
Rucker Machine
57466c47ba [Keyboard] Add RM_Numpad (#15983)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jason <jrucker2004@gmail.com>
2022-04-13 07:28:12 -07:00
QMK Bot
46292f5098 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:27:27 +00:00
Tyler Tolley
973bc88b0f [Keymap] Add thattolleyguy keymaps (#15351)
* Adding personal keymaps

* Update licenses

* Fix RGB settings

* Define used animations

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-13 07:27:07 -07:00
QMK Bot
c4a6636873 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:25:32 +00:00
Simon
937ffcecc8 [Keyboard] Add Frooastboard Walnut (69% Keyboard) (#16743)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-13 07:25:16 -07:00
moyi4681
8430774430 [Keyboard] add tiger80 keyboard (#16742)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-13 07:24:56 -07:00
bwisn
ad981dea72 [Keyboard] annepro2: match default keymap to stock keycaps (#16724) 2022-04-13 07:24:38 -07:00
QMK Bot
fff2606665 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:24:12 +00:00
Christian Lo
3f8343e552 [Keyboard] Add banime40 keyboard (#16694)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-13 07:23:01 -07:00
mechlovin
a8e01df50f [Keyboard] correct matrix for Kay65 (#16751) 2022-04-13 07:20:00 -07:00
Tyler Thrailkill
87777d1cdd [Keymap] Fix snowe keymap after updates to QMK (#16777) 2022-04-13 07:19:24 -07:00
mudhead
e9ad400b83 [Keyboard] KBD67 rev1 Caps Lock LED Fix (#16790) 2022-04-13 07:18:21 -07:00
IFo Hancroft
7216243a7a [Keyboard] Ported ErgoDox to VIA (#16804) 2022-04-13 07:17:11 -07:00
QMK Bot
930cf6457a Merge remote-tracking branch 'origin/master' into develop 2022-04-13 14:11:59 +00:00
4pplet
cf152dd16b [Keyboard] Waffling60 - minor tweak, improve default behavior of caps lock indicator. (#16836)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2022-04-13 07:11:19 -07:00
Nick Brassel
1f2b1dedcc Quantum Painter (#10174)
* Install dependencies before executing unit tests.

* Split out UTF-8 decoder.

* Fixup python formatting rules.

* Add documentation for QGF/QFF and the RLE format used.

* Add CLI commands for converting images and fonts.

* Add stub rules.mk for QP.

* Add stream type.

* Add base driver and comms interfaces.

* Add support for SPI, SPI+D/C comms drivers.

* Include <qp.h> when enabled.

* Add base support for SPI+D/C+RST panels, as well as concrete implementation of ST7789.

* Add support for GC9A01.

* Add support for ILI9341.

* Add support for ILI9163.

* Add support for SSD1351.

* Implement qp_setpixel, including pixdata buffer management.

* Implement qp_line.

* Implement qp_rect.

* Implement qp_circle.

* Implement qp_ellipse.

* Implement palette interpolation.

* Allow for streams to work with either flash or RAM.

* Image loading.

* Font loading.

* QGF palette loading.

* Progressive decoder of pixel data supporting Raw+RLE, 1-,2-,4-,8-bpp monochrome and palette-based images.

* Image drawing.

* Animations.

* Font rendering.

* Check against 256 colours, dump out the loaded palette if debugging enabled.

* Fix build.

* AVR is not the intended audience.

* `qmk format-c`

* Generation fix.

* First batch of docs.

* More docs and examples.

* Review comments.

* Public API documentation.
2022-04-13 18:00:18 +10:00
QMK Bot
1dbbd2b6b0 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 07:46:28 +00:00
Adam Lickel
b8cb147573 [Keymap] sinc/lickel: Use backlight keys in Fn Row (#16789) 2022-04-13 00:45:42 -07:00
QMK Bot
40b76faba8 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 07:04:52 +00:00
PJB Keyboard Design
dfe0515a4b [Keyboard] Add Eros by PJB (#16756)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-04-13 00:04:14 -07:00
QMK Bot
57d8bae083 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 07:03:46 +00:00
Allen Choi
935af9e999 [Keymap] fixed oled turn-off issue for crkbd:gotham (#16748) 2022-04-13 00:03:01 -07:00
QMK Bot
64aa180775 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:40:47 +00:00
4pplet
6d816d94f7 [Keyboard] Add ratio65 by rationalist (#16727)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-12 23:40:20 -07:00
4pplet
3c3662c20f [Keyboard] Adding waffling80, TKL PCB (#16726)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-12 23:39:44 -07:00
QMK Bot
ebf4380a83 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:37:41 +00:00
Takeshi ISHII
16c848ca00 [Keymap] Change helix:froggy_106 keymap to use split_common (#16704) 2022-04-12 23:37:05 -07:00
QMK Bot
06ff5fca42 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:37:02 +00:00
melonbred
f3a49876d5 [Keyboard] add pegasus (#16701)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-12 23:36:33 -07:00
QMK Bot
929f098269 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:20:42 +00:00
Moritz
9a38ebc656 [Keyboard] add E80-1800 PCB (#16645)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-12 23:20:07 -07:00
QMK Bot
baa566d809 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:05:08 +00:00
ziptyze
2d05c7fc25 [Keyboard] super16 update (#16494) 2022-04-12 23:04:38 -07:00
QMK Bot
c4ce95e55b Merge remote-tracking branch 'origin/master' into develop 2022-04-13 06:04:22 +00:00
Nabos
3f66e25b41 [Keyboard] add 10k (#16531)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nicolas Ballet <balletn@igbmc.fr>
2022-04-12 23:03:49 -07:00
QMK Bot
f1edbe5a89 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 05:51:08 +00:00
Nostril
e1c777a1c9 [Keyboard] Add Synth Labs Solo keyboard (#16103)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-04-12 22:50:38 -07:00
QMK Bot
bcc056774f Merge remote-tracking branch 'origin/master' into develop 2022-04-13 05:46:44 +00:00
sol
8cc86490aa [Keyboard] Add s-ol/0xC.pad (#16057)
* [Keyboard] Add s_ol/0xc_pad

* [Keyboard] add factory testing RGB_MATRIX pattern

Co-authored-by: s-ol <s-ol@users.noreply.github.com>
2022-04-12 22:46:12 -07:00
QMK Bot
781022e910 Merge remote-tracking branch 'origin/master' into develop 2022-04-13 05:25:52 +00:00
Daniel Perrett
a5e41615f7 [Keyboard] Add userspace pdl and a handwired board (#14199)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-04-12 22:25:19 -07:00
QMK Bot
6a22c2e665 Merge remote-tracking branch 'origin/master' into develop 2022-04-11 13:11:57 +00:00
Kamil Zielinski
0524a82a88 Fix numbering to match the correct columns (#16831) 2022-04-11 14:11:14 +01:00
QMK Bot
c5423400c3 Merge remote-tracking branch 'origin/master' into develop 2022-04-11 10:19:24 +00:00
Dasky
e13ad14cb7 GMMK Pro return false in encoder user. (#16830) 2022-04-11 20:18:44 +10:00
QMK Bot
d291ad90b4 Merge remote-tracking branch 'origin/master' into develop 2022-04-11 09:10:56 +00:00
Takeshi ISHII
3bde05c568 Change helix:froggy keymap to use split_common (#16703)
* create LAYOUT_half() macro into helix/rev2/keymaps/froggy/keymap.c

* Makes QMK standerd OLED driver used by the helix:froggy keymap switchable.

* Change helix:froggy keymap to use split_common
2022-04-11 18:09:37 +09:00
Sascha
bf67abb046 Fixed usb read loops not reading until timeout (#16827)
* the size variable was redeclared (hiding the variable of the outside scope) and therefore the while check was always false, so the compiler just removed the do while loop, but it would be better to read all data and only exit the task, after this is done
2022-04-10 00:27:02 +02:00
QMK Bot
4ce0203208 Merge remote-tracking branch 'origin/master' into develop 2022-04-09 18:49:52 +00:00
Simon Arlott
84c9d6ff39 [Bug] Fix matrix scan reporting interval (#16825) 2022-04-09 11:49:20 -07:00
QMK Bot
f4f2efd117 Merge remote-tracking branch 'origin/master' into develop 2022-04-09 18:06:48 +00:00
Takeshi ISHII
98d411232f Reduce the size of the keymap helix:fraanrosi (#16717) 2022-04-10 03:06:12 +09:00
Joel Challis
2cfbc1445c Allow new-keyboard to use development_board presets (#16785) 2022-04-08 20:12:32 +01:00
QMK Bot
675ce76972 Merge remote-tracking branch 'origin/master' into develop 2022-04-07 22:11:06 +00:00
joedinkle
e2ace195b0 Header file fixes for all keymaps (#16180) 2022-04-07 18:10:29 -04:00
QMK Bot
0738c9b7f3 Merge remote-tracking branch 'origin/master' into develop 2022-04-07 12:52:17 +00:00
James Young
f4c6e76cf6 io_mini1800 Configurator Fixes (#16813)
* info.json: apply friendly formatting

* info.json: fix key sequence errors

Fixes out-of-sequence issue for the Numpad Plus key on both layouts.
2022-04-07 13:51:17 +01:00
QMK Bot
e96d9abe3c Merge remote-tracking branch 'origin/master' into develop 2022-04-07 05:19:59 +00:00
Laneware
d198d7924d Update LW-67 info.json (#16788)
* Update info.json

Fixed:
-ISO Enter Position
-Up Arrow Position
-PgDn Position

Cause of Error:
-Keyboard Layout Editor Places Iso Enter on R1 Rather Than R2 like the ANSI Enter

* Update info.json

Fixed Compile Error to Previous Change

* Update keyboards/lw67/info.json
2022-04-06 22:19:24 -07:00
QMK Bot
14a867436c Merge remote-tracking branch 'origin/master' into develop 2022-04-06 21:01:35 +00:00
James Young
fa978542e9 Sandwich Keeb68 Layout Macro Rework and Configurator Data (#16803)
* keeb68.h: use QMK 3-character notation

* physically arrange layout macro

Moves the keycodes for Equals and Right Bracket to their proper places on the Number and Tab rows, respectively.

Also refactors the keymaps to use QMK-native keycode aliases, grid alignment, and four-space indent.

* move `keymaps/grv_esc/readme.md` to `keymaps/default/`

The file contents say "default keymap".

* enable Community Layouts support

* add QMK Configurator data

* touch-up `rules.mk`
2022-04-06 22:00:59 +01:00
Erovia
85de020573 CLI: Bump the 'jsonschema' version (#16635)
* CLI: Bump the 'jsonschema' version

Update the used meta-schema from Draft 7 from 2018 to the latest one,
Draft 2020-12.
Currently, the validator falls back to Draft 7 if the newer validator is
not available. Draft 2020-12 support was introduced to 'jsonschema' in
version 4.0.0.

* Fix formatting
2022-04-06 19:46:16 +01:00
Joel Challis
d870716457 Add bluepill/blackpill development board presets (#16806) 2022-04-06 15:46:13 +01:00
QMK Bot
0ef2246496 Merge remote-tracking branch 'origin/master' into develop 2022-04-06 10:13:39 +00:00
James Young
4a729a7be5 QK65 Solder Community Layout Support (#16796)
* refactor solder.h

- use QMK 3-character notation
- convert tabs to spaces

* solder.h: add matrix diagram

* rename LAYOUT_solder to LAYOUT_all

* rename LAYOUT_iso to LAYOUT_65_iso_blocker

Also adds Community Layouts rule to `rules.mk`.

* info.json: improve formatting

- convert tabs to spaces
- format file to four-space indent

* refactor keymaps

- convert tabs to spaces
- update grid alignment of keycodes
- remove trailing whitespace

* add LAYOUT_65_ansi_blocker

* add LAYOUT_65_ansi_blocker_split_bs

* add LAYOUT_65_iso_blocker_split_bs

* add LAYOUT_65_ansi_blocker_tsangan

* add LAYOUT_65_iso_blocker_tsangan

* add LAYOUT_65_ansi_blocker_tsangan_split_bs

* add LAYOUT_65_iso_blocker_tsangan_split_bs

* remove 65_ansi_blocker_tsangan_split_bs from `LAYOUTS` rule
2022-04-06 03:13:05 -07:00
QMK Bot
fc2c93e57a Merge remote-tracking branch 'origin/master' into develop 2022-04-06 10:07:15 +00:00
James Young
d508988916 QK65 Hotswap Community Layout Support (#16793)
* qk65 hotswap: Community Layout support

- renames `LAYOUT_hotswap` to `LAYOUT_65_ansi_blocker`
- adds Community Layouts rule to `rules.mk`

* refactor keymaps

Edits the keymaps to align the keycodes in a grid. Whitespace-only change.
2022-04-06 03:06:27 -07:00
Joel Challis
a5e810b86c Add non blackpill F4x1 config files (#16600)
* Add non blackpill F4x1 config files

* Move ld files

* Remove f401 i2c bodges

* more bodge?

* Update to recommended defaults
2022-04-06 01:23:04 +01:00
Joel Challis
45504bb094 Add mechanism to limit available converters (#16783) 2022-04-06 01:08:38 +01:00
QMK Bot
a2f155bbdd Merge remote-tracking branch 'origin/master' into develop 2022-04-05 21:15:00 +00:00
Danny
563c4dbb09 Add Iris Rev 6.1 (#16722) 2022-04-05 17:14:07 -04:00
QMK Bot
f64404cc73 Merge remote-tracking branch 'origin/master' into develop 2022-04-05 19:14:18 +00:00
James Young
67bb6e1945 RGBKB Sol 3 rev1: Configurator Data and Readme (#16798)
* add QMK Configurator data

* add readme file
2022-04-05 12:13:45 -07:00
QMK Bot
99f7a8fcd3 Merge remote-tracking branch 'origin/master' into develop 2022-04-05 18:46:13 +00:00
James Young
2f917dd768 Cutie Club Novus Layout Macro Updates (#16792)
* info.json: apply friendly formatting

* rename LAYOUT_all to LAYOUT_60_ansi_split_bs_rshift

Maintains `LAYOUT_all` as an alias to `LAYOUT_60_ansi_split_bs_rshift`.

* novus.h: use QMK 3-character notation

* novus.h: add matrix diagram

* add LAYOUT_60_ansi

* add LAYOUT_60_ansi_tsangan

* refactor keymaps

- update grid alignment
- use QMK-native keycode aliases

* add LAYOUT_60_ansi_tsangan_split_bs_rshift

* rules.mk: update Community Layouts list
2022-04-05 11:45:18 -07:00
zvecr
b7c9ff4ebe Merge remote-tracking branch 'origin/master' into develop 2022-04-05 19:29:21 +01:00
QMK Bot
c0216e92fa Format code according to conventions (#16802) 2022-04-05 19:21:05 +01:00
Erovia
69be0dc97c Fix lineendings for eason/capsule65 (#16801) 2022-04-05 20:13:00 +02:00
QMK Bot
3c1a3c1719 Merge remote-tracking branch 'origin/master' into develop 2022-04-05 18:06:57 +00:00
eason
aec9942f37 add folders and capsule65 (#16687) 2022-04-05 20:06:05 +02:00
QMK Bot
5407cf5256 Merge remote-tracking branch 'origin/master' into develop 2022-04-04 19:27:36 +00:00
James Young
8b438a9165 Wavtype Foundation Layout Macro Refactor and Configurator Update (#16781)
* info.json: apply friendly formatting

* info.json: update layout data

- update labels to make them QMK CLI friendly
- update key sizes and dimensions (removes key overlaps and mis-locations)

* foundation.h: edit white space

- convert tabs to spaces
- edit alignment of arrays

* foundation.h: add matrix diagram

* rename LAYOUT to LAYOUT_ansi_split_bs

* rename LAYOUT_tkl_ansi_7u to LAYOUT_ansi_tsangan_split_bs

* rename LAYOUT_tkl_iso to LAYOUT_iso_split_bs_rshift

* rename LAYOUT_tkl_iso_7u to LAYOUT_iso_tsangan_split_bs_rshift

* refactor keymaps

- use definitions from `layer_names` enum
- use grid alignment
- use QMK-native keycode aliases

* add reference keymaps

Add `default_ansi_tsangan_split_bs`, `default_iso_split_bs_rshift`, and `default_iso_tsangan_split_bs_rshift` keymaps.

* refactor ISO layouts

Edits the ISO layout macros so that the keycode for Enter is to the end of the home row.

* info.json: fix LAYOUT_iso_tsangan_split_bs_rshift reference

Thanks to zvecr.
2022-04-04 12:27:01 -07:00
QMK Bot
af3c7bae23 Merge remote-tracking branch 'origin/master' into develop 2022-04-04 19:20:40 +00:00
James Young
6a156cb5cc Hineybush H65 Hotswap Layout Additions and Configurator Update (#16780)
* info.json: apply friendly formatting

* h65_hotswap.h: use QMK 3-character notation

* h65_hotswap.h: add matrix diagram

* rename LAYOUT to LAYOUT_all

* add LAYOUT_65_ansi_blocker

* add LAYOUT_65_ansi_blocker_split_bs

* add LAYOUT_65_iso_blocker

* add LAYOUT_65_iso_blocker_split_bs

* grid align keycodes in keymaps

* rules.mk: align inline comments
2022-04-04 12:20:10 -07:00
QMK Bot
8e34665e6e Merge remote-tracking branch 'origin/master' into develop 2022-04-04 18:56:54 +00:00
James Young
d59d60ff69 Hineybush H65 Layout Additions and Configurator Update (#16779)
* info.json: apply friendly formatting

* h65.h: use QMK 3-character notation

* h65.h: add matrix diagram

* add LAYOUT_65_ansi_blocker

* add LAYOUT_65_ansi_blocker_split_bs

* add LAYOUT_65_ansi_blocker_tsangan

* add LAYOUT_65_ansi_blocker_tsangan_split_bs

* add LAYOUT_65_iso_blocker

* add LAYOUT_65_iso_blocker_split_bs

* add LAYOUT_65_iso_blocker_tsangan

* add LAYOUT_65_iso_blocker_tsangan_split_bs

* grid align keycodes in keymaps

* rules.mk: align inline comments
2022-04-04 11:56:20 -07:00
QMK Bot
168449f86b Merge remote-tracking branch 'origin/master' into develop 2022-04-03 21:01:50 +00:00
Joel Challis
6822101f9c Run auto approve only on qmk/qmk_firmware (#16786) 2022-04-04 07:01:16 +10:00
Nick Brassel
ec4f655333 Add warning for CTCP/CONVERT_TO_PROTON_C. (#16782) 2022-04-03 19:17:38 +01:00
QMK Bot
ca161fbbd9 Merge remote-tracking branch 'origin/master' into develop 2022-04-03 18:02:55 +00:00
Gompa
0c8109a1ac fix typo in ps2 set_defaults (#16767) 2022-04-04 04:02:28 +10:00
Joel Challis
c0ac3f7372 Add frameworking for development board presets (#16637)
* Add frameworking for development board presets

* Update lib/python/qmk/info.py

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

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-04-03 18:45:10 +01:00
Joel Challis
1660b2d2e2 Refactor CTPC logic to allow future converters (#16621)
* Refactor CTPC logic to allow future converters

* Update builddefs/converters.mk

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

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-04-03 18:22:52 +01:00
QMK Bot
e6a7e7ac8e Merge remote-tracking branch 'origin/master' into develop 2022-04-03 12:18:57 +00:00
Joel Challis
27ae37d626 Align action workflow filenames (#16776) 2022-04-03 13:18:28 +01:00
QMK Bot
cffe7f9cae Merge remote-tracking branch 'origin/master' into develop 2022-04-02 21:28:49 +00:00
Joel Challis
61bd61347a Automatically approve workflow runs from first time contributors (#16775)
* Automatically approve workflow runs from first time contributors

* Automatically approve workflow runs from first time contributors
2022-04-02 22:28:10 +01:00
QMK Bot
3c57143bae Merge remote-tracking branch 'origin/master' into develop 2022-04-02 21:09:49 +00:00
Joel Challis
4f30b7a2c9 Automatically approve workflow runs from first time contributors (#16774) 2022-04-02 22:09:16 +01:00
QMK Bot
df9ddf8b61 Merge remote-tracking branch 'origin/master' into develop 2022-04-02 14:54:22 +00:00
Ryan
1caccca1f6 usb-usb converter: fix layout macros (#16769) 2022-04-03 01:53:21 +11:00
QMK Bot
d0b33593b2 Merge remote-tracking branch 'origin/master' into develop 2022-04-01 09:26:34 +00:00
Joel Challis
11db29bedb Lint keyboard/project name (#16766) 2022-04-01 10:25:43 +01:00
QMK Bot
d75ae52fe6 Merge remote-tracking branch 'origin/master' into develop 2022-03-30 20:55:16 +00:00
Ryan
64974a7f8f yapf: disable arithmetic predecence indication (#16749) 2022-03-30 21:54:13 +01:00
dn9uyen
38209c5c86 Add emulated eeprom support for STM32F303xE (#16737)
Added FEE_PAGE_SIZE and FEE_MCU_FLASH_SIZE defines for the STM32F303xE
2022-03-30 20:00:17 +01:00
QMK Bot
d76a68fb0f Merge remote-tracking branch 'origin/master' into develop 2022-03-29 19:19:19 +00:00
m40-dev
6cdf230a20 [Keyboard] handwired/m40/5x5_macropad (#16288)
* Adding the custom handwired 5x5 macropad.

* Update keyboards/handwired/m40/5x5_macropad/readme.md

* Update keyboards/handwired/m40/5x5_macropad/rules.mk

* Update keyboards/handwired/m40/5x5_macropad/readme.md

* Update readme.md

fixed the github link to my profile

* Update keyboards/handwired/m40/5x5_macropad/5x5_macropad.c

* Update keyboards/handwired/m40/5x5_macropad/5x5_macropad.h

* Update keyboards/handwired/m40/5x5_macropad/5x5_macropad.h

* Update keyboards/handwired/m40/5x5_macropad/config.h

* Update keyboards/handwired/m40/5x5_macropad/readme.md

* Update keyboards/handwired/m40/5x5_macropad/config.h

* Update keyboards/handwired/m40/5x5_macropad/readme.md

* Update keyboards/handwired/m40/5x5_macropad/keymaps/default/keymap.c

* Apply suggestions from code review

* added discord Id for maintainer contact

* Update keyboards/handwired/m40/5x5_macropad/readme.md

* Update keyboards/handwired/m40/5x5_macropad/info.json
2022-03-29 12:18:39 -07:00
QMK Bot
aadf0a1038 Merge remote-tracking branch 'origin/master' into develop 2022-03-28 16:47:16 +00:00
Moritz
9b24abf251 [Keyboard] Change linworks Dolice product ID to non-duplicate value (#16745) 2022-03-28 09:46:38 -07:00
Stefan Kerkmann
119abc4375 Refactor writePin to work with statements (#16738) 2022-03-27 15:07:25 -07:00
QMK Bot
03f9b8db15 Merge remote-tracking branch 'origin/master' into develop 2022-03-27 20:29:09 +00:00
Erovia
8c0198334c CLI: Lint non-data driven macros in info.json (#16739)
* CLI: Lint non-data driven macros in info.json

Macros in info.json should either have the "matrix" key with the matrix
data or should should be also present in <keyboard>.h

* Add verification of matrix data

* Use generic '<keyboard>.h' in output

* Add keyboard name to output

* Make C layout macro finding more robust

The old code missed C macros if they had whitespace between '#' and
'define' or had whitespace before '#'.
2022-03-27 21:28:36 +01:00
QMK Bot
5f6c5cb54b Merge remote-tracking branch 'origin/master' into develop 2022-03-27 02:03:30 +00:00
Shandon Anderson
5fae1ec9c3 [Keyboard] Add Mino Hotswap PCB (#16664)
Co-authored-by: Shandon Anderson <shandon@shandon.codes>
2022-03-26 19:02:59 -07:00
QMK Bot
50c1b9afdb Merge remote-tracking branch 'origin/master' into develop 2022-03-26 19:35:51 +00:00
Lê Nguyễn Hoàng Nhân
f874984b96 Fix typos in matrix/noah readme (#16735)
Change "keybaord" to keyboard
2022-03-26 19:35:19 +00:00
QMK Bot
05ac5727f2 Merge remote-tracking branch 'origin/master' into develop 2022-03-26 19:15:58 +00:00
Erovia
55e5daa868 Fix bug when 'info.json' lookup escapes keyboard dir (#16734) 2022-03-26 19:15:25 +00:00
Ryan
c05e8afe45 Joystick feature updates (#16732)
* Joystick feature updates

* Move new functions to joystick.h

* Docs
2022-03-26 18:38:09 +00:00
QMK Bot
71ffb41c9b Merge remote-tracking branch 'origin/master' into develop 2022-03-26 01:06:29 +00:00
Evelien Dekkers
084df6a288 [Keyboard] Add nt210 (#16461)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-25 18:06:03 -07:00
QMK Bot
1fabad1cec Merge remote-tracking branch 'origin/master' into develop 2022-03-26 00:46:16 +00:00
somepin
7e0dde1f00 [Keyboard] Add YDKB Grape PCB (#16661)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-25 17:45:35 -07:00
QMK Bot
7cec7b6780 Merge remote-tracking branch 'origin/master' into develop 2022-03-26 00:37:32 +00:00
Anton
53a88af036 [Keymap] corne and planck keyboards keymaps (#15570)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-25 17:37:05 -07:00
QMK Bot
2957f60dc1 Merge remote-tracking branch 'origin/master' into develop 2022-03-24 20:14:36 +00:00
Erovia
efc9c525b1 CLI: Add 'via2json' subcommand (#16468) 2022-03-24 21:13:40 +01:00
Simon
dc9eb21332 add the ability to change the pwm frequency for the IS31FL3737B (#16718) 2022-03-24 18:08:22 +00:00
QMK Bot
706bceeff8 Merge remote-tracking branch 'origin/master' into develop 2022-03-24 17:02:32 +00:00
Carlo Sala
f7a5ec2483 update kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala keymap (#16725) 2022-03-24 16:42:48 +00:00
QMK Bot
1ac1f92000 Merge remote-tracking branch 'origin/master' into develop 2022-03-24 05:24:12 +00:00
Nathan Johnson
980a1b0562 [Keymap] ergodox: updating osx_whiskey_tango_foxtrot_capslock to use process_record_user (#16715) 2022-03-23 22:24:02 -07:00
jack
e335d62eda [Keyboard] Add keyboard level encoder function for GMMK Pro (#16721) 2022-03-23 22:23:40 -07:00
QMK Bot
7e69348335 Merge remote-tracking branch 'origin/master' into develop 2022-03-23 18:43:36 +00:00
kopibeng
55b3b2b848 [Keyboard] Add support for XT60 (#16708)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-23 11:42:54 -07:00
QMK Bot
5342caf172 Merge remote-tracking branch 'origin/master' into develop 2022-03-23 16:40:54 +00:00
QMK Bot
eca8782b54 Merge remote-tracking branch 'origin/master' into develop 2022-03-23 06:02:29 +00:00
QMK Bot
5ee6f9c9c1 Merge remote-tracking branch 'origin/master' into develop 2022-03-23 05:07:00 +00:00
QMK Bot
dae932fc31 Merge remote-tracking branch 'origin/master' into develop 2022-03-22 16:39:32 +00:00
Joel Challis
23f365f8bc Ignore transport defaults if SPLIT_KEYBOARD is unset (#16706)
* Ignore transport defaults if SPLIT_KEYBOARD is unset

* keep exists check
2022-03-22 10:48:13 +00:00
Joel Challis
4f8cc32cf5 Extend 'qmk info' to handle keymap level overrides (#16702) 2022-03-21 11:57:41 +01:00
QMK Bot
aea9005236 Merge remote-tracking branch 'origin/master' into develop 2022-03-21 08:06:10 +00:00
QMK Bot
b19d7399ca Merge remote-tracking branch 'origin/master' into develop 2022-03-20 17:24:36 +00:00
QMK Bot
9216dd3917 Merge remote-tracking branch 'origin/master' into develop 2022-03-20 17:06:27 +00:00
QMK Bot
4dae5ff37d Merge remote-tracking branch 'origin/master' into develop 2022-03-20 17:03:16 +00:00
Ryan
cfe28937d5 MS Sculpt Mobile refactor (#16038) 2022-03-20 15:19:46 +11:00
QMK Bot
729d7c2b2e Merge remote-tracking branch 'origin/master' into develop 2022-03-19 20:59:03 +00:00
QMK Bot
223bc47658 Merge remote-tracking branch 'origin/master' into develop 2022-03-19 17:41:15 +00:00
QMK Bot
5dcee0199e Merge remote-tracking branch 'origin/master' into develop 2022-03-19 16:38:09 +00:00
QMK Bot
32d6c122e9 Merge remote-tracking branch 'origin/master' into develop 2022-03-19 11:53:10 +00:00
QMK Bot
98e783cc3c Format code according to conventions (#16686) 2022-03-19 11:52:03 +00:00
Ryan
9ee2effe8e HD44780 driver rework (#16370) 2022-03-19 17:57:22 +11:00
QMK Bot
86b5c6b5c3 Merge remote-tracking branch 'origin/master' into develop 2022-03-19 06:53:09 +00:00
QMK Bot
c39eeaa1c8 Merge remote-tracking branch 'origin/master' into develop 2022-03-18 18:49:56 +00:00
QMK Bot
a900f9251a Merge remote-tracking branch 'origin/master' into develop 2022-03-18 17:25:20 +00:00
QMK Bot
3a08deb7fe Merge remote-tracking branch 'origin/master' into develop 2022-03-18 16:02:57 +00:00
zvecr
bffb209eee Merge remote-tracking branch 'origin/master' into develop 2022-03-18 01:15:23 +00:00
Drashna Jaelre
02655690f4 [Core] Add compile/make macro to core (#15959)
* [Core] Add KC_MAKE keycode to core

fix linting

fix testing error

work around test idiocyncracies

fix more lint

something something stupid tests

add doc

* updates based on feedback

* Add bad names

* Fixup docs

* semantics but cleaner

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Hide oneshot checks behind preprocessors

* Move no-compile option around

* Fix formatting

* make shift optional

* Make opt in

* fix formatting

* update send string function name

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

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-03-17 21:19:34 +00:00
QMK Bot
2749346a53 Merge remote-tracking branch 'origin/master' into develop 2022-03-16 23:45:35 +00:00
QMK Bot
4e863dbdef Merge remote-tracking branch 'origin/master' into develop 2022-03-16 15:34:51 +00:00
QMK Bot
024bda1dd3 Merge remote-tracking branch 'origin/master' into develop 2022-03-16 04:09:30 +00:00
QMK Bot
78f7c7bb0d Merge remote-tracking branch 'origin/master' into develop 2022-03-16 03:58:24 +00:00
QMK Bot
d802e1c805 Merge remote-tracking branch 'origin/master' into develop 2022-03-16 03:15:02 +00:00
QMK Bot
db6d432d6a Merge remote-tracking branch 'origin/master' into develop 2022-03-16 03:13:51 +00:00
QMK Bot
b2e870e4a2 Merge remote-tracking branch 'origin/master' into develop 2022-03-16 00:07:19 +00:00
QMK Bot
919df5934b Merge remote-tracking branch 'origin/master' into develop 2022-03-15 23:28:31 +00:00
QMK Bot
d37ed07c47 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 22:58:50 +00:00
QMK Bot
8e1f505ab2 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 22:49:10 +00:00
QMK Bot
5f817a1d7f Merge remote-tracking branch 'origin/master' into develop 2022-03-15 13:57:46 +00:00
QMK Bot
872b521e4f Merge remote-tracking branch 'origin/master' into develop 2022-03-15 12:50:04 +00:00
QMK Bot
3315894269 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 09:35:53 +00:00
QMK Bot
1335d205f4 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 08:35:53 +00:00
QMK Bot
037c5b5496 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 08:31:53 +00:00
QMK Bot
af5fe7fb75 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 08:30:10 +00:00
QMK Bot
38a257e666 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 07:28:59 +00:00
QMK Bot
e784dc79a6 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 04:03:24 +00:00
QMK Bot
34ce1353f1 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 04:01:31 +00:00
QMK Bot
e9783df2c5 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 03:56:19 +00:00
QMK Bot
4be80cadac Merge remote-tracking branch 'origin/master' into develop 2022-03-15 01:57:00 +00:00
Ryan
2d9c3f9a89 Add SN74x154 driver and convert AL1 custom matrix (#16331) 2022-03-15 11:38:53 +11:00
QMK Bot
588abd24b5 Merge remote-tracking branch 'origin/master' into develop 2022-03-15 00:24:37 +00:00
QMK Bot
9e39b99a0e Merge remote-tracking branch 'origin/master' into develop 2022-03-14 22:21:34 +00:00
QMK Bot
6f98a67eda Merge remote-tracking branch 'origin/master' into develop 2022-03-14 22:06:16 +00:00
Stefan Kerkmann
7e669421f8 Rename TICK to TICK_EVENT to prevent naming conflicts (#16649) 2022-03-14 20:06:21 +00:00
QMK Bot
2648a7a125 Merge remote-tracking branch 'origin/master' into develop 2022-03-14 18:08:44 +00:00
QMK Bot
1d1d7c388d Merge remote-tracking branch 'origin/master' into develop 2022-03-14 13:58:40 +00:00
QMK Bot
cd2fca667b Merge remote-tracking branch 'origin/master' into develop 2022-03-14 01:57:26 +00:00
jack
86a35483a1 Mousekeys fix (#16640) 2022-03-13 18:53:53 -07:00
Drashna Jaelre
b8574efcd6 Fix oneshot toggle logic (#16630)
* Fix oneshot toggle logic

* Enable oneshots by default

* Decrement eeconfig magic number due to eeconfig changes
2022-03-14 01:11:42 +00:00
QMK Bot
42d084d1c0 Merge remote-tracking branch 'origin/master' into develop 2022-03-14 01:04:40 +00:00
Drashna Jaelre
921b9dad6c [Core] Move has_mouse_report_changed function to report.c (#16543)
* Move 'has_mouse_report_changed' checkto report.c

* change mousekeys to use memcpy

* fix linting issues
2022-03-14 00:01:47 +00:00
QMK Bot
cc9a2aef0f Merge remote-tracking branch 'origin/master' into develop 2022-03-13 23:56:16 +00:00
QMK Bot
5eb3fc255b Merge remote-tracking branch 'origin/master' into develop 2022-03-13 23:55:18 +00:00
QMK Bot
338cf71ee9 Merge remote-tracking branch 'origin/master' into develop 2022-03-13 23:46:46 +00:00
QMK Bot
3f83a21383 Merge remote-tracking branch 'origin/master' into develop 2022-03-13 21:50:20 +00:00
QMK Bot
2df28c1850 Merge remote-tracking branch 'origin/master' into develop 2022-03-13 17:31:22 +00:00
QMK Bot
e226a70adc Merge remote-tracking branch 'origin/master' into develop 2022-03-13 13:57:24 +00:00
QMK Bot
16fab460fd Merge remote-tracking branch 'origin/master' into develop 2022-03-13 10:10:03 +00:00
QMK Bot
8ff2497384 Merge remote-tracking branch 'origin/master' into develop 2022-03-13 10:09:12 +00:00
QMK Bot
55b53006a5 Merge remote-tracking branch 'origin/master' into develop 2022-03-13 07:37:55 +00:00
QMK Bot
ebe87aa67e Merge remote-tracking branch 'origin/master' into develop 2022-03-13 07:36:50 +00:00
QMK Bot
4281beb1de Merge remote-tracking branch 'origin/master' into develop 2022-03-12 12:42:55 +00:00
Joel Challis
dd32cdf527 Redo workaround for pin_def errors on KINETIS (#16620)
* Redo workaround for pin_def errors on KINETIS

* Redo workaround for pin_def errors on KINETIS
2022-03-11 18:50:59 +00:00
Pascal Getreuer
0eb42e042c Fix flipped One Shot logic (#16617) 2022-03-11 13:28:52 +00:00
Joel Challis
1833e65370 Workaround for pin_def errors on KINETIS (#16614) 2022-03-11 13:27:29 +00:00
QMK Bot
0015ebad47 Merge remote-tracking branch 'origin/master' into develop 2022-03-11 13:26:21 +00:00
QMK Bot
e3404d21fe Merge remote-tracking branch 'origin/master' into develop 2022-03-11 05:03:12 +00:00
Joel Challis
7e6f1c9e08 Force platform pin defs to be included (#16611)
* Force platform pin defs to be included

* Always grab first header
2022-03-10 23:53:16 +00:00
QMK Bot
e9458fd694 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 23:28:26 +00:00
QMK Bot
31eb82c911 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 21:34:11 +00:00
QMK Bot
54658a3687 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 20:49:07 +00:00
QMK Bot
27cde5f4c2 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 20:42:00 +00:00
QMK Bot
83f757f8f0 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 20:22:41 +00:00
QMK Bot
ee6a0e8744 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 20:08:54 +00:00
QMK Bot
35fa0f23a5 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 19:10:42 +00:00
QMK Bot
cf44bde909 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 12:18:47 +00:00
QMK Bot
cb65c7755e Merge remote-tracking branch 'origin/master' into develop 2022-03-10 07:36:31 +00:00
QMK Bot
a8b01dc5de Merge remote-tracking branch 'origin/master' into develop 2022-03-10 04:15:19 +00:00
QMK Bot
876c5201b9 Merge remote-tracking branch 'origin/master' into develop 2022-03-10 03:57:12 +00:00
QMK Bot
62696e82cd Merge remote-tracking branch 'origin/master' into develop 2022-03-10 03:47:09 +00:00
QMK Bot
0f22bccb3f Merge remote-tracking branch 'origin/master' into develop 2022-03-09 22:05:21 +00:00
QMK Bot
6f1793d486 Merge remote-tracking branch 'origin/master' into develop 2022-03-09 21:48:28 +00:00
Nick Brassel
edd1f33013 Missed some erroneous prints. (#16597) 2022-03-10 05:43:12 +11:00
Nick Brassel
77180a6649 Fixup builds. (#16596) 2022-03-09 17:09:38 +00:00
Nick Brassel
5d67c4d908 Fix missing definition for non-encoder case. (#16593) 2022-03-09 21:06:33 +11:00
Nick Brassel
8d5eacb7dd Add support for encoder mapping. (#13286) 2022-03-09 19:29:00 +11:00
QMK Bot
7121a228eb Merge remote-tracking branch 'origin/master' into develop 2022-03-09 05:49:59 +00:00
QMK Bot
4d5e532068 Merge remote-tracking branch 'origin/master' into develop 2022-03-09 01:36:07 +00:00
QMK Bot
eedbb9ae64 Merge remote-tracking branch 'origin/master' into develop 2022-03-09 01:35:15 +00:00
QMK Bot
c5b11978c7 Merge remote-tracking branch 'origin/master' into develop 2022-03-09 01:25:30 +00:00
QMK Bot
c349e85956 Merge remote-tracking branch 'origin/master' into develop 2022-03-09 00:38:10 +00:00
QMK Bot
41225620c2 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 22:08:38 +00:00
QMK Bot
7f8f66512c Merge remote-tracking branch 'origin/master' into develop 2022-03-08 22:07:48 +00:00
QMK Bot
d4bf9b1cc1 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 21:24:38 +00:00
QMK Bot
49bc3b530b Merge remote-tracking branch 'origin/master' into develop 2022-03-08 20:46:24 +00:00
QMK Bot
fba3820405 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 18:57:21 +00:00
QMK Bot
0d428b9b39 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 17:03:41 +00:00
QMK Bot
68a62b99a2 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 16:48:29 +00:00
Nick Brassel
2f6751e48a Asymmetric encoders, encoder tests. (#16068) 2022-03-08 16:58:05 +11:00
QMK Bot
2218690d0b Merge remote-tracking branch 'origin/master' into develop 2022-03-08 05:50:04 +00:00
QMK Bot
212e820ff1 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 05:31:24 +00:00
QMK Bot
18bfbc93ab Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:24:07 +00:00
QMK Bot
e0fbb07129 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:20:15 +00:00
QMK Bot
1d5b462da2 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:19:07 +00:00
QMK Bot
e71f8f89d2 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:17:05 +00:00
QMK Bot
b5996bf793 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:10:36 +00:00
QMK Bot
b6000e0fe5 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 04:00:30 +00:00
QMK Bot
0cf1186f8d Merge remote-tracking branch 'origin/master' into develop 2022-03-08 03:46:20 +00:00
QMK Bot
b069002e61 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 03:41:21 +00:00
QMK Bot
280bea87a6 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 03:40:42 +00:00
QMK Bot
9237326664 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 03:02:26 +00:00
QMK Bot
2d985687a9 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 03:01:10 +00:00
QMK Bot
7bc8046f9a Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:50:36 +00:00
QMK Bot
26372c81ad Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:47:28 +00:00
QMK Bot
c0a7ecb0e1 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:45:59 +00:00
QMK Bot
4666dfb0b0 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:45:19 +00:00
QMK Bot
dfb0f9f6a5 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:41:16 +00:00
QMK Bot
05cc707d96 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:29:47 +00:00
QMK Bot
347bab7c35 Merge remote-tracking branch 'origin/master' into develop 2022-03-08 02:18:07 +00:00
QMK Bot
184a0942ff Merge remote-tracking branch 'origin/master' into develop 2022-03-08 01:13:33 +00:00
Ryan
07ca35decf Convert Wasdat Code custom matrix to SN74x138 driver (#16257) 2022-03-08 10:02:28 +11:00
QMK Bot
e41d67b428 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 17:06:14 +00:00
Stefan Kerkmann
2bface8f89 Add flash target for UF2 bootloaders (#16525) 2022-03-07 08:59:06 -08:00
jack
05b7193651 [Keyboard] remove unecessary layers (#16559) 2022-03-07 08:43:17 -08:00
QMK Bot
51c9988341 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 11:23:50 +00:00
Ryan
75544d9127 Move Doxygen docs to subdirectory (#16561) 2022-03-07 11:22:22 +00:00
Nick Brassel
44f1bd9b3a ChibiOS 21.11.1 update. (#16251)
* ChibiOS 21.11.1 update.

* `uf2-tinyuf2` => `tinyuf2`

* Updated chibios-contrib, fixup preprocessor for tinyuf2 bootloader.

* Fixup keychron L433 boards.

* Makefile cleanup.

* RISC-V build fixes.

* Fixup RISC-V build.
2022-03-07 21:04:22 +11:00
QMK Bot
5de515526d Merge remote-tracking branch 'origin/master' into develop 2022-03-07 07:17:24 +00:00
QMK Bot
e4d51c91b9 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 07:03:07 +00:00
QMK Bot
a6126c5853 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 07:00:03 +00:00
QMK Bot
827f32b3ad Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:59:06 +00:00
QMK Bot
c09e8bbf42 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:58:38 +00:00
QMK Bot
b28d8fcb07 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:56:26 +00:00
xiao
c810d8cc1b [Keyboard] Update Wakizashi 40 config and readme (#16505) 2022-03-06 22:53:41 -08:00
QMK Bot
575e3e18f5 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:53:17 +00:00
QMK Bot
91a6e6245b Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:41:46 +00:00
QMK Bot
99edf15a69 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 06:12:48 +00:00
QMK Bot
f9df57b722 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 04:55:54 +00:00
QMK Bot
0fd600d6df Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:37:00 +00:00
QMK Bot
8e7cb28c4f Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:30:45 +00:00
QMK Bot
45929ca657 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:28:12 +00:00
QMK Bot
bca565cfaa Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:27:36 +00:00
QMK Bot
f8fb772f53 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:26:51 +00:00
QMK Bot
9bf9adb578 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:03:14 +00:00
QMK Bot
6425dd1710 Merge remote-tracking branch 'origin/master' into develop 2022-03-07 03:02:37 +00:00
QMK Bot
0f9849ca68 Merge remote-tracking branch 'origin/master' into develop 2022-03-06 21:58:55 +00:00
QMK Bot
621b4b73a1 Merge remote-tracking branch 'origin/master' into develop 2022-03-06 01:19:14 +00:00
QMK Bot
f7512d61bd Merge remote-tracking branch 'origin/master' into develop 2022-03-05 22:55:11 +00:00
QMK Bot
e2ab5056f1 Merge remote-tracking branch 'origin/master' into develop 2022-03-05 21:00:29 +00:00
QMK Bot
ab76e6ab59 Merge remote-tracking branch 'origin/master' into develop 2022-03-05 04:59:18 +00:00
QMK Bot
967b9e3140 Merge remote-tracking branch 'origin/master' into develop 2022-03-05 04:57:51 +00:00
Ryan
7d41639d54 Map data driven DESCRIPTION as string literal (#16523) 2022-03-05 00:20:34 +00:00
QMK Bot
618aaa8ca7 Merge remote-tracking branch 'origin/master' into develop 2022-03-04 18:11:08 +00:00
QMK Bot
386d19b55f Merge remote-tracking branch 'origin/master' into develop 2022-03-04 17:06:52 +00:00
Ryan
ace0603f4f Change data driven "str" type to represent a quoted string literal (#16516)
* Change data driven "str" type to represent a quoted string literal

* Update docs
2022-03-04 13:25:24 +00:00
Ryan
f634fddd34 Remove send_unicode_hex_string() (#16518) 2022-03-04 11:04:45 +00:00
QMK Bot
24f2effbdd Merge remote-tracking branch 'origin/master' into develop 2022-03-04 04:44:30 +00:00
QMK Bot
bcd4f34b26 Merge remote-tracking branch 'origin/master' into develop 2022-03-04 03:57:31 +00:00
QMK Bot
9958f9e147 Merge remote-tracking branch 'origin/master' into develop 2022-03-04 03:52:47 +00:00
QMK Bot
c45ed8930e Merge remote-tracking branch 'origin/master' into develop 2022-03-04 01:49:48 +00:00
QMK Bot
c6111aa2a2 Merge remote-tracking branch 'origin/master' into develop 2022-03-03 23:38:54 +00:00
QMK Bot
d1bd5a0100 Merge remote-tracking branch 'origin/master' into develop 2022-03-03 22:36:19 +00:00
QMK Bot
77ea1bdac4 Merge remote-tracking branch 'origin/master' into develop 2022-03-03 20:24:53 +00:00
QMK Bot
b16af15750 Merge remote-tracking branch 'origin/master' into develop 2022-03-03 17:24:52 +00:00
QMK Bot
8a5ad2a113 Merge remote-tracking branch 'origin/master' into develop 2022-03-03 14:28:03 +00:00
QMK Bot
9f95844cad Merge remote-tracking branch 'origin/master' into develop 2022-03-03 09:54:22 +00:00
QMK Bot
d75ce4862b Merge remote-tracking branch 'origin/master' into develop 2022-03-02 11:15:57 +00:00
QMK Bot
9d7f6d1089 Merge remote-tracking branch 'origin/master' into develop 2022-03-01 23:49:18 +00:00
QMK Bot
7f515ee64f Merge remote-tracking branch 'origin/master' into develop 2022-03-01 22:53:03 +00:00
QMK Bot
7d842c676a Merge remote-tracking branch 'origin/master' into develop 2022-03-01 02:12:47 +00:00
QMK Bot
5467bdf39e Merge remote-tracking branch 'origin/master' into develop 2022-03-01 01:54:24 +00:00
QMK Bot
d77b5ad0e8 Merge remote-tracking branch 'origin/master' into develop 2022-03-01 01:52:37 +00:00
QMK Bot
c70bb75323 Merge remote-tracking branch 'origin/master' into develop 2022-02-28 23:34:29 +00:00
QMK Bot
5e57d18c5b Merge remote-tracking branch 'origin/master' into develop 2022-02-28 23:33:51 +00:00
QMK Bot
73135e74b8 Merge remote-tracking branch 'origin/master' into develop 2022-02-28 23:33:10 +00:00
QMK Bot
36e47cb3aa Merge remote-tracking branch 'origin/master' into develop 2022-02-28 20:03:22 +00:00
QMK Bot
3c7c9bdd86 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 12:40:01 +00:00
QMK Bot
48f06ae646 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 11:30:33 +00:00
Joel Challis
e4a6afa369 Rework generate-api CLI command to use .build directory (#16441) 2022-02-27 12:28:51 +01:00
QMK Bot
8f457ada3a Merge remote-tracking branch 'origin/master' into develop 2022-02-27 10:34:57 +00:00
QMK Bot
4fd2739a8c Merge remote-tracking branch 'origin/master' into develop 2022-02-27 10:09:02 +00:00
QMK Bot
f6bc058525 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 08:39:31 +00:00
Stefan Kerkmann
156f0561f2 [Core] Squeeze AVR some more with -mrelax and -mcall-prologues (#16269) 2022-02-26 19:05:03 -08:00
QMK Bot
cb8528c33c Merge remote-tracking branch 'origin/master' into develop 2022-02-27 02:39:15 +00:00
QMK Bot
d9a69324c1 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 02:30:28 +00:00
QMK Bot
4fae7cde7f Merge remote-tracking branch 'origin/master' into develop 2022-02-27 01:51:13 +00:00
QMK Bot
0815d89eb8 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 01:36:55 +00:00
QMK Bot
0d953a2dcf Merge remote-tracking branch 'origin/master' into develop 2022-02-27 01:35:45 +00:00
QMK Bot
d995cf3ae5 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 01:19:23 +00:00
QMK Bot
5360cb1fd7 Merge remote-tracking branch 'origin/master' into develop 2022-02-27 01:07:19 +00:00
QMK Bot
8a23742af2 Merge remote-tracking branch 'origin/master' into develop 2022-02-26 03:21:27 +00:00
zvecr
3da34f297a Start develop for 2022q2 2022-02-26 00:57:08 +00:00
4738 changed files with 101424 additions and 17872 deletions

58
.github/stale.yml vendored
View File

@@ -1,58 +0,0 @@
# Configuration for probot-stale - https://github.com/probot/stale
# General configuration
# Pull request specific configuration
pulls:
staleLabel: awaiting changes
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 45
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 30
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `awaiting review`, `breaking_change`, `in progress`, or `on hold` to prevent
the issue from being re-flagged.
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
exemptLabels:
- awaiting review
- breaking_change
- in progress
- on hold
# Issue specific configuration
issues:
staleLabel: stale
limitPerRun: 10
daysUntilStale: 90
daysUntilClose: 30
markComment: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
closeComment: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
exemptLabels:
- bug
- in progress
- on hold
- discussion
- to do

View File

@@ -35,4 +35,4 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: 'api_data'
SOURCE_DIR: '.build/api_data'

18
.github/workflows/auto_approve.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Automatic Approve
on:
schedule:
- cron: "*/5 * * * *"
jobs:
automatic_approve:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: mheap/automatic-approve-action@v1
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
workflows: "format.yml,lint.yml,unit_test.yml"
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"

View File

@@ -27,7 +27,7 @@ jobs:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.26.0
uses: anothrNick/github-tag-action@1.39.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -24,7 +24,9 @@ jobs:
persist-credentials: false
- name: Generate API Data
run: qmk generate-api
run: |
python3 -m pip install -r requirements-dev.txt
qmk generate-api
- name: Upload API Data
uses: jakejarvis/s3-sync-action@master
@@ -35,4 +37,4 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: 'api_data'
SOURCE_DIR: '.build/api_data'

View File

@@ -16,6 +16,9 @@ jobs:
with:
fetch-depth: 0
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:

64
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-when-updated: true
exempt-draft-pr: true
ascending: true
operations-per-run: 150
stale-issue-label: stale
days-before-issue-stale: 90
days-before-issue-close: 30
exempt-issue-labels: bug,in progress,on hold,discussion,to do
stale-issue-message: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
close-issue-message: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
// [stale-action-closed]
stale-pr-label: stale
days-before-pr-stale: 45
days-before-pr-close: 30
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold
stale-pr-message: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold`
to prevent the issue from being re-flagged.
close-pr-message: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
// [stale-action-closed]

View File

@@ -20,11 +20,13 @@ jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: make test:all

7
.gitignore vendored
View File

@@ -67,10 +67,12 @@ CMakeLists.txt
.vscode/temp.sql
tags
# Ignore image files
# Ignore image/font files
*.gif
*.jpg
*.png
*.ttf
*.otf
# Things Travis sees
/.vs
@@ -91,3 +93,6 @@ user_song_list.h
compile_commands.json
.clangd/
.cache/
# VIA(L) json files that don't belong in QMK repo
via*.json

View File

@@ -1 +0,0 @@
theme: jekyll-theme-cayman

View File

@@ -97,12 +97,18 @@ ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
BOOTLOADER_TYPE = halfkay
# Teensy 2.0
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
endif
# Teensy 2.0++
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
# Teensy LC, 3.x
ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK66FX1M0))
FIRMWARE_FORMAT = hex
endif
endif
ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
@@ -202,6 +208,10 @@ ifeq ($(strip $(BOOTLOADER)), md-boot)
OPT_DEFS += -DBOOTLOADER_MD_BOOT
BOOTLOADER_TYPE = md_boot
endif
ifeq ($(strip $(BOOTLOADER)), wb32-dfu)
OPT_DEFS += -DBOOTLOADER_WB32_DFU
BOOTLOADER_TYPE = wb32_dfu
endif
ifeq ($(strip $(BOOTLOADER_TYPE)),)
$(call CATASTROPHIC_ERROR,Invalid BOOTLOADER,No bootloader specified. Please set an appropriate 'BOOTLOADER' in your keyboard's 'rules.mk' file.)

View File

@@ -172,13 +172,7 @@ generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c
endif
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
include platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk
endif
include $(BUILDDEFS_PATH)/converters.mk
include $(BUILDDEFS_PATH)/mcu_selection.mk
@@ -328,12 +322,18 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
endif
CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
KEYBOARD_SRC += $(KEYBOARD_OUTPUT)/src/default_keyboard.c
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h)
@$(BUILD_CMD)
$(KEYBOARD_OUTPUT)/src/default_keyboard.c: $(INFO_JSON_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keyboard-c --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.c)
@$(BUILD_CMD)
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h)
@@ -344,7 +344,7 @@ $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
$(eval CMD=$(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h)
@$(BUILD_CMD)
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.c $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
.INTERMEDIATE : generated-files

View File

@@ -4,6 +4,8 @@ endif
.DEFAULT_GOAL := all
OPT = g
include paths.mk
include $(BUILDDEFS_PATH)/message.mk

View File

@@ -149,6 +149,11 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
endif
endif
QUANTUM_PAINTER_ENABLE ?= no
ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
include $(QUANTUM_DIR)/painter/rules.mk
endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
@@ -646,8 +651,9 @@ ifeq ($(strip $(HAPTIC_ENABLE)),yes)
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += platforms/avr/drivers/hd44780.c
OPT_DEFS += -DHD44780_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/lcd
SRC += hd44780.c
endif
VALID_OLED_DRIVER_TYPES := SSD1306 custom
@@ -695,7 +701,8 @@ endif
ifeq ($(strip $(UNICODE_COMMON)), yes)
OPT_DEFS += -DUNICODE_COMMON_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c \
$(QUANTUM_DIR)/utf8.c
endif
MAGIC_ENABLE ?= yes

View File

@@ -82,8 +82,8 @@ endif
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),CHIBIOS)
$(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.)
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
@@ -316,7 +316,7 @@ gccversion :
@$(BUILD_CMD)
%.uf2: %.hex
$(eval CMD=$(UF2CONV) $(BUILD_DIR)/$(TARGET).hex -o $(BUILD_DIR)/$(TARGET).uf2 -c -f $(UF2_FAMILY) >/dev/null 2>&1)
$(eval CMD=$(UF2CONV) $(BUILD_DIR)/$(TARGET).hex --output $(BUILD_DIR)/$(TARGET).uf2 --convert --family $(UF2_FAMILY) >/dev/null 2>&1)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_UF2) $@" | $(AWK_CMD)
@$(BUILD_CMD)

37
builddefs/converters.mk Normal file
View File

@@ -0,0 +1,37 @@
# Note for new boards -- CTPC and CONVERT_TO_PROTON_C are deprecated terms
# and should not be replicated for new boards. These will be removed from
# documentation as well as existing keymaps in due course.
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
CONVERT_TO=proton_c
cpfirmware: ctpc_warning
.INTERMEDIATE: ctpc_warning
ctpc_warning: elf
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
$(info The `CONVERT_TO_PROTON_C` and `CTPC` options are soon to be deprecated.)
$(info Boards should be changed to use `CONVERT_TO=proton_c` instead.)
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
endif
# TODO: opt in rather than assume everything uses a pro micro
PIN_COMPATIBLE ?= promicro
ifneq ($(CONVERT_TO),)
# glob to search each platfrorm and/or check for valid converter
CONVERTER := $(wildcard $(PLATFORM_PATH)/*/converters/$(PIN_COMPATIBLE)_to_$(CONVERT_TO)/)
ifeq ($(CONVERTER),)
$(call CATASTROPHIC_ERROR,Converting from '$(PIN_COMPATIBLE)' to '$(CONVERT_TO)' not possible!)
endif
TARGET := $(TARGET)_$(CONVERT_TO)
# Configure any defaults
OPT_DEFS += -DCONVERT_TO_$(strip $(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]'))
OPT_DEFS += -DCONVERTER_ENABLED
VPATH += $(CONVERTER)
# Finally run any converter specific logic
include $(CONVERTER)/converter.mk
endif

View File

@@ -17,6 +17,7 @@ SPACE_CADET_ENABLE ?= yes
GRAVE_ESC_ENABLE ?= yes
GENERIC_FEATURES = \
CAPS_WORD \
COMBO \
COMMAND \
DEFERRED_EXEC \
@@ -25,12 +26,14 @@ GENERIC_FEATURES = \
DYNAMIC_KEYMAP \
DYNAMIC_MACRO \
ENCODER \
ENCODER_MAP \
GRAVE_ESC \
HAPTIC \
KEY_LOCK \
KEY_OVERRIDE \
LEADER \
PROGRAMMABLE_BUTTON \
SECURE \
SPACE_CADET \
SWAP_HANDS \
TAP_DANCE \

View File

@@ -9,7 +9,9 @@ ifneq ($(findstring MKL26Z64, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = KINETIS
MCU_SERIES = KL2x
@@ -36,7 +38,9 @@ ifneq ($(findstring MK20DX128, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = KINETIS
MCU_SERIES = K20x
@@ -63,7 +67,9 @@ ifneq ($(findstring MK20DX256, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = KINETIS
MCU_SERIES = K20x
@@ -90,7 +96,9 @@ ifneq ($(findstring MK66FX1M0, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = KINETIS
MCU_SERIES = MK66F18
@@ -117,7 +125,9 @@ ifneq ($(findstring STM32F042, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F0xx
@@ -157,7 +167,9 @@ ifneq ($(findstring STM32F072, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F0xx
@@ -192,7 +204,9 @@ ifneq ($(findstring STM32F103, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F1xx
@@ -224,7 +238,9 @@ ifneq ($(findstring STM32F303, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F3xx
@@ -259,7 +275,9 @@ ifneq ($(findstring STM32F401, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F4xx
@@ -299,7 +317,9 @@ ifneq ($(findstring STM32F405, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F4xx
@@ -334,7 +354,9 @@ ifneq ($(findstring STM32F407, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F4xx
@@ -369,7 +391,9 @@ ifneq ($(findstring STM32F411, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F4xx
@@ -409,7 +433,9 @@ ifneq ($(findstring STM32F446, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32F4xx
@@ -441,7 +467,9 @@ ifneq ($(findstring STM32G431, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32G4xx
@@ -476,7 +504,9 @@ ifneq ($(findstring STM32G474, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32G4xx
@@ -511,7 +541,9 @@ ifneq (,$(filter $(MCU),STM32L432 STM32L442))
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32L4xx
@@ -548,7 +580,9 @@ ifneq (,$(filter $(MCU),STM32L433 STM32L443))
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32L4xx
@@ -585,7 +619,9 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32L4xx
@@ -602,7 +638,7 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= GENERIC_STM32_L412XB
PLATFORM_NAME ?= platform_l432
PLATFORM_NAME ?= platform_l412_l422
USE_FPU ?= yes
@@ -622,7 +658,9 @@ ifneq ($(findstring WB32F3G71, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = WB32
MCU_SERIES = WB32F3G71xx
@@ -642,7 +680,40 @@ ifneq ($(findstring WB32F3G71, $(MCU)),)
USE_FPU ?= no
# Bootloader address for WB32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFFE000
WB32_BOOTLOADER_ADDRESS ?= 0x1FFFE000
endif
ifneq ($(findstring WB32FQ95, $(MCU)),)
# Cortex version
MCU = cortex-m3
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
ARMV = 7
## chip/board settings
# - the next two should match the directories in
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = WB32
MCU_SERIES = WB32FQ95xx
# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
MCU_LDSCRIPT ?= WB32FQ95xB
# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
MCU_STARTUP ?= wb32fq95xx
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= GENERIC_WB32_FQ95XX
USE_FPU ?= no
# Bootloader address for WB32 DFU
WB32_BOOTLOADER_ADDRESS ?= 0x1FFFE000
endif
@@ -657,7 +728,10 @@ ifneq ($(findstring GD32VF103, $(MCU)),)
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_PORT_NAME = GD
MCU_FAMILY = GD32V
MCU_SERIES = GD32VF103

View File

@@ -57,6 +57,7 @@ OTHER_OPTION_NAMES = \
HELIX ZINC \
AUTOLOG_ENABLE \
DEBUG_ENABLE \
ENCODER_MAP_ENABLE \
ENCODER_ENABLE_CUSTOM \
GERMAN_ENABLE \
HAPTIC_ENABLE \
@@ -79,7 +80,9 @@ OTHER_OPTION_NAMES = \
LED_MIRRORED \
RGBLIGHT_FULL_POWER \
LTO_ENABLE \
PROGRAMMABLE_BUTTON_ENABLE
PROGRAMMABLE_BUTTON_ENABLE \
SECURE_ENABLE \
CAPS_WORD_ENABLE
define NAME_ECHO
@printf " %-30s = %-16s # %s\\n" "$1" "$($1)" "$(origin $1)"

View File

@@ -2,6 +2,7 @@ TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f
FULL_TESTS := $(notdir $(TEST_LIST))
include $(QUANTUM_PATH)/debounce/tests/testlist.mk
include $(QUANTUM_PATH)/encoder/tests/testlist.mk
include $(QUANTUM_PATH)/sequencer/tests/testlist.mk
include $(PLATFORM_PATH)/test/testlist.mk

View File

@@ -0,0 +1,35 @@
{
"development_board": {
"promicro": {
"processor": "atmega32u4",
"bootloader": "caterina",
"pin_compatible": "promicro"
},
"elite_c": {
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"pin_compatible": "promicro"
},
"proton_c": {
"processor": "STM32F303",
"bootloader": "stm32-dfu",
"board": "QMK_PROTON_C",
"pin_compatible": "promicro"
},
"bluepill": {
"processor": "STM32F103",
"bootloader": "stm32duino",
"board": "STM32_F103_STM32DUINO"
},
"blackpill_f401": {
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"board": "BLACKPILL_STM32_F401"
},
"blackpill_f411": {
"processor": "STM32F411",
"bootloader": "stm32-dfu",
"board": "BLACKPILL_STM32_F411"
}
}
}

View File

@@ -3,22 +3,26 @@
{
# Format:
# <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping"
# value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
"BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "bool"},
"CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
"COMBO_COUNT": {"info_key": "combo.count", "value_type": "int"},
"COMBO_TERM": {"info_key": "combo.term", "value_type": "int"},
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"},
"DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"},
# TODO: Replace ^^^ with vvv
#"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version"},
"DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
"DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
"DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"},
"DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"},
@@ -78,6 +82,9 @@
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
"SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false},
"SECURE_UNLOCK_TIMEOUT": {"info_key": "secure.unlock_timeout", "value_type": "int"},
"SECURE_IDLE_TIMEOUT": {"info_key": "secure.idle_timeout", "value_type": "int"},
"SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
"SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"},
"SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"},
@@ -96,4 +103,11 @@
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
# Items we want flagged in lint
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
}

View File

@@ -3,13 +3,16 @@
{
# Format:
# <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping"
# value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
"CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
@@ -19,7 +22,14 @@
"MCU": {"info_key": "processor", "warn_duplicate": false},
"MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"},
"NO_USB_STARTUP_CHECK": {"info_key": "usb.no_startup_check", "value_type": "bool"},
"PIN_COMPATIBLE": {"info_key": "pin_compatible"},
"SECURE_ENABLE": {"info_key": "secure.enabled", "value_type": "bool"},
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "value_type": "str", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"}
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
# Items we want flagged in lint
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true},
"CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true},
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true},
}

View File

@@ -11,6 +11,9 @@
'2_milk': {
target: 'spaceman/2_milk'
},
'absinthe': {
target: 'keyhive/absinthe'
},
'aeboards/constellation': {
target: 'aeboards/constellation/rev1'
},
@@ -26,6 +29,18 @@
alice: {
target: 'tgr/alice'
},
amj40: {
target: 'amjkeyboard/amj40'
},
amj60: {
target: 'amjkeyboard/amj60'
},
amj96: {
target: 'amjkeyboard/amj96'
},
amjpad: {
target: 'amjkeyboard/amjpad'
},
angel17: {
target: 'angel17/alpha'
},
@@ -33,7 +48,10 @@
target: 'angel64/alpha'
},
at101_blackheart: {
target: 'at101_bh'
target: 'viktus/at101_bh'
},
at101_bh: {
target: 'viktus/at101_bh'
},
'atom47/rev2': {
target: 'maartenwut/atom47/rev2'
@@ -158,6 +176,9 @@
ergoinu: {
target: 'dm9records/ergoinu'
},
ergosaurus: {
target: 'keyhive/ergosaurus'
},
'exclusive/e85': {
target: 'exclusive/e85/hotswap'
},
@@ -165,7 +186,13 @@
target: 'gh60/revc'
},
'gmmk/pro': {
target: 'gmmk/pro/ansi'
target: 'gmmk/pro/rev1/ansi'
},
'gmmk/pro/ansi': {
target: 'gmmk/pro/rev1/ansi'
},
'gmmk/pro/iso': {
target: 'gmmk/pro/rev1/iso'
},
'handwired/ferris': {
target: 'ferris/0_1'
@@ -212,6 +239,9 @@
'helix/rev2/under/oled': {
target: 'helix/rev2/under'
},
honeycomb: {
target: 'keyhive/honeycomb'
},
id80: {
target: 'id80/ansi'
},
@@ -260,6 +290,9 @@
'kyria': {
target: 'splitkb/kyria'
},
lattice60: {
target: 'keyhive/lattice60'
},
'lazydesigners/the60': {
target: 'lazydesigners/the60/rev1'
},
@@ -392,7 +425,13 @@
target: 'oddball/v1'
},
omnikey_blackheart: {
target: 'omnikey_bh'
target: 'viktus/omnikey_bh'
},
omnikey_bh: {
target: 'viktus/omnikey_bh'
},
opus: {
target: 'keyhive/opus'
},
'pabile/p20': {
target: 'pabile/p20/ver1'
@@ -489,6 +528,12 @@
skog: {
target: 'percent/skog'
},
smallice: {
target: 'keyhive/smallice'
},
southpole: {
target: 'keyhive/southpole'
},
speedo: {
target: 'cozykeys/speedo/v2'
},
@@ -577,7 +622,10 @@
target: 'ymd75/rev1'
},
z150_blackheart: {
target: 'z150_bh'
target: 'viktus/z150_bh'
},
z150_bh:{
target: 'viktus/z150_bh'
},
zeal60: {
target: 'wilba_tech/zeal60'
@@ -904,6 +952,9 @@
meishi2: {
target: 'biacco42/meishi2'
},
melody96: {
target: 'ymdk/melody96'
},
minidox/rev1: {
target: 'maple_computing/minidox/rev1'
},
@@ -919,6 +970,18 @@
montex: {
target: 'idobao/montex/v1'
},
mt40: {
target: 'mt/mt40'
},
mt64rgb: {
target: 'mt/mt64rgb'
},
mt84: {
target: 'mt/mt84'
},
mt980: {
target: 'mt/mt980'
},
nafuda: {
target: 'salicylic_acid3/nafuda'
},
@@ -943,6 +1006,9 @@
namecard2x4: {
target: 'takashiski/namecard2x4'
},
navi10: {
target: 'keyhive/navi10'
},
nebula12: {
target: 'spaceholdings/nebula12'
},
@@ -1144,6 +1210,12 @@
underscore33/rev2: {
target: 'tominabox1/underscore33/rev2'
},
uno: {
target: 'keyhive/uno'
},
ut472: {
target: 'keyhive/ut472'
},
vn66: {
target: 'hnahkb/vn66'
},
@@ -1153,6 +1225,12 @@
wanten: {
target: 'qpockets/wanten'
},
'wheatfield/blocked65': {
target: 'mt/blocked65'
},
'wheatfield/split75': {
target: 'mt/split75'
},
whitefox: {
target: 'input_club/whitefox'
},

View File

@@ -41,8 +41,6 @@
"LAYOUT_2x2uC",
"LAYOUT_2x3uC",
"LAYOUT_625uC",
"LAYOUT_ANSI_DEFAULT",
"LAYOUT_JP",
"LAYOUT_ortho_3x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uL",
@@ -57,8 +55,7 @@
"LAYOUT_planck_1x2uR",
"LAYOUT_preonic_1x2uC",
"LAYOUT_preonic_1x2uL",
"LAYOUT_preonic_1x2uR",
"LAYOUT_reviung34_2uL"
"LAYOUT_preonic_1x2uR"
]
},
{
@@ -71,6 +68,22 @@
"type": "number",
"min": 0.25
},
"keyboard": {
"oneOf": [
{
"type": "string",
"enum": [
"converter/numeric_keypad_IIe",
"emptystring/NQG",
"maple_computing/christmas_tree/V2017"
]
},
{
"type": "string",
"pattern": "^[0-9a-z][0-9a-z_/]*$"
}
]
},
"mcu_pin_array": {
"type": "array",
"items": {"$ref": "#/mcu_pin"}

View File

@@ -5,15 +5,24 @@
"type": "object",
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keyboard_folder": {"$ref": "qmk.definitions.v1#/keyboard"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"manufacturer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"url": {
"type": "string",
"format": "uri"
},
"development_board": {
"type": "string",
"enum": ["promicro", "elite_c", "proton_c", "bluepill", "blackpill_f401", "blackpill_f411"]
},
"pin_compatible": {
"type": "string",
"enum": ["promicro"]
},
"processor": {
"type": "string",
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -83,6 +92,16 @@
"enum": ["COL2ROW", "ROW2COL"]
},
"debounce": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"caps_word": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"both_shifts_turns_on": {"type": "boolean"},
"double_tap_shift_turns_on": {"type": "boolean"},
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
},
},
"combo": {
"type": "object",
"properties": {
@@ -126,7 +145,10 @@
"type": "object",
"additionalProperties": false,
"properties": {
"label": {"type": "string"},
"label": {
"type": "string",
"pattern": "^[^\\n]*$"
},
"matrix": {
"type": "array",
"minItems": 2,
@@ -193,6 +215,62 @@
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"led_matrix": {
"type": "object",
"properties": {
"driver": {"type": "string"},
"layout": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"matrix": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
}
}
}
}
},
"rgb_matrix": {
"type": "object",
"properties": {
"driver": {"type": "string"},
"layout": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"matrix": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
"flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
}
}
}
}
},
"rgblight": {
"type": "object",
"additionalProperties": false,
@@ -235,6 +313,30 @@
}
}
},
"secure": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"unlock_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"unlock_sequence": {
"type": "array",
"minLength": 1,
"maxLength": 5,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
}
}
}
}
},
"split": {
"type": "object",
"additionalProperties": false,

216
docs/ChangeLog/20220528.md Normal file
View File

@@ -0,0 +1,216 @@
# QMK Breaking Changes - 2022 May 28 Changelog
## Notable Features :id=notable-features
### Caps Word ([#16588](https://github.com/qmk/qmk_firmware/pull/16588)) :id=caps-word
This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.
For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on _Caps Word_ -- then type `qmk` (lowercase) without holding shift. Once you hit any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace, this will go back to normal typing!
There are other activation mechanisms as well as configurable options like timeout and the like -- see the [Caps Word documentation](feature_caps_word.md) for more information.
### Quantum Painter ([#10174](https://github.com/qmk/qmk_firmware/pull/10174)) :id=quantum-painter
QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.
Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.
The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.
See the [Quantum Painter documentation](quantum_painter.md) for more information on how to set up the displays as well as how to convert images and fonts.
!> Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.
### Encoder Mapping ([#13286](https://github.com/qmk/qmk_firmware/pull/13286)) :id=encoder-mapping
One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. [#13286](https://github.com/qmk/qmk_firmware/pull/13286) added support for [Encoder Mapping](feature_encoders.md#encoder-map), which allows users to define encoder functionality in a similar way to their normal keymap.
!> This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.
## Changes Requiring User Action :id=changes-requiring-user-action
### `RESET` => `QK_BOOT` ([#17037](https://github.com/qmk/qmk_firmware/pull/17037)) :id=reset-2-qk_boot
QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of `RESET` as a keycode is causing naming collisions. As a result, [#17037](https://github.com/qmk/qmk_firmware/pull/17037) changed usages of `RESET` to the new keycode `QK_BOOT` in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing `RESET` should also move to `QK_BOOT`.
### Sendstring keycode overhaul ([#16941](https://github.com/qmk/qmk_firmware/pull/16941)) :id=sendstring-keycodes
Some keycodes used with `SEND_STRING` and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of [deprecated keycodes](https://github.com/qmk/qmk_firmware/blob/ebd402788346aa6e88bde1486b2a835684d40d39/quantum/send_string_keycodes.h#L456-L505) should be consulted to determine if you're using one of the older names (the first identifier after `#define`) -- you should swap to the newer variant (the second identifier on the same line).
### Pillow Installation ([#17133](https://github.com/qmk/qmk_firmware/pull/17133)) :id=pillow-install
The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably _Pillow_, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:
On Windows, if using _QMK MSYS_ or _msys2_, you'll need to run the following command:
```sh
pacman --needed --noconfirm --disable-download-timeout -S mingw-w64-x86_64-python-pillow
python3 -m pip install --upgrade qmk
```
On macOS:
```sh
brew update
brew upgrade qmk/qmk/qmk
```
On Linux or WSL:
```sh
python3 -m pip install --user --upgrade qmk
```
### Updated Keyboard Codebases :id=updated-keyboard-codebases
The following keyboards have had their source moved within QMK:
| Old Keyboard Name | New Keyboard Name |
|----------------------|--------------------|
| absinthe | keyhive/absinthe |
| amj40 | amjkeyboard/amj40 |
| amj60 | amjkeyboard/amj60 |
| amj96 | amjkeyboard/amj96 |
| amjpad | amjkeyboard/amjpad |
| at101_bh | viktus/at101_bh |
| ergosaurus | keyhive/ergosaurus |
| gmmk/pro/ansi | gmmk/pro/rev1/ansi |
| gmmk/pro/iso | gmmk/pro/rev1/iso |
| honeycomb | keyhive/honeycomb |
| lattice60 | keyhive/lattice60 |
| melody96 | ymdk/melody96 |
| mt40 | mt/mt40 |
| mt64rgb | mt/mt64rgb |
| mt84 | mt/mt84 |
| mt980 | mt/mt980 |
| navi10 | keyhive/navi10 |
| omnikey_bh | viktus/omnikey_bh |
| opus | keyhive/opus |
| smallice | keyhive/smallice |
| southpole | keyhive/southpole |
| uno | keyhive/uno |
| ut472 | keyhive/ut472 |
| wheatfield/blocked65 | mt/blocked65 |
| wheatfield/split75 | mt/split75 |
| z150_bh | viktus/z150_bh |
---
## Full changelist :id=full-changelist
Core:
* Quantum Painter ([#10174](https://github.com/qmk/qmk_firmware/pull/10174))
* Add support for encoder mapping. ([#13286](https://github.com/qmk/qmk_firmware/pull/13286))
* Add support for multiple switchs/solenoids to Haptic Feedback engine ([#15657](https://github.com/qmk/qmk_firmware/pull/15657))
* Add compile/make macro to core ([#15959](https://github.com/qmk/qmk_firmware/pull/15959))
* Add Reboot keycode to core ([#15990](https://github.com/qmk/qmk_firmware/pull/15990))
* Add support for multiple sensors to pmw3360 ([#15996](https://github.com/qmk/qmk_firmware/pull/15996))
* Asymmetric encoders, encoder tests. ([#16068](https://github.com/qmk/qmk_firmware/pull/16068))
* Add hacky via support for RGB Matrix ([#16086](https://github.com/qmk/qmk_firmware/pull/16086))
* Allow usage of AVRs minimal printf library ([#16266](https://github.com/qmk/qmk_firmware/pull/16266))
* Squeeze AVR some more with `-mrelax` and `-mcall-prologues` ([#16269](https://github.com/qmk/qmk_firmware/pull/16269))
* Heatmap incorrect matrix effect workaround ([#16315](https://github.com/qmk/qmk_firmware/pull/16315))
* Add SN74x154 driver and convert AL1 custom matrix ([#16331](https://github.com/qmk/qmk_firmware/pull/16331))
* Add customizable snake and knight animation increments ([#16337](https://github.com/qmk/qmk_firmware/pull/16337))
* Chibios USB protocol: allow overriding RAW Capacity ([#16339](https://github.com/qmk/qmk_firmware/pull/16339))
* HD44780 driver rework ([#16370](https://github.com/qmk/qmk_firmware/pull/16370))
* Update wb32-dfu ([#16438](https://github.com/qmk/qmk_firmware/pull/16438))
* Remove `send_unicode_hex_string()` ([#16518](https://github.com/qmk/qmk_firmware/pull/16518))
* Add :flash target for UF2 bootloaders ([#16525](https://github.com/qmk/qmk_firmware/pull/16525))
* Move `has_mouse_report_changed` function to `report.c` ([#16543](https://github.com/qmk/qmk_firmware/pull/16543))
* Move Doxygen docs to subdirectory ([#16561](https://github.com/qmk/qmk_firmware/pull/16561))
* Add Caps Word feature to core ([#16588](https://github.com/qmk/qmk_firmware/pull/16588))
* Add non blackpill F4x1 config files ([#16600](https://github.com/qmk/qmk_firmware/pull/16600))
* Force platform pin defs to be included ([#16611](https://github.com/qmk/qmk_firmware/pull/16611))
* Refactor CTPC logic to allow future converters ([#16621](https://github.com/qmk/qmk_firmware/pull/16621))
* Use a mutex guard for split shared memory ([#16647](https://github.com/qmk/qmk_firmware/pull/16647))
* Rename TICK to TICK_EVENT ([#16649](https://github.com/qmk/qmk_firmware/pull/16649))
* Add GET_TAPPING_TERM macro to reduce duplicate code ([#16681](https://github.com/qmk/qmk_firmware/pull/16681))
* add the ability to change the pwm frequency for the IS31FL3737B ([#16718](https://github.com/qmk/qmk_firmware/pull/16718))
* Joystick feature updates ([#16732](https://github.com/qmk/qmk_firmware/pull/16732))
* Add emulated eeprom support for STM32F303xE ([#16737](https://github.com/qmk/qmk_firmware/pull/16737))
* Refactor writePin to work with statements ([#16738](https://github.com/qmk/qmk_firmware/pull/16738))
* Add mechanism to limit available converters ([#16783](https://github.com/qmk/qmk_firmware/pull/16783))
* Implement XAP 'secure' core requirements ([#16843](https://github.com/qmk/qmk_firmware/pull/16843))
* rgblight: Add functions to stop blinking one or all but one layer ([#16859](https://github.com/qmk/qmk_firmware/pull/16859))
* Expose API for hardware unique ID ([#16869](https://github.com/qmk/qmk_firmware/pull/16869))
* Added support for Wb32fq95 ([#16871](https://github.com/qmk/qmk_firmware/pull/16871))
* Provide better config defaults for bluepill boards ([#16909](https://github.com/qmk/qmk_firmware/pull/16909))
* Joystick: Simplify report descriptor and clean up error messages ([#16926](https://github.com/qmk/qmk_firmware/pull/16926))
* Rename keymap_extras headers for consistency ([#16939](https://github.com/qmk/qmk_firmware/pull/16939))
* Sendstring keycode overhaul ([#16941](https://github.com/qmk/qmk_firmware/pull/16941))
* Move disable_jtag to platforms ([#16960](https://github.com/qmk/qmk_firmware/pull/16960))
* Remove ARM pgm_read_word workaround in rgblight ([#16961](https://github.com/qmk/qmk_firmware/pull/16961))
* Warn about LTO with arm_atsam, not ChibiOS. ([#17106](https://github.com/qmk/qmk_firmware/pull/17106))
CLI:
* Rework generate-api CLI command to use .build directory ([#16441](https://github.com/qmk/qmk_firmware/pull/16441))
* Change data driven "str" type to represent a quoted string literal ([#16516](https://github.com/qmk/qmk_firmware/pull/16516))
* Bump the 'jsonschema' version ([#16635](https://github.com/qmk/qmk_firmware/pull/16635))
* Add frameworking for development board presets ([#16637](https://github.com/qmk/qmk_firmware/pull/16637))
* Extend 'qmk info' to handle keymap level overrides ([#16702](https://github.com/qmk/qmk_firmware/pull/16702))
* Data driven `g_led_config` ([#16728](https://github.com/qmk/qmk_firmware/pull/16728))
* Allow new-keyboard to use development_board presets ([#16785](https://github.com/qmk/qmk_firmware/pull/16785))
* Also format *.hpp files. ([#16997](https://github.com/qmk/qmk_firmware/pull/16997))
Submodule updates:
* ChibiOS 21.11.1 update. ([#16251](https://github.com/qmk/qmk_firmware/pull/16251))
* Update ChibiOS-Contrib ([#16915](https://github.com/qmk/qmk_firmware/pull/16915))
Keyboards:
* chore: Add personal GMMK Pro keymap ([#15320](https://github.com/qmk/qmk_firmware/pull/15320))
* move melody96 to ymdk vendor folder ([#15680](https://github.com/qmk/qmk_firmware/pull/15680))
* move amj keyboards into amjkeyboard vendor folder ([#15733](https://github.com/qmk/qmk_firmware/pull/15733))
* move z150_bh at101_bh omnikey_bh to viktus/ ([#16004](https://github.com/qmk/qmk_firmware/pull/16004))
* MS Sculpt Mobile refactor ([#16038](https://github.com/qmk/qmk_firmware/pull/16038))
* move keyhive exclusive boards into /keyhive ([#16084](https://github.com/qmk/qmk_firmware/pull/16084))
* move 麦田 boards into /mt ([#16095](https://github.com/qmk/qmk_firmware/pull/16095))
* Convert Wasdat Code custom matrix to SN74x138 driver ([#16257](https://github.com/qmk/qmk_firmware/pull/16257))
* Move GMMK Pro to allow for multiple revisions ([#16423](https://github.com/qmk/qmk_firmware/pull/16423))
* Updated pin mapping and readme. ([#16505](https://github.com/qmk/qmk_firmware/pull/16505))
* Map data driven `DESCRIPTION` as string literal ([#16523](https://github.com/qmk/qmk_firmware/pull/16523))
* remove unecessary layers ([#16559](https://github.com/qmk/qmk_firmware/pull/16559))
* Helix/rev2 move to split common ([#16723](https://github.com/qmk/qmk_firmware/pull/16723))
* Remove some layout exceptions ([#16957](https://github.com/qmk/qmk_firmware/pull/16957))
* Refactor legacy quantum keycodes in default-ish keymaps ([#17037](https://github.com/qmk/qmk_firmware/pull/17037))
* Refactor legacy quantum keycodes in default-ish keymaps ([#17150](https://github.com/qmk/qmk_firmware/pull/17150))
Keyboard fixes:
* gboards/gergoplex: move `COMBO_ENABLE` to keymap level ([#16667](https://github.com/qmk/qmk_firmware/pull/16667))
* usb-usb converter: community layout support ([#16773](https://github.com/qmk/qmk_firmware/pull/16773))
* Fix build of `keyhive/uno`. ([#16891](https://github.com/qmk/qmk_firmware/pull/16891))
* Fix uno ([#16892](https://github.com/qmk/qmk_firmware/pull/16892))
* converter/usb_usb: remove surplus commas ([#17024](https://github.com/qmk/qmk_firmware/pull/17024))
* Various fixes for g_led_config lint warnings ([#17104](https://github.com/qmk/qmk_firmware/pull/17104))
Others:
* Add warning for CTPC/CONVERT_TO_PROTON_C. ([#16782](https://github.com/qmk/qmk_firmware/pull/16782))
* Add bluepill/blackpill development board presets ([#16806](https://github.com/qmk/qmk_firmware/pull/16806))
* Recommend pillow as part of manual MSYS install ([#17133](https://github.com/qmk/qmk_firmware/pull/17133))
Bugs:
* Fix one-shot locked modifiers ([#16114](https://github.com/qmk/qmk_firmware/pull/16114))
* Fix missing definition for non-encoder case. ([#16593](https://github.com/qmk/qmk_firmware/pull/16593))
* Fixup builds. ([#16596](https://github.com/qmk/qmk_firmware/pull/16596))
* Missed some erroneous prints. ([#16597](https://github.com/qmk/qmk_firmware/pull/16597))
* Workaround for pin_def errors on KINETIS based builds ([#16614](https://github.com/qmk/qmk_firmware/pull/16614))
* Fix flipped logic bug with One Shot `OS_ON` / `OS_OFF` keys ([#16617](https://github.com/qmk/qmk_firmware/pull/16617))
* Redo workaround for pin_def errors on KINETIS ([#16620](https://github.com/qmk/qmk_firmware/pull/16620))
* Fix oneshot toggle logic ([#16630](https://github.com/qmk/qmk_firmware/pull/16630))
* Mousekeys fix ([#16640](https://github.com/qmk/qmk_firmware/pull/16640))
* Ignore transport defaults if SPLIT_KEYBOARD is unset ([#16706](https://github.com/qmk/qmk_firmware/pull/16706))
* Fixes #16705 : digital rain follows val ([#16716](https://github.com/qmk/qmk_firmware/pull/16716))
* Fix AVR backlight breathing: low brightness limit & exceeding breathing table max index ([#16770](https://github.com/qmk/qmk_firmware/pull/16770))
* Fixed usb read loops not reading until timeout ([#16827](https://github.com/qmk/qmk_firmware/pull/16827))
* [QP] Check BPP capabilities before loading the palette ([#16863](https://github.com/qmk/qmk_firmware/pull/16863))
* Fix #16859. ([#16865](https://github.com/qmk/qmk_firmware/pull/16865))
* Preinstall python dependencies before executing `qmk`. ([#16874](https://github.com/qmk/qmk_firmware/pull/16874))
* Fixup AVR builds. ([#16875](https://github.com/qmk/qmk_firmware/pull/16875))
* Fix kinetic mouse mode ([#16951](https://github.com/qmk/qmk_firmware/pull/16951))
* Enhancement and fixes of "Secure" feature ([#16958](https://github.com/qmk/qmk_firmware/pull/16958))
* Check for ongoing transfers on the OUT endpoint ([#16974](https://github.com/qmk/qmk_firmware/pull/16974))
* MSYS2 install: add some Python dependencies through Pacman ([#17025](https://github.com/qmk/qmk_firmware/pull/17025))
* Revert "Fix kinetic mouse mode (#16951)" ([#17095](https://github.com/qmk/qmk_firmware/pull/17095))
* Workaround for recent -Werror=array-bounds AVR issues ([#17136](https://github.com/qmk/qmk_firmware/pull/17136))
* Bug fix: Continue Caps Word when AltGr (right Alt) is held. ([#17156](https://github.com/qmk/qmk_firmware/pull/17156))

View File

@@ -75,6 +75,7 @@
* Software Features
* [Auto Shift](feature_auto_shift.md)
* [Caps Word](feature_caps_word.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
@@ -94,7 +95,8 @@
* Hardware Features
* Displays
* [HD44780 LCD Controller](feature_hd44780.md)
* [Quantum Painter](quantum_painter.md)
* [HD44780 LCD Driver](feature_hd44780.md)
* [ST7565 LCD Driver](feature_st7565.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
@@ -131,7 +133,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [Most Recent ChangeLog](ChangeLog/20220226.md "QMK v0.16.0 - 2022 Feb 26")
* [Most Recent ChangeLog](ChangeLog/20220528.md "QMK v0.17.0 - 2022 May 28")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
@@ -147,7 +149,7 @@
* [EEPROM Driver](eeprom_driver.md)
* ['serial' Driver](serial_driver.md)
* [UART Driver](uart_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [GPIO Controls](gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* Python Development
@@ -183,10 +185,10 @@
* [Understanding QMK](understanding_qmk.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)
* [Defines](internals/defines.md)
* [Input Callback Reg](internals/input_callback_reg.md)
* [Midi Device](internals/midi_device.md)
* [Midi Device Setup Process](internals/midi_device_setup_process.md)
* [Midi Util](internals/midi_util.md)
* [Send Functions](internals/send_functions.md)
* [Sysex Tools](internals/sysex_tools.md)

View File

@@ -8,6 +8,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
* [2022 May 28](ChangeLog/20220528.md)
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
* [2021 Aug 28](ChangeLog/20210828.md)
@@ -21,17 +22,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
The next Breaking Change is scheduled for May 28, 2022.
The next Breaking Change is scheduled for August 27, 2022.
### Important Dates
* [x] 2022 Feb 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Apr 31 - `develop` closed to new PR's.
* [ ] 2022 Apr 31 - Call for testers.
* [ ] 2022 May 14 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* [ ] 2022 May 26 - `master` is locked, no PR's merged.
* [ ] 2022 May 28 - Merge `develop` to `master`.
* [ ] 2022 May 28 - `master` is unlocked. PR's can be merged again.
* [x] 2022 May 28 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Jul 31 - `develop` closed to new PR's.
* [ ] 2022 Jul 31 - Call for testers.
* [ ] 2022 Aug 13 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* [ ] 2022 Aug 25 - `master` is locked, no PR's merged.
* [ ] 2022 Aug 27 - Merge `develop` to `master`.
* [ ] 2022 Aug 27 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -42,32 +43,15 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
* The PR is complete and ready to merge
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220226`.
* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220827`.
* This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID.
* One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
# Checklists
## Checklists
This section documents various processes we use when running the Breaking Changes process.
## Creating the `develop` branch
This happens immediately after the previous `develop` branch is merged.
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git checkout -b develop`
* [ ] Edit `readme.md`
* [ ] Add a big notice at the top that this is a testing branch.
* [ ] Include a link to this document
* [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ] `git push upstream develop`
* [ ] `git push --tags`
## 4 Weeks Before Merge
### 4 Weeks Before Merge
* `develop` is now closed to new PR's, only fixes for current PR's may be merged
* Post call for testers
@@ -75,7 +59,7 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 2 Weeks Before Merge
### 2 Weeks Before Merge
* `develop` is now closed to existing PR merges, only bugfixes for previous merges may be included
* Post call for testers
@@ -83,21 +67,21 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 1 Week Before Merge
### 1 Week Before Merge
* Announce that master will be closed from <2 Days Before> to <Day of Merge>
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 2 Days Before Merge
### 2 Days Before Merge
* Announce that master is closed for 2 days
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## Day Of Merge
### Day Of Merge
* `qmk_firmware` git commands
* [ ] `git checkout develop`
@@ -114,8 +98,39 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git merge --no-ff develop`
* [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ] `git push upstream <next_version>`
* [ ] `git push upstream master`
## Post-merge operations
### Updating the `develop` branch
This happens immediately after the previous `develop` branch is merged to `master`.
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git checkout develop`
* [ ] `git pull --ff-only`
* [ ] `git merge --no-ff master`
* [ ] Edit `readme.md`
* [ ] Add a big notice at the top that this is a testing branch.
* [ ] Include a link to this document
* [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
* All submodules under `lib` now need to be checked against their QMK-based forks:
* [ ] `git submodule foreach git log -n1`
* [ ] Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
* Go to [qmk/ChibiOS](https://github.com/qmk/ChibiOS)
* Compare the commit hash in the above output to the commit hash in the repository
* If there's a mismatch:
* [ ] `cd lib/chibios`
* [ ] `git fetch --all`
* [ ] `git checkout master`
* [ ] `git reset --hard <commit hash>`
* [ ] `git push origin master --force-with-lease`
* (Optional) [update ChibiOS + ChibiOS-Contrib on `develop`](chibios_upgrade_instructions.md)

View File

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

View File

@@ -335,6 +335,23 @@ This command cleans up the `.build` folder. If `--all` is passed, any .hex or .b
qmk clean [-a]
```
## `qmk via2json`
This command an generate a keymap.json from a VIA keymap backup. Both the layers and the macros are converted, enabling users to easily move away from a VIA-enabled firmware without writing any code or reimplementing their keymaps in QMK Configurator.
**Usage**:
```
qmk via2json -kb KEYBOARD [-l LAYOUT] [-km KEYMAP] [-o OUTPUT] filename
```
**Example:**
```
$ qmk via2json -kb ai03/polaris -o polaris_keymap.json polaris_via_backup.json
Ψ Wrote keymap to /home/you/qmk_firmware/polaris_keymap.json
```
---
# Developer Commands
@@ -498,3 +515,15 @@ Run single test:
qmk pytest -t qmk.tests.test_cli_commands.test_c2json
qmk pytest -t qmk.tests.test_qmk_path
## `qmk painter-convert-graphics`
This command converts images to a format usable by QMK, i.e. the QGF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
## `qmk painter-make-font-image`
This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
## `qmk painter-convert-font-image`
This command converts an intermediate font image to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.

View File

@@ -2,6 +2,8 @@
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may *just* squeeze into 16kB AVR MCUs.
Features within QMK may or may not be compatible with every microcontroller.
## Atmel AVR
The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB stack:
@@ -51,6 +53,7 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
### WestBerryTech (WB32)
* [WB32F3G71xx](http://www.westberrytech.com)
* [WB32FQ95xx](http://www.westberrytech.com)
### NXP (Kinetis)

View File

@@ -131,6 +131,8 @@ If you define these options you will disable the associated feature, which can s
If you define these options you will enable the associated feature, which may increase your code size.
* `#define ENABLE_COMPILE_KEYCODE`
* Enables the `QK_MAKE` keycode
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define STRICT_LAYER_RELEASE`

View File

@@ -44,7 +44,7 @@ In other cases you should group like options together in an `object`. This is pa
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
* `info_key`: (required) The location within `info.json` for this value. See below.
* `value_type`: (optional) Default `str`. The format for this variable's value. See below.
* `value_type`: (optional) Default `raw`. The format for this variable's value. See below.
* `to_json`: (optional) Default `true`. Set to `false` to exclude this mapping from info.json
* `to_c`: (optional) Default `true`. Set to `false` to exclude this mapping from config.h
* `warn_duplicate`: (optional) Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -57,7 +57,7 @@ Under the hood we use [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/)
#### Value Types
By default we treat all values as simple strings. If your value is more complex you can use one of these types to intelligently parse the data:
By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:
* `array`: A comma separated array of strings
* `array.int`: A comma separated array of integers
@@ -65,6 +65,7 @@ By default we treat all values as simple strings. If your value is more complex
* `hex`: A number formatted as hex
* `list`: A space separate array of strings
* `mapping`: A hash of key/value pairs
* `str`: A quoted string literal
### Add code to extract it

View File

@@ -3,6 +3,7 @@
This page covers questions people often have about keymaps. If you haven't you should read [Keymap Overview](keymap.md) first.
## What Keycodes Can I Use?
See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available.
Keycodes are actually defined in [quantum/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
@@ -25,25 +26,30 @@ Sometimes, for readability's sake, it's useful to define custom names for some k
This will allow you to use `FN_CAPS` and `ALT_TAB` in your keymap, keeping it more readable.
## My Keymap Doesn't Update When I Flash It
This is usually due to VIA, and has to do with how it deals with keymaps.
On first run, the VIA code in the firmware will copy the keymap from flash memory into EEPROM so that it can be rewritten at runtime by the VIA app. From this point QMK will use the keymap stored in EEPROM instead of flash, and so updates to your `keymap.c` will not be reflected.
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.
* 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.
## Some Of My Keys Are Swapped Or Not Working
QMK has two features, Bootmagic and Command, which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling Gui, swapping Alt/Gui, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.
QMK has a couple of features which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling GUI, swapping Alt/GUI, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.
As a quick fix try holding down `Space`+`Backspace` while you plug in your keyboard. This will reset the stored settings on your keyboard, returning those keys to normal operation. If that doesn't work look here:
Refer to the EEPROM clearing methods above, which should return those keys to normal operation. If that doesn't work, look here:
* [Bootmagic Lite](feature_bootmagic.md)
* [Command](feature_command.md)
* [Magic Keycodes](keycodes_magic.md)
* [Command](feature_command.md)
## The Menu Key Isn't Working
The key found on most modern keyboards that is located between `KC_RGUI` and `KC_RCTL` is actually called `KC_APP`. This is because when that key was invented there was already a key named `MENU` in the relevant standards, so MS chose to call that the `APP` key.
## `KC_SYSTEM_REQUEST` Isn't Working
Use keycode for Print Screen (`KC_PRINT_SCREEN`/`KC_PSCR`) instead of `KC_SYSTEM_REQUEST`. Key combination of 'Alt + Print Screen' is recognized as 'System request'.
See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and
* https://en.wikipedia.org/wiki/Magic_SysRq_key
* https://en.wikipedia.org/wiki/System_request
The key found on most modern keyboards that is located between `KC_RGUI` and `KC_RCTL` is actually called `KC_APP`. This is because when the key was invented, there was already a key named "Menu" in the HID specification, so for whatever reason, Microsoft chose to create a new key and call it "Application".
## Power Keys Aren't Working
@@ -52,10 +58,12 @@ Somewhat confusingly, there are two "Power" keycodes in QMK: `KC_KB_POWER` in th
The former is only recognized on macOS, while the latter, `KC_SLEP` and `KC_WAKE` are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears.
## One Shot Modifier
Solves my personal 'the' problem. I often got 'the' or 'THe' wrongly instead of 'The'. One Shot Shift mitigates this for me.
https://github.com/tmk/tmk_keyboard/issues/67
## Modifier/Layer Stuck
Modifier keys or layers can be stuck unless layer switching is configured properly.
For Modifier keys and layer actions you have to place `KC_TRNS` on same position of destination layer to unregister the modifier key or return to previous layer on release event.
@@ -63,12 +71,11 @@ For Modifier keys and layer actions you have to place `KC_TRNS` on same position
* https://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
* https://github.com/tmk/tmk_keyboard/issues/248
## Mechanical Lock Switch Support
This feature is for *mechanical lock switch* like [this Alps one](https://deskthority.net/wiki/Alps_SKCL_Lock). You can enable it by adding this to your `config.h`:
```
```c
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
```
@@ -91,6 +98,7 @@ Even worse, it is not recognized unless the keyboard's VID and PID match that of
See [this issue](https://github.com/qmk/qmk_firmware/issues/2179) for detailed information.
## Keys Supported in Mac OSX?
You can know which keycodes are supported in OSX from this source code.
`usb_2_adb_keymap` array maps Keyboard/Keypad Page usages to ADB scancodes(OSX internal keycodes).
@@ -101,8 +109,8 @@ And `IOHIDConsumer::dispatchConsumerEvent` handles Consumer page usages.
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp
## JIS Keys in Mac OSX
Japanese JIS keyboard specific keys like `無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)` are not recognized on OSX. You can use **Seil** to enable those keys, try following options.
* Enable NFER Key on PC keyboard
@@ -111,8 +119,8 @@ Japanese JIS keyboard specific keys like `無変換(Muhenkan)`, `変換(Henkan)`
https://pqrs.org/osx/karabiner/seil.html
## RN-42 Bluetooth Doesn't Work with Karabiner
Karabiner - Keymapping tool on Mac OSX - ignores inputs from RN-42 module by default. You have to enable this option to make Karabiner working with your keyboard.
https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237
@@ -120,37 +128,24 @@ See these for the detail of this problem.
https://github.com/tmk/tmk_keyboard/issues/213
https://github.com/tekezo/Karabiner/issues/403
## Esc and <code>&#96;</code> on a Single Key
See the [Grave Escape](feature_grave_esc.md) feature.
## Eject on Mac OSX
`KC_EJCT` keycode works on OSX. https://github.com/tmk/tmk_keyboard/issues/250
It seems Windows 10 ignores the code and Linux/Xorg recognizes but has no mapping by default.
Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses `F20` for Eject key(`Fn+f`) on Mac mode but this is not same as Apple Eject keycode probably.
Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses `F20` for Eject key(`Fn+F`) on Mac mode but this is not same as Apple Eject keycode probably.
## What are "Real" and "Weak" modifiers?
## What's `weak_mods` and `real_mods` in `action_util.c`
___TO BE IMPROVED___
Real modifiers refer to the state of the real/physical modifier keys, while weak modifiers are the state of "virtual" or temporary modifiers which should not interfere with the internal state of the real modifier keys.
real_mods is intended to retains state of real/physical modifier key state, while
weak_mods retains state of virtual or temporary modifiers which should not affect state real modifier key.
The real and weak modifier states are ORed together when the keyboard report is sent, so if you release a weak modifier while the same real modifier is still held, the report does not change:
Let's say you hold down physical left shift key and type ACTION_MODS_KEY(LSHIFT, KC_A),
with weak_mods,
* (1) hold down left shift: real_mods |= MOD_BIT(LSHIFT)
* (2) press ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods |= MOD_BIT(LSHIFT)
* (3) release ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods &= ~MOD_BIT(LSHIFT)
real_mods still keeps modifier state.
without weak mods,
* (1) hold down left shift: real_mods |= MOD_BIT(LSHIFT)
* (2) press ACTION_MODS_KEY(LSHIFT, KC_A): real_mods |= MOD_BIT(LSHIFT)
* (3) release ACTION_MODS_KEY(LSHIFT, KC_A): real_mods &= ~MOD_BIT(LSHIFT)
here real_mods lost state for 'physical left shift'.
weak_mods is ORed with real_mods when keyboard report is sent.
https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
1. **Hold down physical Left Shift:** Real mods now contains Left Shift, final state is Left Shift
2. **Add weak Left Shift:** Weak mods now contains Left Shift, final state is Left Shift
3. **Remove weak Left Shift:** Weak mods now contains nothing, final state is Left Shift
4. **Release physical Left Shift:** Real mods now contains nothing, final state is nothing

View File

@@ -39,7 +39,7 @@ In practice, this means that you can check whether a given modifier is active wi
To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
The full list of mod masks is as follows:

156
docs/feature_caps_word.md Normal file
View File

@@ -0,0 +1,156 @@
# Caps Word
It is often useful to type a single word in all capitals, for instance
abbreviations like "QMK", or in code, identifiers like `KC_SPC`. "Caps Word" is
a modern alternative to Caps Lock:
* Letters are capitalized while active, and Caps Word automatically disables
itself at the end of the word. That is, it stops by default once a space or
any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace is
pressed. Caps Word also disables itself if the keyboard is idle for 5 seconds.
This is configurable, see below.
* To avoid requiring a dedicated key for Caps Word, there is an option
(`BOTH_SHIFTS_TURNS_ON_CAPS_WORD`) to activate Caps Word by simultaneously
pressing both shift keys. See below for other options.
* The implementation does not use the Caps Lock (`KC_CAPS`) keycode. Caps Word
works even if you're remapping Caps Lock at the OS level to Ctrl or something
else, as Emacs and Vim users often do.
## How do I enable Caps Word :id=how-do-i-enable-caps-word
In your `rules.mk`, add:
```make
CAPS_WORD_ENABLE = yes
```
Next, use one the following methods to activate Caps Word:
* **Activate by pressing a key**: Use the `CAPS_WORD` keycode (short
alias `CAPSWRD`) in your keymap.
* **Activate by pressing Left Shift + Right Shift**: Add `#define
BOTH_SHIFTS_TURNS_ON_CAPS_WORD` to config.h. You may also need to disable or
reconfigure Command, details below. Then, simultaneously pressing both left
and right shifts turns on Caps Word. This method works with the plain
`KC_LSFT` and `KC_RSFT` keycodes as well as one-shot shifts and Space Cadet
shifts. If your shift keys are mod-taps, hold both shift mod-tap keys until
the tapping term, then release them.
* **Activate by double tapping Left Shift**: Add `#define
DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD` config.h. Then, double tapping Left Shift
turns on Caps Word. This method works with `KC_LSFT` or one-shot Left Shift
`OSM(MOD_LSFT)`. To count as a double tap, the maximum time in milliseconds
between taps is `TAPPING_TERM`, or if using `TAPPING_TERM_PER_KEY`, the time
returned by `get_tapping_term()` for the shift keycode being tapped.
* **Custom activation**: You can activate Caps Word from code by calling
`caps_word_on()`. This may be used to activate Caps Word through [a
combo](feature_combo.md) or [tap dance](feature_tap_dance.md) or any means
you like.
### Troubleshooting: Command :id=troubleshooting-command
When using `BOTH_SHIFTS_TURNS_ON_CAPS_WORD`, you might see a compile message
**"BOTH_SHIFTS_TURNS_ON_CAPS_WORD and Command should not be enabled at the same
time, since both use the Left Shift + Right Shift key combination."**
Many keyboards enable the [Command feature](feature_command.md), which by
default is also activated using the Left Shift + Right Shift key combination. To
fix this conflict, please disable Command by adding in rules.mk:
```make
COMMAND_ENABLE = no
```
Or configure Command to use another key combination like Left Ctrl + Right Ctrl
by defining `IS_COMMAND()` in config.h:
```c
// Activate Command with Left Ctrl + Right Ctrl.
#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL)
```
## Customizing Caps Word :id=customizing-caps-word
### Idle timeout :id=idle-timeout
Caps Word turns off automatically if no keys are pressed for
`CAPS_WORD_IDLE_TIMEOUT` milliseconds. The default is 5000 (5 seconds).
Configure the timeout duration in config.h, for instance
```c
#define CAPS_WORD_IDLE_TIMEOUT 3000 // 3 seconds.
```
Setting `CAPS_WORD_IDLE_TIMEOUT` to 0 configures Caps Word to never time out.
Caps Word then remains active indefinitely until a word breaking key is pressed.
### Functions :id=functions
Functions to manipulate Caps Word:
| Function | Description |
|-------------------------|------------------------------------------------|
| `caps_word_on()` | Turns Caps Word on. |
| `caps_word_off()` | Turns Caps Word off. |
| `caps_word_toggle()` | Toggles Caps Word. |
| `is_caps_word_on()` | Returns true if Caps Word is currently on. |
### Configure which keys are "word breaking" :id=configure-which-keys-are-word-breaking
You can define the `caps_word_press_user(uint16_t keycode)` callback to
configure which keys should be shifted and which keys are considered "word
breaking" and stop Caps Word.
The callback is called on every key press while Caps Word is active. When the
key should be shifted (that is, a letter key), the callback should call
`add_weak_mods(MOD_BIT(KC_LSFT))` to shift the key. Returning true continues the
current "word," while returning false is "word breaking" and deactivates Caps
Word. The default callback is
```c
bool caps_word_press_user(uint16_t keycode) {
switch (keycode) {
// Keycodes that continue Caps Word, with shift applied.
case KC_A ... KC_Z:
case KC_MINS:
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
return true;
// Keycodes that continue Caps Word, without shifting.
case KC_1 ... KC_0:
case KC_BSPC:
case KC_DEL:
case KC_UNDS:
return true;
default:
return false; // Deactivate Caps Word.
}
}
```
### Representing Caps Word state :id=representing-caps-word-state
Define `caps_word_set_user(bool active)` to get callbacks when Caps Word turns
on or off. This is useful to represent the current Caps Word state, e.g. by
setting an LED or playing a sound. In your keymap, define
```c
void caps_word_set_user(bool active) {
if (active) {
// Do something when Caps Word activates.
} else {
// Do something when Caps Word deactivates.
}
}
```

View File

@@ -54,9 +54,43 @@ If you are using different pinouts for the encoders on each half of a split keyb
#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }
```
If the `_RIGHT` definitions aren't specified in your `config.h`, then the non-`_RIGHT` versions will be applied to both sides of the split.
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_RESOLUTIONS { }
#define ENCODERS_PAD_A_RIGHT { B12 }
#define ENCODERS_PAD_B_RIGHT { B13 }
#define ENCODER_RESOLUTIONS_RIGHT { 4 }
```
## Encoder map :id=encoder-map
Encoder mapping may be added to your `keymap.c`, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your `rules.mk`:
```make
ENCODER_MAP_ENABLE = yes
```
Your `keymap.c` will then need an encoder mapping defined (for four layers and two encoders):
```c
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_LOWER] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
[_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
};
#endif
```
## Callbacks
The callback functions can be inserted into your `<keyboard>.c`:
When not using `ENCODER_MAP_ENABLE = yes`, the callback functions can be inserted into your `<keyboard>.c`:
```c
bool encoder_update_kb(uint8_t index, bool clockwise) {

View File

@@ -50,22 +50,28 @@ Not all keycodes below will work depending on which haptic mechanism you have ch
### Solenoids
First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
The solenoid code supports relay switches, and similar hardware, as well as solenoids.
For a regular solenoid, you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
[Wiring diagram provided by Adafruit](https://cdn-shop.adafruit.com/product-files/412/solenoid_driver.pdf)
For relay switches, the hardware may already contain all of that ciruitry, and just require VCC, GND and a data pin.
| Settings | Default | Description |
|----------------------------|----------------------|-------------------------------------------------------|
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. |
|`SOLENOID_PIN_ACTIVE_LOW` | *Not defined* |If defined then the solenoid trigger pin is active low.|
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. |
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
|`SOLENOID_DWELL_STEP_SIZE` | `1` ms |The step size to use when `HPT_DWL*` keycodes are sent |
|`SOLENOID_DEFAULT_BUZZ` | `0` (disabled) |On HPT_RST buzz is set "on" if this is "1" |
|`SOLENOID_BUZZ_ACTUATED` | `SOLENOID_MIN_DWELL` |Actuated-time when the solenoid is in buzz mode |
|`SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` |Non-Actuated-time when the solenoid is in buzz mode |
| Settings | Default | Description |
|----------------------------|----------------------|--------------------------------------------------------------|
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the switch is connected to. |
|`SOLENOID_PIN_ACTIVE_LOW` | *Not defined* |If defined then the switch trigger pin is active low. |
|`SOLENOID_PINS` | *Not defined* |Configures an array of pins to be used for switch activation. |
|`SOLENOID_PINS_ACTIVE_LOW` | *Not defined* |Allows you to specify how each pin is pulled for activation. |
|`SOLENOID_RANDOM_FIRE` | *Not defined* |When there are multiple solenoids, will select a random one to fire.|
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the switch. |
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
|`SOLENOID_DWELL_STEP_SIZE` | `1` ms |The step size to use when `HPT_DWL*` keycodes are sent. |
|`SOLENOID_DEFAULT_BUZZ` | `0` (disabled) |On HPT_RST buzz is set "on" if this is "1" |
|`SOLENOID_BUZZ_ACTUATED` | `SOLENOID_MIN_DWELL` |Actuated-time when the switch is in buzz mode. |
|`SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` |Non-Actuated-time when the switch is in buzz mode. |
* If solenoid buzz is off, then dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds.
* If solenoid buzz is on, then dwell time sets the length of the buzz, while `SOLENOID_BUZZ_ACTUATED` and `SOLENOID_BUZZ_NONACTUATED` set the (non-)actuation times withing the buzz period.

View File

@@ -1,57 +1,298 @@
# HD44780 LCD Displays
# HD44780 LCD Driver
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
## Supported Hardware
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
LCD modules using [HD44780U](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf) IC or equivalent, communicating in 4-bit mode.
## Configuration
|Module|Size |Notes |
|------|--------------|---------------------------------|
|1602A |16x2, 5x8 dots| |
|2004A |20x4, 5x8 dots|Untested, not currently supported|
You will need to configure the pins used by your display, and its number of lines and columns in your keyboard's `config.h`.
Uncomment the section labled HD44780 and change the parameters as needed.
````
/*
* HD44780 LCD Display Configuration
*/
#define LCD_LINES 2 //< number of visible lines of the display
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
#if LCD_IO_MODE
#define LCD_PORT PORTB //< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
#define LCD_RW_PORT LCD_PORT //< port for RW line
#define LCD_RW_PIN 2 //< pin for RW line
#define LCD_E_PORT LCD_PORT //< port for Enable line
#define LCD_E_PIN 1 //< pin for Enable line
#endif
````
Should you need to configure other properties you can copy them from `quantum/hd44780.h` and set them in your `config.h`
To run these modules at 3.3V, an additional MAX660 voltage converter IC must be soldered on, along with two 10µF capacitors. See [this page](https://www.codrey.com/electronic-circuits/hack-your-16x2-lcd/) for more details.
## Usage
To initialize your display, call `lcd_init()` with one of these parameters:
````
LCD_DISP_OFF : display off
LCD_DISP_ON : display on, cursor off
LCD_DISP_ON_CURSOR : display on, cursor on
LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
````
This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
It is advised to clear the display before use.
To do so call `lcd_clrscr()`.
Add the following to your `rules.mk`:
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
```make
HD44780_ENABLE = yes
```
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
## Basic Configuration
Add the following to your `config.h`:
|Define |Default |Description |
|-----------------------|--------------|-----------------------------------------------------------------------------------------------------|
|`HD44780_DATA_PINS` |*Not defined* |(Required) An array of four GPIO pins connected to the display's D4-D7 pins, eg. `{ B1, B3, B2, B6 }`|
|`HD44780_RS_PIN` |*Not defined* |(Required) The GPIO connected to the display's RS pin |
|`HD44780_RW_PIN` |*Not defined* |(Required) The GPIO connected to the display's RW pin |
|`HD44780_E_PIN` |*Not defined* |(Required) The GPIO connected to the display's E pin |
|`HD44780_DISPLAY_COLS` |`16` |The number of visible characters on a single line of the display |
|`HD44780_DISPLAY_LINES`|`2` |The number of visible lines on the display |
|`HD44780_WRAP_LINES` |*Not defined* |If defined, input characters will wrap to the next line |
## Examples
### Hello World
Add the following to your `keymap.c`:
```c
void keyboard_post_init_user(void) {
hd44780_init(true, true); // Show blinking cursor
hd44780_puts_P(PSTR("Hello, world!\n"));
}
```
### Custom Character Definition
Up to eight custom characters can be defined. This data is stored in the Character Generator RAM (CGRAM), and is not persistent across power cycles.
This example defines the QMK Psi as the first custom character. The first 16 positions in the character set are reserved for the eight custom characters duplicated.
```
Byte | 16 8 4 2 1
1 | x x x ■ □ ■ □ ■
2 | x x x ■ □ ■ □ ■
3 | x x x ■ □ ■ □ ■
4 | x x x □ ■ ■ ■ □
5 | x x x □ □ ■ □ □
6 | x x x □ □ ■ □ □
7 | x x x □ □ ■ □ □
8 | x x x □ □ □ □ □
```
```c
const uint8_t PROGMEM psi[8] = { 0x15, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x04, 0x00 };
void keyboard_post_init_user(void) {
hd44780_init(false, false);
hd44780_define_char_P(0, psi);
// Cursor is incremented while defining characters so must be reset
hd44780_home();
// 0x08 to avoid null terminator
hd44780_puts_P(PSTR("\x08 QMK Firmware"));
}
```
## API
### `void hd44780_init(bool cursor, bool blink)`
Initialize the display.
This function should be called only once, before any of the other functions can be called.
#### Arguments
- `bool cursor`
Whether to show the cursor.
- `bool blink`
Whether to blink the cursor, if shown.
---
### `void hd44780_clear(void)`
Clear the display.
This function is called on init.
---
### `void hd44780_home(void)`
Move the cursor to the home position.
This function is called on init.
---
### `void hd44780_on(bool cursor, bool blink)`
Turn the display on, and/or set the cursor properties.
This function is called on init.
#### Arguments
- `bool cursor`
Whether to show the cursor.
- `bool blink`
Whether to blink the cursor, if shown.
---
### `void hd44780_off(void)`
Turn the display off.
---
### `void hd44780_set_cursor(uint8_t col, uint8_t line)`
Move the cursor to the specified position on the display.
#### Arguments
- `uint8_t col`
The column number to move to, from 0 to 15 on 16x2 displays.
- `bool line`
The line number to move to, either 0 or 1 on 16x2 displays.
---
### `void hd44780_putc(char c)`
Print a character to the display. The newline character `\n` will move the cursor to the start of the next line.
The exact character shown may depend on the ROM code of your particular display - refer to the datasheet for the full character set.
#### Arguments
- `char c`
The character to print.
---
### `void hd44780_puts(const char *s)`
Print a string of characters to the display.
#### Arguments
- `const char *s`
The string to print.
---
### `void hd44780_puts_P(const char *s)`
Print a string of characters from PROGMEM to the display.
On ARM devices, this function is simply an alias of `hd44780_puts()`.
#### Arguments
- `const char *s`
The PROGMEM string to print (ie. `PSTR("Hello")`).
---
### `void hd44780_define_char(uint8_t index, uint8_t *data)`
Define a custom character.
#### Arguments
- `uint8_t index`
The index of the custom character to define, from 0 to 7.
- `uint8_t *data`
An array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
---
### `void hd44780_define_char_P(uint8_t index, const uint8_t *data)`
Define a custom character from PROGMEM.
On ARM devices, this function is simply an alias of `hd44780_define_char()`.
#### Arguments
- `uint8_t index`
The index of the custom character to define, from 0 to 7.
- `const uint8_t *data`
A PROGMEM array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
---
### `bool hd44780_busy(void)`
Indicates whether the display is currently processing, and cannot accept instructions.
#### Return Value
`true` if the display is busy.
---
### `void hd44780_write(uint8_t data, bool isData)`
Write a byte to the display.
#### Arguments
- `uint8_t data`
The byte to send to the display.
- `bool isData`
Whether the byte is an instruction or character data.
---
### `uint8_t hd44780_read(bool isData)`
Read a byte from the display.
#### Arguments
- `bool isData`
Whether to read the current cursor position, or the character at the cursor.
#### Return Value
If `isData` is `true`, the returned byte will be the character at the current DDRAM address. Otherwise, it will be the current DDRAM address and the busy flag.
---
### `void hd44780_command(uint8_t command)`
Send a command to the display. Refer to the datasheet and `hd44780.h` for the valid commands and defines.
This function waits for the display to clear the busy flag before sending the command.
#### Arguments
- `uint8_t command`
The command to send.
---
### `void hd44780_data(uint8_t data)`
Send a byte of data to the display.
This function waits for the display to clear the busy flag before sending the data.
#### Arguments
- `uint8_t data`
The byte of data to send.
---
### `void hd44780_set_cgram_address(uint8_t address)`
Set the CGRAM address.
This function is used when defining custom characters.
#### Arguments
- `uint8_t address`
The CGRAM address to move to, from `0x00` to `0x3F`.
---
### `void hd44780_set_ddram_address(uint8_t address)`
Set the DDRAM address.
This function is used when printing characters to the display, and setting the cursor.
#### Arguments
- `uint8_t address`
The DDRAM address to move to, from `0x00` to `0x7F`.

View File

@@ -150,3 +150,5 @@ Note that the supported AVR MCUs have a 10-bit ADC, and 12-bit for most STM32 MC
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
To trigger a joystick button, just add the corresponding keycode to your keymap.
You can also trigger joystick buttons in code with `register_joystick_button(button)` and `unregister_joystick_button(button)`, where `button` is the 0-based button index (0 = button 1).

View File

@@ -11,13 +11,13 @@ QMK provides methods to read 5 of the LEDs defined in the HID spec:
* Kana
There are three ways to get the lock LED state:
* by specifying configuration options within `config.h`
* by implementing `bool led_update_kb(led_t led_state)` or `_user(led_t led_state)`; or
* by calling `led_t host_keyboard_led_state()`
* Configuration options in `config.h`
* Implement `led_update_*` function
* Call `led_t host_keyboard_led_state()`
!> `host_keyboard_led_state()` may already reflect a new value before `led_update_user()` is called.
!> The `host_keyboard_led_state()` may reflect an updated state before `led_update_user()` is called.
Two more deprecated functions exist that provide the LED state as a `uint8_t`:
Two deprecated functions that provide the LED state as `uint8_t`:
* `uint8_t led_set_kb(uint8_t usb_led)` and `_user(uint8_t usb_led)`
* `uint8_t host_keyboard_leds()`
@@ -37,23 +37,20 @@ To configure the indicators, `#define` these in your `config.h`:
Unless you are designing your own keyboard, you generally should not need to change the above config options.
## `led_update_*()`
## LED update function
When the configuration options do not provide enough flexibility, the API hooks provided allow custom control of the LED behavior. These functions will be called when the state of one of those 5 LEDs changes. It receives the LED state as a struct parameter.
When the configuration options do not provide enough flexibility, the following callbacks allow custom control of the LED behavior. These functions will be called when one of those 5 LEDs changes state:
By convention, return `true` from `led_update_user()` to get the `led_update_kb()` hook to run its code, and
return `false` when you would prefer not to run the code in `led_update_kb()`.
* Keyboard/revision: `bool led_update_kb(led_t led_state)`
* Keymap: `bool led_update_user(led_t led_state)`
Some examples include:
Both receives LED state as a struct parameter. Returning `true` in `led_update_user()` will allow the keyboard level code in `led_update_kb()` to run as well. Returning `false` will override the keyboard level code, depending on how the keyboard level function is set up.
- overriding the LEDs to use them for something else like layer indication
- return `false` because you do not want the `_kb()` function to run, as it would override your layer behavior.
- play a sound when an LED turns on or off.
- return `true` because you want the `_kb` function to run, and this is in addition to the default LED behavior.
?> This boolean return type of `led_update_user` allows for overriding keyboard LED controls, and is thus recommended over the void `led_set_user` function.
?> Because the `led_set_*` functions return `void` instead of `bool`, they do not allow for overriding the keyboard LED control, and thus it's recommended to use `led_update_*` instead.
### Example of keyboard LED update implementation
### Example `led_update_kb()` Implementation
This is a template indicator function that can be implemented on keyboard level code:
```c
bool led_update_kb(led_t led_state) {
@@ -74,9 +71,9 @@ bool led_update_kb(led_t led_state) {
}
```
### Example `led_update_user()` Implementation
### Example of user LED update implementation
This incomplete example would play a sound if Caps Lock is turned on or off. It returns `true`, because you also want the LEDs to maintain their state.
This is an incomplete example will play a sound if Caps Lock is turned on or off. It returns `true` to allow keyboard LED function to maintain their state.
```c
#ifdef AUDIO_ENABLE
@@ -96,18 +93,17 @@ bool led_update_user(led_t led_state) {
}
```
### `led_update_*` Function Documentation
## Host keyboard LED state
* Keyboard/Revision: `bool led_update_kb(led_t led_state)`
* Keymap: `bool led_update_user(led_t led_state)`
The `host_keyboard_led_state()` function will report the LED state returned from the host computer as `led_t`. This is useful for reading the LED state outside `led_update_*`. For example, you can get the boolean state of Caps Lock from the host with:
## `host_keyboard_led_state()`
Call this function to get the last received LED state as a `led_t`. This is useful for reading the LED state outside `led_update_*`, e.g. in [`matrix_scan_user()`](#matrix-scanning-code).
```c
bool caps = host_keyboard_led_state().caps_lock;
```
## Setting Physical LED State
Some keyboard implementations provide convenience methods for setting the state of the physical LEDs.
Some keyboard implementations provide convenient methods for setting the state of the physical LEDs.
### Ergodox Boards

View File

@@ -264,11 +264,11 @@ enum led_matrix_effects {
};
```
You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`:
You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `config.h`:
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|Define |Description |
|-------------------------------------------------------|----------------------------------------------|
|`#define ENABLE_LED_MATRIX_ALPHAS_MODS` |Enables `LED_MATRIX_ALPHAS_MODS` |
|`#define ENABLE_LED_MATRIX_BREATHING` |Enables `LED_MATRIX_BREATHING` |
|`#define ENABLE_LED_MATRIX_BAND` |Enables `LED_MATRIX_BAND` |
@@ -278,6 +278,13 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|`#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN` |Enables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define ENABLE_LED_MATRIX_CYCLE_OUT_IN` |Enables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define ENABLE_LED_MATRIX_DUAL_BEACON` |Enables `LED_MATRIX_DUAL_BEACON` |
|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` |
?> These modes don't require any additional defines.
|Reactive Defines |Description |
|-------------------------------------------------------|----------------------------------------------|
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
@@ -287,8 +294,8 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define ENABLE_LED_MATRIX_SOLID_SPLASH` |Enables `LED_MATRIX_SOLID_SPLASH` |
|`#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH` |Enables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` |
?> These modes also require the `LED_MATRIX_KEYPRESSES` or `LED_MATRIX_KEYRELEASES` define to be available.
## Custom LED Matrix Effects :id=custom-led-matrix-effects

View File

@@ -10,6 +10,10 @@ MIDI_ENABLE = yes
There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like `MI_OCTU` and `MI_OCTD` will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.
### Caveats
MIDI requires 2 USB endpoints and as such may not work on some hardware such as V-USB controllers.
### Basic MIDI
To enable basic MIDI, add the following to your `config.h`:
@@ -254,7 +258,7 @@ For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on.
<!--
#### QMK Internals (Autogenerated)
* [Internals/MIDI Device Setup Process](internals_midi_device_setup_process.md)
* [Internals/MIDI Device](internals_midi_device.md)
* [Internals/MIDI Util](internals_midi_util.md)
* [Internals/MIDI Device Setup Process](internals/midi_device_setup_process.md)
* [Internals/MIDI Device](internals/midi_device.md)
* [Internals/MIDI Util](internals/midi_util.md)
-->

View File

@@ -134,6 +134,7 @@ The Pimoroni Trackball module is a I2C based breakout board with an RGB enable t
### PMW 3360 Sensor
This drivers supports multiple sensors _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
To use the PMW 3360 sensor, add this to your `rules.mk`
```make
@@ -145,6 +146,7 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
| Setting | Description | Default |
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3360_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ |
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
@@ -155,6 +157,36 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
To use multiple sensors, instead of setting `PMW3360_CS_PIN` you need to set `PMW3360_CS_PINS` and also handle and merge the read from this sensor in user code.
Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported.
```c
// in config.h:
#define PMW3360_CS_PINS { B5, B6 }
// in keyboard.c:
#ifdef POINTING_DEVICE_ENABLE
void pointing_device_init_kb(void) {
pmw3360_init(1); // index 1 is the second device.
pointing_device_set_cpi(800); // applies to both sensors
pointing_device_init_user();
}
// Contains report from sensor #0 already, need to merge in from sensor #1
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
report_pmw3360_t data = pmw3360_read_burst(1);
if (data.isOnSurface && data.isMotion) {
// From quantum/pointing_device_drivers.c
#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))
mouse_report.x = constrain_hid(mouse_report.x + data.dx);
mouse_report.y = constrain_hid(mouse_report.y + data.dy);
}
return pointing_device_task_user(mouse_report);
}
#endif
```
### PMW 3389 Sensor
To use the PMW 3389 sensor, add this to your `rules.mk`

View File

@@ -171,6 +171,7 @@ Configure the hardware via your `config.h`:
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
@@ -519,7 +520,7 @@ All RGB keycodes are currently shared with the RGBLIGHT system:
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held|
|`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held|
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|`RGB_MODE_PLAIN` |`RGB_M_P` |Static (no animation) mode |
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Full gradient scrolling left to right (uses the `RGB_MATRIX_CYCLE_LEFT_RIGHT` mode) |
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Full gradient spinning pinwheel around center of keyboard (uses `RGB_MATRIX_CYCLE_PINWHEEL` mode) |
@@ -656,18 +657,19 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi
### RGB Matrix Effect Typing Heatmap :id=rgb-matrix-effect-typing-heatmap
This effect will color the RGB matrix according to a heatmap of recently pressed
keys. Whenever a key is pressed its "temperature" increases as well as that of
its neighboring keys. The temperature of each key is then decreased
automatically every 25 milliseconds by default.
This effect will color the RGB matrix according to a heatmap of recently pressed keys. Whenever a key is pressed its "temperature" increases as well as that of its neighboring keys. The temperature of each key is then decreased automatically every 25 milliseconds by default.
In order to change the delay of temperature decrease define
`RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS`:
In order to change the delay of temperature decrease define `RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS`:
```c
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
```
Heatmap effect may not light up the correct adjacent LEDs for certain key matrix layout such as split keyboards. The following define will limit the effect to pressed keys only:
```c
#define RGB_MATRIX_TYPING_HEATMAP_SLIM
```
## Custom RGB Matrix Effects :id=custom-rgb-matrix-effects
By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a `rgb_matrix_user.inc` file in the user keymap directory or userspace folder.

View File

@@ -326,6 +326,19 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
```
would turn the layer 0 (or 1) on and off again three times when `DEBUG` is pressed.
Blinking accumulates layers so if multiple layers are set blinking at the same time they will all blink for the duration and repeat times of the last layer to be blinked.
To stop these other layers from blinking use `rgblight_unblink_layer` or `rgblight_unblink_all_but_layer`:
```c
rgblight_blink_layer(1, 500);
rgblight_unblink_all_but_layer(1);
```
```c
rgblight_unblink_layer(3);
rgblight_blink_layer(2, 500);
```
!> Lighting layers on split keyboards will require layer state synced to the slave half (e.g. `#define SPLIT_LAYER_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
### Overriding RGB Lighting on/off status

View File

@@ -10,6 +10,8 @@ For this, we will mostly be talking about the generic implementation used by the
!> ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported.
!> Both sides must use the same MCU family, for eg two Pro Micro-compatible controllers or two Blackpills. Currently, mixing AVR and ARM is not possible as ARM vs AVR uses different method for serial communication, and are not compatible. Moreover Blackpill's uses 3.3v logic, and atmega32u4 uses 5v logic.
## Compatibility Overview
| Transport | AVR | ARM |

View File

@@ -115,8 +115,8 @@ As defined in `keymap_steno.h`.
|`STN_E`|`STN_E`| `E` vowel|
|`STN_U`|`STN_U`| `U` vowel|
|`STN_FR`|`STN_FR`| `-F`|
|`STN_PR`|`STN_PR`| `-P`|
|`STN_RR`|`STN_RR`| `-R`|
|`STN_PR`|`STN_PR`| `-P`|
|`STN_BR`|`STN_BR`| `-B`|
|`STN_LR`|`STN_LR`| `-L`|
|`STN_GR`|`STN_GR`| `-G`|

View File

@@ -31,3 +31,16 @@ Note that the array indices are reversed same as the matrix and the values are o
|`SH_OS` |One shot swap hands: toggles while pressed or until next key press. |
`SH_TT` swap-hands tap-toggle key is similar to [layer tap-toggle](feature_layers.md?id=switching-and-toggling-layers). Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like `SH_TG`. Tap-toggle count can be changed by defining a value for `TAPPING_TOGGLE`.
## Encoder Mapping
When using an encoder mapping, it's also able to handle swapping encoders between sides, too.
Encoder indexes are defined as left-to-right, and the extent of the array needs to match the number of encoders on the keyboard.
As an example, if a split keyboard has a single encoder per side, you can swap the order by using the following code in your keymap:
```c
#if defined(SWAP_HANDS_ENABLE) && defined(ENCODER_MAP_ENABLE)
const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = { 1, 0 };
#endif
```

View File

@@ -230,17 +230,6 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
Example uses include sending Unicode strings when a key is pressed, as described in [Macros](feature_macros.md).
### `send_unicode_hex_string()` (Deprecated)
Similar to `send_unicode_string()`, but the characters are represented by their Unicode code points, written in hexadecimal and separated by spaces. For example, the table flip above would be achieved with:
```c
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
```
An easy way to convert your Unicode string to this format is to use [this site](https://r12a.github.io/app-conversion/) and take the result in the "Hex/UTF-32" section.
## Additional Language Support
In `quantum/keymap_extras`, you'll see various language files — these work the same way as the ones for alternative layouts such as Colemak or BÉPO. When you include one of these language headers, you gain access to keycodes specific to that language / national layout. Such keycodes are defined by a 2-letter country/language code, followed by an underscore and a 4-letter abbreviation of the character to which the key corresponds. For example, including `keymap_french.h` and using `FR_UGRV` in your keymap will output `ù` when typed on a system with a native French AZERTY layout.

View File

@@ -266,7 +266,7 @@ Flashing sequence:
### `make` Targets
* `:dfu-util`: Waits until an STM32 bootloader device is available, and then flashes the firmware.
* `:dfu-util-split-left` and `:dfu-util-split-right`: Flashes the firmware as with `:avrdude`, but also sets the handedness setting in EEPROM. This is ideal for Proton-C-based split keyboards.
* `:dfu-util-split-left` and `:dfu-util-split-right`: Flashes the firmware as with `:dfu-util`, but also sets the handedness setting in EEPROM. This is ideal for Proton-C-based split keyboards.
* `:st-link-cli`: Allows you to flash the firmware via the ST-Link CLI utility, rather than dfu-util. Requires an ST-Link dongle.
* `:st-flash`: Allows you to flash the firmware via the `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink), rather than dfu-util. Requires an ST-Link dongle.
@@ -347,3 +347,14 @@ Flashing sequence:
2. Wait for the OS to detect the device
3. Copy the .uf2 file to the new USB disk
4. Wait for the keyboard to become available
or
CLI Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode
* Double-tap the `nRST` button on the PCB.
2. Wait for the OS to detect the device
3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default`
4. Wait for the keyboard to become available

View File

@@ -35,7 +35,7 @@ USB for a given key.
## 3. What the Event Input/Kernel Does
The *scancode* is mapped to a *keycode* dependent on the keyboard [60-keyboard.hwdb at Master](https://github.com/systemd/systemd/blob/master/hwdb.d/60-keyboard.hwdb). Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.
The *scancode* is mapped to a *keycode* dependent on the keyboard [60-keyboard.hwdb at Main](https://github.com/systemd/systemd/blob/main/hwdb.d/60-keyboard.hwdb). Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.
## 4. What the Operating System Does

View File

@@ -166,7 +166,7 @@ Send multiple bytes to the selected I2C device.
### `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)`
Receive multiple bytes from the selected SPI device.
Receive multiple bytes from the selected I2C device.
#### Arguments

View File

@@ -15,7 +15,7 @@
<meta name="twitter:card" content="summary_large_image">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/buble.css" title="light">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/dark.css" media="(prefers-color-scheme: dark)">
<link rel="stylesheet" href="//unpkg.com/docsify-toc@1.0.0/dist/toc.css">
<link rel="stylesheet" href="//unpkg.com/docsify-toc@1.1.0/dist/toc.css">
<link rel="stylesheet" href="qmk_custom_light.css">
<link rel="stylesheet" href="qmk_custom_dark.css" media="(prefers-color-scheme: dark)">
</head>
@@ -130,7 +130,7 @@
<script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
<script src="//unpkg.com/docsify-tabs@1"></script>
<script src="//unpkg.com/docsify-copy-code@2"></script>
<script src="//unpkg.com/docsify-toc@1.0.0/dist/toc.js"></script>
<script src="//unpkg.com/docsify-toc@1.1.0/dist/toc.js"></script>
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-c.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-cpp.min.js"></script>

View File

@@ -137,7 +137,7 @@
* [EEPROM ドライバ](ja/eeprom_driver.md)
* [シリアル ドライバ](ja/serial_driver.md)
* [UART ドライバ](ja/uart_driver.md)
* [GPIO 制御](ja/internals_gpio_control.md)
* [GPIO 制御](ja/gpio_control.md)
* [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
* Python 開発
@@ -173,10 +173,10 @@
* [QMK を理解する](ja/understanding_qmk.md)
* QMK の内部詳細(作成中)
* [定義](ja/internals_defines.md)
* [入力コールバック登録](ja/internals_input_callback_reg.md)
* [Midi デバイス](ja/internals_midi_device.md)
* [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
* [Midi ユーティリティ](ja/internals_midi_util.md)
* [Midi 送信関数](ja/internals_send_functions.md)
* [Sysex Tools](ja/internals_sysex_tools.md)
* [定義](ja/internals/defines.md)
* [入力コールバック登録](ja/internals/input_callback_reg.md)
* [Midi デバイス](ja/internals/midi_device.md)
* [Midi デバイスのセットアップ手順](ja/internals/midi_device_setup_process.md)
* [Midi ユーティリティ](ja/internals/midi_util.md)
* [Midi 送信関数](ja/internals/send_functions.md)
* [Sysex Tools](ja/internals/sysex_tools.md)

View File

@@ -233,17 +233,6 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
使用例には、[Macros](ja/feature_macros.md) で説明されているように、キーが押された時に Unicode 文字列を送信することが含まれます。
### `send_unicode_hex_string()`
`send_unicode_string()` に似ていますが、文字は Unicode コードポイントで表され、16進数で記述され、空白で区切られています。例えば、上記のちゃぶ台返しは以下で表されます:
```c
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
```
[このサイト](https://r12a.github.io/app-conversion/)で結果を "Hex/UTF-32" で受け取ることで、Unicode 文字列をこの形式に簡単に変換できます。
## 追加の言語サポート
`quantum/keymap_extras` には、様々な言語ファイルがあります — これらは Colemak または BÉPO のような代替レイアウトのファイルと同じように動作します。これらの言語ヘッダのいずれかを `#include` すると、その言語/国のレイアウトに固有のキーコードにアクセスできます。このようなキーコードは、2文字の国/言語コードの後に、アンダースコアとキーが対応する4文字の略語が続くことで定義されます。例えば、キーマップに `keymap_french.h` を含め、`FR_UGRV` を使うと、ネイティブのフランス語 AZERTY レイアウトを使うシステムで入力すると、`ù` が出力されます。

View File

@@ -1,8 +1,8 @@
# GPIO 制御 :id=gpio-control
<!---
original document: 0.13.15:docs/internals_gpio_control.md
git diff 0.13.15 HEAD -- docs/internals_gpio_control.md | cat
original document: 0.13.15:docs/gpio_control.md
git diff 0.13.15 HEAD -- docs/gpio_control.md | cat
-->
QMK には、マイクロコントローラに依存しない GPIO 制御抽象レイヤーがあります。これは異なるプラットフォーム間でピン制御に簡単にアクセスできるようにするためのものです。

View File

@@ -1,78 +0,0 @@
# `defines` グループ {#group__defines}
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) |
`define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) |
`define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) |
`define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) |
`define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) |
`define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) |
`define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) |
`define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) |
`define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) |
`define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) |
`define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) |
`define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) |
`define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) |
`define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) |
`define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) |
`define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) |
`define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) |
`define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) |
`define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) |
`define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) |
`define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) |
`define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) |
`define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) |
## メンバー
#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) {#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79}
#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) {#group__defines_1ga753706d1d28e6f96d7caf1973e80feed}
#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) {#group__defines_1gab78a1c818a5f5dab7a8946543f126c69}
#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) {#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909}
#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) {#group__defines_1ga45f116a1daab76b3c930c2cecfaef215}
#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) {#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7}
#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) {#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc}
#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) {#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f}
#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) {#group__defines_1gabcc799504e8064679bca03f232223af4}
#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) {#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42}
#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) {#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe}
#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) {#group__defines_1gafa5e4e295aafd15ab7893344599b3b89}
#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) {#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7}
#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) {#group__defines_1ga8233631c85823aa546f932ad8975caa4}
#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) {#group__defines_1gab24430f0081e27215b0da84dd0ee745c}
#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) {#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62}
#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) {#group__defines_1gacd88ed42dba52bb4b2052c5656362677}
#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) {#group__defines_1ga02947f30ca62dc332fdeb10c5868323b}
#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) {#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31}
#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) {#group__defines_1ga412f6ed33a2150051374bee334ee1705}
#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) {#group__defines_1gafcab254838b028365ae0259729e72c4e}
#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) {#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795}
#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) {#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f}

View File

@@ -1,173 +0,0 @@
# group `input_callback_reg` {#group__input__callback__reg}
<!---
original document: 0.9.34:docs/internals_input_callback_reg.md
git diff 0.9.34 HEAD -- docs/internals_input_callback_reg.md | cat
-->
これらは受信コールバックを登録するために使用する関数です。
関数は、適切な midi メッセージが関連するデバイスの入力と一致した場合に呼び出されます。
## 概要
| メンバー | 説明 |
--------------------------------|---------------------------------------------
| `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | コントロールチェンジメッセージ受信コールバックを登録する。 |
| `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ノートオン受信コールバックを登録する。 |
| `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ノートオフ受信コールバックを登録する。 |
| `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | アフタータッチ受信コールバックを登録する。 |
| `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ピッチベンド受信コールバックを登録する。 |
| `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ソングポジション受信コールバックを登録する。 |
| `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | プログラムチェンジ受信コールバックを登録する。 |
| `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | チャンネルプレッシャー受信コールバックを登録する。 |
| `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | ソングセレクト受信コールバックを登録する。 |
| `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | タイムコードクォータフレーム受信コールバックを登録する。 |
| `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | リアルタイム受信コールバックを登録する。 |
| `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | チューンリクエスト受信コールバックを登録する。 |
| `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` | システムエクスクルーシブ受信コールバックを登録する。 |
| `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | フォールスルー受信コールバックを登録する。 |
| `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | キャッチオール受信コールバックを登録する。 |
## メンバー
#### `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718}
コントロールチェンジメッセージ受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga3962f276c17618923f1152779552103e}
ノートオン受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d}
ノートオフ受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f}
アフタータッチ受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48}
ピッチベンド受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6}
ソングポジション受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127}
プログラムチェンジ受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5}
チャンネルプレッシャー受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72}
ソングセレクト受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e}
タイムコードクォータフレーム受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a}
リアルタイム受信コールバックを登録する。
全てのリアルタイムメッセージ型に対してコールバックが呼ばれます。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1}
チューンリクエスト受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` {#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48}
システムエクスクルーシブ受信コールバックを登録する。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94}
フォールスルー受信コールバックを登録する。
より具体的なコールバックが見つからない場合にのみ呼ばれます。例えば、ノートオン受信コールバックを登録していないがノートオンメッセージを受け取った場合、フォールスルー受信コールバックが登録されている場合はそれが呼ばれます。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数
#### `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99}
キャッチオール受信コールバックを登録する。
登録されている場合は、より具体的なコールバックあるいはフォールスルー受信コールバックが登録されている場合でも、一致する全てのメッセージに対してキャッチオール受信コールバックが呼ばれます。
#### パラメータ
* `device` 関連するデバイス
* `func` 登録するコールバック関数

View File

@@ -1,148 +0,0 @@
# `midi_device` グループ {#group__midi__device}
<!---
original document: 0.10.9:docs/internals_midi_device.md
git diff 0.10.9 HEAD -- docs/internals_midi_device.md | cat
-->
独自の MIDI デバイスを実装する時に、関数を使います。
実際にデバイスを介してバイトを送信するために、送信関数を設定します。このメソッドは、このデバイスで例えば midi_send_cc のような送信関数を呼ぶ時に呼ばれます。
midi_device_input を使ってデバイスからの入力データを処理し、それをデバイスに関連付けられたコールバックで渡します。
デバイスのプロセス関数の最初に呼び出される関数が必要な場合、midi_device_set_pre_input_process_func を使います。通常、入力をポーリングして midi_device_input に渡します。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) |
`enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) |
`public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` | 入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
`public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` | 出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
`public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` | midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
`struct `[`_midi_device`](docs/api_midi_device.md#struct__midi__device) | この構造体は、MIDI デバイスの入出力関数と処理データを表します。
## メンバー
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
値 | 説明
--------------------------------|---------------------------------------------
IDLE |
ONE_BYTE_MESSAGE |
TWO_BYTE_MESSAGE |
THREE_BYTE_MESSAGE |
SYSEX_MESSAGE |
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
#### パラメータ
* `device` 入力を関連付ける MIDI デバイス
* `cnt` 処理中のバイト数
* `input` 処理するバイトデータ
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
#### パラメータ
* `device` このコールバックを関連付ける MIDI デバイス
* `send_func` 送信を行うコールバック関数
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
#### パラメータ
* `device` このコールバックを関連付ける MIDI デバイス
* `midi_no_byte_func_t` 実際のコールバック関数
# `_midi_device` 構造体 {#struct__midi__device}
この構造体は、MIDI デバイスの入出力関数と処理データを表します。
デバイスは、実際の物理デバイス [シリアルポート、USB ポート]、または仮想デバイスを表すことができます。この構造体を直接変更する必要はありません。
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
`public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) |
`public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) |
`public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) |
`public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) |
`public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) |
`public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) |
`public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) |
`public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) |
`public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) |
`public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) |
`public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) |
`public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) |
`public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) |
`public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) |
`public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) |
`public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) |
`public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) |
`public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) |
`public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) |
`public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) |
`public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) |
`public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) |
## メンバー
#### `public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
#### `public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
#### `public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
#### `public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
#### `public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
#### `public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
#### `public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
#### `public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
#### `public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
#### `public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
#### `public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
#### `public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
#### `public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
#### `public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}

View File

@@ -1,36 +0,0 @@
# `midi_device_setup_process` グループ {#group__midi__device__setup__process}
<!---
original document: 0.10.9:docs/internals_midi_device_setup_process.md
git diff 0.10.9 HEAD -- docs/internals_midi_device_setup_process.md | cat
-->
これらは、デバイスを初期化して実行するために使う必要があるメソッドです。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` | デバイスを初期化します。
`public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 入力データを処理します。
## メンバー
#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9}
デバイスを初期化します。
問題のデバイスを使う前にこれを呼び出す必要があります。
#### パラメータ
* `device` 初期化するデバイス
#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b}
入力データを処理します。
このメソッドは入力処理を駆動します。入力コールバックが呼び出されることが予想される場合は、このメソッドを頻繁に呼び出す必要があります。
#### パラメータ
* `device` 処理するデバイス

View File

@@ -1,59 +0,0 @@
# `midi_util` グループ {#group__midi__util}
<!---
original document: 0.10.9:docs/internals_midi_util.md
git diff 0.10.9 HEAD -- docs/internals_midi_util.md | cat
-->
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
| `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) | 可能なパケット長の値の列挙型。
| `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` | 指定されたバイトがステータスバイトであるかどうかを検査します。
| `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` | 指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
| `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` | 指定されたステータスバイトに関連付けられたパケットの長さを調べます。
## メンバー
#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) {#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e}
| 値 | 説明
--------------------------------|---------------------------------------------
UNDEFINED |
ONE |
TWO |
THREE |
可能なパケット長の値の列挙型。
#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` {#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5}
指定されたバイトがステータスバイトであるかどうかを検査します。
#### パラメータ
* `theByte` 検査するバイト
#### 返り値
指定されたバイトが MIDI ステータスバイトの場合は true
#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` {#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7}
指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
#### パラメータ
* `theByte` 検査するバイト
#### 返り値
リアルタイムメッセージの場合は true、それ以外の場合は false
#### `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` {#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175}
指定されたステータスバイトに関連付けられたパケットの長さを調べます。
#### パラメータ
* `status` ステータスバイト
#### 返り値
パケットの長さ。バイトがステータスバイトではない場合、あるいは sysex ステータスバイトの場合は、UNDEFINED を返します。

View File

@@ -1,246 +0,0 @@
# `send_functions` グループ {#group__send__functions}
<!---
original document: 0.10.9:docs/internals_send_functions.md
git diff 0.10.9 HEAD -- docs/internals_send_functions.md | cat
-->
これらは、デバイスを介して MIDI データを送信するために使う関数です。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` | 指定されたデバイスを介して、コントロールチェンジメッセージを送信します。
`public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオンメッセージを送信します。
`public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオフメッセージを送信します。
`public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` | 指定されたデバイスを介してアフタータッチメッセージを送信します。
`public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` | 指定されたデバイスを介してピッチベンドメッセージを送信します。
`public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` | 指定されたデバイスを介してプログラムチェンジメッセージを送信します。
`public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` | 指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
`public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してクロックメッセージを送信します。
`public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してティックメッセージを送信します。
`public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してスタートメッセージを送信します。
`public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してコンティニューメッセージを送信します。
`public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してストップメッセージを送信します。
`public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してアクティブセンスメッセージを送信します。
`public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してリセットメッセージを送信します。
`public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` | 指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
`public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` | 指定されたデバイスを介してソングポジションメッセージを送信します。
`public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` | 指定されたデバイスを介してソングセレクトメッセージを送信します。
`public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してチューンリクエストメッセージを送信します。
`public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` | 指定されたデバイスを介してバイトを送信します。
`public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` | 最大3バイトのデータを送信します。
`public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` | フォーマットされた MIDI データの配列を送信します。
## メンバー
#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` {#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960}
指定されたデバイスを介して、コントロールチェンジメッセージ(cc)を送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` コントロールチェンジナンバー
* `val` コントロールチェンジナンバーの値
#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775}
指定されたデバイスを介してノートオンメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` ノート番号
* `vel` ノートベロシティ
#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49}
指定されたデバイスを介してノートオフメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` ノート番号
* `vel` ノートベロシティ
#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` {#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f}
指定されたデバイスを介してアフタータッチメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `note_num` ノート番号
* `amt` アフタータッチ量
#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` {#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491}
指定されたデバイスを介してピッチベンドメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `amt` ベンド量の範囲: -8192..8191、0 はベンドしないことを意味します
#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` {#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86}
指定されたデバイスを介してプログラムチェンジメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` 変更先のプログラム
#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` {#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b}
指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `amt` チャンネルプレッシャーの量
#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa}
指定されたデバイスを介してクロックメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga2b43c7d433d940c5b907595aac947972}
指定されたデバイスを介してティックメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc}
指定されたデバイスを介してスタートメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120}
指定されたデバイスを介してコンティニューメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988}
指定されたデバイスを介してストップメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37}
指定されたデバイスを介してアクティブセンスメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b}
指定されたデバイスを介してリセットメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` {#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a}
指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `time` このクォータフレームの時間。範囲は、0..16383
#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` {#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f}
指定されたデバイスを介してソングポジションメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `pos` ソングポジション
#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` {#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50}
指定されたデバイスを介してソングセレクトメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `song` 選択するソング
#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656}
指定されたデバイスを介してチューンリクエストメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` {#group__send__functions_1ga857e85eb90b288385642d4d991e09881}
指定されたデバイスを介してバイトを送信します。
これは、指定された MIDI デバイスを介してデータを送信する一般的なメソッドです。これは、この API に実装されていない sysex データまたはメッセージがある場合、それらを送信するのに役立ちます。そのようなものを見つけた場合は、私たちがそれらを追加できるように、作者に連絡してください。
#### パラメータ
* `device` 送信に使うデバイス
* `b` 送信するバイト
#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` {#group__send__functions_1ga36e2f2e45369d911b76969361679054b}
最大3バイトのデータを送信します。
これを使って sysex を通過できるように count に4の剰余が適用されます。
#### パラメータ
* `device` 送信に使うデバイス
* `count` 送信するバイト数、4の剰余が適用されます
* `byte0` 最初のバイト
* `byte1` 2番目のバイト。cnt % 4 != 2 の場合は無視されます
* `byte2` 3番目のバイト。cnt % 4 != 3 の場合は無視されます
#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` {#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead}
フォーマットされた MIDI データの配列を送信します。
sysex に使うことができます。
#### パラメータ
* `device` 送信に使うデバイス
* `count` 送信するバイト数
* `array` バイトの配列

View File

@@ -1,66 +0,0 @@
# `sysex_tools` グループ {#group__sysex__tools}
<!---
original document: 0.10.9:docs/internals_sysex_tools.md
git diff 0.10.9 HEAD -- docs/internals_sysex_tools.md | cat
-->
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
| `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` | エンコード後のメッセージの長さを計算します。
| `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` | デコード後のメッセージの長さを計算します。
| `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` | sysex メッセージで安全に送信できるようにデータをエンコードします。
| `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` | エンコードされたデータをデコードします。
## メンバー
#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` {#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a}
エンコード後のメッセージの長さを計算します。
#### パラメータ
* `decoded_length` エンコードするメッセージの長さのバイト数。
#### 返り値
エンコード後のメッセージの長さのバイト数。
#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` {#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0}
デコード後のメッセージの長さを計算します。
#### パラメータ
* `encoded_length` エンコードされたメッセージの長さのバイト数。
#### 返り値
デコードされた後のメッセージの長さのバイト数。
#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742}
sysex メッセージで安全に送信できるようにデータをエンコードします。
#### パラメータ
* `encoded` 出力データバッファは、少なくとも sysex_encoded_length(length) バイトの長さが必要です。
* `source` エンコードされるデータの入力バッファ。
* `length` 入力バッファからエンコードするバイト数。
#### 返り値
エンコードされたバイト数。
#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229}
エンコードされたデータをデコードします。
#### パラメータ
* `decoded` 出力データバッファは、少なくとも sysex_decoded_length(length) バイトの長さが必要です。
* `source` デコードされるデータの入力バッファ。
* `length` 入力バッファからデコードするバイト数。
#### 返り値
デコードされたバイト数。

View File

@@ -27,7 +27,7 @@ QMK で現在サポートされているキーボードが Pro Microまたは
#endif
```
`PORTB/DDRB` などが定義されていないというエラーが発生した場合は、ARM と AVR の両方で機能する [GPIO 制御](ja/internals_gpio_control.md) を使用するようにキーボードのコードを変換する必要があります。これは AVR ビルドにまったく影響を与えません。
`PORTB/DDRB` などが定義されていないというエラーが発生した場合は、ARM と AVR の両方で機能する [GPIO 制御](ja/gpio_control.md) を使用するようにキーボードのコードを変換する必要があります。これは AVR ビルドにまったく影響を与えません。
Proton C には1つのオンボード LED(C13)しかなく、デフォルトでは TXLED(D5) がそれにマップされています。代わりに RXLED(B0) をそれにマッピングしたい場合は、`config.h` に次のように追加してください。

View File

@@ -219,11 +219,13 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
|Key |Aliases |Description |
|-----------------|---------|---------------------------------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
## Audio Keys :id=audio-keys
@@ -267,6 +269,14 @@ See also: [Bluetooth](feature_bluetooth.md)
|`OUT_USB` |USB only |
|`OUT_BT` |Bluetooth only |
## Caps Word :id=caps-word
See also: [Caps Word](feature_caps_word.md)
|Key |Aliases |Description |
|-----------|---------|------------------------------|
|`CAPS_WORD`|`CAPSWRD`|Toggles Caps Word |
## Dynamic Macros :id=dynamic-macros
See also: [Dynamic Macros](feature_dynamic_macros.md)

View File

@@ -44,7 +44,7 @@ Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-b
Then run the following command:
pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python-pillow
#### Installation

View File

@@ -104,10 +104,8 @@ There are a number of extensions that you may want to install:
* [Git Extension Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack) -
This installs a bunch of Git related tools that may make using Git with QMK Firmware easier.
* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - _[Optional]_ - Helps to keep the code to the QMK Coding Conventions.
* [Bracket Pair Colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2) - _[Optional]_ - This color codes the brackets in your code, to make it easier to reference nested code.
* [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[Optional]_ - Makes the markdown preview in VS Code more like GitHub's.
* [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[Optional]_ - This extension allows somebody else to access your workspace (or you to access somebody else's workspace) and help out. This is great if you're having issues and need some help from somebody.
* [VIM Keymap](https://marketplace.visualstudio.com/items?itemName=GiuseppeCesarano.vim-keymap) - _[Optional]_ - For those that prefer VIM style keybindings. There are other options for this, too.
Restart once you've installed any extensions

View File

@@ -62,7 +62,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
- no `(-/+size)` comments related to enabling features
- remove the list of alternate bootloaders if one has been specified
- no re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)
- no re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/builddefs/mcu_selection.mk)
- keyboard `config.h`
- don't repeat `MANUFACTURER` in the `PRODUCT` value
- no `#define DESCRIPTION`

View File

@@ -20,7 +20,7 @@ This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `
#endif
```
If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](internals_gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:

View File

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

705
docs/quantum_painter.md Normal file
View File

@@ -0,0 +1,705 @@
# Quantum Painter :id=quantum-painter
Quantum Painter is the standardised API for graphical displays. It currently includes support for basic drawing primitives, as well as custom images, animations, and fonts.
Due to the complexity, there is no support for Quantum Painter on AVR-based boards.
To enable overall Quantum Painter to be built into your firmware, add the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = ......
```
You will also likely need to select an appropriate driver in `rules.mk`, which is listed below.
!> Quantum Painter is not currently integrated with system-level operations such as disabling displays after a configurable timeout, or when the keyboard goes into suspend. Users will need to handle this manually at the current time.
The QMK CLI can be used to convert from normal images such as PNG files or animated GIFs, as well as fonts from TTF files.
Hardware supported:
| Display Panel | Panel Type | Size | Comms Transport | Driver |
|---------------|--------------------|------------------|-----------------|-----------------------------------------|
| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = gc9a01_spi` |
| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9163_spi` |
| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9341_spi` |
| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ssd1351_spi` |
| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = st7789_spi` |
## Quantum Painter Configuration :id=quantum-painter-config
| Option | Default | Purpose |
|-----------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------|
| `QUANTUM_PAINTER_NUM_IMAGES` | `8` | The maximum number of images/animations that can be loaded at any one time. |
| `QUANTUM_PAINTER_NUM_FONTS` | `4` | The maximum number of fonts that can be loaded at any one time. |
| `QUANTUM_PAINTER_CONCURRENT_ANIMATIONS` | `4` | The maximum number of animations that can be executed at the same time. |
| `QUANTUM_PAINTER_LOAD_FONTS_TO_RAM` | `FALSE` | Whether or not fonts should be loaded to RAM. Relevant for fonts stored in off-chip persistent storage, such as external flash. |
| `QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE` | `32` | The limit of the amount of pixel data that can be transmitted in one transaction to the display. Higher values require more RAM on the MCU. |
| `QUANTUM_PAINTER_SUPPORTS_256_PALETTE` | `FALSE` | If 256-color palettes are supported. Requires significantly more RAM on the MCU. |
| `QUANTUM_PAINTER_DEBUG` | _unset_ | Prints out significant amounts of debugging information to CONSOLE output. Significant performance degradation, use only for debugging. |
Drivers have their own set of configurable options, and are described in their respective sections.
## Quantum Painter CLI Commands :id=quantum-painter-cli
### `qmk painter-convert-graphics`
This command converts images to a format usable by QMK, i.e. the QGF File Format.
**Usage**:
```
usage: qmk painter-convert-graphics [-h] [-d] [-r] -f FORMAT [-o OUTPUT] -i INPUT [-v]
optional arguments:
-h, --help show this help message and exit
-d, --no-deltas Disables the use of delta frames when encoding animations.
-r, --no-rle Disables the use of RLE when encoding images.
-f FORMAT, --format FORMAT
Output format, valid types: pal256, pal16, pal4, pal2, mono256, mono16, mono4, mono2
-o OUTPUT, --output OUTPUT
Specify output directory. Defaults to same directory as input.
-i INPUT, --input INPUT
Specify input graphic file.
-v, --verbose Turns on verbose output.
```
The `INPUT` argument can be any image file loadable by Python's Pillow module. Common formats include PNG, or Animated GIF.
The `OUTPUT` argument needs to be a directory, and will default to the same directory as the input argument.
The `FORMAT` argument can be any of the following:
| Format | Meaning |
|-----------|-----------------------------------------------------------------------|
| `pal256` | 256-color palette (requires `QUANTUM_PAINTER_SUPPORTS_256_PALETTE`) |
| `pal16` | 16-color palette |
| `pal4` | 4-color palette |
| `pal2` | 2-color palette |
| `mono256` | 256-shade grayscale (requires `QUANTUM_PAINTER_SUPPORTS_256_PALETTE`) |
| `mono16` | 16-shade grayscale |
| `mono4` | 4-shade grayscale |
| `mono2` | 2-shade grayscale |
**Examples**:
```
$ cd /home/qmk/qmk_firmware/keyboards/my_keeb
$ qmk painter-convert-graphics -f mono16 -i my_image.gif -o ./generated/
Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/my_image.qgf.h...
Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/my_image.qgf.c...
```
### `qmk painter-make-font-image`
This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format.
**Usage**:
```
usage: qmk painter-make-font-image [-h] [-a] [-u UNICODE_GLYPHS] [-n] [-s SIZE] -o OUTPUT -f FONT
optional arguments:
-h, --help show this help message and exit
-a, --no-aa Disable anti-aliasing on fonts.
-u UNICODE_GLYPHS, --unicode-glyphs UNICODE_GLYPHS
Also generate the specified unicode glyphs.
-n, --no-ascii Disables output of the full ASCII character set (0x20..0x7E), exporting only the glyphs specified.
-s SIZE, --size SIZE Specify font size. Default 12.
-o OUTPUT, --output OUTPUT
Specify output image path.
-f FONT, --font FONT Specify input font file.
```
The `FONT` argument is generally a TrueType Font file (TTF).
The `OUTPUT` argument is the output image to generate, generally something like `my_font.png`.
The `UNICODE_GLYPHS` argument allows for specifying extra unicode glyphs to generate, and accepts a string.
**Examples**:
```
$ qmk painter-make-font-image --font NotoSans-ExtraCondensedBold.ttf --size 11 -o noto11.png --unicode-glyphs "ĄȽɂɻɣɈʣ"
```
### `qmk painter-convert-font-image`
This command converts an intermediate font image to the QFF File Format.
This command expects an image that conforms to the following format:
* Top-left pixel (at `0,0`) is the "delimiter" color:
* Each glyph in the font starts when a pixel of this color is found on the first row
* The first row is discarded when converting to the QFF format
* The number of delimited glyphs must match the supplied arguments to the command:
* The full ASCII set `0x20..0x7E` (if `--no-ascii` was not specified)
* The corresponding number of unicode glyphs if any were specified with `--unicode-glyphs`
* The order of the glyphs matches the ASCII set, if any, followed by the Unicode glyph set, if any.
**Usage**:
```
usage: qmk painter-convert-font-image [-h] [-r] -f FORMAT [-u UNICODE_GLYPHS] [-n] [-o OUTPUT] [-i INPUT]
optional arguments:
-h, --help show this help message and exit
-r, --no-rle Disable the use of RLE to minimise converted image size.
-f FORMAT, --format FORMAT
Output format, valid types: pal256, pal16, pal4, pal2, mono256, mono16, mono4, mono2
-u UNICODE_GLYPHS, --unicode-glyphs UNICODE_GLYPHS
Also generate the specified unicode glyphs.
-n, --no-ascii Disables output of the full ASCII character set (0x20..0x7E), exporting only the glyphs specified.
-o OUTPUT, --output OUTPUT
Specify output directory. Defaults to same directory as input.
-i INPUT, --input INPUT
Specify input graphic file.
```
The same arguments for `--no-ascii` and `--unicode-glyphs` need to be specified, as per `qmk painter-make-font-image`.
**Examples**:
```
$ cd /home/qmk/qmk_firmware/keyboards/my_keeb
$ qmk painter-convert-font-image --input noto11.png -f mono4 --unicode-glyphs "ĄȽɂɻɣɈʣ"
Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/noto11.qff.h...
Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/noto11.qff.c...
```
## Quantum Painter Drawing API :id=quantum-painter-api
All APIs require a `painter_device_t` object as their first parameter -- this object comes from the specific device initialisation, and instructions on creating it can be found in each driver's respective section.
To use any of the APIs, you need to include `qp.h`:
```c
#include <qp.h>
```
### General Notes :id=quantum-painter-api-general
The coordinate system used in Quantum Painter generally accepts `left`, `top`, `right`, and `bottom` instead of x/y/width/height, and each coordinate is inclusive of where pixels should be drawn. This is required as some datatypes used by display panels have a maximum value of `255` -- for any value or geometry extent that matches `256`, this would be represented as a `0`, instead.
?> Drawing a horizontal line 8 pixels long, starting from 4 pixels inside the left side of the display, will need `left=4`, `right=11`.
All color data matches the standard QMK HSV triplet definitions:
* Hue is of the range `0...255` and is internally mapped to 0...360 degrees.
* Saturation is of the range `0...255` and is internally mapped to 0...100% saturation.
* Value is of the range `0...255` and is internally mapped to 0...100% brightness.
?> Colors used in Quantum Painter are not subject to the RGB lighting CIE curve, if it is enabled.
### Device Control :id=quantum-painter-api-device-control
#### Display Initialisation :id=quantum-painter-api-init
```c
bool qp_init(painter_device_t device, painter_rotation_t rotation);
```
The `qp_init` function is used to initialise a display device after it has been created. This accepts a rotation parameter (`QP_ROTATION_0`, `QP_ROTATION_90`, `QP_ROTATION_180`, `QP_ROTATION_270`), which makes sure that the orientation of what's drawn on the display is correct.
```c
static painter_device_t display;
void keyboard_post_init_kb(void) {
display = qp_make_.......; // Create the display
qp_init(display, QP_ROTATION_0); // Initialise the display
}
```
#### Display Power :id=quantum-painter-api-power
```c
bool qp_power(painter_device_t device, bool power_on);
```
The `qp_power` function instructs the display whether or not the display panel should be on or off.
!> If there is a separate backlight controlled through the normal QMK backlight API, this is not controlled by the `qp_power` function and needs to be manually handled elsewhere.
```c
static uint8_t last_backlight = 255;
void suspend_power_down_user(void) {
if (last_backlight == 255) {
last_backlight = get_backlight_level();
}
backlight_set(0);
rgb_matrix_set_suspend_state(true);
qp_power(display, false);
}
void suspend_wakeup_init_user(void) {
qp_power(display, true);
rgb_matrix_set_suspend_state(false);
if (last_backlight != 255) {
backlight_set(last_backlight);
}
last_backlight = 255;
}
```
#### Display Clear :id=quantum-painter-api-clear
```c
bool qp_clear(painter_device_t device);
```
The `qp_clear` function clears the display's screen.
#### Display Flush :id=quantum-painter-api-flush
```c
bool qp_flush(painter_device_t device);
```
The `qp_flush` function ensures that all drawing operations are "pushed" to the display. This should be done as the last operation whenever a sequence of draws occur, and guarantees that any changes are applied.
!> Some display panels may seem to work even without a call to `qp_flush` -- this may be because the driver cannot queue drawing operations and needs to display them immediately when invoked. In general, calling `qp_flush` at the end is still considered "best practice".
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw a rect based off the current RGB color
qp_rect(display, 0, 7, 0, 239, rgb_matrix_get_hue(), 255, 255);
qp_flush(display);
}
}
```
### Drawing Primitives :id=quantum-painter-api-primitives
#### Set Pixel :id=quantum-painter-api-setpixel
```c
bool qp_setpixel(painter_device_t device, uint16_t x, uint16_t y, uint8_t hue, uint8_t sat, uint8_t val);
```
The `qp_setpixel` can be used to set a specific pixel on the screen to the supplied color.
?> Using `qp_setpixel` for large amounts of drawing operations is inefficient and should be avoided unless they cannot be achieved with other drawing APIs.
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw a 240px high vertical rainbow line on X=0:
for (int i = 0; i < 239; ++i) {
qp_setpixel(display, 0, i, i, 255, 255);
}
qp_flush(display);
}
}
```
#### Draw Line :id=quantum-painter-api-line
```c
bool qp_line(painter_device_t device, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t hue, uint8_t sat, uint8_t val);
```
The `qp_line` can be used to draw lines on the screen with the supplied color.
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw 8px-wide rainbow down the left side of the display
for (int i = 0; i < 239; ++i) {
qp_line(display, 0, i, 7, i, i, 255, 255);
}
qp_flush(display);
}
}
```
#### Draw Rect :id=quantum-painter-api-rect
```c
bool qp_rect(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom, uint8_t hue, uint8_t sat, uint8_t val, bool filled);
```
The `qp_rect` can be used to draw rectangles on the screen with the supplied color, with or without a background fill. If not filled, any pixels inside the rectangle will be left as-is.
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw 8px-wide rainbow filled rectangles down the left side of the display
for (int i = 0; i < 239; i+=8) {
qp_rect(display, 0, i, 7, i+7, i, 255, 255, true);
}
qp_flush(display);
}
}
```
#### Draw Circle :id=quantum-painter-api-circle
```c
bool qp_circle(painter_device_t device, uint16_t x, uint16_t y, uint16_t radius, uint8_t hue, uint8_t sat, uint8_t val, bool filled);
```
The `qp_circle` can be used to draw circles on the screen with the supplied color, with or without a background fill. If not filled, any pixels inside the circle will be left as-is.
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw r=4 filled circles down the left side of the display
for (int i = 0; i < 239; i+=8) {
qp_circle(display, 4, 4+i, 4, i, 255, 255, true);
}
qp_flush(display);
}
}
```
#### Draw Ellipse :id=quantum-painter-api-ellipse
```c
bool qp_ellipse(painter_device_t device, uint16_t x, uint16_t y, uint16_t sizex, uint16_t sizey, uint8_t hue, uint8_t sat, uint8_t val, bool filled);
```
The `qp_ellipse` can be used to draw ellipses on the screen with the supplied color, with or without a background fill. If not filled, any pixels inside the ellipses will be left as-is.
```c
void housekeeping_task_user(void) {
static uint32_t last_draw = 0;
if (timer_elapsed32(last_draw) > 33) { // Throttle to 30fps
last_draw = timer_read32();
// Draw 16x8 filled ellipses down the left side of the display
for (int i = 0; i < 239; i+=8) {
qp_ellipse(display, 8, 4+i, 16, 8, i, 255, 255, true);
}
qp_flush(display);
}
}
```
### Image Functions :id=quantum-painter-api-images
#### Load Image :id=quantum-painter-api-load-image
```c
painter_image_handle_t qp_load_image_mem(const void *buffer);
```
The `qp_load_image_mem` function loads a QGF image from memory or flash.
`qp_load_image_mem` returns a handle to the loaded image, which can then be used to draw to the screen using `qp_drawimage`, `qp_drawimage_recolor`, `qp_animate`, or `qp_animate_recolor`. If an image is no longer required, it can be unloaded by calling `qp_close_image` below.
See the [CLI Commands](quantum_painter.md?id=quantum-painter-cli) for instructions on how to convert images to [QGF](quantum_painter_qgf.md).
?> The total number of images available to load at any one time is controlled by the configurable option `QUANTUM_PAINTER_NUM_IMAGES` in the table above. If more images are required, the number should be increased in `config.h`.
Image information is available through accessing the handle:
| Property | Accessor |
|-------------|----------------------|
| Width | `image->width` |
| Height | `image->height` |
| Frame Count | `image->frame_count` |
#### Unload Image :id=quantum-painter-api-close-image
```c
bool qp_close_image(painter_image_handle_t image);
```
The `qp_close_image` function releases resources related to the loading of the supplied image.
#### Draw image :id=quantum-painter-api-draw-image
```c
bool qp_drawimage(painter_device_t device, uint16_t x, uint16_t y, painter_image_handle_t image);
bool qp_drawimage_recolor(painter_device_t device, uint16_t x, uint16_t y, painter_image_handle_t image, uint8_t hue_fg, uint8_t sat_fg, uint8_t val_fg, uint8_t hue_bg, uint8_t sat_bg, uint8_t val_bg);
```
The `qp_drawimage` and `qp_drawimage_recolor` functions draw the supplied image to the screen at the supplied location, with the latter function allowing for monochrome-based images to be recolored.
```c
// Draw an image on the bottom-right of the 240x320 display on initialisation
static painter_image_handle_t my_image;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
qp_drawimage(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
#### Animate Image :id=quantum-painter-api-animate-image
```c
deferred_token qp_animate(painter_device_t device, uint16_t x, uint16_t y, painter_image_handle_t image);
deferred_token qp_animate_recolor(painter_device_t device, uint16_t x, uint16_t y, painter_image_handle_t image, uint8_t hue_fg, uint8_t sat_fg, uint8_t val_fg, uint8_t hue_bg, uint8_t sat_bg, uint8_t val_bg);
```
The `qp_animate` and `qp_animate_recolor` functions draw the supplied image to the screen at the supplied location, with the latter function allowing for monochrome-based animations to be recolored. They also set up internal timing such that each frame is rendered at the correct time as per the animated image.
Once an image has been set to animate, it will loop indefinitely until stopped, with no user intervention required.
Both functions return a `deferred_token`, which can then be used to stop the animation, using `qp_stop_animation` below.
```c
// Animate an image on the bottom-right of the 240x320 display on initialisation
static painter_image_handle_t my_image;
static deferred_token my_anim;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
my_anim = qp_animate(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
#### Stop Animation :id=quantum-painter-api-stop-animation
```c
void qp_stop_animation(deferred_token anim_token);
```
The `qp_stop_animation` function stops the previously-started animation.
```c
void housekeeping_task_user(void) {
if (some_random_stop_reason) {
qp_stop_animation(my_anim);
}
}
```
### Font Functions :id=quantum-painter-api-fonts
#### Load Font :id=quantum-painter-api-load-font
```c
painter_font_handle_t qp_load_font_mem(const void *buffer);
```
The `qp_load_font_mem` function loads a QFF font from memory or flash.
`qp_load_font_mem` returns a handle to the loaded font, which can then be measured using `qp_textwidth`, or drawn to the screen using `qp_drawtext`, or `qp_drawtext_recolor`. If a font is no longer required, it can be unloaded by calling `qp_close_font` below.
See the [CLI Commands](quantum_painter.md?id=quantum-painter-cli) for instructions on how to convert TTF fonts to [QFF](quantum_painter_qff.md).
?> The total number of fonts available to load at any one time is controlled by the configurable option `QUANTUM_PAINTER_NUM_FONTS` in the table above. If more fonts are required, the number should be increased in `config.h`.
Font information is available through accessing the handle:
| Property | Accessor |
|-------------|----------------------|
| Line Height | `image->line_height` |
#### Unload Font :id=quantum-painter-api-close-font
```c
bool qp_close_font(painter_font_handle_t font);
```
The `qp_close_font` function releases resources related to the loading of the supplied font.
#### Measure Text :id=quantum-painter-api-textwidth
```c
int16_t qp_textwidth(painter_font_handle_t font, const char *str);
```
The `qp_textwidth` function allows measurement of how many pixels wide the supplied string would result in, for the given font.
#### Draw Text :id=quantum-painter-api-drawtext
```c
int16_t qp_drawtext(painter_device_t device, uint16_t x, uint16_t y, painter_font_handle_t font, const char *str);
int16_t qp_drawtext_recolor(painter_device_t device, uint16_t x, uint16_t y, painter_font_handle_t font, const char *str, uint8_t hue_fg, uint8_t sat_fg, uint8_t val_fg, uint8_t hue_bg, uint8_t sat_bg, uint8_t val_bg);
```
The `qp_drawtext` and `qp_drawtext_recolor` functions draw the supplied string to the screen at the given location using the font supplied, with the latter function allowing for monochrome-based fonts to be recolored.
```c
// Draw a text message on the bottom-right of the 240x320 display on initialisation
static painter_font_handle_t my_font;
void keyboard_post_init_kb(void) {
my_font = qp_load_font_mem(font_opensans);
if (my_font != NULL) {
static const char *text = "Hello from QMK!";
int16_t width = qp_textwidth(my_font, text);
qp_drawtext(display, (239 - width), (319 - my_font->line_height), my_font, text);
}
}
```
### Advanced Functions :id=quantum-painter-api-advanced
#### Get Geometry :id=quantum-painter-api-get-geometry
```c
void qp_get_geometry(painter_device_t device, uint16_t *width, uint16_t *height, painter_rotation_t *rotation, uint16_t *offset_x, uint16_t *offset_y);
```
The `qp_get_geometry` function allows external code to retrieve the current width, height, rotation, and drawing offsets.
#### Set Viewport Offsets :id=quantum-painter-api-set-viewport
```c
void qp_set_viewport_offsets(painter_device_t device, uint16_t offset_x, uint16_t offset_y);
```
The `qp_set_viewport_offsets` function can be used to offset all subsequent drawing operations. For example, if a display controller is internally 240x320, but the display panel is 240x240 and has a Y offset of 80 pixels, you could invoke `qp_set_viewport_offsets(display, 0, 80);` and the drawing positioning would be corrected.
#### Set Viewport :id=quantum-painter-api-viewport
```c
bool qp_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom);
```
The `qp_viewport` function controls where raw pixel data is written to.
#### Stream Pixel Data :id=quantum-painter-api-pixdata
```c
bool qp_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count);
```
The `qp_pixdata` function allows raw pixel data to be streamed to the display. It requires a native pixel count rather than the number of bytes to transfer, to ensure display panel data alignment is respected. E.g. for display panels using RGB565 internal format, sending 10 pixels will result in 20 bytes of transfer.
!> Under normal circumstances, users will not need to manually call either `qp_viewport` or `qp_pixdata`. These allow for writing of raw pixel information, in the display panel's native format, to the area defined by the viewport.
## Quantum Painter Display Drivers :id=quantum-painter-drivers
### Common: Standard TFT (SPI + D/C + RST)
Most TFT display panels use a 5-pin interface -- SPI SCK, SPI MOSI, SPI CS, D/C, and RST pins.
For these displays, QMK's `spi_master` must already be correctly configured for the platform you're building for.
The pin assignments for SPI CS, D/C, and RST are specified during device construction.
### GC9A01 :id=qp-driver-gc9a01
Enabling support for the GC9A01 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = gc9a01_spi
```
Creating a GC9A01 device in firmware can then be done with the following API:
```c
painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_gc9a01_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define GC9A01_NUM_DEVICES 3
```
### ILI9163 :id=qp-driver-ili9163
Enabling support for the ILI9163 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = ili9163_spi
```
Creating a ILI9163 device in firmware can then be done with the following API:
```c
painter_device_t qp_ili9163_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_ili9163_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define ILI9163_NUM_DEVICES 3
```
### ILI9341 :id=qp-driver-ili9341
Enabling support for the ILI9341 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = ili9341_spi
```
Creating a ILI9341 device in firmware can then be done with the following API:
```c
painter_device_t qp_ili9341_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_ili9341_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define ILI9341_NUM_DEVICES 3
```
### SSD1351 :id=qp-driver-ssd1351
Enabling support for the SSD1351 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = ssd1351_spi
```
Creating a SSD1351 device in firmware can then be done with the following API:
```c
painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_ssd1351_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define SSD1351_NUM_DEVICES 3
```
### ST7789 :id=qp-driver-st7789
Enabling support for the ST7789 in Quantum Painter is done by adding the following to `rules.mk`:
```make
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS = st7789_spi
```
Creating a ST7789 device in firmware can then be done with the following API:
```c
painter_device_t qp_st7789_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
```
The device handle returned from the `qp_st7789_make_spi_device` function can be used to perform all other drawing operations.
The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
```c
// 3 displays:
#define ST7789_NUM_DEVICES 3
```
!> Some ST7789 devices are known to have different drawing offsets -- despite being a 240x320 pixel display controller internally, some display panels are only 240x240, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered.

103
docs/quantum_painter_qff.md Normal file
View File

@@ -0,0 +1,103 @@
# QMK Font Format :id=qmk-font-format
QMK uses a font format _("Quantum Font Format" - QFF)_ specifically for resource-constrained systems.
This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images into a font. It also includes RLE for pixel data for some basic compression.
All integer values are in little-endian format.
The QFF is defined in terms of _blocks_ -- each _block_ contains a _header_ and an optional _blob_ of data. The _header_ contains the block's _typeid_, and the length of the _blob_ that follows. Each block type is denoted by a different _typeid_ has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.
The general structure of the file is:
* _Font descriptor block_
* _ASCII glyph block_ (optional, only if ASCII glyphs are included)
* _Unicode glyph block_ (optional, only if Unicode glyphs are included)
* _Font palette block_ (optional, depending on frame format)
* _Font data block_
## Block Header :id=qff-block-header
The block header is identical to [QGF's block header](quantum_painter_qgf.md#qgf-block-header), and is present for all blocks, including the font descriptor.
## Font descriptor block :id=qff-font-descriptor
* _typeid_ = 0x00
* _length_ = 20
This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by either the _ASCII glyph table_ or the _Unicode glyph table_, depending on which glyphs are included in the font.
_Block_ format:
```c
typedef struct __attribute__((packed)) qff_font_descriptor_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 20 }
uint24_t magic; // constant, equal to 0x464651 ("QFF")
uint8_t qff_version; // constant, equal to 0x01
uint32_t total_file_size; // total size of the entire file, starting at offset zero
uint32_t neg_total_file_size; // negated value of total_file_size, used for detecting parsing errors
uint8_t line_height; // glyph height in pixels
bool has_ascii_table; // whether the font has an ascii table of glyphs (0x20...0x7E)
uint16_t num_unicode_glyphs; // the number of glyphs in the unicode table -- no table specified if zero
uint8_t format; // frame format, see below.
uint8_t flags; // frame flags, see below.
uint8_t compression_scheme; // compression scheme, see below.
uint8_t transparency_index; // palette index used for transparent pixels (not yet implemented)
} qff_font_descriptor_v1_t;
// _Static_assert(sizeof(qff_font_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 20), "qff_font_descriptor_v1_t must be 25 bytes in v1 of QFF");
```
The values for `format`, `flags`, `compression_scheme`, and `transparency_index` match [QGF's frame descriptor block](quantum_painter_qgf.md#qgf-frame-descriptor), with the exception that the `delta` flag is ignored by QFF.
## ASCII glyph table :id=qff-ascii-table
* _typeid_ = 0x01
* _length_ = 290
If the font contains ascii characters, the _ASCII glyph block_ must be located directly after the _font descriptor block_.
```c
#define QFF_GLYPH_WIDTH_BITS 6
#define QFF_GLYPH_WIDTH_MASK ((1<<QFF_GLYPH_WIDTH_BITS)-1)
#define QFF_GLYPH_OFFSET_BITS 18
#define QFF_GLYPH_OFFSET_MASK (((1<<QFF_GLYPH_OFFSET_BITS)-1) << QFF_GLYPH_WIDTH_BITS)
typedef struct __attribute__((packed)) qff_ascii_glyph_table_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x01, .neg_type_id = (~0x01), .length = 285 }
uint24_t glyph[95]; // 95 glyphs, 0x20..0x7E, see bits/masks above for values
} qff_ascii_glyph_table_v1_t;
// _Static_assert(sizeof(qff_ascii_glyph_table_v1_t) == (sizeof(qgf_block_header_v1_t) + 285), "qff_ascii_glyph_table_v1_t must be 290 bytes in v1 of QFF");
```
## Unicode glyph table :id=qff-unicode-table
* _typeid_ = 0x02
* _length_ = variable
If this font contains unicode characters, the _unicode glyph block_ must be located directly after the _ASCII glyph table block_, or the _font descriptor block_ if the font does not contain ASCII characters.
```c
typedef struct __attribute__((packed)) qff_unicode_glyph_table_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = (N * 6) }
struct __attribute__((packed)) { // container for a single unicode glyph
uint24_t code_point; // the unicode code point
uint24_t glyph; // the glyph information, as per ASCII glyphs above
} glyph[N]; // N glyphs worth of data
} qff_unicode_glyph_table_v1_t;
```
## Font palette block :id=qff-palette-descriptor
* _typeid_ = 0x03
* _length_ = variable
The _font palette block_ is identical to [QGF's frame palette block](quantum_painter_qgf.md#qgf-frame-palette-descriptor), retaining the same _typeid_ of 0x03.
It is only specified in the QFF if the font is palette-based, and follows the _unicode glyph block_ if the font contains any Unicode glyphs, or the _ASCII glyph block_ if the font contains only ASCII glyphs.
## Font data block :id=qff-data-descriptor
* _typeid_ = 0x04
* _length_ = variable
The _font data block_ is the last block in the file and is identical to [QGF's frame data block](quantum_painter_qgf.md#qgf-frame-data-descriptor), however has a different _typeid_ of 0x04 in QFF.

178
docs/quantum_painter_qgf.md Normal file
View File

@@ -0,0 +1,178 @@
# QMK Graphics Format :id=qmk-graphics-format
QMK uses a graphics format _("Quantum Graphics Format" - QGF)_ specifically for resource-constrained systems.
This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images. It also includes RLE for pixel data for some basic compression.
All integer values are in little-endian format.
The QGF is defined in terms of _blocks_ -- each _block_ contains a _header_ and an optional _blob_ of data. The _header_ contains the block's _typeid_, and the length of the _blob_ that follows. Each block type is denoted by a different _typeid_ has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.
The general structure of the file is:
* _Graphics descriptor block_
* _Frame offset block_
* Repeating list of frames:
* _Frame descriptor block_
* _Frame palette block_ (optional, depending on frame format)
* _Frame delta block_ (optional, depending on delta flag)
* _Frame data block_
Different frames within the file should be considered "isolated" and may have their own image format and/or palette.
## Block Header :id=qgf-block-header
This block header is present for all blocks, including the graphics descriptor.
_Block header_ format:
```c
typedef struct __attribute__((packed)) qgf_block_header_v1_t {
uint8_t type_id; // See each respective block type
uint8_t neg_type_id; // Negated type ID, used for detecting parsing errors
uint24_t length; // 24-bit blob length, allowing for block sizes of a maximum of 16MB
} qgf_block_header_v1_t;
// _Static_assert(sizeof(qgf_block_header_v1_t) == 5, "qgf_block_header_v1_t must be 5 bytes in v1 of QGF");
```
The _length_ describes the number of octets in the data following the block header -- a block header may specify a _length_ of `0` if no blob is specified.
## Graphics descriptor block :id=qgf-graphics-descriptor
* _typeid_ = 0x00
* _length_ = 18
This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by the _frame offset block_.
_Block_ format:
```c
typedef struct __attribute__((packed)) qgf_graphics_descriptor_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 18 }
uint24_t magic; // constant, equal to 0x464751 ("QGF")
uint8_t qgf_version; // constant, equal to 0x01
uint32_t total_file_size; // total size of the entire file, starting at offset zero
uint32_t neg_total_file_size; // negated value of total_file_size, used for detecting parsing errors
uint16_t image_width; // in pixels
uint16_t image_height; // in pixels
uint16_t frame_count; // minimum of 1
} qgf_graphics_descriptor_v1_t;
// _Static_assert(sizeof(qgf_graphics_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 18), "qgf_graphics_descriptor_v1_t must be 23 bytes in v1 of QGF");
```
## Frame offset block :id=qgf-frame-offset-descriptor
* _typeid_ = 0x01
* _length_ = variable
This block denotes the offsets within the file to each frame's _frame descriptor block_, relative to the start of the file. The _frame offset block_ always immediately follows the _graphics descriptor block_. The contents of this block are an array of U32's, with one entry for each frame.
Duplicate frame offsets in this block are allowed, if a certain frame is to be shown multiple times during animation.
_Block_ format:
```c
typedef struct __attribute__((packed)) qgf_frame_offsets_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x01, .neg_type_id = (~0x01), .length = (N * sizeof(uint32_t)) }
uint32_t offset[N]; // where 'N' is the number of frames in the file
} qgf_frame_offsets_v1_t;
```
## Frame descriptor block :id=qgf-frame-descriptor
* _typeid_ = 0x02
* _length_ = 5
This block denotes the start of a frame.
_Block_ format:
```c
typedef struct __attribute__((packed)) qgf_frame_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = 5 }
uint8_t format; // Frame format, see below.
uint8_t flags; // Frame flags, see below.
uint8_t compression_scheme; // Compression scheme, see below.
uint8_t transparency_index; // palette index used for transparent pixels (not yet implemented)
uint16_t delay; // frame delay time for animations (in units of milliseconds)
} qgf_frame_v1_t;
// _Static_assert(sizeof(qgf_frame_v1_t) == (sizeof(qgf_block_header_v1_t) + 6), "qgf_frame_v1_t must be 11 bytes in v1 of QGF");
```
If this frame is grayscale, the _frame descriptor block_ (or _frame delta block_ if flags denote a delta frame) is immediately followed by this frame's corresponding _frame data block_.
If the frame uses an indexed palette, the _frame descriptor block_ (or _frame delta block_ if flags denote a delta frame) is immediately followed by this frame's corresponding _frame palette block_.
Frame format possible values:
* `0x00`: 1bpp grayscale, no palette, `0` = black, `1` = white, LSb first pixel
* `0x01`: 2bpp grayscale, no palette, `0` = black, `3` = white, linear interpolation of brightness, LSb first pixel
* `0x02`: 4bpp grayscale, no palette, `0` = black, `15` = white, linear interpolation of brightness, LSb first pixel
* `0x03`: 8bpp grayscale, no palette, `0` = black, `255` = white, linear interpolation of brightness, LSb first pixel
* `0x04`: 1bpp indexed palette, 2 colors, LSb first pixel
* `0x05`: 2bpp indexed palette, 4 colors, LSb first pixel
* `0x06`: 4bpp indexed palette, 16 colors, LSb first pixel
* `0x07`: 8bpp indexed palette, 256 colors, LSb first pixel
Frame flags is a bitmask with the following format:
| `bit 7` | `bit 6` | `bit 5` | `bit 4` | `bit 3` | `bit 2` | `bit 1` | `bit 0` |
|---------|---------|---------|---------|---------|---------|---------|--------------|
| - | - | - | - | - | - | Delta | Transparency |
* `[1]` -- Delta: Signifies that the current frame is a delta frame, which specifies only a sub-image. The _frame delta block_ follows the _frame palette block_ if the image format specifies a palette, otherwise it directly follows the _frame descriptor block_.
* `[0]` -- Transparency: The transparent palette index in the _blob_ is considered valid and should be used when considering which pixels should be transparent during rendering this frame, if possible.
Compression scheme possible values:
* `0x00`: No compression
* `0x01`: [QMK RLE](quantum_painter_rle.md)
## Frame palette block :id=qgf-frame-palette-descriptor
* _typeid_ = 0x03
* _length_ = variable
This block describes the palette used for the frame. The _blob_ contains an array of palette entries -- one palette entry is present for each color used -- each palette entry is in QMK HSV888 format:
```c
typedef struct __attribute__((packed)) qgf_palette_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x03, .neg_type_id = (~0x03), .length = (N * 3 * sizeof(uint8_t)) }
struct { // container for a single HSV palette entry
uint8_t h; // hue component: `[0,360)` degrees is mapped to `[0,255]` uint8_t.
uint8_t s; // saturation component: `[0,1]` is mapped to `[0,255]` uint8_t.
uint8_t v; // value component: `[0,1]` is mapped to `[0,255]` uint8_t.
} hsv[N]; // N * hsv, where N is the number of palette entries depending on the frame format in the descriptor
} qgf_palette_v1_t;
```
## Frame delta block :id=qgf-frame-delta-descriptor
* _typeid_ = 0x04
* _length_ = 8
This block describes where the delta frame should be drawn, with respect to the top left location of the image.
```c
typedef struct __attribute__((packed)) qgf_delta_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x04, .neg_type_id = (~0x04), .length = 8 }
uint16_t left; // The left pixel location to draw the delta image
uint16_t top; // The top pixel location to draw the delta image
uint16_t right; // The right pixel location to to draw the delta image
uint16_t bottom; // The bottom pixel location to to draw the delta image
} qgf_delta_v1_t;
// _Static_assert(sizeof(qgf_delta_v1_t) == 13, "qgf_delta_v1_t must be 13 bytes in v1 of QGF");
```
## Frame data block :id=qgf-frame-data-descriptor
* _typeid_ = 0x05
* _length_ = variable
This block describes the data associated with the frame. The _blob_ contains an array of bytes containing the data corresponding to the frame's image format:
```c
typedef struct __attribute__((packed)) qgf_data_v1_t {
qgf_block_header_v1_t header; // = { .type_id = 0x05, .neg_type_id = (~0x05), .length = N }
uint8_t data[N]; // N data octets
} qgf_data_v1_t;
```

View File

@@ -0,0 +1,29 @@
# QMK QGF/QFF RLE data schema :id=qmk-qp-rle-schema
There are two "modes" to the RLE algorithm used in both [QGF](quantum_painter_qgf.md)/[QFF](quantum_painter_qff.md):
* Non-repeating sections of octets, with associated length of up to `128` octets
* `length` = `marker - 128`
* A corresponding `length` number of octets follow directly after the marker octet
* Repeated octet with associated length, with associated length of up to `128`
* `length` = `marker`
* A single octet follows the marker that should be repeated `length` times.
Decoder pseudocode:
```
while !EOF
marker = READ_OCTET()
if marker >= 128
length = marker - 128
for i = 0 ... length-1
c = READ_OCTET()
WRITE_OCTET(c)
else
length = marker
c = READ_OCTET()
for i = 0 ... length-1
WRITE_OCTET(c)
```

View File

@@ -87,9 +87,13 @@ To configure the default layer sounds, you would want to define this in your `co
## Resetting the keyboard
There is the `RESET` quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
There is the `QK_REBOOT` or `QK_RBT` quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
And to do so, add `reset_keyboard()` to your function or macro, and this will reset to bootloader.
And to do so, add `soft_reset_keyboard()` to your function or macro.
## Reset to bootloader
To reset to the bootloader use `QK_BOOTLOADER` or `QK_BOOT` keycode or `reset_keyboard()` function.
## Wiping the EEPROM (Persistent Storage)

View File

@@ -89,7 +89,7 @@ Example:
Direct pins are when you connect one side of the switch to GND and the other side to a GPIO pin on your MCU. No diode is required, but there is a 1:1 mapping between switches and pins.
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array is a text string corresponding to a pin. You can use `null` to indicate an empty spot in the matrix.
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array uses text strings to identify the pins used in each row. You can use `null` to indicate an empty spot in the matrix.
Example:

View File

@@ -36,20 +36,20 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` |
|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
|French (Switzerland) |`keymap_fr_ch.h` |`sendstring_fr_ch.h` |
|French (macOS, ISO) |`keymap_french_osx.h` |`sendstring_french_osx.h` |
|French (Switzerland) |`keymap_swiss_fr.h` |`sendstring_swiss_fr.h` |
|French (macOS, ISO) |`keymap_french_mac_iso.h` |`sendstring_french_mac_iso.h` |
|German |`keymap_german.h` |`sendstring_german.h` |
|German (Switzerland) |`keymap_german_ch.h` |`sendstring_german_ch.h` |
|German (macOS) |`keymap_german_osx.h` |`sendstring_german_osx.h` |
|German (Switzerland) |`keymap_swiss_de.h` |`sendstring_swiss_de.h` |
|German (macOS) |`keymap_german_mac_iso.h` |`sendstring_german_mac_iso.h` |
|German (Neo2) |`keymap_neo2.h` | |
|Greek |`keymap_greek.h` | |
|Hebrew |`keymap_hebrew.h` | |
|Hungarian |`keymap_hungarian.h` |`sendstring_hungarian.h` |
|Icelandic |`keymap_icelandic.h` |`sendstring_icelandic.h` |
|Italian |`keymap_italian.h` |`sendstring_italian.h` |
|Italian (macOS, ANSI) |`keymap_italian_osx_ansi.h` |`sendstring_italian_osx_ansi.h` |
|Italian (macOS, ISO) |`keymap_italian_osx_iso.h` |`sendstring_italian_osx_iso.h` |
|Japanese |`keymap_jp.h` |`sendstring_jis.h` |
|Italian (macOS, ANSI) |`keymap_italian_mac_ansi.h` |`sendstring_italian_mac_ansi.h` |
|Italian (macOS, ISO) |`keymap_italian_mac_iso.h` |`sendstring_italian_mac_iso.h` |
|Japanese |`keymap_japanese.h` |`sendstring_japanese.h` |
|Korean |`keymap_korean.h` | |
|Latvian |`keymap_latvian.h` |`sendstring_latvian.h` |
|Lithuanian (ĄŽERTY) |`keymap_lithuanian_azerty.h` |`sendstring_lithuanian_azerty.h` |
@@ -57,8 +57,8 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Norwegian |`keymap_norwegian.h` |`sendstring_norwegian.h` |
|Polish |`keymap_polish.h` | |
|Portuguese |`keymap_portuguese.h` |`sendstring_portuguese.h` |
|Portuguese (macOS, ISO) |`keymap_portuguese_osx_iso.h` |`sendstring_portuguese_osx_iso.h` |
|Portuguese (Brazil) |`keymap_br_abnt2.h` |`sendstring_br_abnt2.h` |
|Portuguese (macOS, ISO) |`keymap_portuguese_mac_iso.h` |`sendstring_portuguese_mac_iso.h` |
|Portuguese (Brazil) |`keymap_brazilian_abnt2.h` |`sendstring_brazilian_abnt2.h` |
|Romanian |`keymap_romanian.h` |`sendstring_romanian.h` |
|Russian |`keymap_russian.h` | |
|Serbian |`keymap_serbian.h` | |
@@ -68,24 +68,25 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Spanish |`keymap_spanish.h` |`sendstring_spanish.h` |
|Spanish (Dvorak) |`keymap_spanish_dvorak.h` |`sendstring_spanish_dvorak.h` |
|Swedish |`keymap_swedish.h` |`sendstring_swedish.h` |
|Swedish (macOS, ANSI) |`keymap_swedish_osx_ansi.h` | |
|Swedish (macOS, ISO) |`keymap_swedish_osx_iso.h` | |
|Swedish Pro (macOS, ANSI) |`keymap_swedish_pro_osx_ansi.h` | |
|Swedish Pro (macOS, ISO) |`keymap_swedish_pro_osx_iso.h` | |
|Swedish (macOS, ANSI) |`keymap_swedish_mac_ansi.h` | |
|Swedish (macOS, ISO) |`keymap_swedish_mac_iso.h` | |
|Swedish Pro (macOS, ANSI) |`keymap_swedish_pro_mac_ansi.h` | |
|Swedish Pro (macOS, ISO) |`keymap_swedish_pro_mac_iso.h` | |
|Turkish (F) |`keymap_turkish_f.h` |`sendstring_turkish_f.h` |
|Turkish (Q) |`keymap_turkish_q.h` |`sendstring_turkish_q.h` |
|Ukrainian |`keymap_ukrainian.h` | |
There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:
|Layout |Keycodes Header |Sendstring LUT Header |
|-------------------|------------------------|----------------------------|
|Colemak |`keymap_colemak.h` |`sendstring_colemak.h` |
|Dvorak |`keymap_dvorak.h` |`sendstring_dvorak.h` |
|Dvorak (French) |`keymap_dvorak_fr.h` |`sendstring_dvorak_fr.h` |
|Dvorak (Programmer)|`keymap_dvp.h` |`sendstring_dvp.h` |
|Norman |`keymap_norman.h` |`sendstring_norman.h` |
|Plover |`keymap_plover.h` | |
|Plover (Dvorak) |`keymap_plover_dvorak.h`| |
|Steno |`keymap_steno.h` | |
|Workman |`keymap_workman.h` |`sendstring_workman.h` |
|Workman (ZXCVM) |`keymap_workman_zxcvm.h`|`sendstring_workman_zxcvm.h`|
|Layout |Keycodes Header |Sendstring LUT Header |
|-------------------|----------------------------|--------------------------------|
|Colemak |`keymap_colemak.h` |`sendstring_colemak.h` |
|Dvorak |`keymap_dvorak.h` |`sendstring_dvorak.h` |
|Dvorak (French) |`keymap_dvorak_fr.h` |`sendstring_dvorak_fr.h` |
|Dvorak (Programmer)|`keymap_dvorak_programmer.h`|`sendstring_dvorak_programmer.h`|
|Norman |`keymap_norman.h` |`sendstring_norman.h` |
|Plover |`keymap_plover.h` | |
|Plover (Dvorak) |`keymap_plover_dvorak.h` | |
|Steno |`keymap_steno.h` | |
|Workman |`keymap_workman.h` |`sendstring_workman.h` |
|Workman (ZXCVM) |`keymap_workman_zxcvm.h` |`sendstring_workman_zxcvm.h` |

View File

@@ -30,6 +30,19 @@ MAGIC_ENABLE = no
These features are enabled by default, but may not be needed. Double check to make sure, though.
Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
If you use `sprintf` or `snprintf` functions you can save around ~400 Bytes by enabling this option.
```make
AVR_USE_MINIMAL_PRINTF = yes
```
This will include smaller implementations from AVRs libc into your Firmware. They are [not fully featured](https://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#gaa3b98c0d17b35642c0f3e4649092b9f1), for instance zero padding and field width specifiers are not supported. So if you use `sprintf` or `snprintf` like this:
```c
sprintf(wpm_str, "%03d", get_current_wpm());
snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c");
```
you will still need the standard implementation.
## `config.h` Settings
If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.

View File

@@ -112,7 +112,7 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
}
```
The reason being that `TAPPING_TERM` is a macro that expands to a constant integer and thus cannot be changed at runtime whereas `g_tapping_term` is a variable whose value can be changed at runtime. If you want, you can temporarily enable `DYNAMIC_TAPPING_TERM_ENABLE` to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings.
The reason being that `TAPPING_TERM` is a macro that expands to a constant integer and thus cannot be changed at runtime whereas `g_tapping_term` is a variable whose value can be changed at runtime. If you want, you can temporarily enable `DYNAMIC_TAPPING_TERM_ENABLE` to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings. In case you need to access the tapping term from elsewhere in your code, you can use the `GET_TAPPING_TERM(keycode, record)` macro. This macro will expand to whatever is the appropriate access pattern given the current configuration.
## Tap-Or-Hold Decision Modes

View File

@@ -146,7 +146,7 @@
* [EEPROM驱动](zh-cn/eeprom_driver.md)
* [串口驱动](zh-cn/serial_driver.md)
* [UART驱动](zh-cn/uart_driver.md)
* [操控GPIO](zh-cn/internals_gpio_control.md)
* [操控GPIO](zh-cn/gpio_control.md)
* [键盘开发指引](zh-cn/hardware_keyboard_guidelines.md)
* Python开发
@@ -182,12 +182,12 @@
* [了解QMK](zh-cn/understanding_qmk.md)
* QMK内部细节 (编辑中)
* [定义](zh-cn/internals_defines.md)
* [输入回调的注册](zh-cn/internals_input_callback_reg.md)
* [Midi设备](zh-cn/internals_midi_device.md)
* [Midi设备驱动流程](zh-cn/internals_midi_device_setup_process.md)
* [Midi辅助功能](zh-cn/internals_midi_util.md)
* [发送函数](zh-cn/internals_send_functions.md)
* [Sysex工具](zh-cn/internals_sysex_tools.md)
* [定义](zh-cn/internals/defines.md)
* [输入回调的注册](zh-cn/internals/input_callback_reg.md)
* [Midi设备](zh-cn/internals/midi_device.md)
* [Midi设备驱动流程](zh-cn/internals/midi_device_setup_process.md)
* [Midi辅助功能](zh-cn/internals/midi_util.md)
* [发送函数](zh-cn/internals/send_functions.md)
* [Sysex工具](zh-cn/internals/sysex_tools.md)
<!--fromen:20211014-12:00(GMT+8) commit 04cf161aa01fd433b5dae69d9fd31569ed5dca59-->

View File

@@ -252,7 +252,7 @@ BOOTLOADER = stm32-dfu
### `make` 构建目标
* `:dfu-util`: 每5秒检测一次直到发现可用的STM32 bootloader设备然后进行固件刷写。
* `:dfu-util-split-left``:dfu-util-split-right`: 同 `:avrdude` 一样会刷写固件但额外地会设置手性设置到EEPROM中对于基于Proton-C的分体式键盘这是理想的方法。
* `:dfu-util-split-left``:dfu-util-split-right`: 同 `:dfu-util` 一样会刷写固件但额外地会设置手性设置到EEPROM中对于基于Proton-C的分体式键盘这是理想的方法。
* `:st-link-cli`: 通过ST-Link CLI工具集而非dfu-util进行刷写需要有ST-Link电子狗。
* `:st-flash`: 通过[STLink工具](https://github.com/stlink-org/stlink)内的 `st-flash` 工具而非dfu-util进行刷写需要有ST-Link电子狗。

View File

@@ -0,0 +1,23 @@
# QMK所采用的Git最佳实践
<!---
original document: 0.15.17:docs/newbs_git_best_practices.md
git diff 0.15.17 HEAD -- docs/newbs_git_best_practices.md | cat
-->
*译者注对于git相关的部分除广为接受的名词外会尽量保留git命令及各种术语的英文版本部分名词及关键部分会附带中文翻译*
## 或者讲,"怎么才能不害怕并喜欢上Git"
本节旨在以最佳方式指导新手在为QMK做贡献时获得流畅的体验。我们将进行一次完整的QMK贡献操作流程并在部分环节中详细讲述几种便捷的方法之后我们会故意搞砸一些东西并教导你如何回到正轨。
该章节做了如下假设:
1. 你已有Github账号且已[fork了qmk_firmware仓库](zh-cn/getting_started_github.md)到你的账号下。
2. 已完成了[构建环境](zh-cn/newbs_getting_started.md#set-up-your-environment)及[QMK](zh-cn/newbs_getting_started.md#set-up-qmk)配置。
---
- 第一节:[在你Fork的主干上频繁更新不要提交](zh-cn/newbs_git_using_your_master_branch.md)
- 第二节:[解决合并冲突](zh-cn/newbs_git_resolving_merge_conflicts.md)
- 第三节:[重新同步一个脱离同步状态的Git分支](zh-cn/newbs_git_resynchronize_a_branch.md)

View File

@@ -0,0 +1,86 @@
# 解决合并冲突
<!---
original document: 0.15.17:docs/newbs_git_resolving_merge_conflicts.md
git diff 0.15.17 HEAD -- docs/newbs_git_resolving_merge_conflicts.md | cat
-->
有时在你致力于一个较长周期才能完成的分支时其它人提交的变更会与你提交的pull request中的变更发生冲突。我们将这种多个人编辑同一个模块同一个文件时产生的场景叫做 *合并冲突*
?> 本文中的场景基于[在你Fork的主干上频繁更新不要提交](zh-cn/newbs_git_using_your_master_branch.md)一文。如果你对那篇文章不熟悉,请先阅读它,再回来继续。
## 变基/衍合rebase
Git的*变基*操作会将提交历史中的提交节点摘除并回滚,然后统一提交到一个新节点上。在解决合并冲突时,可以通过对当前分支进行变基,来获取从分支拉取到当前时刻的所有变更。
从执行如下命令开始:
```
git fetch upstream
git rev-list --left-right --count HEAD...upstram/master
```
此处输入的 `git rev-list` 命令可以得到当前分支与QMK主干分支间的提交数量差。而先执行 `git fetch` 是为了确保我们有上游仓库upstream repo的最新状态。`git rev-list` 命令会返回两个数字:
```
$ git rev-list --left-right --count HEAD...upstream/master
7 35
```
第一个数字为当前分支自创建后新增的提交数量。第二个数字为当前分支创建后在 `upstream/master` 上的提交数量,而这部分就是我们当前分支上缺失的提交记录。
在我们了解了当前分支以及上游仓库的状态后,可以发起变基操作了:
```
git rebase upstream/master
```
这样可以让Git回滚该分支的提交然后基于QMK的主干版本重新应用这些提交。
*译注以下内容在中文Git下大同小异且仅作为示例不进行翻译*
```
$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Applying: Commit #1
Using index info to reconstruct a base tree...
M conflicting_file_1.txt
Falling back to patching base and 3-way merge...
Auto-merging conflicting_file_1.txt
CONFLICT (content): Merge conflict in conflicting_file_1.txt
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 Commit #1
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
```
以上内容是在告诉我们有合并冲突存在,并给出了冲突所在的文件名。在编辑器中打开该文件,可以在某处发现类似如下形式的内容:
```
<<<<<<< HEAD
<p>For help with any issues, email us at support@webhost.us.</p>
=======
<p>Need help? Email support@webhost.us.</p>
>>>>>>> Commit #1
```
`<<<<<<< HEAD` 标记了合并冲突的起始行,直至 `>>>>>>> Commit #1` 标记的结束行,中间通过 `=======` 分隔开冲突双方。其中 `HEAD` 部分为QMK主干上的版本标记了提交日志的部分为当前分支的本地提交。
由于Git存储的是*文件差异部分*而非整个文件所以当Git无法在文件中找到一个变更发生前的内容时就无法知道如何去进行文件变更重新编辑一下可以解决问题。在更改完成后保存文件。
```
<p>Need help? Email support@webhost.us.</p>
```
之后,执行:
```
git add conflicting_file_1.txt
git rebase --continue
```
Git即会记录对文件冲突做出的变更并继续处理剩余的提交直至全部完成。

View File

@@ -0,0 +1,76 @@
# 重新同步已失去同步状态的Git分支
<!---
original document: 0.15.17:docs/newbs_git_resynchronize_a_branch.md
git diff 0.15.17 HEAD -- docs/newbs_git_resynchronize_a_branch.md | cat
-->
假设你在自己的 `master` 分支之上有提交并且想和QMK仓库进行同步可以通过 `git pull` 拉取QMK的 `master` 分支到你的库但同时Github也会提醒你当前分支相比 `qmk:master` 有几个领先的提交会在你向QMK发起pr时造成麻烦。
?> 本文中的场景基于[在你Fork的主干上频繁更新不要提交](zh-cn/newbs_git_using_your_master_branch.md)一文。如果你对那篇文章不熟悉,请先阅读它,再回来继续。
## 备份你在自己的主干分支上的所有变更(可选)
不会有人想把有用的成果弄丢的。如果你想将你的 `master` 分支上的变更另存一份,简便的方法是直接创建一个当前“脏” `master` 分支的副本:
```
git branch old_master master
```
现在 `master` 分支拥有了一个副本分支 `old_master`
## 重新同步分支
现在可以重新同步 `master` 分支了这里我们将QMK仓库设置为Git的远程仓库。通过执行 `git remote -v` 可以确认远程仓库配置,输出信息应类似于:
```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
origin https://github.com/<your_username>/qmk_firmware.git (push)
upstream https://github.com/qmk/qmk_firmware.git (fetch)
upstream https://github.com/qmk/qmk_firmware.git (push)
```
如果你只能看到一个仓库:
```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com/qmk/qmk_firmware.git (fetch)
origin https://github.com/qmk/qmk_firmware.git (push)
```
通过如下命令添加新的远程仓库:
```
git remote add upstream https://github.com/qmk/qmk_firmware.git
```
然后,重新将 `origin` 远程仓库设置为自己的fork
```
git remote set-url origin https://github.com/<your_username>/qmk_firmware.git
```
在两个远程仓库配置完毕后需要从QMK的 upstream 仓库中获取到更新,执行:
```
git fetch upstream
```
此时重新同步你的分支到QMK的版本
```
git reset --hard upstream/master
```
以上操作会更新你的本地仓库而你的Github远程仓库仍然处于未同步状态通过推送可以让其进入已同步状态。可以通过如下命令来指引Git强行覆盖掉那些仅在你远程仓库中存在的提交
```
git push --force-with-lease
```
!> **不要**在其它使用者也会提交的分支上执行 `git push --force-with-lease`,否则会覆盖掉他人的提交。
此时你的Github fork本地文件副本以及QMK仓库就是一致的了。之后再进行变更[在分支上!](zh-cn/newbs_git_using_your_master_branch.md#making-changes))和提交。

View File

@@ -0,0 +1,79 @@
# 在你Fork的主干上频繁更新不要提交
<!---
original document: 0.15.17:docs/newbs_git_using_your_master_branch.md
git diff 0.15.17 HEAD -- docs/newbs_git_using_your_master_branch.md | cat
-->
我们强烈推荐所有QMK开发者无论在哪里做什么改动频繁更新你的 `master` 分支,但***不要***在其上提交。相对地将你所有的改动提交到开发分支上并提交一个pull request。
为了减少冲突 &mdash; 多人同时编辑同一个文件 &mdash; 保持你的 `master` 分支更新到最新,并在新创建的分支上进行开发。
## 更新master分支
为了保持 `master` 更新到最新推荐将QMK固件仓库"repo"设置为git远程仓库。打开Git命令行界面并键入
```
git remote add upstream https://github.com/qmk/qmk_firmware.git
```
?> 名称 `upstream` 部分可以任意这里给的是常用的你可以将QMK远程仓库名称改成你想要的。Git的 `remote` 命令语法为 `git remote add <name> <url>`, `<name>` 是远程仓库的简写名称这个名称可以在很多Git命令中使用包括但不限于 `fetch``pull``push`,以指定目标远程仓库。
要验证是否添加成功,可以执行 `git remote -v`,输出应该类似于:
```
$ git remote -v
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
origin https://github.com/<your_username>/qmk_firmware.git (push)
upstream https://github.com/qmk/qmk_firmware.git (fetch)
upstream https://github.com/qmk/qmk_firmware.git (push)
```
在以上操作完成后,可以通过执行 `git fetch upstream` 来检查仓库是否有更新。该命令从QMK仓库拉取的分支branches及标签tags &mdash; 统称为“refs引用&mdash;现在也被称作 `upstream`上游。此时我们可以比对自己fork版本的 `origin` 与QMK维护的分支的差异了。
要更新你的fork的master分支执行以下指令每一行结束都需要按回车
```
git checkout master
git fetch upstream
git pull upstream master
git push origin master
```
以上操作会切换到 `master` 分支从QMK仓库拉取refs下载QMK `master` 分支的当前版本并上传至你的fork中。
## 进行编辑 :id=making-changes
要进行编辑,通过如下命令创建一个新分支:
```
git checkout -b dev_branch
git push --set-upstream origin dev_branch
```
以上操作会创建 `dev_branch` 新分支检出check out并保存到你的fork中。`--set-upstream` 参数用于告知git使用你的fork仓库来处理 `dev_branch` 分支下的 `git push``git pull` 命令且仅需要在第一次执行push命令时指定之后再次执行 `git push` 或是 `git pull` 都无需加入该参数了。
?> 在 `git push` 时,可以使用 `-u` 替代 `--set-upstram` &mdash; `-u``--set-upsream` 参数的别名。
你可以任意命名该分支,但仍建议对分支起一个可以描述将在该分支下要做的工作的名称。
默认情况下 `git checkout -b` 会基于你当前检出的分支作为新分支的基准。可以在后面追加已存在但未检出的分支名来指定新分支的基准:
```
git checkout -b dev_branch master
```
此时你便有了一个开发用分支可以打开编辑器并进行你期望的变更了。通常推荐提交大量的小规模提交commit这样在需要时会更容易地定位并回滚造成问题的提交。若要提交更改编辑并保存要更新的文件并将其添加到*暂存区staged area*,然后提交到分支中:
```
git add path/to/updated_file
git commit -m "My commit message."
```
`git add` 会将更改后的文件放到Git的*暂存区*也称作Git的“装载区”。这里留存着即将通过 `git commit` 所提交并保存到仓库中的变更。请使用确切的描述来填写提交日志,以便于快速了解改动内容。
?> 如果更改了多个文件,可以通过 `git add -- path/to/file1 path/to/file2 ...` 来添加所有项目。
## 发布变更
最后一步为上传你的变更到你的fork中。通过执行 `git push`Git将发布 `dev_branch` 分支的所有变更至你的fork中。

View File

@@ -57,7 +57,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Mode setting comands */
#define FLASH_CMD_DP 0xB9 /* DP (Deep Power Down) */
#define FLASH_CMD_RDP 0xAB /* RDP (Release form Deep Power Down) */
#define FLASH_CMD_RDP 0xAB /* RDP (Release from Deep Power Down) */
/* Status register */
#define FLASH_FLAG_WIP 0x01 /* Write in progress bit */

View File

@@ -74,21 +74,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
The sector size of the FLASH in bytes, as specified in the datasheet.
*/
#ifndef EXTERNAL_FLASH_SECTOR_SIZE
# define EXTERNAL_FLASH_SECTOR_SIZE (4 * 1024)
# define EXTERNAL_FLASH_SECTOR_SIZE (4 * 1024L)
#endif
/*
The block size of the FLASH in bytes, as specified in the datasheet.
*/
#ifndef EXTERNAL_FLASH_BLOCK_SIZE
# define EXTERNAL_FLASH_BLOCK_SIZE (64 * 1024)
# define EXTERNAL_FLASH_BLOCK_SIZE (64 * 1024L)
#endif
/*
The total size of the FLASH in bytes, as specified in the datasheet.
*/
#ifndef EXTERNAL_FLASH_SIZE
# define EXTERNAL_FLASH_SIZE (512 * 1024)
# define EXTERNAL_FLASH_SIZE (512 * 1024L)
#endif
/*

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