forked from mirror/qmk_firmware
Compare commits
630 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0269eea2c9 | ||
|
|
1836382f66 | ||
|
|
504533b3b4 | ||
|
|
ba9642c83d | ||
|
|
c2f7a5b5c5 | ||
|
|
ccc6c6ce0b | ||
|
|
c93ef27143 | ||
|
|
15e8658e81 | ||
|
|
c6475e0476 | ||
|
|
3001d81e3d | ||
|
|
407e6e242e | ||
|
|
18ed7c6caf | ||
|
|
92c0e2cee1 | ||
|
|
6a11370434 | ||
|
|
2bd8e43256 | ||
|
|
933cb8cc35 | ||
|
|
1426eedfc1 | ||
|
|
e4b998ccb0 | ||
|
|
b5af7a3390 | ||
|
|
ed80e21858 | ||
|
|
9d24bc8a33 | ||
|
|
c7fde3d8cc | ||
|
|
0fdb5df94d | ||
|
|
bd500ae092 | ||
|
|
fec01edaa4 | ||
|
|
7619e991cf | ||
|
|
627ad33233 | ||
|
|
2cbcd76ef0 | ||
|
|
322e673bcb | ||
|
|
4be8880177 | ||
|
|
709628dfb2 | ||
|
|
e5faeea94d | ||
|
|
7ec819eb22 | ||
|
|
7785e87029 | ||
|
|
afb5335bf3 | ||
|
|
9fd72b352b | ||
|
|
7fe0c9c746 | ||
|
|
5629ecf5ff | ||
|
|
01e30d407c | ||
|
|
acdc8a1374 | ||
|
|
d73c91f19b | ||
|
|
40e81ad893 | ||
|
|
3dcdf41d1c | ||
|
|
d55d65b77f | ||
|
|
a56496640e | ||
|
|
032c2aa974 | ||
|
|
1874bc94e2 | ||
|
|
9e8199c411 | ||
|
|
4733a2df16 | ||
|
|
2d46c96732 | ||
|
|
3b99406d50 | ||
|
|
7bea08cb12 | ||
|
|
5591a68b65 | ||
|
|
a0166fef43 | ||
|
|
e52319b751 | ||
|
|
cde41cf611 | ||
|
|
878fafeeb8 | ||
|
|
1ba0300da7 | ||
|
|
f8daa3cc40 | ||
|
|
bef076f23e | ||
|
|
3ac6f603a8 | ||
|
|
63a3fc3591 | ||
|
|
036c6100bd | ||
|
|
403211f7f8 | ||
|
|
888d42d64c | ||
|
|
6b2a2ab7ac | ||
|
|
edd2e3d354 | ||
|
|
6b423c98e5 | ||
|
|
36cdac8fd3 | ||
|
|
59cc10451b | ||
|
|
031277c6d3 | ||
|
|
45ccd2e935 | ||
|
|
4f7a7873c8 | ||
|
|
5ad6d44e18 | ||
|
|
fac1210609 | ||
|
|
a170e6f191 | ||
|
|
db4d8823d6 | ||
|
|
9aec0e2c9f | ||
|
|
08a064c56d | ||
|
|
b01ed7d34f | ||
|
|
85d4736930 | ||
|
|
a7f524f264 | ||
|
|
98f05c0136 | ||
|
|
5dd5d4dd60 | ||
|
|
cf4e526063 | ||
|
|
8a6c081c4a | ||
|
|
005b778164 | ||
|
|
b6d46cdc47 | ||
|
|
efafbacb49 | ||
|
|
6729379041 | ||
|
|
02b49f2949 | ||
|
|
38815db760 | ||
|
|
b00bdd0354 | ||
|
|
863b308519 | ||
|
|
b2b8e54b23 | ||
|
|
127c664647 | ||
|
|
87a4c6ab25 | ||
|
|
c72581474e | ||
|
|
7d66c11f37 | ||
|
|
adbd077b15 | ||
|
|
e5d1cf0105 | ||
|
|
e391793f73 | ||
|
|
bfc1b2b1cf | ||
|
|
70c36c6c97 | ||
|
|
fb27ce6bb2 | ||
|
|
fe1c3fc835 | ||
|
|
f8d65460c2 | ||
|
|
4ba8da2ebb | ||
|
|
56a2e332e1 | ||
|
|
df93bfb750 | ||
|
|
2b6ed67db4 | ||
|
|
e31384babf | ||
|
|
536a0a78b4 | ||
|
|
a0b15d08bc | ||
|
|
e1c41f1b08 | ||
|
|
f749cf9940 | ||
|
|
3d591a2000 | ||
|
|
259320ca27 | ||
|
|
85b79cc578 | ||
|
|
1e683923e1 | ||
|
|
743c8a229f | ||
|
|
3194862502 | ||
|
|
c5795dd8d7 | ||
|
|
8c035c2116 | ||
|
|
e159fbefc5 | ||
|
|
91a9f9e492 | ||
|
|
3dc83cd244 | ||
|
|
ddeaa26fef | ||
|
|
1051fae08d | ||
|
|
f3a16ef21d | ||
|
|
0d08ebb70a | ||
|
|
99b5b9ab7f | ||
|
|
389ec6df82 | ||
|
|
6a5610a8be | ||
|
|
4f451a76f2 | ||
|
|
acbeec29da | ||
|
|
e05516d817 | ||
|
|
7e35cdda8a | ||
|
|
ae05baf08b | ||
|
|
c1161a7a32 | ||
|
|
f82d4d8680 | ||
|
|
d420bcad33 | ||
|
|
dba60e2e65 | ||
|
|
7f9c8429e4 | ||
|
|
c68281b353 | ||
|
|
41c2a7b070 | ||
|
|
bc8218371e | ||
|
|
84d44e6188 | ||
|
|
27c2960320 | ||
|
|
54e8fad959 | ||
|
|
42a7969d4a | ||
|
|
2c847b0350 | ||
|
|
13f3f189b4 | ||
|
|
e1c869b8da | ||
|
|
63a1d506a0 | ||
|
|
9e0118172f | ||
|
|
ca8105eac0 | ||
|
|
4f9582da26 | ||
|
|
f39fc08338 | ||
|
|
2e68ddc826 | ||
|
|
1be7cde61f | ||
|
|
c1fedab457 | ||
|
|
6585a244fb | ||
|
|
2929448605 | ||
|
|
e37a611977 | ||
|
|
b39661de96 | ||
|
|
a5d7e04c66 | ||
|
|
ff75bce86a | ||
|
|
6faca4d663 | ||
|
|
34c2e99fb3 | ||
|
|
0881e0867b | ||
|
|
064d8e9b62 | ||
|
|
e6e66a9f2e | ||
|
|
e2d19eda57 | ||
|
|
10faca0b85 | ||
|
|
c1b8b3dc6a | ||
|
|
89cf023d89 | ||
|
|
73a6496516 | ||
|
|
b68cc43094 | ||
|
|
c8f6e6a936 | ||
|
|
2b61ca078d | ||
|
|
d3d025c337 | ||
|
|
a86322e4a7 | ||
|
|
505e5c7033 | ||
|
|
d7c7421784 | ||
|
|
b08704f078 | ||
|
|
107812ceef | ||
|
|
1f4110d742 | ||
|
|
de8f05b4c3 | ||
|
|
57b284dfa9 | ||
|
|
5b94990c5a | ||
|
|
debba50c33 | ||
|
|
08e5fcfdf4 | ||
|
|
511f1ed9de | ||
|
|
a71a34eb52 | ||
|
|
1322922c42 | ||
|
|
16dde871d7 | ||
|
|
655883a965 | ||
|
|
d39015a401 | ||
|
|
a201bf9398 | ||
|
|
bf0b88c423 | ||
|
|
c2eeeba2e9 | ||
|
|
d4f04fe850 | ||
|
|
a4320e4890 | ||
|
|
b315b707e6 | ||
|
|
e10429baae | ||
|
|
0e6b73c9ff | ||
|
|
d45b967cf2 | ||
|
|
e2bf515df4 | ||
|
|
2cac8b587f | ||
|
|
d383e93526 | ||
|
|
83b42ea9dc | ||
|
|
43bbb5e99a | ||
|
|
ee60542bd6 | ||
|
|
6ed61c65dd | ||
|
|
b5dfb2bd1e | ||
|
|
ee44cbdedb | ||
|
|
330a8597f8 | ||
|
|
9acd127cc1 | ||
|
|
9c2ca00074 | ||
|
|
9ab8e4cd5a | ||
|
|
594558ec7b | ||
|
|
5e1b1f5023 | ||
|
|
bbccd8f9cc | ||
|
|
cc567c917b | ||
|
|
1a954e8da5 | ||
|
|
c7e17538ee | ||
|
|
b321789d7b | ||
|
|
4015c40ba4 | ||
|
|
53de903fb8 | ||
|
|
fd65390496 | ||
|
|
28a11ff6f7 | ||
|
|
1a7f544e0d | ||
|
|
3e0b22af68 | ||
|
|
7edb4d2ed8 | ||
|
|
81cc69c2dd | ||
|
|
93274019a9 | ||
|
|
0fde9c9cac | ||
|
|
b708a43730 | ||
|
|
5bb7476400 | ||
|
|
8eebc613cf | ||
|
|
a2adc92066 | ||
|
|
6242c09f7d | ||
|
|
224ea2eb18 | ||
|
|
eb5703d12e | ||
|
|
921c0039f4 | ||
|
|
bb2ca21647 | ||
|
|
1a4af3adf9 | ||
|
|
99b1dc84da | ||
|
|
98504424b1 | ||
|
|
8ec3de0f92 | ||
|
|
c68e4dec10 | ||
|
|
1ddcf57382 | ||
|
|
e06d79e9c6 | ||
|
|
ed343ddad4 | ||
|
|
019cba746d | ||
|
|
e7ad19bb95 | ||
|
|
28eeb92f8e | ||
|
|
efc5d63383 | ||
|
|
2af9aac61c | ||
|
|
024c4ef853 | ||
|
|
fb6d7762b9 | ||
|
|
00eebfb575 | ||
|
|
6e35013bc2 | ||
|
|
cf05c7d1e4 | ||
|
|
22b213e191 | ||
|
|
4b393a1ff5 | ||
|
|
8522449ccf | ||
|
|
cbeab2ac4f | ||
|
|
01952bf39a | ||
|
|
1a991ffd24 | ||
|
|
01d81b9550 | ||
|
|
a00177d172 | ||
|
|
aa5a6d38de | ||
|
|
b905c246b5 | ||
|
|
a1096e1dec | ||
|
|
547d75145b | ||
|
|
f1ec600fac | ||
|
|
a9739f7868 | ||
|
|
c67e4c2cae | ||
|
|
5ba424ca17 | ||
|
|
e7012f4d9e | ||
|
|
a5fb7cfbc9 | ||
|
|
8c93a33cd3 | ||
|
|
6aade0ecdc | ||
|
|
62d87fa446 | ||
|
|
ce43c98b65 | ||
|
|
8e5550dbb2 | ||
|
|
acd7ad37e6 | ||
|
|
cbd55b7890 | ||
|
|
dadbec4d46 | ||
|
|
f4123acc72 | ||
|
|
cb3149b7f2 | ||
|
|
64c84e64c7 | ||
|
|
98e65cf3e1 | ||
|
|
a05306d153 | ||
|
|
7d0fc5d486 | ||
|
|
946d651f57 | ||
|
|
1c1e8d7f7a | ||
|
|
7ea7930b8c | ||
|
|
d0db38cbdc | ||
|
|
e91938088a | ||
|
|
1a32aa12e0 | ||
|
|
81df543086 | ||
|
|
4f21beb715 | ||
|
|
18051f1723 | ||
|
|
969f324de4 | ||
|
|
3eb8d3bea3 | ||
|
|
608bcf08fe | ||
|
|
f4068dbfb0 | ||
|
|
08405df150 | ||
|
|
3c751f217a | ||
|
|
97d622651a | ||
|
|
9f1a7380ab | ||
|
|
7dca4e8bda | ||
|
|
0aae222ab6 | ||
|
|
475cbd24cf | ||
|
|
a8711b2b0a | ||
|
|
81a3249e2c | ||
|
|
338a7ed6d5 | ||
|
|
0550830909 | ||
|
|
8f86f9794e | ||
|
|
911232abfc | ||
|
|
4eee8c1023 | ||
|
|
e7d861aea7 | ||
|
|
7e8690eae1 | ||
|
|
02cf2b56fd | ||
|
|
5d26dcefa0 | ||
|
|
b9078609b6 | ||
|
|
c7ed9038d7 | ||
|
|
7a69c714b4 | ||
|
|
fd61083710 | ||
|
|
074c49ee1c | ||
|
|
082b69db91 | ||
|
|
466e0856f5 | ||
|
|
60cf3c22f7 | ||
|
|
92ead44cf6 | ||
|
|
05355bc49d | ||
|
|
74ac4120db | ||
|
|
61ecee1585 | ||
|
|
9a77ad69e6 | ||
|
|
85fa06c3db | ||
|
|
187119ed7f | ||
|
|
eae39d37c6 | ||
|
|
fecfc0f7da | ||
|
|
36fd2437b0 | ||
|
|
bbd6e8ab34 | ||
|
|
24bc4aef03 | ||
|
|
7aed244aae | ||
|
|
532fb2f960 | ||
|
|
880c0c8ee0 | ||
|
|
6f93a86e6e | ||
|
|
0a4c1caf20 | ||
|
|
883465d9fb | ||
|
|
115bf771a8 | ||
|
|
a4b112b1ef | ||
|
|
d1b0397d2f | ||
|
|
f31004ebec | ||
|
|
46231df62d | ||
|
|
b6310b5a15 | ||
|
|
d34cade5ab | ||
|
|
cf58a8733d | ||
|
|
3320e98ccf | ||
|
|
319da7bfdb | ||
|
|
4a4e4aa083 | ||
|
|
74b0f054c1 | ||
|
|
6eee1940e8 | ||
|
|
8f728aa731 | ||
|
|
626cf94653 | ||
|
|
45a5a94b96 | ||
|
|
494a691f4c | ||
|
|
bef5c95675 | ||
|
|
f8d677af88 | ||
|
|
461a1afe57 | ||
|
|
e5f47fa269 | ||
|
|
d4fb67fd5b | ||
|
|
05ea735e86 | ||
|
|
3cd8dd6b25 | ||
|
|
35e62d236b | ||
|
|
a4d10e9f64 | ||
|
|
286947b6fa | ||
|
|
f12902eb16 | ||
|
|
0351b598f9 | ||
|
|
fc55fcff3d | ||
|
|
c113250c4e | ||
|
|
b4bdf3f1d5 | ||
|
|
633479ced5 | ||
|
|
a91de72246 | ||
|
|
50edd425f7 | ||
|
|
c4ccbf06e1 | ||
|
|
514175848e | ||
|
|
24c05ff1c7 | ||
|
|
7caef16edd | ||
|
|
65e1afe0af | ||
|
|
ff8db0449e | ||
|
|
09ab67c044 | ||
|
|
7772f47f04 | ||
|
|
7be4540b46 | ||
|
|
ab61d9cb51 | ||
|
|
f6f627d07f | ||
|
|
649bbdeaba | ||
|
|
eda39f4356 | ||
|
|
4fc14c2712 | ||
|
|
c3ba5de928 | ||
|
|
ec515f2164 | ||
|
|
592ee1b57f | ||
|
|
1e067bd4dd | ||
|
|
db9b295aa7 | ||
|
|
3934a7f3c8 | ||
|
|
ed2de21603 | ||
|
|
04978d490a | ||
|
|
7186a63172 | ||
|
|
ff1900190c | ||
|
|
2818085d3f | ||
|
|
d17671cd23 | ||
|
|
8f22831f01 | ||
|
|
6c96bb5a5a | ||
|
|
177ff71d0c | ||
|
|
c1b428bb4e | ||
|
|
0828fc4b6f | ||
|
|
1e8de37aa0 | ||
|
|
9cd3080e22 | ||
|
|
ceefde5ec8 | ||
|
|
3a29cdbd7d | ||
|
|
2d5cb23503 | ||
|
|
6aa85699a5 | ||
|
|
330d195f9a | ||
|
|
4b1b83f42f | ||
|
|
f749dedb0d | ||
|
|
fa37d958b4 | ||
|
|
e01313e7d0 | ||
|
|
20e7906c80 | ||
|
|
4bd5c033c3 | ||
|
|
5830b1b5e3 | ||
|
|
e42877d007 | ||
|
|
bcc546aa3f | ||
|
|
19527e8399 | ||
|
|
d8ce8cd204 | ||
|
|
248d7c1d6d | ||
|
|
9455c6adec | ||
|
|
6619ea4441 | ||
|
|
0188038bc0 | ||
|
|
2a4b9f79fd | ||
|
|
b43ec9d65a | ||
|
|
df8bb7ce24 | ||
|
|
7110708d0f | ||
|
|
b834819a35 | ||
|
|
cc696a2ae8 | ||
|
|
f29d8117bf | ||
|
|
d2ec940da5 | ||
|
|
da2c6a41d8 | ||
|
|
a3ecbc53f6 | ||
|
|
2695344241 | ||
|
|
00ca362826 | ||
|
|
9dcf2a11b2 | ||
|
|
12dc6d1ac8 | ||
|
|
6c2e58eb4d | ||
|
|
1a58fce043 | ||
|
|
96ee4c21a3 | ||
|
|
ae07dee941 | ||
|
|
efce9bc9b5 | ||
|
|
d575bf7ddc | ||
|
|
7a939ec218 | ||
|
|
542440eac5 | ||
|
|
717b6b8f13 | ||
|
|
36c3f4deba | ||
|
|
a954b568ea | ||
|
|
74d64c7f43 | ||
|
|
65cce9105d | ||
|
|
43853b337b | ||
|
|
8474aee2fe | ||
|
|
7098252252 | ||
|
|
16ffaa6482 | ||
|
|
865c29f4de | ||
|
|
507c948ed8 | ||
|
|
f0b04b2a3a | ||
|
|
20555f9a33 | ||
|
|
56ad3a5f43 | ||
|
|
5ef94415aa | ||
|
|
d67e94fb1b | ||
|
|
f797d4f49d | ||
|
|
ad4233d078 | ||
|
|
2c34b480fc | ||
|
|
86badb394e | ||
|
|
e295937e54 | ||
|
|
c7a24a441f | ||
|
|
a08ee4a737 | ||
|
|
9e757bc2ec | ||
|
|
5ef7919022 | ||
|
|
6b38dc17cd | ||
|
|
71b88b333d | ||
|
|
108a2fceca | ||
|
|
c3773d9c35 | ||
|
|
e1b42d5252 | ||
|
|
558fee16e4 | ||
|
|
87e5df1b9e | ||
|
|
4b295009ae | ||
|
|
3d61139567 | ||
|
|
15e7c8f37a | ||
|
|
8d29bd07c2 | ||
|
|
75b899d87d | ||
|
|
c3b3f09702 | ||
|
|
56650d7a2b | ||
|
|
8a47896263 | ||
|
|
0f182ef674 | ||
|
|
f1b2449ce5 | ||
|
|
a26dbbfe96 | ||
|
|
bf28a303c6 | ||
|
|
e814bb9453 | ||
|
|
2916c3f098 | ||
|
|
8644965c81 | ||
|
|
0524a6d848 | ||
|
|
e19991ec46 | ||
|
|
e4e5bca6bc | ||
|
|
8ff7b1de11 | ||
|
|
7827f9fbe3 | ||
|
|
d9f2d8d241 | ||
|
|
058919923a | ||
|
|
d151b1bef5 | ||
|
|
baf0060761 | ||
|
|
036745e853 | ||
|
|
b99e2f7230 | ||
|
|
9c965bb62e | ||
|
|
e68389a11e | ||
|
|
ba63bac661 | ||
|
|
0842f54a27 | ||
|
|
584ad807cc | ||
|
|
e92f1fb220 | ||
|
|
67c97da654 | ||
|
|
90b5c17034 | ||
|
|
0b33318a24 | ||
|
|
a9a2b699cd | ||
|
|
da7811f82a | ||
|
|
49a4ec538d | ||
|
|
9e103614f8 | ||
|
|
711b109246 | ||
|
|
6347d18a2d | ||
|
|
d7b09ad560 | ||
|
|
52e2af7753 | ||
|
|
177e461d90 | ||
|
|
fef7932e55 | ||
|
|
b42191a2dd | ||
|
|
48a421bb10 | ||
|
|
f09f3643ad | ||
|
|
36636205dd | ||
|
|
5b0039aae6 | ||
|
|
18f5a04eaa | ||
|
|
89e39b9858 | ||
|
|
3db5ffcfb7 | ||
|
|
4ae2b4f371 | ||
|
|
0dee127b29 | ||
|
|
6e55870a82 | ||
|
|
21ca1eb7ae | ||
|
|
a1a5869ef8 | ||
|
|
bc5c5e3251 | ||
|
|
f39e08e2ba | ||
|
|
e15d9ca4b3 | ||
|
|
eeac23464b | ||
|
|
5354ec5791 | ||
|
|
35785a6c49 | ||
|
|
235d18f360 | ||
|
|
ea5ef746e2 | ||
|
|
de5fd5d4e2 | ||
|
|
8c8f4b3c06 | ||
|
|
f5b02fbc11 | ||
|
|
55e1acec07 | ||
|
|
611460c9db | ||
|
|
584e390703 | ||
|
|
1ac255fd1c | ||
|
|
2c152c3425 | ||
|
|
664c0bc4c3 | ||
|
|
8a06238054 | ||
|
|
6626084cb8 | ||
|
|
bb27c69675 | ||
|
|
25d7ac9ecc | ||
|
|
03a53e29af | ||
|
|
681d6a29e6 | ||
|
|
096696d86d | ||
|
|
d044a6bcc2 | ||
|
|
091eac1fce | ||
|
|
02bed7e5a5 | ||
|
|
7f9ceef3dd | ||
|
|
7919848324 | ||
|
|
a4436b32df | ||
|
|
7ecdb57414 | ||
|
|
0f9c1c57b4 | ||
|
|
dcdd037276 | ||
|
|
e725cdbc4b | ||
|
|
8ae01715d6 | ||
|
|
9ef5dcd113 | ||
|
|
f4aa8ae845 | ||
|
|
ef6e9a5312 | ||
|
|
0516cf5ed8 | ||
|
|
5bdeb7dad1 | ||
|
|
8347a6688f | ||
|
|
3ce196ff52 | ||
|
|
802a199bbd | ||
|
|
0326355edc | ||
|
|
94f1aade5c | ||
|
|
1a54ecf246 | ||
|
|
fe54121cfa | ||
|
|
319844407c | ||
|
|
77b2742863 | ||
|
|
e57226d9a2 | ||
|
|
021c3cc125 | ||
|
|
0b3a54f9f2 | ||
|
|
7808f8f56b | ||
|
|
e3c8c23d91 | ||
|
|
1646000c9b | ||
|
|
b4cabc3cf7 | ||
|
|
e8e3c7addb | ||
|
|
608ce78778 | ||
|
|
824ad46e5d | ||
|
|
977433443a | ||
|
|
0d477bf570 | ||
|
|
5bf8248dd3 | ||
|
|
2e3664d2c0 | ||
|
|
fad44ae10c | ||
|
|
7b36727ed1 | ||
|
|
f096e5a3f3 | ||
|
|
53c6fa5de7 | ||
|
|
97168180cf | ||
|
|
57374489da | ||
|
|
1d145c7511 | ||
|
|
820202cd53 | ||
|
|
4c773971a7 | ||
|
|
9e8e9af485 | ||
|
|
4f60946513 | ||
|
|
ac9318c78f | ||
|
|
76cf8dff93 |
35
.clangd
35
.clangd
@@ -1,4 +1,33 @@
|
||||
CompileFlags:
|
||||
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
|
||||
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
|
||||
Compiler: clang
|
||||
Add:
|
||||
[
|
||||
-Wno-unknown-attributes,
|
||||
-Wno-maybe-uninitialized,
|
||||
-Wno-unknown-warning-option,
|
||||
-Wno-pointer-to-int-cast,
|
||||
-Wno-int-to-void-pointer-cast,
|
||||
-DPROGMEM=,
|
||||
]
|
||||
Remove:
|
||||
[
|
||||
-W*,
|
||||
-mmcu=*,
|
||||
-mcpu=*,
|
||||
-mfpu=*,
|
||||
-mfloat-abi=*,
|
||||
-mno-unaligned-access,
|
||||
-mno-thumb-interwork,
|
||||
-mcall-prologues,
|
||||
-D__has_include*,
|
||||
-mlra,
|
||||
]
|
||||
Compiler: clang
|
||||
Diagnostics:
|
||||
UnusedIncludes: None
|
||||
Suppress:
|
||||
[
|
||||
asm_invalid_output_constraint,
|
||||
asm_invalid_input_constraint,
|
||||
invalid_asm_value_for_constraint,
|
||||
anyx86_interrupt_attribute,
|
||||
]
|
||||
|
||||
430
.github/copilot-instructions.md
vendored
Normal file
430
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,430 @@
|
||||
---
|
||||
applyTo: "**"
|
||||
excludeAgent:
|
||||
- "coding-agent"
|
||||
---
|
||||
# GitHub Copilot Instructions for QMK Pull Request Review
|
||||
This document provides automated review guidance based on the [QMK PR Checklist](https://docs.qmk.fm/pr_checklist) and it is intended only for use by GitHub Copilot code-review agent during pull request reviews.
|
||||
|
||||
## General PR Requirements
|
||||
|
||||
### Branch and Submission Standards
|
||||
- **Source Branch Policy**: Verify PR is NOT submitted from submitter's own `master` branch
|
||||
- Flag if submitter is using their own `master` branch as source
|
||||
- Suggest using feature branches instead for cleaner fork management
|
||||
- **Target Branch Policy**:
|
||||
- **New keyboard additions** → `master` branch (new folders under `keyboards/`)
|
||||
- **All other changes** → `develop` branch:
|
||||
- Keyboard updates, refactors, or moves
|
||||
- Core code changes
|
||||
- Data-driven configuration migrations
|
||||
- Any modifications to existing keyboards
|
||||
- **PR Scope**: PRs should contain the smallest set of modifications for a single change
|
||||
- Flag PRs that modify multiple keyboards simultaneously
|
||||
- Suggest splitting large PRs into focused, incremental changes
|
||||
- **Merge Conflicts**: Check for unresolved merge conflicts
|
||||
|
||||
### File Naming and Structure
|
||||
- **Lowercase Requirement**: All new directories and filenames must be lowercase
|
||||
- Exception: Upstream sources with original uppercase (LUFA, ChibiOS)
|
||||
- Exception: Core files with valid justification
|
||||
- **Reject**: Board designer preference for uppercase is NOT valid justification
|
||||
|
||||
### License Headers
|
||||
- **Required**: Valid license headers on all `*.c` and `*.h` files
|
||||
- **Recommended**: GPL2/GPL3 for consistency
|
||||
- **Format**: Check for proper GPL2+ header or SPDX identifier
|
||||
```c
|
||||
// Copyright 2024 Your Name (@yourgithub)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
```
|
||||
- **Exception**: Simple assignment-only `rules.mk` files don't need headers
|
||||
- **Flag**: Missing or ambiguous license headers (blocks merge)
|
||||
|
||||
### QMK Best Practices
|
||||
- **Include Guards**: Use `#pragma once` instead of `#ifndef` guards in headers
|
||||
- **Abstractions Required**: No low-level GPIO/I2C/SPI functions
|
||||
- Must use QMK abstractions (flag direct hardware access)
|
||||
- **Timing Functions**:
|
||||
- Use `wait_ms()` instead of `_delay_ms()`
|
||||
- Remove `#include <util/delay.h>`
|
||||
- Use `timer_read()`, `timer_read32()` from `timer.h`
|
||||
- **New Abstractions**: If proposing new abstraction, suggest:
|
||||
1. Prototype in own keyboard first
|
||||
2. Discuss with QMK Collaborators on Discord
|
||||
3. Refactor as separate core change
|
||||
4. Remove the keyboard-specific implementation from board
|
||||
|
||||
---
|
||||
|
||||
## Keymap PR Reviews
|
||||
|
||||
**Scope**: These rules apply to files within `keyboards/*/keymaps/*` subdirectories.
|
||||
|
||||
### Note on Personal Keymaps
|
||||
- **Policy Change**: Personal keymap submissions no longer accepted
|
||||
- **Permitted**: Vendor-specific keymaps only
|
||||
- Naming convention: `default_${vendor}` (e.g., `default_clueboard`)
|
||||
- Can be more feature-rich than stock `default` keymaps
|
||||
|
||||
### Keymap Code Standards
|
||||
- **Includes**: `#include QMK_KEYBOARD_H` preferred over specific board files
|
||||
- **Enums**: Prefer layer enums to `#define`s
|
||||
- **Custom Keycodes**: First entry must be `QK_USER`
|
||||
- **Formatting**: Check spacing alignment on commas and keycodes (spaces, not tabs)
|
||||
- **VIA**: Keymaps should NOT enable VIA
|
||||
- VIA keymaps belong in [VIA QMK Userspace](https://github.com/the-via/qmk_userspace_via)
|
||||
|
||||
---
|
||||
|
||||
## Keyboard PR Reviews
|
||||
|
||||
**Scope**: These rules apply to keyboard-level files in `keyboards/*` directories, excluding files within the `keymaps/` subdirectories. This includes:
|
||||
- `info.json` or `keyboard.json` (keyboard root or variant level)
|
||||
- `readme.md` (keyboard level)
|
||||
- `rules.mk` (keyboard level)
|
||||
- `config.h` (keyboard level, not keymap level)
|
||||
- `<keyboard>.c` and `<keyboard>.h` files
|
||||
- Hardware configuration files (`halconf.h`, `mcuconf.h`, `chconf.h`)
|
||||
|
||||
### Branch Targeting
|
||||
- **New Keyboards**: Target `master` branch
|
||||
- New additions to `keyboards/` folder submit to `master`
|
||||
- **Keyboard Moves**: Must target `develop` branch
|
||||
- Check `data/mappings/keyboard_aliases.hjson` is updated for moves
|
||||
- **Keyboard Updates/Refactors**: Must target `develop` to reduce merge conflicts
|
||||
- **Data Driven Migration**: Must target `develop`
|
||||
|
||||
### info.json and keyboard.json Requirements
|
||||
- **Data-Driven Configuration**: Encourage maximum use of `info.json` and `keyboard.json` schema features
|
||||
- **Schema Validation**: All `info.json` and `keyboard.json` files must validate against `data/schemas/keyboard.jsonschema`
|
||||
- Use QMK CLI: `qmk lint -kb <keyboard_name>` to validate
|
||||
- Schema defines required fields, data types, and valid values
|
||||
- Check for schema validation errors before submitting PR
|
||||
- **Mandatory Elements**:
|
||||
- Valid URL
|
||||
- Valid maintainer
|
||||
- Valid USB VID/PID and device version
|
||||
- Displays correctly in Configurator (Ctrl+Shift+I to preview)
|
||||
- `layout` definitions include matrix positions
|
||||
- Standard layout definitions where applicable
|
||||
- Community Layout macro names when applicable
|
||||
- Microcontroller and bootloader specified
|
||||
- Diode direction (if not using direct pins)
|
||||
- **Layout Naming**:
|
||||
- Single layout: Use `LAYOUT` or community layout name
|
||||
- Multiple layouts: Include `LAYOUT_all` + alternate names
|
||||
- Prefer community layout names (e.g., `LAYOUT_tkl_ansi`, `LAYOUT_ortho_4x4`)
|
||||
- **Configuration in info.json or keyboard.json** (when applicable):
|
||||
- Direct pin configuration
|
||||
- Backlight, Split keyboard, Encoder, Bootmagic configs
|
||||
- LED Indicator, RGB Light, RGB Matrix configs
|
||||
- **Format**: Run `qmk format-json -i` before submitting
|
||||
|
||||
### USB VID/PID Uniqueness
|
||||
VID+PID combination must be unique across all keyboards. Individual VID or PID values can be reused with different partners.
|
||||
**Validation Steps:**
|
||||
1. Extract VID and PID from keyboard.json/info.json in the PR
|
||||
2. Search for existing usage: `grep -r '"vid".*"0xVVVV"' keyboards/ --include="*.json" | grep -l '"pid".*"0xPPPP"'`
|
||||
3. If results found: Check if BOTH VID AND PID match in same file
|
||||
- Both match = **COLLISION** - request different PID
|
||||
- Only one matches = **OK** - different keyboards can share individual values
|
||||
4. For keyboard variants/revisions under same keyboard folder:
|
||||
- Different PID recommended for functionally different variants
|
||||
- Same PID acceptable if revisions only differ in hardware routing/pin assignments
|
||||
**Quick Reference:**
|
||||
- Same PID + Different VID = Valid
|
||||
- Same VID + Different PID = Valid
|
||||
- Same VID + Same PID = Invalid
|
||||
**Review Response:**
|
||||
For collision:
|
||||
```
|
||||
VID+PID collision: 0xVVVV:0xPPPP already used by keyboards/[path]/file.json
|
||||
+Please assign a different PID. VID can remain the same.
|
||||
```
|
||||
For uniqueness confirmed:
|
||||
```
|
||||
VID+PID validation: 0xVVVV:0xPPPP is unique (no collisions found)
|
||||
```
|
||||
|
||||
### readme.md Requirements
|
||||
- **Template**: Must follow [official template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
|
||||
- **Flash Command**: Present with `:flash` at end
|
||||
- **Hardware Link**: Valid availability link (unless handwired)
|
||||
- Private groupbuys acceptable
|
||||
- One-off prototypes will be questioned
|
||||
- Open-source should link to files
|
||||
- **Reset Instructions**: Clear bootloader mode instructions
|
||||
- **Images Required**:
|
||||
- Keyboard and PCB photos preferred
|
||||
- Must be hosted externally (imgur, etc.)
|
||||
- Direct image links required (not preview pages)
|
||||
- Example: `https://i.imgur.com/vqgE7Ok.jpg` not `https://imgur.com/vqgE7Ok`
|
||||
|
||||
### rules.mk Standards
|
||||
- **Removed Items**:
|
||||
- `MIDI_ENABLE`, `FAUXCLICKY_ENABLE`, `HD44780_ENABLE`
|
||||
- Size comments like `(-/+size)`
|
||||
- Alternate bootloader lists if one specified
|
||||
- MCU parameter re-definitions matching defaults in `mcu_selection.mk`
|
||||
- **Comment Updates**: Change bootloader comments to generic
|
||||
- **Forbidden Features at Keyboard Level** (these belong in keymap-level `rules.mk` only):
|
||||
- `COMBO_ENABLE`
|
||||
- `ENCODER_MAP_ENABLE`
|
||||
|
||||
### config.h Standards (Keyboard Level)
|
||||
- **Prohibited**:
|
||||
- `#define DESCRIPTION`
|
||||
- Magic Key Options, MIDI Options, HD44780 configuration
|
||||
- User preference `#define`s (belong in keymap)
|
||||
- Re-defining default values (`DEBOUNCE`, RGB settings)
|
||||
- Copy/pasted comment blocks explaining features
|
||||
- Commented-out unused defines
|
||||
- `#include "config_common.h"`
|
||||
- `#define MATRIX_ROWS/COLS` (unless custom matrix)
|
||||
- **Minimal Code**: Only critical board boot code required
|
||||
- **No Vial**: Vial-related files/changes not accepted
|
||||
|
||||
### Keyboard Implementation Files
|
||||
|
||||
#### `<keyboard>.c`
|
||||
- **Remove Empty Functions**: Delete empty or commented-out weak-defined functions
|
||||
- `xxxx_xxxx_kb()`, `xxxx_xxxx_user()` implementations
|
||||
- **Migration**: `matrix_init_board()` → `keyboard_pre_init_kb()`
|
||||
- **Custom Matrix**: Use `lite` variant when possible for standard debounce
|
||||
- `CUSTOM_MATRIX = lite` preferred
|
||||
- Full custom matrix (`yes`) requires justification
|
||||
- **LED Indicators**: Prefer Configuration Options over custom `led_update_*()` implementations
|
||||
- **Hardware Configuration**: Basic functionality for OLED, encoders, etc. at keyboard level
|
||||
|
||||
#### `<keyboard>.h`
|
||||
- **Include**: `#include "quantum.h"` at top
|
||||
- **Layout Macros**: Move to `info.json` or `keyboard.json` (no longer in header)
|
||||
|
||||
### Default Keymap Standards
|
||||
|
||||
**Scope**: These rules specifically apply to files within `keyboards/*/keymaps/default/` directories.
|
||||
|
||||
- **Pristine Requirement**: Bare minimum clean slate
|
||||
- No custom keycodes
|
||||
- No advanced features (non-exhaustive list of examples: tap dance, macros)
|
||||
- Basic mod taps and home row mods acceptable when necessary
|
||||
- Standard layouts preferred -- see examples in `layouts/default/` and `layouts/community/`
|
||||
- **Removed Examples**: Delete `QMKBEST`/`QMKURL` macros
|
||||
- **Tri Layer**: Use Tri Layer feature instead of manual `layer_on/off()` + `update_tri_layer()`
|
||||
- **Encoder Map**: Use encoder map feature, `encoder_update_user()` may not be present
|
||||
- **No VIA**: Default keymap should not enable VIA
|
||||
- **Additional Keymaps**: Example/bells-and-whistles keymaps acceptable in same PR (separate from default)
|
||||
|
||||
### Prohibited Files
|
||||
- **No VIA JSON**: Belongs in [VIA Keyboard Repo](https://github.com/the-via/keyboards)
|
||||
- **No KLE JSON**: Not used within QMK
|
||||
- **No Cross-Keyboard Sources**: Don't include files from other keyboard vendors
|
||||
- Exception: Core files (e.g., `drivers/sensors/pmw3360.c`)
|
||||
- Use of vendor-specific code (e.g., `wilba_tech/wt_main.c`) only when keyboard exists in the same enclosing vendor folder (e.g. a `wilba_tech` keyboard)
|
||||
- Multi-board code is candidate for core refactoring when intended for use by multiple vendors
|
||||
|
||||
### Wireless Keyboards
|
||||
- **Policy**: Wireless/Bluetooth PRs rejected without complete wireless code
|
||||
- Wireless code may not include anything resembling precompiled data such as `*.a` files or other libraries
|
||||
- Firmware blobs are not permitted in raw form or as compiled C-style arrays either.
|
||||
- GPL2+ license requires full source disclosure
|
||||
- Historically abused for VIA compatibility without releasing sources
|
||||
- PRs without wireless capability will be held indefinitely
|
||||
- Existing merged wireless boards from same vendor held until sources provided
|
||||
|
||||
### ChibiOS-Specific Requirements
|
||||
- **Board Definitions**: Strong preference for existing ChibiOS board definitions
|
||||
- Use equivalent Nucleo boards when possible
|
||||
- Example: STM32L082KZ can use `BOARD = ST_NUCLEO64_L073RZ`
|
||||
- QMK is eliminating custom board definitions due to maintenance burden
|
||||
- **New Board Definitions**:
|
||||
- Must NOT be embedded in keyboard PR
|
||||
- Submit as separate Core PR
|
||||
- `board.c` must have standard `__early_init()` and empty `boardInit()`
|
||||
- Migrate code intended for `__early_init()` → keyboard-local `early_hardware_init_pre/post()`
|
||||
- Migrate code intended for `boardInit()` → keyboard-local `board_init()`
|
||||
|
||||
---
|
||||
|
||||
## Core PR Reviews
|
||||
|
||||
### Targeting and Scope
|
||||
- **Branch**: All core PRs must target `develop` branch
|
||||
- **Single Focus**: Smallest set of changes per PR
|
||||
- PRs with multiple areas will be asked to split
|
||||
- Keyboard/keymap changes only if affecting base builds or default-like keymaps
|
||||
- Keymap modifications (non-default) should be followup PR after core merge
|
||||
- Large refactoring PRs affecting other keymaps raised separately
|
||||
|
||||
### Testing Requirements
|
||||
- **New Hardware Support**: Requires test keyboard under `keyboards/handwired/onekey`
|
||||
- New MCUs: Add child keyboard targeting new MCU for build verification
|
||||
- New hardware (displays, matrix, peripherals): Provide associated keymap
|
||||
- Exception: If existing keymap can leverage functionality (consult Collaborators)
|
||||
- **Callbacks**: New `_kb`/`_user` callbacks must return `bool` for user override
|
||||
- **Unit Tests**: Strongly recommended, may be required
|
||||
- Critical code areas (keycode pipeline) will require tests
|
||||
- Boost confidence in current and future correctness
|
||||
|
||||
### Code Quality
|
||||
- **Subjective Review**: Other requirements at QMK Collaborators' discretion
|
||||
- **Documentation**: Core changes should be well-documented
|
||||
|
||||
---
|
||||
|
||||
## Automated Review Checklist
|
||||
|
||||
When reviewing PRs, check the following systematically:
|
||||
|
||||
### File Changes Review
|
||||
1. **License headers** on all C/H files (GPL2+ preferred, others must be GPL2+ compatible, SPDX format preferred)
|
||||
2. **File naming** lowercase (flag exceptions needing justification)
|
||||
3. **Include guards** use `#pragma once`
|
||||
4. **No low-level hardware access** (GPIO, I2C, SPI direct register writes)
|
||||
5. **Timing abstractions** (`wait_ms()`, `timer_read()` usage)
|
||||
|
||||
### info.json and keyboard.json Validation
|
||||
1. **Schema Compliance**: `keyboard.json` and `info.json` files validate against `data/schemas/keyboard.jsonschema`
|
||||
- Both files are identical syntax, however the `keyboard.json` dictates a buildable target, `info.json` does not
|
||||
- Run `qmk lint -kb <keyboard>` to check schema validation
|
||||
- Check for proper data types (strings, integers, arrays, objects)
|
||||
- Verify required fields are present
|
||||
- Ensure enum values match allowed options in schema
|
||||
2. All mandatory fields present and valid
|
||||
3. `qmk format-json -i` has been run (formats and validates)
|
||||
4. Layout macros moved from headers
|
||||
5. Community layout names used where applicable
|
||||
|
||||
### rules.mk Cleanup
|
||||
1. Deprecated features removed
|
||||
2. No size comments
|
||||
3. No keymap-only features at keyboard level
|
||||
4. No redundant MCU parameter definitions
|
||||
|
||||
### config.h Cleanup
|
||||
1. No `DESCRIPTION`, `config_common.h`, or prohibited includes
|
||||
2. No default value re-definitions
|
||||
3. No commented-out defines or feature documentation blocks
|
||||
4. No user preference defines at keyboard level
|
||||
|
||||
### Keymap Quality
|
||||
1. Default keymaps are pristine (no custom keycodes/advanced features)
|
||||
2. No `QMKBEST`/`QMKURL` macros
|
||||
3. Encoder map feature used instead of `encoder_update_user()`
|
||||
4. Tri Layer feature used for multi-layer access
|
||||
5. No VIA enabled in default keymap
|
||||
|
||||
### Documentation
|
||||
1. readme.md follows template
|
||||
2. Flash command present with `:flash`
|
||||
3. Reset instructions clear
|
||||
4. External image hosting (direct links)
|
||||
5. Valid hardware availability link
|
||||
|
||||
### Code Organization
|
||||
1. Empty weak-defined functions removed from `<keyboard>.c`
|
||||
2. Proper migration of init functions
|
||||
3. No cross-vendor source files
|
||||
4. No VIA/KLE JSON files
|
||||
|
||||
### Branch and Scope
|
||||
1. Not submitted from submitter's own `master` branch (use feature branches)
|
||||
2. PR is focused on single change
|
||||
3. Targets correct branch:
|
||||
- `master` for new keyboard additions
|
||||
- `develop` for keyboard updates/refactors/moves and core changes
|
||||
4. No merge conflicts
|
||||
|
||||
---
|
||||
|
||||
## Review Response Templates
|
||||
|
||||
### For source master branch usage:
|
||||
```
|
||||
⚠️ This PR appears to be submitted from your own `master` branch. For future PRs, we recommend using feature branches instead of committing to your `master`. This makes it easier to keep your fork updated and manage multiple PRs.
|
||||
|
||||
See: [Best Practices: Your Fork's Master](https://docs.qmk.fm/newbs_git_using_your_master_branch)
|
||||
```
|
||||
|
||||
### For incorrect target branch:
|
||||
```
|
||||
❌ This PR targets the wrong branch:
|
||||
- **New keyboard additions** should target `master`
|
||||
- **Keyboard updates/refactors/moves** should target `develop`
|
||||
- **Core changes** should target `develop`
|
||||
|
||||
Please change the target branch accordingly.
|
||||
```
|
||||
|
||||
### For missing license headers:
|
||||
```
|
||||
❌ Missing GPL-compatible license headers on the following files:
|
||||
- [list files]
|
||||
|
||||
Please add GPL2+ headers (GPL2/GPL3 recommended). Example:
|
||||
\`\`\`c
|
||||
// Copyright 2024 Your Name (@yourgithub)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
\`\`\`
|
||||
```
|
||||
|
||||
### For non-lowercase filenames:
|
||||
```
|
||||
❌ The following files/directories must be lowercase:
|
||||
- [list files]
|
||||
|
||||
Exception: Only valid if from upstream sources (LUFA, ChibiOS) or justified by core consistency.
|
||||
```
|
||||
|
||||
### For config.h violations:
|
||||
```
|
||||
⚠️ Found prohibited config.h elements:
|
||||
- [list specific issues: DESCRIPTION, default value re-definitions, etc.]
|
||||
|
||||
Please remove these and refer to [Data Driven Configuration](https://docs.qmk.fm/data_driven_config).
|
||||
```
|
||||
|
||||
### For info.json or keyboard.json issues:
|
||||
```
|
||||
⚠️ info.json or keyboard.json needs attention:
|
||||
- [list missing mandatory fields]
|
||||
- Please run: \`qmk format-json -i path/to/info.json\` (or keyboard.json)
|
||||
- Validate with: \`qmk lint -kb <keyboard_name>\`
|
||||
```
|
||||
|
||||
### For schema validation errors:
|
||||
```
|
||||
❌ Schema validation failed for info.json or keyboard.json:
|
||||
- [list specific validation errors from schema]
|
||||
- Check `data/schemas/keyboard.jsonschema` for valid field definitions
|
||||
- Common issues:
|
||||
- Invalid data types (e.g., string instead of integer)
|
||||
- Missing required fields
|
||||
- Invalid enum values
|
||||
- Incorrectly formatted pin definitions
|
||||
```
|
||||
|
||||
### For non-pristine default keymap:
|
||||
```
|
||||
⚠️ Default keymap should be pristine (clean slate for users):
|
||||
- Remove: [custom keycodes/tap dance/macros/etc.]
|
||||
- Keep it minimal with standard layouts where possible
|
||||
|
||||
Consider moving advanced features to a separate example keymap.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes for GitHub Copilot
|
||||
|
||||
- Focus reviews on **objective checklist items** that can be automatically verified
|
||||
- Flag **definite violations** with ❌
|
||||
- Suggest improvements for **recommendations** with ⚠️
|
||||
- **Provide specific file/line references** when flagging issues
|
||||
- **Link to relevant QMK documentation** for each issue
|
||||
- **Prioritize blocking issues** (license, merge conflicts, branch policy)
|
||||
- **Be constructive**: Suggest fixes, not just problems
|
||||
- **Acknowledge trade-offs**: Some guidelines have valid exceptions
|
||||
|
||||
This is meant as a **first-pass review** to catch common issues before human review. Complex architectural decisions, code quality, and subjective assessments still require human QMK Collaborator review.
|
||||
2
.github/workflows/api.yml
vendored
2
.github/workflows/api.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
2
.github/workflows/auto_approve.yml
vendored
2
.github/workflows/auto_approve.yml
vendored
@@ -4,7 +4,7 @@ permissions: {}
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "*/5 * * * *"
|
||||
- cron: "*/30 * * * *"
|
||||
|
||||
jobs:
|
||||
automatic_approve:
|
||||
|
||||
2
.github/workflows/auto_tag.yml
vendored
2
.github/workflows/auto_tag.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
289
.github/workflows/bootstrap_testing.yml
vendored
Normal file
289
.github/workflows/bootstrap_testing.yml
vendored
Normal file
@@ -0,0 +1,289 @@
|
||||
name: Bootstrap Script Testing
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master, develop, xap]
|
||||
paths:
|
||||
- 'util/env-bootstrap.sh'
|
||||
- '.github/workflows/bootstrap_testing.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'util/env-bootstrap.sh'
|
||||
- '.github/workflows/bootstrap_testing.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
prep:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
any_changed: ${{ steps.file_changes.outputs.any_changed }}
|
||||
|
||||
steps:
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
uses: tj-actions/changed-files@v47
|
||||
with:
|
||||
use_rest_api: true
|
||||
files: |
|
||||
util/env-bootstrap.sh
|
||||
.github/workflows/bootstrap_testing.yml
|
||||
|
||||
bootstrap-test-linux:
|
||||
name: Bootstrap (Linux)
|
||||
|
||||
needs: prep
|
||||
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
distribution:
|
||||
# Ubuntu/Debian based
|
||||
- debian:11
|
||||
- debian:12
|
||||
- debian:13
|
||||
- ubuntu:20.04
|
||||
- ubuntu:22.04
|
||||
- ubuntu:24.04
|
||||
|
||||
# RHEL/CentOS/Fedora based
|
||||
- fedora:41
|
||||
- fedora:42
|
||||
- fedora:43
|
||||
- rockylinux:8
|
||||
- rockylinux:9
|
||||
- rockylinux/rockylinux:10
|
||||
- almalinux:8
|
||||
- almalinux:9
|
||||
- almalinux:10
|
||||
|
||||
# OpenSUSE based (we skip Tumbleweed as it has issues with package versions between pattern installs and other dependencies preinstalled into the base container)
|
||||
- opensuse/leap:latest
|
||||
|
||||
# Gentoo-based
|
||||
- gentoo/stage3:latest
|
||||
|
||||
# Arch based
|
||||
- archlinux:latest
|
||||
- cachyos/cachyos:latest
|
||||
- manjarolinux/base:latest
|
||||
|
||||
container:
|
||||
image: ${{ matrix.distribution }}
|
||||
options: --privileged
|
||||
|
||||
steps:
|
||||
- name: Install base dependencies
|
||||
run: |
|
||||
# Attempt to run the package installation up to 10 times to mitigate transient network issues
|
||||
for n in $(seq 1 10); do
|
||||
{
|
||||
echo "Attempt #$n of 10 to install base dependencies:"
|
||||
case "${{ matrix.distribution }}" in
|
||||
*ubuntu*|*debian*)
|
||||
apt-get update
|
||||
apt-get install -y sudo git passwd
|
||||
;;
|
||||
*fedora*|*rockylinux*|*almalinux*)
|
||||
dnf install -y sudo git passwd findutils # findutils=xargs
|
||||
;;
|
||||
*suse*)
|
||||
zypper --non-interactive refresh
|
||||
zypper --non-interactive install sudo git shadow findutils # findutils=xargs
|
||||
;;
|
||||
*gentoo*)
|
||||
emerge-webrsync
|
||||
emerge --noreplace --ask=n sudo dev-vcs/git shadow findutils # findutils=xargs
|
||||
;;
|
||||
*archlinux*|*cachyos*|*manjaro*)
|
||||
pacman -Syu --noconfirm
|
||||
pacman -S --noconfirm sudo git
|
||||
;;
|
||||
esac
|
||||
} && break || sleep 10
|
||||
done
|
||||
|
||||
# Fix PAM configuration for sudo in containers
|
||||
# Fix /etc/shadow permissions - common issue in container environments
|
||||
chmod 640 /etc/shadow || chmod 400 /etc/shadow || true
|
||||
|
||||
# Disable problematic PAM modules that commonly fail in RHEL-like containers
|
||||
sed -i 's/^session.*pam_systemd.so/#&/' /etc/pam.d/sudo || true
|
||||
sed -i 's/^session.*pam_loginuid.so/#&/' /etc/pam.d/sudo || true
|
||||
|
||||
# Ensure proper sudoers configuration
|
||||
echo 'Defaults !requiretty' >> /etc/sudoers
|
||||
echo 'Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' >> /etc/sudoers
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: recursive
|
||||
path: qmk_firmware
|
||||
|
||||
- name: Create test user
|
||||
run: |
|
||||
# Create a test user for the bootstrap script
|
||||
useradd -m -s /bin/bash -U testuser
|
||||
echo 'testuser:testpassword' | chpasswd || true
|
||||
|
||||
# Configure passwordless sudo
|
||||
echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # some distros complain about root not being in sudoers
|
||||
echo "testuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Test sudo functionality
|
||||
sudo -u testuser whoami || echo "Sudo test failed, but continuing..."
|
||||
|
||||
- name: Move QMK repository to test user home
|
||||
run: |
|
||||
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
|
||||
git -C qmk_firmware remote add upstream https://github.com/qmk/qmk_firmware.git
|
||||
# Move the QMK repository to the test user's home directory
|
||||
mv qmk_firmware /home/testuser/qmk_firmware
|
||||
chown -R testuser:testuser /home/testuser/qmk_firmware
|
||||
|
||||
- name: Run bootstrap script
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
# Ensure the bootstrap script can access sudo
|
||||
sudo -u testuser --preserve-env=GITHUB_TOKEN bash -c "
|
||||
export CONFIRM=1
|
||||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
cd /home/testuser
|
||||
bash /home/testuser/qmk_firmware/util/env-bootstrap.sh
|
||||
"
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo -u testuser bash -c "
|
||||
/home/testuser/.local/share/uv/tools/qmk/bin/python -m pip install -r /home/testuser/qmk_firmware/requirements.txt
|
||||
"
|
||||
|
||||
- name: Test QMK CLI
|
||||
run: |
|
||||
sudo -u testuser bash -c "
|
||||
export PATH=/home/testuser/.local/bin:\$PATH
|
||||
cd /home/testuser
|
||||
qmk setup -y -H /home/testuser/qmk_firmware # setup implies doctor, no need to run it separately
|
||||
cd /home/testuser/qmk_firmware
|
||||
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset -p || touch .failed # Compile a bunch of different platforms
|
||||
"
|
||||
|
||||
cd /home/testuser/qmk_firmware
|
||||
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
|
||||
[ ! -e .failed ] || exit 1
|
||||
|
||||
bootstrap-test-macos:
|
||||
name: Bootstrap (macOS)
|
||||
|
||||
needs: prep
|
||||
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- macos-14 # Apple Silicon ARM64
|
||||
- macos-15 # Apple Silicon ARM64
|
||||
- macos-15-intel # Intel x64
|
||||
- macos-26 # Apple Silicon ARM64
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: recursive
|
||||
|
||||
- name: Run bootstrap script
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
|
||||
git remote add upstream https://github.com/qmk/qmk_firmware.git
|
||||
# Run the bootstrap script
|
||||
export CONFIRM=1
|
||||
sh ./util/env-bootstrap.sh
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
$HOME/.local/share/uv/tools/qmk/bin/python -m pip install -r requirements.txt
|
||||
|
||||
- name: Test QMK CLI
|
||||
run: |
|
||||
# Add QMK CLI to PATH (bootstrap script installs it to ~/.local/bin on macOS)
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
qmk setup -y -H . # setup implies doctor, no need to run it separately
|
||||
qmk mass-compile -j $(sysctl -n hw.ncpu) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
|
||||
|
||||
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
|
||||
[ ! -e .failed ] || exit 1
|
||||
|
||||
bootstrap-test-windows:
|
||||
name: Bootstrap (Windows)
|
||||
|
||||
needs: prep
|
||||
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
msys-variant:
|
||||
- mingw64
|
||||
- clang64
|
||||
- ucrt64
|
||||
|
||||
runs-on: windows-latest
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
|
||||
steps:
|
||||
- name: Install MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{ matrix.msys-variant }}
|
||||
pacboy: >-
|
||||
git:
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: recursive
|
||||
|
||||
- name: Run bootstrap script
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
|
||||
git remote add upstream https://github.com/qmk/qmk_firmware.git
|
||||
# Run the bootstrap script
|
||||
export CONFIRM=1
|
||||
sh ./util/env-bootstrap.sh
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
/opt/uv/tools/qmk/Scripts/python -m pip install -r requirements.txt
|
||||
|
||||
- name: Test QMK CLI
|
||||
run: |
|
||||
# Add QMK CLI to PATH (bootstrap script installs it to /opt/uv/tools/bin on Windows MSYS2)
|
||||
export PATH="/opt/uv/tools/bin:$PATH"
|
||||
qmk setup -y -H . # setup implies doctor, no need to run it separately
|
||||
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
|
||||
|
||||
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
|
||||
[ ! -e .failed ] || exit 1
|
||||
|
||||
47
.github/workflows/ci_build_major_branch.yml
vendored
47
.github/workflows/ci_build_major_branch.yml
vendored
@@ -6,13 +6,13 @@ permissions:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master, develop]
|
||||
branches: [master, develop, xap]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch:
|
||||
type: choice
|
||||
description: "Branch to build"
|
||||
options: [master, develop]
|
||||
options: [master, develop, xap]
|
||||
|
||||
env:
|
||||
# https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
|
||||
@@ -32,29 +32,36 @@ jobs:
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
|
||||
outputs:
|
||||
keymaps: ${{ steps.generate_slice_length.outputs.keymaps }}
|
||||
slice_length: ${{ steps.generate_slice_length.outputs.slice_length }}
|
||||
|
||||
steps:
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y jq
|
||||
|
||||
- name: Disable safe.directory check
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Determine concurrency
|
||||
id: generate_slice_length
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
target_count=$( {
|
||||
qmk find -km default 2>/dev/null
|
||||
# qmk find -km xap 2>/dev/null
|
||||
} | sort | uniq | wc -l)
|
||||
targets=()
|
||||
target_count=0
|
||||
for target in "default" "xap"; do
|
||||
count=$(qmk find -km $target 2>/dev/null | wc -l)
|
||||
if [ $count -gt 0 ]; then
|
||||
target_count=$(($target_count + $count))
|
||||
targets+=($target)
|
||||
fi
|
||||
done
|
||||
keymaps=$(jq -c -n '$ARGS.positional' --args "${targets[@]}")
|
||||
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution
|
||||
echo "keymaps=$keymaps" >> $GITHUB_OUTPUT
|
||||
echo "slice_length=$slice_length" >> $GITHUB_OUTPUT
|
||||
|
||||
build_targets:
|
||||
@@ -63,8 +70,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
keymap: [default]
|
||||
# keymap: [default, xap]
|
||||
keymap: ${{ fromJson(needs.determine_concurrency.outputs.keymaps) }}
|
||||
uses: ./.github/workflows/ci_build_major_branch_keymap.yml
|
||||
with:
|
||||
branch: ${{ inputs.branch || github.ref_name }}
|
||||
@@ -83,12 +89,12 @@ jobs:
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download firmwares
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: firmware-*
|
||||
path: .
|
||||
@@ -126,14 +132,7 @@ jobs:
|
||||
SOURCE_DIR: .
|
||||
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
|
||||
|
||||
- name: Check if failure marker file exists
|
||||
id: check_failure_marker
|
||||
uses: andstor/file-existence-action@v3
|
||||
with:
|
||||
files: ./.failed
|
||||
|
||||
- name: Fail build if needed
|
||||
if: steps.check_failure_marker.outputs.files_exists == 'true'
|
||||
run: |
|
||||
# Exit with failure if the compilation stage failed
|
||||
exit 1
|
||||
[ ! -e .failed ] || exit 1
|
||||
|
||||
@@ -27,30 +27,29 @@ jobs:
|
||||
targets: ${{ steps.generate_targets.outputs.targets }}
|
||||
|
||||
steps:
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y jq
|
||||
|
||||
- name: Disable safe.directory check
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Generate build targets
|
||||
shell: 'bash {0}'
|
||||
id: generate_targets
|
||||
run: |
|
||||
{ # Intentionally use `shuf` here so that we share manufacturers across all build groups -- some have a lot of ARM-based boards which inherently take longer
|
||||
counter=0
|
||||
echo -n '{'
|
||||
qmk find -km ${{ inputs.keymap }} 2>/dev/null | sort | uniq | shuf | xargs -L${{ inputs.slice_length }} | while IFS=$'\n' read target ; do
|
||||
qmk find -km ${{ inputs.keymap }} 2>/dev/null | sort | uniq | shuf --random-source=<(openssl enc -aes-256-ctr -pass pass:qmk -nosalt </dev/zero 2>/dev/null) | xargs -L${{ inputs.slice_length }} | while IFS=$'\n' read target ; do
|
||||
if [ $counter -gt 0 ]; then
|
||||
echo -n ','
|
||||
fi
|
||||
counter=$((counter+1))
|
||||
printf "\"group %02d\":{" $counter
|
||||
printf "\"group-%02d\":{" $counter
|
||||
echo -n '"targets":"'
|
||||
echo $target | tr ' ' '\n' | sort | uniq | xargs echo -n
|
||||
echo -n '"}'
|
||||
@@ -62,7 +61,7 @@ jobs:
|
||||
echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload targets json
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: targets-${{ inputs.keymap }}
|
||||
path: targets.json
|
||||
@@ -74,45 +73,76 @@ jobs:
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
continue-on-error: true
|
||||
|
||||
env:
|
||||
CCACHE_CONFIGPATH: ~/.cache
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
target: ${{ fromJson(needs.generate_targets.outputs.targets) }}
|
||||
|
||||
steps:
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y jq
|
||||
|
||||
- name: Disable safe.directory check
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Get target definitions
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: targets-${{ inputs.keymap }}
|
||||
path: .
|
||||
|
||||
- name: Deploy submodules
|
||||
run: |
|
||||
qmk git-submodule -f
|
||||
|
||||
- name: Dump targets
|
||||
run: |
|
||||
jq -r '.["${{ matrix.target }}"].targets' targets.json | tr ' ' '\n' | sort
|
||||
|
||||
- name: Restore Cache
|
||||
id: cache
|
||||
uses: actions/cache/restore@v5
|
||||
with:
|
||||
path: ${{ env.CCACHE_CONFIGPATH }}
|
||||
key: compile-${{ inputs.keymap }}-${{ matrix.target }}
|
||||
|
||||
- name: Build targets
|
||||
continue-on-error: true
|
||||
run: |
|
||||
export NCPUS=$(( $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -1 ))
|
||||
qmk mass-compile -t -j $NCPUS -e DUMP_CI_METADATA=yes $(jq -r '.["${{ matrix.target }}"].targets' targets.json) || touch .failed
|
||||
targets=$(jq -r '.["${{ matrix.target }}"].targets' targets.json | tr ' ' '\n' | sort)
|
||||
if [ -z "${targets}" ]; then
|
||||
echo "Zero build targets detected"
|
||||
exit 0
|
||||
fi
|
||||
qmk mass-compile -t -j $(nproc) -e DUMP_CI_METADATA=yes -e USE_CCACHE=yes $targets || touch .failed
|
||||
|
||||
- name: Dump ccache stats
|
||||
run: |
|
||||
ccache -s
|
||||
|
||||
# Delete the old cache on hit to emulate a cache update. See https://github.com/actions/cache/issues/342.
|
||||
- name: Delete old cache
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
if: steps.cache.outputs.cache-hit
|
||||
run: |
|
||||
count=$(gh cache list --ref ${{ github.ref }} --key ${{ steps.cache.outputs.cache-primary-key }} --json id | jq length)
|
||||
if [ $count -gt 0 ]; then
|
||||
gh cache delete --ref ${{ github.ref }} ${{ steps.cache.outputs.cache-primary-key }}
|
||||
fi
|
||||
|
||||
- name: Save Cache
|
||||
uses: actions/cache/save@v5
|
||||
with:
|
||||
path: ${{ env.CCACHE_CONFIGPATH }}
|
||||
key: compile-${{ inputs.keymap }}-${{ matrix.target }}
|
||||
|
||||
- name: Upload binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: firmware-${{ inputs.keymap }}-${{ matrix.target }}
|
||||
if-no-files-found: ignore
|
||||
@@ -136,17 +166,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Download firmwares
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: firmware-${{ inputs.keymap }}-*
|
||||
path: .
|
||||
merge-multiple: true
|
||||
|
||||
- name: Upload all firmwares
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: firmware-${{ inputs.keymap }}
|
||||
if-no-files-found: ignore
|
||||
@@ -165,7 +195,7 @@ jobs:
|
||||
truncate --size='<960K' $GITHUB_STEP_SUMMARY || true
|
||||
|
||||
- name: Delete temporary build artifacts
|
||||
uses: geekyeggo/delete-artifact@v5
|
||||
uses: geekyeggo/delete-artifact@v6
|
||||
with:
|
||||
name: |
|
||||
firmware-${{ inputs.keymap }}-*
|
||||
|
||||
3
.github/workflows/cli.yml
vendored
3
.github/workflows/cli.yml
vendored
@@ -24,11 +24,12 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run tests
|
||||
run: qmk pytest
|
||||
|
||||
34
.github/workflows/develop_docs.yml
vendored
Normal file
34
.github/workflows/develop_docs.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Generate Develop Docs
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
paths:
|
||||
- 'builddefs/docsgen/**'
|
||||
- 'tmk_core/**'
|
||||
- 'quantum/**'
|
||||
- 'platforms/**'
|
||||
- 'docs/**'
|
||||
- '.github/workflows/docs.yml'
|
||||
|
||||
jobs:
|
||||
generate:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Deploy Develop
|
||||
if: ${{ github.repository == 'qmk/qmk_firmware' }}
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
github-token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
script: |
|
||||
const result = await github.rest.actions.createWorkflowDispatch({
|
||||
owner: 'qmk',
|
||||
repo: 'qmk_docs_devel',
|
||||
workflow_id: 'develop.yml',
|
||||
ref: 'main',
|
||||
})
|
||||
2
.github/workflows/develop_update.yml
vendored
2
.github/workflows/develop_update.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
9
.github/workflows/docs.yml
vendored
9
.github/workflows/docs.yml
vendored
@@ -30,14 +30,15 @@ jobs:
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Install nvm
|
||||
run: |
|
||||
apt-get update && apt-get install -y rsync doxygen
|
||||
# install nvm
|
||||
touch $HOME/.bashrc
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
|
||||
@@ -56,7 +57,7 @@ jobs:
|
||||
|
||||
- name: Deploy
|
||||
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
|
||||
uses: JamesIves/github-pages-deploy-action@v4.7.3
|
||||
uses: JamesIves/github-pages-deploy-action@v4.8.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: gh-pages
|
||||
|
||||
2
.github/workflows/feature_branch_update.yml
vendored
2
.github/workflows/feature_branch_update.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
- riot
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
4
.github/workflows/format.yml
vendored
4
.github/workflows/format.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v46
|
||||
uses: tj-actions/changed-files@v47
|
||||
with:
|
||||
use_rest_api: true
|
||||
|
||||
|
||||
4
.github/workflows/format_push.yml
vendored
4
.github/workflows/format_push.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
git config user.email 'hello@qmk.fm'
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
uses: peter-evans/create-pull-request@v8
|
||||
if: ${{ github.repository == 'qmk/qmk_firmware'}}
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
|
||||
2
.github/workflows/labeler.yml
vendored
2
.github/workflows/labeler.yml
vendored
@@ -10,4 +10,4 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v5
|
||||
- uses: actions/labeler@v6
|
||||
|
||||
21
.github/workflows/lint.yml
vendored
21
.github/workflows/lint.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -27,11 +27,11 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v46
|
||||
uses: tj-actions/changed-files@v47
|
||||
with:
|
||||
use_rest_api: true
|
||||
|
||||
- name: Print info
|
||||
- name: Print git info
|
||||
run: |
|
||||
git rev-parse --short HEAD
|
||||
echo ${{ github.event.pull_request.base.sha }}
|
||||
@@ -57,7 +57,7 @@ jobs:
|
||||
if [[ $KEYMAP_ONLY -gt 0 ]]; then
|
||||
echo "linting ${KB}"
|
||||
|
||||
qmk lint --keyboard ${KB} && qmk info -l --keyboard ${KB}
|
||||
qmk lint --strict --keyboard ${KB} && qmk info -l --keyboard ${KB}
|
||||
exit_code=$(($exit_code + $?))
|
||||
fi
|
||||
done
|
||||
@@ -78,10 +78,21 @@ jobs:
|
||||
fi
|
||||
exit $exit_code
|
||||
|
||||
- name: Verify keyboard aliases
|
||||
- name: Reset git repo
|
||||
if: always()
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
git reset --hard
|
||||
git clean -xfd
|
||||
|
||||
- name: Verify keyboard targets
|
||||
if: always()
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
qmk ci-validate-keyboard-targets
|
||||
|
||||
- name: Verify keyboard aliases
|
||||
if: always()
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
qmk ci-validate-aliases
|
||||
|
||||
8
.github/workflows/regen.yml
vendored
8
.github/workflows/regen.yml
vendored
@@ -8,6 +8,9 @@ on:
|
||||
paths:
|
||||
- 'data/constants/**'
|
||||
- 'lib/python/**'
|
||||
- 'quantum/rgblight/rgblight_breathe_table.h'
|
||||
- 'quantum/keycodes.h'
|
||||
- 'quantum/keymap_extras/**'
|
||||
|
||||
jobs:
|
||||
regen:
|
||||
@@ -19,7 +22,10 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
|
||||
7
.github/workflows/regen_push.yml
vendored
7
.github/workflows/regen_push.yml
vendored
@@ -19,7 +19,10 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
@@ -34,7 +37,7 @@ jobs:
|
||||
git config user.email 'hello@qmk.fm'
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
uses: peter-evans/create-pull-request@v8
|
||||
if: ${{ github.repository == 'qmk/qmk_firmware'}}
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
|
||||
7
.github/workflows/unit_test.yml
vendored
7
.github/workflows/unit_test.yml
vendored
@@ -11,6 +11,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'builddefs/**'
|
||||
- '!builddefs/docsgen/**'
|
||||
- 'quantum/**'
|
||||
- 'platforms/**'
|
||||
- 'tmk_core/**'
|
||||
@@ -26,10 +27,12 @@ jobs:
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run tests
|
||||
run: qmk test-c
|
||||
run: qmk test-c -j $(nproc)
|
||||
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
@@ -64,6 +64,9 @@ build/
|
||||
cmake-build-debug
|
||||
CMakeLists.txt
|
||||
*.pdf
|
||||
*.zip
|
||||
.env
|
||||
.envrc
|
||||
|
||||
# Let these ones be user specific, since we have so many different configurations
|
||||
*.code-workspace
|
||||
@@ -94,6 +97,11 @@ tags
|
||||
*.mpeg
|
||||
*.ttf
|
||||
*.otf
|
||||
# Un-ignore limited image file formats in docs
|
||||
!docs/public/**.gif
|
||||
!docs/public/**.jpg
|
||||
!docs/public/**.jpeg
|
||||
!docs/public/**.png
|
||||
|
||||
# Things Travis sees
|
||||
/.vs
|
||||
|
||||
55
Makefile
55
Makefile
@@ -38,14 +38,17 @@ $(info QMK Firmware $(QMK_VERSION))
|
||||
endif
|
||||
endif
|
||||
|
||||
# Try to determine userspace from qmk config, if set.
|
||||
ifeq ($(QMK_USERSPACE),)
|
||||
QMK_USERSPACE = $(shell qmk config -ro user.overlay_dir | cut -d= -f2 | sed -e 's@^None$$@@g')
|
||||
endif
|
||||
|
||||
# Determine which qmk cli to use
|
||||
QMK_BIN := qmk
|
||||
|
||||
# Try to determine userspace from qmk config, if set. Handle direct query on qmk_cli>=1.1.7
|
||||
# falling back to legacy method of only supporting user.overlay_dir config
|
||||
# sort is used to buffer 'qmk env' output and avoid BrokenPipeError errors
|
||||
export override QMK_USERSPACE := $(shell \
|
||||
$(QMK_BIN) env | sort | grep -q QMK_USERSPACE \
|
||||
&& $(QMK_BIN) env QMK_USERSPACE \
|
||||
|| $(QMK_BIN) config -ro user.overlay_dir | cut -d= -f2 | sed -e 's@^None$$@@g')
|
||||
|
||||
# avoid 'Entering|Leaving directory' messages
|
||||
MAKEFLAGS += --no-print-directory
|
||||
|
||||
@@ -115,7 +118,7 @@ endef
|
||||
TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND)
|
||||
|
||||
# As TRY_TO_MATCH_RULE_FROM_LIST_HELPER, but with additional
|
||||
# resolution of DEFAULT_FOLDER and keyboard_aliases.hjson for provided rule
|
||||
# resolution of keyboard_aliases.hjson for provided rule
|
||||
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB
|
||||
# Split on ":", padding with empty strings to avoid indexing issues
|
||||
TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE))
|
||||
@@ -190,41 +193,9 @@ endef
|
||||
# Parses a rule in the format <keymap>:<target>
|
||||
# the keyboard is already known when entering this function
|
||||
define PARSE_KEYBOARD
|
||||
# If we want to compile the default subproject, then we need to
|
||||
# include the correct makefile to determine the actual name of it
|
||||
CURRENT_KB := $1
|
||||
|
||||
# 5/4/3/2/1
|
||||
KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB)
|
||||
KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1)))
|
||||
KEYBOARD_FOLDER_PATH_3 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_2)))
|
||||
KEYBOARD_FOLDER_PATH_4 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_3)))
|
||||
KEYBOARD_FOLDER_PATH_5 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_4)))
|
||||
|
||||
KEYMAPS :=
|
||||
# get a list of all keymaps
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
|
||||
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
|
||||
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
|
||||
endif
|
||||
|
||||
KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1)
|
||||
LAYOUT_KEYMAPS :=
|
||||
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/layouts/$$(LAYOUT)/*/.)))))
|
||||
endif
|
||||
|
||||
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
|
||||
KEYMAPS := $(shell $(QMK_BIN) list-keymaps --keyboard $1)
|
||||
|
||||
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
|
||||
# compile all the keymaps
|
||||
@@ -255,7 +226,7 @@ endef
|
||||
# if we are going to compile all keyboards, match the rest of the rule
|
||||
# for each of them
|
||||
define PARSE_ALL_KEYBOARDS
|
||||
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)))
|
||||
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards)))
|
||||
endef
|
||||
|
||||
# Prints a list of all known keymaps for the given keyboard
|
||||
@@ -447,7 +418,7 @@ git-submodules: git-submodule
|
||||
|
||||
.PHONY: list-keyboards
|
||||
list-keyboards:
|
||||
$(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' '
|
||||
$(QMK_BIN) list-keyboards | tr '\n' ' '
|
||||
|
||||
.PHONY: list-tests
|
||||
list-tests:
|
||||
@@ -455,7 +426,7 @@ list-tests:
|
||||
|
||||
.PHONY: generate-keyboards-file
|
||||
generate-keyboards-file:
|
||||
$(QMK_BIN) list-keyboards --no-resolve-defaults
|
||||
$(QMK_BIN) list-keyboards
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
# Look for a json keymap file
|
||||
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","")
|
||||
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json
|
||||
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_5)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","")
|
||||
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json
|
||||
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_4)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","")
|
||||
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json
|
||||
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_3)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","")
|
||||
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json
|
||||
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_2)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
|
||||
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json
|
||||
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_1)
|
||||
endif
|
||||
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json)","")
|
||||
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json)","")
|
||||
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json)","")
|
||||
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json)","")
|
||||
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json)","")
|
||||
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
|
||||
endif
|
||||
endif
|
||||
@@ -138,75 +138,12 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","")
|
||||
DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json
|
||||
endif
|
||||
|
||||
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
||||
|
||||
# Pull in rules from DD keyboard config
|
||||
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_rules.mk)
|
||||
include $(INFO_RULES_MK)
|
||||
|
||||
# Check for keymap.json first, so we can regenerate keymap.c
|
||||
include $(BUILDDEFS_PATH)/build_json.mk
|
||||
|
||||
# Pull in keymap level rules.mk
|
||||
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
|
||||
# Look through the possible keymap folders until we find a matching keymap.c
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c)","")
|
||||
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/rules.mk
|
||||
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c)","")
|
||||
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/rules.mk
|
||||
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c)","")
|
||||
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/rules.mk
|
||||
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c)","")
|
||||
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/rules.mk
|
||||
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
|
||||
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c)","")
|
||||
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/rules.mk
|
||||
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c
|
||||
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(KEYMAP_PATH),)
|
||||
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
|
||||
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
|
||||
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
|
||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
|
||||
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
|
||||
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
|
||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
|
||||
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
|
||||
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
|
||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
|
||||
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
|
||||
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
|
||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
|
||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
|
||||
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
|
||||
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
|
||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
|
||||
else ifneq ($(LAYOUTS),)
|
||||
# If we haven't found a keymap yet fall back to community layouts
|
||||
include $(BUILDDEFS_PATH)/build_layout.mk
|
||||
else ifeq ("$(wildcard $(KEYMAP_JSON_PATH))", "") # Not finding keymap.c is fine if we found a keymap.json
|
||||
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
|
||||
# this state should never be reached
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
include $(BUILDDEFS_PATH)/locate_keymap.mk
|
||||
-include $(KEYMAP_PATH)/rules.mk
|
||||
|
||||
# Have we found a keymap.json?
|
||||
ifneq ("$(wildcard $(KEYMAP_JSON))", "")
|
||||
@@ -217,16 +154,9 @@ ifneq ("$(wildcard $(KEYMAP_JSON))", "")
|
||||
OPT_DEFS += -DOTHER_KEYMAP_C=\"$(OTHER_KEYMAP_C)\"
|
||||
endif
|
||||
|
||||
KEYMAP_PATH := $(KEYMAP_JSON_PATH)
|
||||
|
||||
KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c
|
||||
KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h
|
||||
|
||||
ifeq ($(OTHER_KEYMAP_C),)
|
||||
# Load the keymap-level rules.mk if exists (and we havent already loaded it for keymap.c)
|
||||
-include $(KEYMAP_PATH)/rules.mk
|
||||
endif
|
||||
|
||||
# Load any rules.mk content from keymap.json
|
||||
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/rules.mk $(KEYMAP_JSON))
|
||||
include $(INFO_RULES_MK)
|
||||
@@ -255,6 +185,13 @@ endif
|
||||
COMMUNITY_RULES_MK = $(shell $(QMK_BIN) generate-community-modules-rules-mk -kb $(KEYBOARD) --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/community_rules.mk $(KEYMAP_JSON))
|
||||
include $(COMMUNITY_RULES_MK)
|
||||
|
||||
ifneq ($(COMMUNITY_MODULES),)
|
||||
|
||||
$(INTERMEDIATE_OUTPUT)/src/community_config.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
|
||||
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
|
||||
$(eval CMD=$(QMK_BIN) generate-community-config-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_config.h $(KEYMAP_JSON))
|
||||
@$(BUILD_CMD)
|
||||
|
||||
$(INTERMEDIATE_OUTPUT)/src/community_modules.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
|
||||
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
|
||||
$(eval CMD=$(QMK_BIN) generate-community-modules-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(KEYMAP_JSON))
|
||||
@@ -285,9 +222,17 @@ $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc: $(KEYMAP_JSON) $(DD
|
||||
$(eval CMD=$(QMK_BIN) generate-rgb-matrix-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc $(KEYMAP_JSON))
|
||||
@$(BUILD_CMD)
|
||||
|
||||
$(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
|
||||
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
|
||||
$(eval CMD=$(QMK_BIN) generate-split-transaction-id-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc $(KEYMAP_JSON))
|
||||
@$(BUILD_CMD)
|
||||
|
||||
COMMUNITY_CONFIG_H = $(INTERMEDIATE_OUTPUT)/src/community_config.h
|
||||
SRC += $(INTERMEDIATE_OUTPUT)/src/community_modules.c
|
||||
|
||||
generated-files: $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc
|
||||
generated-files: $(INTERMEDIATE_OUTPUT)/src/community_config.h $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc
|
||||
|
||||
endif
|
||||
|
||||
include $(BUILDDEFS_PATH)/converters.mk
|
||||
|
||||
@@ -386,6 +331,10 @@ define config_h_community_module_appender
|
||||
endef
|
||||
$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call config_h_community_module_appender,$(module))))
|
||||
|
||||
ifneq ($(COMMUNITY_CONFIG_H),)
|
||||
CONFIG_H += $(COMMUNITY_CONFIG_H)
|
||||
endif
|
||||
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
|
||||
CONFIG_H += $(KEYBOARD_PATH_5)/config.h
|
||||
endif
|
||||
@@ -470,8 +419,10 @@ ifneq ($(wildcard $(QMK_USERSPACE)),)
|
||||
endif
|
||||
|
||||
# If the equivalent users directory exists in userspace, use that in preference to anything currently in the main repo
|
||||
ifneq ($(wildcard $(QMK_USERSPACE)/$(USER_PATH)),)
|
||||
USER_PATH := $(QMK_USERSPACE)/$(USER_PATH)
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
ifneq ($(wildcard $(QMK_USERSPACE)/$(USER_PATH)),)
|
||||
USER_PATH := $(QMK_USERSPACE)/$(USER_PATH)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Pull in user level rules.mk
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
LAYOUTS_PATH := layouts
|
||||
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
|
||||
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH))
|
||||
endif
|
||||
|
||||
define SEARCH_LAYOUTS_REPO
|
||||
LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
|
||||
LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json
|
||||
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
|
||||
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","")
|
||||
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
|
||||
KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON)
|
||||
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
|
||||
else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
|
||||
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
|
||||
KEYMAP_C := $$(LAYOUT_KEYMAP_C)
|
||||
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
|
||||
endif
|
||||
endef
|
||||
|
||||
define SEARCH_LAYOUTS
|
||||
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
|
||||
endef
|
||||
|
||||
ifneq ($(FORCE_LAYOUT),)
|
||||
ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
|
||||
$(info Forcing layout: $(FORCE_LAYOUT))
|
||||
LAYOUTS := $(FORCE_LAYOUT)
|
||||
else
|
||||
$(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
|
||||
@@ -62,6 +62,7 @@ include $(BUILDDEFS_PATH)/common_features.mk
|
||||
include $(BUILDDEFS_PATH)/generic_features.mk
|
||||
include $(PLATFORM_PATH)/common.mk
|
||||
include $(TMK_PATH)/protocol.mk
|
||||
include $(QUANTUM_PATH)/battery/tests/rules.mk
|
||||
include $(QUANTUM_PATH)/debounce/tests/rules.mk
|
||||
include $(QUANTUM_PATH)/encoder/tests/rules.mk
|
||||
include $(QUANTUM_PATH)/os_detection/tests/rules.mk
|
||||
|
||||
@@ -29,6 +29,8 @@ QUANTUM_SRC += \
|
||||
$(QUANTUM_DIR)/logging/debug.c \
|
||||
$(QUANTUM_DIR)/logging/sendchar.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_default_layer.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_oneshot.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_quantum.c \
|
||||
|
||||
include $(QUANTUM_DIR)/nvm/rules.mk
|
||||
|
||||
@@ -123,7 +125,7 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
|
||||
MOUSE_ENABLE := yes
|
||||
endif
|
||||
|
||||
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick azoteq_iqs5xx cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom
|
||||
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick azoteq_iqs5xx cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 paw3222 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom
|
||||
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
|
||||
ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
|
||||
$(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
|
||||
@@ -155,6 +157,8 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
|
||||
SRC += drivers/sensors/cirque_pinnacle.c
|
||||
SRC += drivers/sensors/cirque_pinnacle_gestures.c
|
||||
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
|
||||
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), paw3222)
|
||||
SPI_DRIVER_REQUIRED = yes
|
||||
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
|
||||
I2C_DRIVER_REQUIRED = yes
|
||||
else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
|
||||
@@ -633,6 +637,9 @@ ifeq ($(strip $(VIA_ENABLE)), yes)
|
||||
RAW_ENABLE := yes
|
||||
BOOTMAGIC_ENABLE := yes
|
||||
TRI_LAYER_ENABLE := yes
|
||||
ifeq ($(strip $(VIA_INSECURE)), yes)
|
||||
OPT_DEFS += -DVIA_INSECURE
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RAW_ENABLE)), yes)
|
||||
@@ -940,21 +947,25 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(BATTERY_ENABLE)), yes)
|
||||
BATTERY_DRIVER_REQUIRED := yes
|
||||
endif
|
||||
|
||||
VALID_BATTERY_DRIVER_TYPES := adc custom vendor
|
||||
|
||||
BATTERY_DRIVER ?= adc
|
||||
BATTERY_DRIVER ?= none
|
||||
ifeq ($(strip $(BATTERY_DRIVER_REQUIRED)), yes)
|
||||
ifeq ($(filter $(BATTERY_DRIVER),$(VALID_BATTERY_DRIVER_TYPES)),)
|
||||
$(call CATASTROPHIC_ERROR,Invalid BATTERY_DRIVER,BATTERY_DRIVER="$(BATTERY_DRIVER)" is not a valid battery driver)
|
||||
endif
|
||||
|
||||
OPT_DEFS += -DBATTERY_DRIVER
|
||||
OPT_DEFS += -DBATTERY_$(strip $(shell echo $(BATTERY_DRIVER) | tr '[:lower:]' '[:upper:]'))
|
||||
OPT_DEFS += -DBATTERY_DRIVER_$(strip $(shell echo $(BATTERY_DRIVER) | tr '[:lower:]' '[:upper:]'))
|
||||
|
||||
COMMON_VPATH += $(DRIVER_PATH)/battery
|
||||
|
||||
SRC += battery.c
|
||||
SRC += battery_$(strip $(BATTERY_DRIVER)).c
|
||||
ifneq ($(strip $(BATTERY_DRIVER)), custom)
|
||||
SRC += battery_$(strip $(BATTERY_DRIVER)).c
|
||||
endif
|
||||
|
||||
# add extra deps
|
||||
ifeq ($(strip $(BATTERY_DRIVER)), adc)
|
||||
|
||||
@@ -58,7 +58,7 @@ endif
|
||||
#---------------- C Compiler Options ----------------
|
||||
|
||||
ifeq ($(strip $(LTO_ENABLE)), yes)
|
||||
CDEFS += -flto
|
||||
CDEFS += -flto=auto
|
||||
CDEFS += -DLTO_ENABLE
|
||||
endif
|
||||
|
||||
@@ -72,6 +72,8 @@ endif
|
||||
endif
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wstrict-prototypes
|
||||
CFLAGS += $(call cc-option,-Wunused-but-set-variable=1,-Wunused-but-set-variable)
|
||||
CFLAGS += $(call cc-option,-Wunused-but-set-parameter=1,-Wunused-but-set-parameter)
|
||||
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
|
||||
CFLAGS += -Werror
|
||||
endif
|
||||
@@ -89,7 +91,8 @@ CXXFLAGS += -O$(OPT)
|
||||
CXXFLAGS += -w
|
||||
CXXFLAGS += -Wall
|
||||
CXXFLAGS += -Wundef
|
||||
|
||||
CXXFLAGS += $(call cc-option,-Wunused-but-set-variable=1,-Wunused-but-set-variable)
|
||||
CXXFLAGS += $(call cc-option,-Wunused-but-set-parameter=1,-Wunused-but-set-parameter)
|
||||
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
|
||||
CXXFLAGS += -Werror
|
||||
endif
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
ifneq (,$(filter $(MCU),atmega32u4))
|
||||
# TODO: opt in rather than assume everything uses a pro micro
|
||||
PIN_COMPATIBLE ?= promicro
|
||||
endif
|
||||
|
||||
# Remove whitespace from any rule.mk provided vars
|
||||
# - env cannot be overwritten but cannot have whitespace anyway
|
||||
CONVERT_TO:=$(strip $(CONVERT_TO))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.4.19",
|
||||
"vite": "^5.4.21",
|
||||
"vitepress": "^1.1.0",
|
||||
"vitepress-plugin-tabs": "^0.5.0",
|
||||
"vue": "^3.4.24"
|
||||
|
||||
@@ -298,100 +298,130 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.31.0.tgz#d4dd60da0075a6ce9a6c76d71b8204f3e1822285"
|
||||
integrity sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==
|
||||
"@rollup/rollup-android-arm-eabi@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz#a6742c74c7d9d6d604ef8a48f99326b4ecda3d82"
|
||||
integrity sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==
|
||||
|
||||
"@rollup/rollup-android-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.31.0.tgz#25c4d33259a7a2ccd2f52a5ffcc0bb3ab3f0729d"
|
||||
integrity sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==
|
||||
"@rollup/rollup-android-arm64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz#97247be098de4df0c11971089fd2edf80a5da8cf"
|
||||
integrity sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==
|
||||
|
||||
"@rollup/rollup-darwin-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.31.0.tgz#d137dff254b19163a6b52ac083a71cd055dae844"
|
||||
integrity sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==
|
||||
"@rollup/rollup-darwin-arm64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz#674852cf14cf11b8056e0b1a2f4e872b523576cf"
|
||||
integrity sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==
|
||||
|
||||
"@rollup/rollup-darwin-x64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.31.0.tgz#58ff20b5dacb797d3adca19f02a21c532f9d55bf"
|
||||
integrity sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==
|
||||
"@rollup/rollup-darwin-x64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz#36dfd7ed0aaf4d9d89d9ef983af72632455b0246"
|
||||
integrity sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==
|
||||
|
||||
"@rollup/rollup-freebsd-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.31.0.tgz#96ce1a241c591ec3e068f4af765d94eddb24e60c"
|
||||
integrity sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==
|
||||
"@rollup/rollup-freebsd-arm64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz#2f87c2074b4220260fdb52a9996246edfc633c22"
|
||||
integrity sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==
|
||||
|
||||
"@rollup/rollup-freebsd-x64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.31.0.tgz#e59e7ede505be41f0b4311b0b943f8eb44938467"
|
||||
integrity sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==
|
||||
"@rollup/rollup-freebsd-x64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz#9b5a26522a38a95dc06616d1939d4d9a76937803"
|
||||
integrity sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.31.0.tgz#e455ca6e4ff35bd46d62201c153352e717000a7b"
|
||||
integrity sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz#86aa4859385a8734235b5e40a48e52d770758c3a"
|
||||
integrity sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.31.0.tgz#bc1a93d807d19e70b1e343a5bfea43723bcd6327"
|
||||
integrity sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz#cbe70e56e6ece8dac83eb773b624fc9e5a460976"
|
||||
integrity sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.31.0.tgz#f38bf843f1dc3d5de680caf31084008846e3efae"
|
||||
integrity sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==
|
||||
"@rollup/rollup-linux-arm64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz#d14992a2e653bc3263d284bc6579b7a2890e1c45"
|
||||
integrity sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.31.0.tgz#b3987a96c18b7287129cf735be2dbf83e94d9d05"
|
||||
integrity sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==
|
||||
"@rollup/rollup-linux-arm64-musl@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz#2fdd1ddc434ea90aeaa0851d2044789b4d07f6da"
|
||||
integrity sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==
|
||||
|
||||
"@rollup/rollup-linux-loongarch64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.31.0.tgz#0f0324044e71c4f02e9f49e7ec4e347b655b34ee"
|
||||
integrity sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==
|
||||
"@rollup/rollup-linux-loong64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz#8a181e6f89f969f21666a743cd411416c80099e7"
|
||||
integrity sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.31.0.tgz#809479f27f1fd5b4eecd2aa732132ad952d454ba"
|
||||
integrity sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==
|
||||
"@rollup/rollup-linux-loong64-musl@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz#904125af2babc395f8061daa27b5af1f4e3f2f78"
|
||||
integrity sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.31.0.tgz#7bc75c4f22db04d3c972f83431739cfa41c6a36e"
|
||||
integrity sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==
|
||||
"@rollup/rollup-linux-ppc64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz#a57970ac6864c9a3447411a658224bdcf948be22"
|
||||
integrity sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.31.0.tgz#cfe8052345c55864d83ae343362cf1912480170e"
|
||||
integrity sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==
|
||||
"@rollup/rollup-linux-ppc64-musl@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz#bb84de5b26870567a4267666e08891e80bb56a63"
|
||||
integrity sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.31.0.tgz#c6b048f1e25f3fea5b4bd246232f4d07a159c5a0"
|
||||
integrity sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz#72d00d2c7fb375ce3564e759db33f17a35bffab9"
|
||||
integrity sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.31.0.tgz#615273ac52d1a201f4de191cbd3389016a9d7d80"
|
||||
integrity sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==
|
||||
"@rollup/rollup-linux-riscv64-musl@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz#4c166ef58e718f9245bd31873384ba15a5c1a883"
|
||||
integrity sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.31.0.tgz#32ed85810c1b831c648eca999d68f01255b30691"
|
||||
integrity sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==
|
||||
"@rollup/rollup-linux-s390x-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz#bb5025cde9a61db478c2ca7215808ad3bce73a09"
|
||||
integrity sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.31.0.tgz#d47effada68bcbfdccd30c4a788d42e4542ff4d3"
|
||||
integrity sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==
|
||||
"@rollup/rollup-linux-x64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz#9b66b1f9cd95c6624c788f021c756269ffed1552"
|
||||
integrity sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.31.0.tgz#7a2d89a82cf0388d60304964217dd7beac6de645"
|
||||
integrity sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==
|
||||
"@rollup/rollup-linux-x64-musl@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz#b007ca255dc7166017d57d7d2451963f0bd23fd9"
|
||||
integrity sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==
|
||||
|
||||
"@rollup/rollup-openbsd-x64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz#e8b357b2d1aa2c8d76a98f5f0d889eabe93f4ef9"
|
||||
integrity sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==
|
||||
|
||||
"@rollup/rollup-openharmony-arm64@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz#96c2e3f4aacd3d921981329831ff8dde492204dc"
|
||||
integrity sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz#2d865149d706d938df8b4b8f117e69a77646d581"
|
||||
integrity sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz#abe1593be0fa92325e9971c8da429c5e05b92c36"
|
||||
integrity sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==
|
||||
|
||||
"@rollup/rollup-win32-x64-gnu@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz#c4af3e9518c9a5cd4b1c163dc81d0ad4d82e7eab"
|
||||
integrity sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.59.0":
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz#4584a8a87b29188a4c1fe987a9fcf701e256d86c"
|
||||
integrity sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==
|
||||
|
||||
"@shikijs/core@1.3.0", "@shikijs/core@^1.3.0":
|
||||
version "1.3.0"
|
||||
@@ -405,10 +435,10 @@
|
||||
dependencies:
|
||||
shiki "1.3.0"
|
||||
|
||||
"@types/estree@1.0.6":
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
|
||||
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
||||
"@types/estree@1.0.8":
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
|
||||
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
|
||||
|
||||
"@types/linkify-it@*":
|
||||
version "3.0.5"
|
||||
@@ -712,31 +742,37 @@ rfdc@^1.3.1:
|
||||
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
|
||||
|
||||
rollup@^4.20.0:
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.31.0.tgz#b84af969a0292cb047dce2c0ec5413a9457597a4"
|
||||
integrity sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==
|
||||
version "4.59.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f"
|
||||
integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==
|
||||
dependencies:
|
||||
"@types/estree" "1.0.6"
|
||||
"@types/estree" "1.0.8"
|
||||
optionalDependencies:
|
||||
"@rollup/rollup-android-arm-eabi" "4.31.0"
|
||||
"@rollup/rollup-android-arm64" "4.31.0"
|
||||
"@rollup/rollup-darwin-arm64" "4.31.0"
|
||||
"@rollup/rollup-darwin-x64" "4.31.0"
|
||||
"@rollup/rollup-freebsd-arm64" "4.31.0"
|
||||
"@rollup/rollup-freebsd-x64" "4.31.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf" "4.31.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf" "4.31.0"
|
||||
"@rollup/rollup-linux-arm64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-arm64-musl" "4.31.0"
|
||||
"@rollup/rollup-linux-loongarch64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-powerpc64le-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-s390x-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-x64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-x64-musl" "4.31.0"
|
||||
"@rollup/rollup-win32-arm64-msvc" "4.31.0"
|
||||
"@rollup/rollup-win32-ia32-msvc" "4.31.0"
|
||||
"@rollup/rollup-win32-x64-msvc" "4.31.0"
|
||||
"@rollup/rollup-android-arm-eabi" "4.59.0"
|
||||
"@rollup/rollup-android-arm64" "4.59.0"
|
||||
"@rollup/rollup-darwin-arm64" "4.59.0"
|
||||
"@rollup/rollup-darwin-x64" "4.59.0"
|
||||
"@rollup/rollup-freebsd-arm64" "4.59.0"
|
||||
"@rollup/rollup-freebsd-x64" "4.59.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf" "4.59.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf" "4.59.0"
|
||||
"@rollup/rollup-linux-arm64-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-arm64-musl" "4.59.0"
|
||||
"@rollup/rollup-linux-loong64-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-loong64-musl" "4.59.0"
|
||||
"@rollup/rollup-linux-ppc64-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-ppc64-musl" "4.59.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-riscv64-musl" "4.59.0"
|
||||
"@rollup/rollup-linux-s390x-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-x64-gnu" "4.59.0"
|
||||
"@rollup/rollup-linux-x64-musl" "4.59.0"
|
||||
"@rollup/rollup-openbsd-x64" "4.59.0"
|
||||
"@rollup/rollup-openharmony-arm64" "4.59.0"
|
||||
"@rollup/rollup-win32-arm64-msvc" "4.59.0"
|
||||
"@rollup/rollup-win32-ia32-msvc" "4.59.0"
|
||||
"@rollup/rollup-win32-x64-gnu" "4.59.0"
|
||||
"@rollup/rollup-win32-x64-msvc" "4.59.0"
|
||||
fsevents "~2.3.2"
|
||||
|
||||
shiki@1.3.0, shiki@^1.3.0:
|
||||
@@ -766,10 +802,10 @@ tabbable@^6.2.0:
|
||||
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
|
||||
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
|
||||
|
||||
vite@^5.2.9, vite@^5.4.19:
|
||||
version "5.4.19"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959"
|
||||
integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==
|
||||
vite@^5.2.9, vite@^5.4.21:
|
||||
version "5.4.21"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.21.tgz#84a4f7c5d860b071676d39ba513c0d598fdc7027"
|
||||
integrity sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
|
||||
@@ -21,6 +21,7 @@ SPACE_CADET_ENABLE ?= yes
|
||||
GENERIC_FEATURES = \
|
||||
AUTO_SHIFT \
|
||||
AUTOCORRECT \
|
||||
BATTERY \
|
||||
BOOTMAGIC \
|
||||
CAPS_WORD \
|
||||
COMBO \
|
||||
|
||||
64
builddefs/locate_keymap.mk
Normal file
64
builddefs/locate_keymap.mk
Normal file
@@ -0,0 +1,64 @@
|
||||
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
|
||||
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
||||
|
||||
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_1)
|
||||
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_2)
|
||||
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_3)
|
||||
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_4)
|
||||
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_5)
|
||||
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
|
||||
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
|
||||
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
|
||||
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
|
||||
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
|
||||
endif
|
||||
|
||||
define SEARCH_POTENTIAL_LOCATION
|
||||
POTENTIAL_DIR := $1
|
||||
ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
|
||||
POTENTIAL_KEYMAP_JSON := $$(POTENTIAL_DIR)/keymap.json
|
||||
POTENTIAL_KEYMAP_C := $$(POTENTIAL_DIR)/keymap.c
|
||||
ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_JSON))","")
|
||||
KEYMAP_JSON := $$(POTENTIAL_KEYMAP_JSON)
|
||||
KEYMAP_PATH := $$(POTENTIAL_DIR)
|
||||
endif
|
||||
ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_C))","")
|
||||
KEYMAP_C := $$(POTENTIAL_KEYMAP_C)
|
||||
KEYMAP_PATH := $$(POTENTIAL_DIR)
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
|
||||
$(foreach KM_DIR,$(POTENTIAL_KEYMAP_PATHS),$(eval $(call SEARCH_POTENTIAL_LOCATION, $(KM_DIR))))
|
||||
|
||||
LAYOUTS_PATH := layouts
|
||||
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
|
||||
|
||||
ifneq ($(QMK_USERSPACE),)
|
||||
LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH))
|
||||
endif
|
||||
|
||||
define SEARCH_LAYOUTS
|
||||
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_POTENTIAL_LOCATION,$$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP))))
|
||||
endef
|
||||
|
||||
ifneq ($(FORCE_LAYOUT),)
|
||||
ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
|
||||
$(info Forcing layout: $(FORCE_LAYOUT))
|
||||
LAYOUTS := $(FORCE_LAYOUT)
|
||||
else
|
||||
$(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
|
||||
|
||||
ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
|
||||
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
|
||||
# this state should never be reached
|
||||
endif
|
||||
@@ -4,7 +4,7 @@
|
||||
# $(2) = option to use if $(1) is not supported
|
||||
# $(3) = additional arguments to pass to the compiler during the test, but aren't contained in the output
|
||||
cc-option = $(shell \
|
||||
if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
|
||||
if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -Wl,--unresolved-symbols=ignore-all -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
|
||||
then echo "$(1)"; else echo "$(2)"; fi)
|
||||
|
||||
# Helper to pass comma character to make functions (use with `$(,)` to pass in `$(call ...)` arguments)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f -name test.mk)))
|
||||
FULL_TESTS := $(notdir $(TEST_LIST))
|
||||
|
||||
include $(QUANTUM_PATH)/battery/tests/testlist.mk
|
||||
include $(QUANTUM_PATH)/debounce/tests/testlist.mk
|
||||
include $(QUANTUM_PATH)/encoder/tests/testlist.mk
|
||||
include $(QUANTUM_PATH)/os_detection/tests/testlist.mk
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7480": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_ON",
|
||||
"label": "Audio On",
|
||||
"aliases": [
|
||||
"AU_ON"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7481": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_OFF",
|
||||
"label": "Audio Off",
|
||||
"aliases": [
|
||||
"AU_OFF"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7482": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_TOGGLE",
|
||||
"label": "Toggle Audio",
|
||||
"aliases": [
|
||||
"AU_TOGG"
|
||||
]
|
||||
@@ -25,6 +28,7 @@
|
||||
"0x748A": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_TOGGLE",
|
||||
"label": "Toggle Audio Clicky",
|
||||
"aliases": [
|
||||
"CK_TOGG"
|
||||
]
|
||||
@@ -32,6 +36,7 @@
|
||||
"0x748B": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_ON",
|
||||
"label": "Audio Clicky On",
|
||||
"aliases": [
|
||||
"CK_ON"
|
||||
]
|
||||
@@ -39,6 +44,7 @@
|
||||
"0x748C": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_OFF",
|
||||
"label": "Audio Clicky Off",
|
||||
"aliases": [
|
||||
"CK_OFF"
|
||||
]
|
||||
@@ -46,6 +52,7 @@
|
||||
"0x748D": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_UP",
|
||||
"label": "Audio Clicky Up",
|
||||
"aliases": [
|
||||
"CK_UP"
|
||||
]
|
||||
@@ -53,6 +60,7 @@
|
||||
"0x748E": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_DOWN",
|
||||
"label": "Audio Clicky Down",
|
||||
"aliases": [
|
||||
"CK_DOWN"
|
||||
]
|
||||
@@ -60,6 +68,7 @@
|
||||
"0x748F": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_CLICKY_RESET",
|
||||
"label": "Audio Clicky Reset",
|
||||
"aliases": [
|
||||
"CK_RST"
|
||||
]
|
||||
@@ -68,6 +77,7 @@
|
||||
"0x7490": {
|
||||
"group": "audio",
|
||||
"key": "QK_MUSIC_ON",
|
||||
"label": "Music On",
|
||||
"aliases": [
|
||||
"MU_ON"
|
||||
]
|
||||
@@ -75,6 +85,7 @@
|
||||
"0x7491": {
|
||||
"group": "audio",
|
||||
"key": "QK_MUSIC_OFF",
|
||||
"label": "Music Off",
|
||||
"aliases": [
|
||||
"MU_OFF"
|
||||
]
|
||||
@@ -82,6 +93,7 @@
|
||||
"0x7492": {
|
||||
"group": "audio",
|
||||
"key": "QK_MUSIC_TOGGLE",
|
||||
"label": "Toggle Music",
|
||||
"aliases": [
|
||||
"MU_TOGG"
|
||||
]
|
||||
@@ -89,6 +101,7 @@
|
||||
"0x7493": {
|
||||
"group": "audio",
|
||||
"key": "QK_MUSIC_MODE_NEXT",
|
||||
"label": "Music Next",
|
||||
"aliases": [
|
||||
"MU_NEXT"
|
||||
]
|
||||
@@ -97,6 +110,7 @@
|
||||
"0x7494": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_VOICE_NEXT",
|
||||
"label": "Audio Voice Next",
|
||||
"aliases": [
|
||||
"AU_NEXT"
|
||||
]
|
||||
@@ -104,6 +118,7 @@
|
||||
"0x7495": {
|
||||
"group": "audio",
|
||||
"key": "QK_AUDIO_VOICE_PREVIOUS",
|
||||
"label": "Audio Voice Previous",
|
||||
"aliases": [
|
||||
"AU_PREV"
|
||||
]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"0x0000": {
|
||||
"group": "internal",
|
||||
"key": "KC_NO",
|
||||
"label": "",
|
||||
"label": "N/A",
|
||||
"aliases": [
|
||||
"XXXXXXX"
|
||||
]
|
||||
@@ -11,7 +11,7 @@
|
||||
"0x0001": {
|
||||
"group": "internal",
|
||||
"key": "KC_TRANSPARENT",
|
||||
"label": "",
|
||||
"label": "Transparent",
|
||||
"aliases": [
|
||||
"_______",
|
||||
"KC_TRNS"
|
||||
@@ -634,7 +634,7 @@
|
||||
"0x0065": {
|
||||
"group": "basic",
|
||||
"key": "KC_APPLICATION",
|
||||
"label": "Application",
|
||||
"label": "App",
|
||||
"aliases": [
|
||||
"KC_APP"
|
||||
]
|
||||
@@ -642,7 +642,7 @@
|
||||
"0x0066": {
|
||||
"group": "basic",
|
||||
"key": "KC_KB_POWER",
|
||||
"label": "Application"
|
||||
"label": "Power"
|
||||
},
|
||||
"0x0067": {
|
||||
"group": "basic",
|
||||
@@ -1068,7 +1068,7 @@
|
||||
"0x00A5": {
|
||||
"group": "system",
|
||||
"key": "KC_SYSTEM_POWER",
|
||||
"label": "System Power Down",
|
||||
"label": "Power",
|
||||
"aliases": [
|
||||
"KC_PWR"
|
||||
]
|
||||
@@ -1076,7 +1076,7 @@
|
||||
"0x00A6": {
|
||||
"group": "system",
|
||||
"key": "KC_SYSTEM_SLEEP",
|
||||
"label": "System Sleep",
|
||||
"label": "Sleep",
|
||||
"aliases": [
|
||||
"KC_SLEP"
|
||||
]
|
||||
@@ -1084,7 +1084,7 @@
|
||||
"0x00A7": {
|
||||
"group": "system",
|
||||
"key": "KC_SYSTEM_WAKE",
|
||||
"label": "System Wake",
|
||||
"label": "Wake",
|
||||
"aliases": [
|
||||
"KC_WAKE"
|
||||
]
|
||||
@@ -1140,7 +1140,7 @@
|
||||
"0x00AE": {
|
||||
"group": "media",
|
||||
"key": "KC_MEDIA_PLAY_PAUSE",
|
||||
"label": "Play/Pause Track",
|
||||
"label": "Play/Pause",
|
||||
"aliases": [
|
||||
"KC_MPLY"
|
||||
]
|
||||
@@ -1148,7 +1148,7 @@
|
||||
"0x00AF": {
|
||||
"group": "media",
|
||||
"key": "KC_MEDIA_SELECT",
|
||||
"label": "Launch Player",
|
||||
"label": "Media",
|
||||
"aliases": [
|
||||
"KC_MSEL"
|
||||
]
|
||||
@@ -1164,12 +1164,12 @@
|
||||
"0x00B1": {
|
||||
"group": "media",
|
||||
"key": "KC_MAIL",
|
||||
"label": "Launch Mail"
|
||||
"label": "Mail",
|
||||
},
|
||||
"0x00B2": {
|
||||
"group": "media",
|
||||
"key": "KC_CALCULATOR",
|
||||
"label": "Launch Calculator",
|
||||
"label": "Calculator",
|
||||
"aliases": [
|
||||
"KC_CALC"
|
||||
]
|
||||
@@ -1177,7 +1177,7 @@
|
||||
"0x00B3": {
|
||||
"group": "media",
|
||||
"key": "KC_MY_COMPUTER",
|
||||
"label": "Launch My Computer",
|
||||
"label": "My Computer",
|
||||
"aliases": [
|
||||
"KC_MYCM"
|
||||
]
|
||||
@@ -1185,7 +1185,7 @@
|
||||
"0x00B4": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_SEARCH",
|
||||
"label": "Browser Search",
|
||||
"label": "Search",
|
||||
"aliases": [
|
||||
"KC_WSCH"
|
||||
]
|
||||
@@ -1193,7 +1193,7 @@
|
||||
"0x00B5": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_HOME",
|
||||
"label": "Browser Home",
|
||||
"label": "Home",
|
||||
"aliases": [
|
||||
"KC_WHOM"
|
||||
]
|
||||
@@ -1201,7 +1201,7 @@
|
||||
"0x00B6": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_BACK",
|
||||
"label": "Browser Back",
|
||||
"label": "Back",
|
||||
"aliases": [
|
||||
"KC_WBAK"
|
||||
]
|
||||
@@ -1209,7 +1209,7 @@
|
||||
"0x00B7": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_FORWARD",
|
||||
"label": "Browser Forward",
|
||||
"label": "Forward",
|
||||
"aliases": [
|
||||
"KC_WFWD"
|
||||
]
|
||||
@@ -1217,7 +1217,7 @@
|
||||
"0x00B8": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_STOP",
|
||||
"label": "Browser Stop",
|
||||
"label": "Stop",
|
||||
"aliases": [
|
||||
"KC_WSTP"
|
||||
]
|
||||
@@ -1225,7 +1225,7 @@
|
||||
"0x00B9": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_REFRESH",
|
||||
"label": "Browser Refresh",
|
||||
"label": "Refresh",
|
||||
"aliases": [
|
||||
"KC_WREF"
|
||||
]
|
||||
@@ -1233,7 +1233,7 @@
|
||||
"0x00BA": {
|
||||
"group": "media",
|
||||
"key": "KC_WWW_FAVORITES",
|
||||
"label": "Browser Favorites",
|
||||
"label": "Favorites",
|
||||
"aliases": [
|
||||
"KC_WFAV"
|
||||
]
|
||||
@@ -1241,7 +1241,7 @@
|
||||
"0x00BB": {
|
||||
"group": "media",
|
||||
"key": "KC_MEDIA_FAST_FORWARD",
|
||||
"label": "Next Track",
|
||||
"label": "Fast Forward",
|
||||
"aliases": [
|
||||
"KC_MFFD"
|
||||
]
|
||||
@@ -1249,7 +1249,7 @@
|
||||
"0x00BC": {
|
||||
"group": "media",
|
||||
"key": "KC_MEDIA_REWIND",
|
||||
"label": "Previous Track",
|
||||
"label": "Rewind",
|
||||
"aliases": [
|
||||
"KC_MRWD"
|
||||
]
|
||||
@@ -1273,7 +1273,7 @@
|
||||
"0x00BF": {
|
||||
"group": "media",
|
||||
"key": "KC_CONTROL_PANEL",
|
||||
"label": "Open Control Panel",
|
||||
"label": "Control Panel",
|
||||
"aliases": [
|
||||
"KC_CPNL"
|
||||
]
|
||||
@@ -1281,7 +1281,7 @@
|
||||
"0x00C0": {
|
||||
"group": "media",
|
||||
"key": "KC_ASSISTANT",
|
||||
"label": "Launch Assistant",
|
||||
"label": "Assistant",
|
||||
"aliases": [
|
||||
"KC_ASST"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7400": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_0",
|
||||
"label": "Button 0",
|
||||
"aliases": [
|
||||
"JS_0"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7401": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_1",
|
||||
"label": "Button 1",
|
||||
"aliases": [
|
||||
"JS_1"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7402": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_2",
|
||||
"label": "Button 2",
|
||||
"aliases": [
|
||||
"JS_2"
|
||||
]
|
||||
@@ -24,6 +27,7 @@
|
||||
"0x7403": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_3",
|
||||
"label": "Button 3",
|
||||
"aliases": [
|
||||
"JS_3"
|
||||
]
|
||||
@@ -31,6 +35,7 @@
|
||||
"0x7404": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_4",
|
||||
"label": "Button 4",
|
||||
"aliases": [
|
||||
"JS_4"
|
||||
]
|
||||
@@ -38,6 +43,7 @@
|
||||
"0x7405": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_5",
|
||||
"label": "Button 5",
|
||||
"aliases": [
|
||||
"JS_5"
|
||||
]
|
||||
@@ -45,6 +51,7 @@
|
||||
"0x7406": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_6",
|
||||
"label": "Button 6",
|
||||
"aliases": [
|
||||
"JS_6"
|
||||
]
|
||||
@@ -52,6 +59,7 @@
|
||||
"0x7407": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_7",
|
||||
"label": "Button 7",
|
||||
"aliases": [
|
||||
"JS_7"
|
||||
]
|
||||
@@ -59,6 +67,7 @@
|
||||
"0x7408": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_8",
|
||||
"label": "Button 8",
|
||||
"aliases": [
|
||||
"JS_8"
|
||||
]
|
||||
@@ -66,6 +75,7 @@
|
||||
"0x7409": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_9",
|
||||
"label": "Button 9",
|
||||
"aliases": [
|
||||
"JS_9"
|
||||
]
|
||||
@@ -73,6 +83,7 @@
|
||||
"0x740A": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_10",
|
||||
"label": "Button 10",
|
||||
"aliases": [
|
||||
"JS_10"
|
||||
]
|
||||
@@ -80,6 +91,7 @@
|
||||
"0x740B": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_11",
|
||||
"label": "Button 11",
|
||||
"aliases": [
|
||||
"JS_11"
|
||||
]
|
||||
@@ -87,6 +99,7 @@
|
||||
"0x740C": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_12",
|
||||
"label": "Button 12",
|
||||
"aliases": [
|
||||
"JS_12"
|
||||
]
|
||||
@@ -94,6 +107,7 @@
|
||||
"0x740D": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_13",
|
||||
"label": "Button 13",
|
||||
"aliases": [
|
||||
"JS_13"
|
||||
]
|
||||
@@ -101,6 +115,7 @@
|
||||
"0x740E": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_14",
|
||||
"label": "Button 14",
|
||||
"aliases": [
|
||||
"JS_14"
|
||||
]
|
||||
@@ -108,6 +123,7 @@
|
||||
"0x740F": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_15",
|
||||
"label": "Button 15",
|
||||
"aliases": [
|
||||
"JS_15"
|
||||
]
|
||||
@@ -115,6 +131,7 @@
|
||||
"0x7410": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_16",
|
||||
"label": "Button 16",
|
||||
"aliases": [
|
||||
"JS_16"
|
||||
]
|
||||
@@ -122,6 +139,7 @@
|
||||
"0x7411": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_17",
|
||||
"label": "Button 17",
|
||||
"aliases": [
|
||||
"JS_17"
|
||||
]
|
||||
@@ -129,6 +147,7 @@
|
||||
"0x7412": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_18",
|
||||
"label": "Button 18",
|
||||
"aliases": [
|
||||
"JS_18"
|
||||
]
|
||||
@@ -136,6 +155,7 @@
|
||||
"0x7413": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_19",
|
||||
"label": "Button 19",
|
||||
"aliases": [
|
||||
"JS_19"
|
||||
]
|
||||
@@ -143,6 +163,7 @@
|
||||
"0x7414": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_20",
|
||||
"label": "Button 20",
|
||||
"aliases": [
|
||||
"JS_20"
|
||||
]
|
||||
@@ -150,6 +171,7 @@
|
||||
"0x7415": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_21",
|
||||
"label": "Button 21",
|
||||
"aliases": [
|
||||
"JS_21"
|
||||
]
|
||||
@@ -157,6 +179,7 @@
|
||||
"0x7416": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_22",
|
||||
"label": "Button 22",
|
||||
"aliases": [
|
||||
"JS_22"
|
||||
]
|
||||
@@ -164,6 +187,7 @@
|
||||
"0x7417": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_23",
|
||||
"label": "Button 23",
|
||||
"aliases": [
|
||||
"JS_23"
|
||||
]
|
||||
@@ -171,6 +195,7 @@
|
||||
"0x7418": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_24",
|
||||
"label": "Button 24",
|
||||
"aliases": [
|
||||
"JS_24"
|
||||
]
|
||||
@@ -178,6 +203,7 @@
|
||||
"0x7419": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_25",
|
||||
"label": "Button 25",
|
||||
"aliases": [
|
||||
"JS_25"
|
||||
]
|
||||
@@ -185,6 +211,7 @@
|
||||
"0x741A": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_26",
|
||||
"label": "Button 26",
|
||||
"aliases": [
|
||||
"JS_26"
|
||||
]
|
||||
@@ -192,6 +219,7 @@
|
||||
"0x741B": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_27",
|
||||
"label": "Button 27",
|
||||
"aliases": [
|
||||
"JS_27"
|
||||
]
|
||||
@@ -199,6 +227,7 @@
|
||||
"0x741C": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_28",
|
||||
"label": "Button 28",
|
||||
"aliases": [
|
||||
"JS_28"
|
||||
]
|
||||
@@ -206,6 +235,7 @@
|
||||
"0x741D": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_29",
|
||||
"label": "Button 29",
|
||||
"aliases": [
|
||||
"JS_29"
|
||||
]
|
||||
@@ -213,6 +243,7 @@
|
||||
"0x741E": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_30",
|
||||
"label": "Button 30",
|
||||
"aliases": [
|
||||
"JS_30"
|
||||
]
|
||||
@@ -220,6 +251,7 @@
|
||||
"0x741F": {
|
||||
"group": "joystick",
|
||||
"key": "QK_JOYSTICK_BUTTON_31",
|
||||
"label": "Button 31",
|
||||
"aliases": [
|
||||
"JS_31"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7800": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_ON",
|
||||
"label": "Backlight On",
|
||||
"aliases": [
|
||||
"BL_ON"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7801": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_OFF",
|
||||
"label": "Backlight Off",
|
||||
"aliases": [
|
||||
"BL_OFF"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7802": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_TOGGLE",
|
||||
"label": "Toggle Backlight",
|
||||
"aliases": [
|
||||
"BL_TOGG"
|
||||
]
|
||||
@@ -24,6 +27,7 @@
|
||||
"0x7803": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_DOWN",
|
||||
"label": "Backlight Down",
|
||||
"aliases": [
|
||||
"BL_DOWN"
|
||||
]
|
||||
@@ -31,6 +35,7 @@
|
||||
"0x7804": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_UP",
|
||||
"label": "Backlight Up",
|
||||
"aliases": [
|
||||
"BL_UP"
|
||||
]
|
||||
@@ -38,6 +43,7 @@
|
||||
"0x7805": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_STEP",
|
||||
"label": "Backlight Step",
|
||||
"aliases": [
|
||||
"BL_STEP"
|
||||
]
|
||||
@@ -45,6 +51,7 @@
|
||||
"0x7806": {
|
||||
"group": "backlight",
|
||||
"key": "QK_BACKLIGHT_TOGGLE_BREATHING",
|
||||
"label": "Toggle Breathing",
|
||||
"aliases": [
|
||||
"BL_BRTG"
|
||||
]
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"keycodes": {
|
||||
|
||||
"0x7700": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_0",
|
||||
"label": "Macro 0",
|
||||
"aliases": [
|
||||
"MC_0"
|
||||
]
|
||||
@@ -11,6 +11,7 @@
|
||||
"0x7701": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_1",
|
||||
"label": "Macro 1",
|
||||
"aliases": [
|
||||
"MC_1"
|
||||
]
|
||||
@@ -18,6 +19,7 @@
|
||||
"0x7702": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_2",
|
||||
"label": "Macro 2",
|
||||
"aliases": [
|
||||
"MC_2"
|
||||
]
|
||||
@@ -25,6 +27,7 @@
|
||||
"0x7703": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_3",
|
||||
"label": "Macro 3",
|
||||
"aliases": [
|
||||
"MC_3"
|
||||
]
|
||||
@@ -32,6 +35,7 @@
|
||||
"0x7704": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_4",
|
||||
"label": "Macro 4",
|
||||
"aliases": [
|
||||
"MC_4"
|
||||
]
|
||||
@@ -39,6 +43,7 @@
|
||||
"0x7705": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_5",
|
||||
"label": "Macro 5",
|
||||
"aliases": [
|
||||
"MC_5"
|
||||
]
|
||||
@@ -46,6 +51,7 @@
|
||||
"0x7706": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_6",
|
||||
"label": "Macro 6",
|
||||
"aliases": [
|
||||
"MC_6"
|
||||
]
|
||||
@@ -53,6 +59,7 @@
|
||||
"0x7707": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_7",
|
||||
"label": "Macro 7",
|
||||
"aliases": [
|
||||
"MC_7"
|
||||
]
|
||||
@@ -60,6 +67,7 @@
|
||||
"0x7708": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_8",
|
||||
"label": "Macro 8",
|
||||
"aliases": [
|
||||
"MC_8"
|
||||
]
|
||||
@@ -67,6 +75,7 @@
|
||||
"0x7709": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_9",
|
||||
"label": "Macro 9",
|
||||
"aliases": [
|
||||
"MC_9"
|
||||
]
|
||||
@@ -74,6 +83,7 @@
|
||||
"0x770A": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_10",
|
||||
"label": "Macro 10",
|
||||
"aliases": [
|
||||
"MC_10"
|
||||
]
|
||||
@@ -81,6 +91,7 @@
|
||||
"0x770B": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_11",
|
||||
"label": "Macro 11",
|
||||
"aliases": [
|
||||
"MC_11"
|
||||
]
|
||||
@@ -88,6 +99,7 @@
|
||||
"0x770C": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_12",
|
||||
"label": "Macro 12",
|
||||
"aliases": [
|
||||
"MC_12"
|
||||
]
|
||||
@@ -95,6 +107,7 @@
|
||||
"0x770D": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_13",
|
||||
"label": "Macro 13",
|
||||
"aliases": [
|
||||
"MC_13"
|
||||
]
|
||||
@@ -102,6 +115,7 @@
|
||||
"0x770E": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_14",
|
||||
"label": "Macro 14",
|
||||
"aliases": [
|
||||
"MC_14"
|
||||
]
|
||||
@@ -109,6 +123,7 @@
|
||||
"0x770F": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_15",
|
||||
"label": "Macro 15",
|
||||
"aliases": [
|
||||
"MC_15"
|
||||
]
|
||||
@@ -116,6 +131,7 @@
|
||||
"0x7710": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_16",
|
||||
"label": "Macro 16",
|
||||
"aliases": [
|
||||
"MC_16"
|
||||
]
|
||||
@@ -123,6 +139,7 @@
|
||||
"0x7711": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_17",
|
||||
"label": "Macro 17",
|
||||
"aliases": [
|
||||
"MC_17"
|
||||
]
|
||||
@@ -130,6 +147,7 @@
|
||||
"0x7712": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_18",
|
||||
"label": "Macro 18",
|
||||
"aliases": [
|
||||
"MC_18"
|
||||
]
|
||||
@@ -137,6 +155,7 @@
|
||||
"0x7713": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_19",
|
||||
"label": "Macro 19",
|
||||
"aliases": [
|
||||
"MC_19"
|
||||
]
|
||||
@@ -144,6 +163,7 @@
|
||||
"0x7714": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_20",
|
||||
"label": "Macro 20",
|
||||
"aliases": [
|
||||
"MC_20"
|
||||
]
|
||||
@@ -151,6 +171,7 @@
|
||||
"0x7715": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_21",
|
||||
"label": "Macro 21",
|
||||
"aliases": [
|
||||
"MC_21"
|
||||
]
|
||||
@@ -158,6 +179,7 @@
|
||||
"0x7716": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_22",
|
||||
"label": "Macro 22",
|
||||
"aliases": [
|
||||
"MC_22"
|
||||
]
|
||||
@@ -165,6 +187,7 @@
|
||||
"0x7717": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_23",
|
||||
"label": "Macro 23",
|
||||
"aliases": [
|
||||
"MC_23"
|
||||
]
|
||||
@@ -172,6 +195,7 @@
|
||||
"0x7718": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_24",
|
||||
"label": "Macro 24",
|
||||
"aliases": [
|
||||
"MC_24"
|
||||
]
|
||||
@@ -179,6 +203,7 @@
|
||||
"0x7719": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_25",
|
||||
"label": "Macro 25",
|
||||
"aliases": [
|
||||
"MC_25"
|
||||
]
|
||||
@@ -186,6 +211,7 @@
|
||||
"0x771A": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_26",
|
||||
"label": "Macro 26",
|
||||
"aliases": [
|
||||
"MC_26"
|
||||
]
|
||||
@@ -193,6 +219,7 @@
|
||||
"0x771B": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_27",
|
||||
"label": "Macro 27",
|
||||
"aliases": [
|
||||
"MC_27"
|
||||
]
|
||||
@@ -200,6 +227,7 @@
|
||||
"0x771C": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_28",
|
||||
"label": "Macro 28",
|
||||
"aliases": [
|
||||
"MC_28"
|
||||
]
|
||||
@@ -207,6 +235,7 @@
|
||||
"0x771D": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_29",
|
||||
"label": "Macro 29",
|
||||
"aliases": [
|
||||
"MC_29"
|
||||
]
|
||||
@@ -214,6 +243,7 @@
|
||||
"0x771E": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_30",
|
||||
"label": "Macro 30",
|
||||
"aliases": [
|
||||
"MC_30"
|
||||
]
|
||||
@@ -221,6 +251,7 @@
|
||||
"0x771F": {
|
||||
"group": "macro",
|
||||
"key": "QK_MACRO_31",
|
||||
"label": "Macro 31",
|
||||
"aliases": [
|
||||
"MC_31"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7440": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_1",
|
||||
"label": "Button 1",
|
||||
"aliases": [
|
||||
"PB_1"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7441": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_2",
|
||||
"label": "Button 2",
|
||||
"aliases": [
|
||||
"PB_2"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7442": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_3",
|
||||
"label": "Button 3",
|
||||
"aliases": [
|
||||
"PB_3"
|
||||
]
|
||||
@@ -24,6 +27,7 @@
|
||||
"0x7443": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_4",
|
||||
"label": "Button 4",
|
||||
"aliases": [
|
||||
"PB_4"
|
||||
]
|
||||
@@ -31,6 +35,7 @@
|
||||
"0x7444": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_5",
|
||||
"label": "Button 5",
|
||||
"aliases": [
|
||||
"PB_5"
|
||||
]
|
||||
@@ -38,6 +43,7 @@
|
||||
"0x7445": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_6",
|
||||
"label": "Button 6",
|
||||
"aliases": [
|
||||
"PB_6"
|
||||
]
|
||||
@@ -45,6 +51,7 @@
|
||||
"0x7446": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_7",
|
||||
"label": "Button 7",
|
||||
"aliases": [
|
||||
"PB_7"
|
||||
]
|
||||
@@ -52,6 +59,7 @@
|
||||
"0x7447": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_8",
|
||||
"label": "Button 8",
|
||||
"aliases": [
|
||||
"PB_8"
|
||||
]
|
||||
@@ -59,6 +67,7 @@
|
||||
"0x7448": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_9",
|
||||
"label": "Button 9",
|
||||
"aliases": [
|
||||
"PB_9"
|
||||
]
|
||||
@@ -66,6 +75,7 @@
|
||||
"0x7449": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_10",
|
||||
"label": "Button 10",
|
||||
"aliases": [
|
||||
"PB_10"
|
||||
]
|
||||
@@ -73,6 +83,7 @@
|
||||
"0x744A": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_11",
|
||||
"label": "Button 11",
|
||||
"aliases": [
|
||||
"PB_11"
|
||||
]
|
||||
@@ -80,6 +91,7 @@
|
||||
"0x744B": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_12",
|
||||
"label": "Button 12",
|
||||
"aliases": [
|
||||
"PB_12"
|
||||
]
|
||||
@@ -87,6 +99,7 @@
|
||||
"0x744C": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_13",
|
||||
"label": "Button 13",
|
||||
"aliases": [
|
||||
"PB_13"
|
||||
]
|
||||
@@ -94,6 +107,7 @@
|
||||
"0x744D": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_14",
|
||||
"label": "Button 14",
|
||||
"aliases": [
|
||||
"PB_14"
|
||||
]
|
||||
@@ -101,6 +115,7 @@
|
||||
"0x744E": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_15",
|
||||
"label": "Button 15",
|
||||
"aliases": [
|
||||
"PB_15"
|
||||
]
|
||||
@@ -108,6 +123,7 @@
|
||||
"0x744F": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_16",
|
||||
"label": "Button 16",
|
||||
"aliases": [
|
||||
"PB_16"
|
||||
]
|
||||
@@ -115,6 +131,7 @@
|
||||
"0x7450": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_17",
|
||||
"label": "Button 17",
|
||||
"aliases": [
|
||||
"PB_17"
|
||||
]
|
||||
@@ -122,6 +139,7 @@
|
||||
"0x7451": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_18",
|
||||
"label": "Button 18",
|
||||
"aliases": [
|
||||
"PB_18"
|
||||
]
|
||||
@@ -129,6 +147,7 @@
|
||||
"0x7452": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_19",
|
||||
"label": "Button 19",
|
||||
"aliases": [
|
||||
"PB_19"
|
||||
]
|
||||
@@ -136,6 +155,7 @@
|
||||
"0x7453": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_20",
|
||||
"label": "Button 20",
|
||||
"aliases": [
|
||||
"PB_20"
|
||||
]
|
||||
@@ -143,6 +163,7 @@
|
||||
"0x7454": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_21",
|
||||
"label": "Button 21",
|
||||
"aliases": [
|
||||
"PB_21"
|
||||
]
|
||||
@@ -150,6 +171,7 @@
|
||||
"0x7455": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_22",
|
||||
"label": "Button 22",
|
||||
"aliases": [
|
||||
"PB_22"
|
||||
]
|
||||
@@ -157,6 +179,7 @@
|
||||
"0x7456": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_23",
|
||||
"label": "Button 23",
|
||||
"aliases": [
|
||||
"PB_23"
|
||||
]
|
||||
@@ -164,6 +187,7 @@
|
||||
"0x7457": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_24",
|
||||
"label": "Button 24",
|
||||
"aliases": [
|
||||
"PB_24"
|
||||
]
|
||||
@@ -171,6 +195,7 @@
|
||||
"0x7458": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_25",
|
||||
"label": "Button 25",
|
||||
"aliases": [
|
||||
"PB_25"
|
||||
]
|
||||
@@ -178,6 +203,7 @@
|
||||
"0x7459": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_26",
|
||||
"label": "Button 26",
|
||||
"aliases": [
|
||||
"PB_26"
|
||||
]
|
||||
@@ -185,6 +211,7 @@
|
||||
"0x745A": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_27",
|
||||
"label": "Button 27",
|
||||
"aliases": [
|
||||
"PB_27"
|
||||
]
|
||||
@@ -192,6 +219,7 @@
|
||||
"0x745B": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_28",
|
||||
"label": "Button 28",
|
||||
"aliases": [
|
||||
"PB_28"
|
||||
]
|
||||
@@ -199,6 +227,7 @@
|
||||
"0x745C": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_29",
|
||||
"label": "Button 29",
|
||||
"aliases": [
|
||||
"PB_29"
|
||||
]
|
||||
@@ -206,6 +235,7 @@
|
||||
"0x745D": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_30",
|
||||
"label": "Button 30",
|
||||
"aliases": [
|
||||
"PB_30"
|
||||
]
|
||||
@@ -213,6 +243,7 @@
|
||||
"0x745E": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_31",
|
||||
"label": "Button 31",
|
||||
"aliases": [
|
||||
"PB_31"
|
||||
]
|
||||
@@ -220,6 +251,7 @@
|
||||
"0x745F": {
|
||||
"group": "programmable_button",
|
||||
"key": "QK_PROGRAMMABLE_BUTTON_32",
|
||||
"label": "Button 32",
|
||||
"aliases": [
|
||||
"PB_32"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7C00": {
|
||||
"group": "quantum",
|
||||
"key": "QK_BOOTLOADER",
|
||||
"label": "Bootloader",
|
||||
"aliases": [
|
||||
"QK_BOOT"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7C01": {
|
||||
"group": "quantum",
|
||||
"key": "QK_REBOOT",
|
||||
"label": "Reboot",
|
||||
"aliases": [
|
||||
"QK_RBT"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7C02": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DEBUG_TOGGLE",
|
||||
"label": "Toggle Debug",
|
||||
"aliases": [
|
||||
"DB_TOGG"
|
||||
]
|
||||
@@ -24,18 +27,21 @@
|
||||
"0x7C03": {
|
||||
"group": "quantum",
|
||||
"key": "QK_CLEAR_EEPROM",
|
||||
"label": "Clear EEPROM",
|
||||
"aliases": [
|
||||
"EE_CLR"
|
||||
]
|
||||
},
|
||||
"0x7C04": {
|
||||
"group": "quantum",
|
||||
"key": "QK_MAKE"
|
||||
"key": "QK_MAKE",
|
||||
"label": "Make"
|
||||
},
|
||||
|
||||
"0x7C10": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_DOWN",
|
||||
"label": "Auto Shift Down",
|
||||
"aliases": [
|
||||
"AS_DOWN"
|
||||
]
|
||||
@@ -43,6 +49,7 @@
|
||||
"0x7C11": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_UP",
|
||||
"label": "Auto Shift Up",
|
||||
"aliases": [
|
||||
"AS_UP"
|
||||
]
|
||||
@@ -50,6 +57,7 @@
|
||||
"0x7C12": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_REPORT",
|
||||
"label": "Auto Shift Report",
|
||||
"aliases": [
|
||||
"AS_RPT"
|
||||
]
|
||||
@@ -57,6 +65,7 @@
|
||||
"0x7C13": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_ON",
|
||||
"label": "Auto Shift On",
|
||||
"aliases": [
|
||||
"AS_ON"
|
||||
]
|
||||
@@ -64,6 +73,7 @@
|
||||
"0x7C14": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_OFF",
|
||||
"label": "Auto Shift Off",
|
||||
"aliases": [
|
||||
"AS_OFF"
|
||||
]
|
||||
@@ -71,6 +81,7 @@
|
||||
"0x7C15": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTO_SHIFT_TOGGLE",
|
||||
"label": "Toggle Auto Shift",
|
||||
"aliases": [
|
||||
"AS_TOGG"
|
||||
]
|
||||
@@ -79,6 +90,7 @@
|
||||
"0x7C16": {
|
||||
"group": "quantum",
|
||||
"key": "QK_GRAVE_ESCAPE",
|
||||
"label": "Grave Esc",
|
||||
"aliases": [
|
||||
"QK_GESC"
|
||||
]
|
||||
@@ -95,6 +107,7 @@
|
||||
"0x7C18": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN",
|
||||
"label": "LCtl/(",
|
||||
"aliases": [
|
||||
"SC_LCPO"
|
||||
]
|
||||
@@ -102,6 +115,7 @@
|
||||
"0x7C19": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE",
|
||||
"label": "RCtl/)",
|
||||
"aliases": [
|
||||
"SC_RCPC"
|
||||
]
|
||||
@@ -109,6 +123,7 @@
|
||||
"0x7C1A": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN",
|
||||
"label": "LSft/)",
|
||||
"aliases": [
|
||||
"SC_LSPO"
|
||||
]
|
||||
@@ -116,6 +131,7 @@
|
||||
"0x7C1B": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE",
|
||||
"label": "RSft/)",
|
||||
"aliases": [
|
||||
"SC_RSPC"
|
||||
]
|
||||
@@ -123,6 +139,7 @@
|
||||
"0x7C1C": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN",
|
||||
"label": "LAlt/(",
|
||||
"aliases": [
|
||||
"SC_LAPO"
|
||||
]
|
||||
@@ -130,6 +147,7 @@
|
||||
"0x7C1D": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE",
|
||||
"label": "RAlt/)",
|
||||
"aliases": [
|
||||
"SC_RAPC"
|
||||
]
|
||||
@@ -137,6 +155,7 @@
|
||||
"0x7C1E": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SPACE_CADET_RIGHT_SHIFT_ENTER",
|
||||
"label": "RSft/Ent",
|
||||
"aliases": [
|
||||
"SC_SENT"
|
||||
]
|
||||
@@ -167,6 +186,7 @@
|
||||
"0x7C30": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_NEXT",
|
||||
"label": "Unicode Mode Next",
|
||||
"aliases": [
|
||||
"UC_NEXT"
|
||||
]
|
||||
@@ -174,6 +194,7 @@
|
||||
"0x7C31": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_PREVIOUS",
|
||||
"label": "Unicode Mode Previous",
|
||||
"aliases": [
|
||||
"UC_PREV"
|
||||
]
|
||||
@@ -181,6 +202,7 @@
|
||||
"0x7C32": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_MACOS",
|
||||
"label": "Unicode Mode macOS",
|
||||
"aliases": [
|
||||
"UC_MAC"
|
||||
]
|
||||
@@ -188,6 +210,7 @@
|
||||
"0x7C33": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_LINUX",
|
||||
"label": "Unicode Mode Linux",
|
||||
"aliases": [
|
||||
"UC_LINX"
|
||||
]
|
||||
@@ -195,6 +218,7 @@
|
||||
"0x7C34": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_WINDOWS",
|
||||
"label": "Unicode Mode Windows",
|
||||
"aliases": [
|
||||
"UC_WIN"
|
||||
]
|
||||
@@ -202,6 +226,7 @@
|
||||
"0x7C35": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_BSD",
|
||||
"label": "Unicode Mode BSD",
|
||||
"aliases": [
|
||||
"UC_BSD"
|
||||
]
|
||||
@@ -209,6 +234,7 @@
|
||||
"0x7C36": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_WINCOMPOSE",
|
||||
"label": "Unicode Mode WinCompose",
|
||||
"aliases": [
|
||||
"UC_WINC"
|
||||
]
|
||||
@@ -216,6 +242,7 @@
|
||||
"0x7C37": {
|
||||
"group": "quantum",
|
||||
"key": "QK_UNICODE_MODE_EMACS",
|
||||
"label": "Unicode Mode emacs",
|
||||
"aliases": [
|
||||
"UC_EMAC"
|
||||
]
|
||||
@@ -224,6 +251,7 @@
|
||||
"0x7C40": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_ON",
|
||||
"label": "Haptic On",
|
||||
"aliases": [
|
||||
"HF_ON"
|
||||
]
|
||||
@@ -231,6 +259,7 @@
|
||||
"0x7C41": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_OFF",
|
||||
"label": "Haptic Off",
|
||||
"aliases": [
|
||||
"HF_OFF"
|
||||
]
|
||||
@@ -238,6 +267,7 @@
|
||||
"0x7C42": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_TOGGLE",
|
||||
"label": "Toggle Haptic",
|
||||
"aliases": [
|
||||
"HF_TOGG"
|
||||
]
|
||||
@@ -245,6 +275,7 @@
|
||||
"0x7C43": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_RESET",
|
||||
"label": "Haptic Reset",
|
||||
"aliases": [
|
||||
"HF_RST"
|
||||
]
|
||||
@@ -252,6 +283,7 @@
|
||||
"0x7C44": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_FEEDBACK_TOGGLE",
|
||||
"label": "Toggle Haptic Feedback",
|
||||
"aliases": [
|
||||
"HF_FDBK"
|
||||
]
|
||||
@@ -259,6 +291,7 @@
|
||||
"0x7C45": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_BUZZ_TOGGLE",
|
||||
"label": "Toggle Haptic Buzz",
|
||||
"aliases": [
|
||||
"HF_BUZZ"
|
||||
]
|
||||
@@ -266,6 +299,7 @@
|
||||
"0x7C46": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_MODE_NEXT",
|
||||
"label": "Haptic Mode Next",
|
||||
"aliases": [
|
||||
"HF_NEXT"
|
||||
]
|
||||
@@ -273,6 +307,7 @@
|
||||
"0x7C47": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_MODE_PREVIOUS",
|
||||
"label": "Haptic Mode Previous",
|
||||
"aliases": [
|
||||
"HF_PREV"
|
||||
]
|
||||
@@ -280,6 +315,7 @@
|
||||
"0x7C48": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_CONTINUOUS_TOGGLE",
|
||||
"label": "Toggle Haptic Continuous",
|
||||
"aliases": [
|
||||
"HF_CONT"
|
||||
]
|
||||
@@ -287,6 +323,7 @@
|
||||
"0x7C49": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_CONTINUOUS_UP",
|
||||
"label": "Haptic Continuous Up",
|
||||
"aliases": [
|
||||
"HF_CONU"
|
||||
]
|
||||
@@ -294,6 +331,7 @@
|
||||
"0x7C4A": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_CONTINUOUS_DOWN",
|
||||
"label": "Haptic Continuous Down",
|
||||
"aliases": [
|
||||
"HF_COND"
|
||||
]
|
||||
@@ -301,6 +339,7 @@
|
||||
"0x7C4B": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_DWELL_UP",
|
||||
"label": "Haptic Dwell Up",
|
||||
"aliases": [
|
||||
"HF_DWLU"
|
||||
]
|
||||
@@ -308,6 +347,7 @@
|
||||
"0x7C4C": {
|
||||
"group": "quantum",
|
||||
"key": "QK_HAPTIC_DWELL_DOWN",
|
||||
"label": "Haptic Dwell Down",
|
||||
"aliases": [
|
||||
"HF_DWLD"
|
||||
]
|
||||
@@ -316,6 +356,7 @@
|
||||
"0x7C50": {
|
||||
"group": "quantum",
|
||||
"key": "QK_COMBO_ON",
|
||||
"label": "Combo On",
|
||||
"aliases": [
|
||||
"CM_ON"
|
||||
]
|
||||
@@ -323,6 +364,7 @@
|
||||
"0x7C51": {
|
||||
"group": "quantum",
|
||||
"key": "QK_COMBO_OFF",
|
||||
"label": "Combo Off",
|
||||
"aliases": [
|
||||
"CM_OFF"
|
||||
]
|
||||
@@ -330,6 +372,7 @@
|
||||
"0x7C52": {
|
||||
"group": "quantum",
|
||||
"key": "QK_COMBO_TOGGLE",
|
||||
"label": "Toggle Combo",
|
||||
"aliases": [
|
||||
"CM_TOGG"
|
||||
]
|
||||
@@ -338,6 +381,7 @@
|
||||
"0x7C53": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_MACRO_RECORD_START_1",
|
||||
"label": "Dynamic Macro Record 1",
|
||||
"aliases": [
|
||||
"DM_REC1"
|
||||
]
|
||||
@@ -345,6 +389,7 @@
|
||||
"0x7C54": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_MACRO_RECORD_START_2",
|
||||
"label": "Dynamic Macro Record 2",
|
||||
"aliases": [
|
||||
"DM_REC2"
|
||||
]
|
||||
@@ -352,6 +397,7 @@
|
||||
"0x7C55": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_MACRO_RECORD_STOP",
|
||||
"label": "Dynamic Macro Stop Recording",
|
||||
"aliases": [
|
||||
"DM_RSTP"
|
||||
]
|
||||
@@ -359,6 +405,7 @@
|
||||
"0x7C56": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_MACRO_PLAY_1",
|
||||
"label": "Dynamic Macro Play 1",
|
||||
"aliases": [
|
||||
"DM_PLY1"
|
||||
]
|
||||
@@ -366,6 +413,7 @@
|
||||
"0x7C57": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_MACRO_PLAY_2",
|
||||
"label": "Dynamic Macro Play 2",
|
||||
"aliases": [
|
||||
"DM_PLY2"
|
||||
]
|
||||
@@ -374,6 +422,7 @@
|
||||
"0x7C58": {
|
||||
"group": "quantum",
|
||||
"key": "QK_LEADER",
|
||||
"label": "Leader",
|
||||
"aliases": [
|
||||
"QK_LEAD"
|
||||
]
|
||||
@@ -381,12 +430,14 @@
|
||||
|
||||
"0x7C59": {
|
||||
"group": "quantum",
|
||||
"key": "QK_LOCK"
|
||||
"key": "QK_LOCK",
|
||||
"label": "Lock"
|
||||
},
|
||||
|
||||
"0x7C5A": {
|
||||
"group": "quantum",
|
||||
"key": "QK_ONE_SHOT_ON",
|
||||
"label": "One Shot On",
|
||||
"aliases": [
|
||||
"OS_ON"
|
||||
]
|
||||
@@ -394,6 +445,7 @@
|
||||
"0x7C5B": {
|
||||
"group": "quantum",
|
||||
"key": "QK_ONE_SHOT_OFF",
|
||||
"label": "One Shot Off",
|
||||
"aliases": [
|
||||
"OS_OFF"
|
||||
]
|
||||
@@ -401,6 +453,7 @@
|
||||
"0x7C5C": {
|
||||
"group": "quantum",
|
||||
"key": "QK_ONE_SHOT_TOGGLE",
|
||||
"label": "Toggle One Shot",
|
||||
"aliases": [
|
||||
"OS_TOGG"
|
||||
]
|
||||
@@ -409,6 +462,7 @@
|
||||
"0x7C5D": {
|
||||
"group": "quantum",
|
||||
"key": "QK_KEY_OVERRIDE_TOGGLE",
|
||||
"label": "Toggle Key Overrides",
|
||||
"aliases": [
|
||||
"KO_TOGG"
|
||||
]
|
||||
@@ -416,6 +470,7 @@
|
||||
"0x7C5E": {
|
||||
"group": "quantum",
|
||||
"key": "QK_KEY_OVERRIDE_ON",
|
||||
"label": "Key Overrides On",
|
||||
"aliases": [
|
||||
"KO_ON"
|
||||
]
|
||||
@@ -423,6 +478,7 @@
|
||||
"0x7C5F": {
|
||||
"group": "quantum",
|
||||
"key": "QK_KEY_OVERRIDE_OFF",
|
||||
"label": "Key Overrides Off",
|
||||
"aliases": [
|
||||
"KO_OFF"
|
||||
]
|
||||
@@ -431,6 +487,7 @@
|
||||
"0x7C60": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SECURE_LOCK",
|
||||
"label": "Lock",
|
||||
"aliases": [
|
||||
"SE_LOCK"
|
||||
]
|
||||
@@ -438,6 +495,7 @@
|
||||
"0x7C61": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SECURE_UNLOCK",
|
||||
"label": "Unlock",
|
||||
"aliases": [
|
||||
"SE_UNLK"
|
||||
]
|
||||
@@ -445,6 +503,7 @@
|
||||
"0x7C62": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SECURE_TOGGLE",
|
||||
"label": "Toggle Lock",
|
||||
"aliases": [
|
||||
"SE_TOGG"
|
||||
]
|
||||
@@ -452,6 +511,7 @@
|
||||
"0x7C63": {
|
||||
"group": "quantum",
|
||||
"key": "QK_SECURE_REQUEST",
|
||||
"label": "Request Unlock",
|
||||
"aliases": [
|
||||
"SE_REQ"
|
||||
]
|
||||
@@ -460,6 +520,7 @@
|
||||
"0x7C70": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_TAPPING_TERM_PRINT",
|
||||
"label": "Print Dynamic Tapping Term",
|
||||
"aliases": [
|
||||
"DT_PRNT"
|
||||
]
|
||||
@@ -467,6 +528,7 @@
|
||||
"0x7C71": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_TAPPING_TERM_UP",
|
||||
"label": "Dynamic Tapping Term Up",
|
||||
"aliases": [
|
||||
"DT_UP"
|
||||
]
|
||||
@@ -474,6 +536,7 @@
|
||||
"0x7C72": {
|
||||
"group": "quantum",
|
||||
"key": "QK_DYNAMIC_TAPPING_TERM_DOWN",
|
||||
"label": "Dynamic Tapping Term Down",
|
||||
"aliases": [
|
||||
"DT_DOWN"
|
||||
]
|
||||
@@ -482,6 +545,7 @@
|
||||
"0x7C73": {
|
||||
"group": "quantum",
|
||||
"key": "QK_CAPS_WORD_TOGGLE",
|
||||
"label": "Toggle Caps Word",
|
||||
"aliases": [
|
||||
"CW_TOGG"
|
||||
]
|
||||
@@ -490,6 +554,7 @@
|
||||
"0x7C74": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTOCORRECT_ON",
|
||||
"label": "Autocorrect On",
|
||||
"aliases": [
|
||||
"AC_ON"
|
||||
]
|
||||
@@ -497,6 +562,7 @@
|
||||
"0x7C75": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTOCORRECT_OFF",
|
||||
"label": "Autocorrect Off",
|
||||
"aliases": [
|
||||
"AC_OFF"
|
||||
]
|
||||
@@ -504,6 +570,7 @@
|
||||
"0x7C76": {
|
||||
"group": "quantum",
|
||||
"key": "QK_AUTOCORRECT_TOGGLE",
|
||||
"label": "Toggle Autocorrect",
|
||||
"aliases": [
|
||||
"AC_TOGG"
|
||||
]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"0x00C1": {
|
||||
"group": "media",
|
||||
"key": "KC_MISSION_CONTROL",
|
||||
"label": "Open Mission Control",
|
||||
"label": "Mission Control",
|
||||
"aliases": [
|
||||
"KC_MCTL"
|
||||
]
|
||||
@@ -11,7 +11,7 @@
|
||||
"0x00C2": {
|
||||
"group": "media",
|
||||
"key": "KC_LAUNCHPAD",
|
||||
"label": "Open Launchpad",
|
||||
"label": "Launchpad",
|
||||
"aliases": [
|
||||
"KC_LPAD"
|
||||
]
|
||||
|
||||
@@ -2,131 +2,163 @@
|
||||
"keycodes": {
|
||||
"0x7E00": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_0"
|
||||
"key": "QK_KB_0",
|
||||
"label": "Keyboard 0"
|
||||
},
|
||||
"0x7E01": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_1"
|
||||
"key": "QK_KB_1",
|
||||
"label": "Keyboard 1"
|
||||
},
|
||||
"0x7E02": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_2"
|
||||
"key": "QK_KB_2",
|
||||
"label": "Keyboard 2"
|
||||
},
|
||||
"0x7E03": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_3"
|
||||
"key": "QK_KB_3",
|
||||
"label": "Keyboard 3"
|
||||
},
|
||||
"0x7E04": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_4"
|
||||
"key": "QK_KB_4",
|
||||
"label": "Keyboard 4"
|
||||
},
|
||||
"0x7E05": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_5"
|
||||
"key": "QK_KB_5",
|
||||
"label": "Keyboard 5"
|
||||
},
|
||||
"0x7E06": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_6"
|
||||
"key": "QK_KB_6",
|
||||
"label": "Keyboard 6"
|
||||
},
|
||||
"0x7E07": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_7"
|
||||
"key": "QK_KB_7",
|
||||
"label": "Keyboard 7"
|
||||
},
|
||||
"0x7E08": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_8"
|
||||
"key": "QK_KB_8",
|
||||
"label": "Keyboard 8"
|
||||
},
|
||||
"0x7E09": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_9"
|
||||
"key": "QK_KB_9",
|
||||
"label": "Keyboard 9"
|
||||
},
|
||||
"0x7E0A": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_10"
|
||||
"key": "QK_KB_10",
|
||||
"label": "Keyboard 10"
|
||||
},
|
||||
"0x7E0B": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_11"
|
||||
"key": "QK_KB_11",
|
||||
"label": "Keyboard 11"
|
||||
},
|
||||
"0x7E0C": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_12"
|
||||
"key": "QK_KB_12",
|
||||
"label": "Keyboard 12"
|
||||
},
|
||||
"0x7E0D": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_13"
|
||||
"key": "QK_KB_13",
|
||||
"label": "Keyboard 13"
|
||||
},
|
||||
"0x7E0E": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_14"
|
||||
"key": "QK_KB_14",
|
||||
"label": "Keyboard 14"
|
||||
},
|
||||
"0x7E0F": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_15"
|
||||
"key": "QK_KB_15",
|
||||
"label": "Keyboard 15"
|
||||
},
|
||||
"0x7E10": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_16"
|
||||
"key": "QK_KB_16",
|
||||
"label": "Keyboard 16"
|
||||
},
|
||||
"0x7E11": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_17"
|
||||
"key": "QK_KB_17",
|
||||
"label": "Keyboard 17"
|
||||
},
|
||||
"0x7E12": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_18"
|
||||
"key": "QK_KB_18",
|
||||
"label": "Keyboard 18"
|
||||
},
|
||||
"0x7E13": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_19"
|
||||
"key": "QK_KB_19",
|
||||
"label": "Keyboard 19"
|
||||
},
|
||||
"0x7E14": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_20"
|
||||
"key": "QK_KB_20",
|
||||
"label": "Keyboard 20"
|
||||
},
|
||||
"0x7E15": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_21"
|
||||
"key": "QK_KB_21",
|
||||
"label": "Keyboard 21"
|
||||
},
|
||||
"0x7E16": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_22"
|
||||
"key": "QK_KB_22",
|
||||
"label": "Keyboard 22"
|
||||
},
|
||||
"0x7E17": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_23"
|
||||
"key": "QK_KB_23",
|
||||
"label": "Keyboard 23"
|
||||
},
|
||||
"0x7E18": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_24"
|
||||
"key": "QK_KB_24",
|
||||
"label": "Keyboard 24"
|
||||
},
|
||||
"0x7E19": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_25"
|
||||
"key": "QK_KB_25",
|
||||
"label": "Keyboard 25"
|
||||
},
|
||||
"0x7E1A": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_26"
|
||||
"key": "QK_KB_26",
|
||||
"label": "Keyboard 26"
|
||||
},
|
||||
"0x7E1B": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_27"
|
||||
"key": "QK_KB_27",
|
||||
"label": "Keyboard 27"
|
||||
},
|
||||
"0x7E1C": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_28"
|
||||
"key": "QK_KB_28",
|
||||
"label": "Keyboard 28"
|
||||
},
|
||||
"0x7E1D": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_29"
|
||||
"key": "QK_KB_29",
|
||||
"label": "Keyboard 29"
|
||||
},
|
||||
"0x7E1E": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_30"
|
||||
"key": "QK_KB_30",
|
||||
"label": "Keyboard 30"
|
||||
},
|
||||
"0x7E1F": {
|
||||
"group": "kb",
|
||||
"key": "QK_KB_31"
|
||||
"key": "QK_KB_31",
|
||||
"label": "Keyboard 31"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"0x7000": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_CONTROL_CAPS_LOCK",
|
||||
"label": "Swap LCtl⇄Caps",
|
||||
"aliases": [
|
||||
"CL_SWAP"
|
||||
]
|
||||
@@ -12,6 +13,7 @@
|
||||
"0x7001": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCK",
|
||||
"label": "Unswap LCtl⇄Caps",
|
||||
"aliases": [
|
||||
"CL_NORM"
|
||||
]
|
||||
@@ -19,6 +21,7 @@
|
||||
"0x7002": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCK",
|
||||
"label": "Toggle LCtl⇄Caps",
|
||||
"aliases": [
|
||||
"CL_TOGG"
|
||||
]
|
||||
@@ -26,6 +29,7 @@
|
||||
"0x7003": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFF",
|
||||
"label": "Caps≠LCtl",
|
||||
"aliases": [
|
||||
"CL_CAPS"
|
||||
]
|
||||
@@ -33,6 +37,7 @@
|
||||
"0x7004": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_CAPS_LOCK_AS_CONTROL_ON",
|
||||
"label": "Caps=LCtl",
|
||||
"aliases": [
|
||||
"CL_CTRL"
|
||||
]
|
||||
@@ -40,6 +45,7 @@
|
||||
"0x7005": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_LALT_LGUI",
|
||||
"label": "Swap LAlt⇄LGUI",
|
||||
"aliases": [
|
||||
"AG_LSWP"
|
||||
]
|
||||
@@ -47,6 +53,7 @@
|
||||
"0x7006": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_LALT_LGUI",
|
||||
"label": "Unswap LAlt⇄LGUI",
|
||||
"aliases": [
|
||||
"AG_LNRM"
|
||||
]
|
||||
@@ -54,6 +61,7 @@
|
||||
"0x7007": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_RALT_RGUI",
|
||||
"label": "Swap RAlt⇄RGUI",
|
||||
"aliases": [
|
||||
"AG_RSWP"
|
||||
]
|
||||
@@ -61,6 +69,7 @@
|
||||
"0x7008": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_RALT_RGUI",
|
||||
"label": "Unswap RAlt⇄RGUI",
|
||||
"aliases": [
|
||||
"AG_RNRM"
|
||||
]
|
||||
@@ -68,6 +77,7 @@
|
||||
"0x7009": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_GUI_ON",
|
||||
"label": "GUI On",
|
||||
"aliases": [
|
||||
"GU_ON"
|
||||
]
|
||||
@@ -75,6 +85,7 @@
|
||||
"0x700A": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_GUI_OFF",
|
||||
"label": "GUI Off",
|
||||
"aliases": [
|
||||
"GU_OFF"
|
||||
]
|
||||
@@ -82,6 +93,7 @@
|
||||
"0x700B": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_GUI",
|
||||
"label": "Toggle GUI",
|
||||
"aliases": [
|
||||
"GU_TOGG"
|
||||
]
|
||||
@@ -89,6 +101,7 @@
|
||||
"0x700C": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_GRAVE_ESC",
|
||||
"label": "Swap `⇄Esc",
|
||||
"aliases": [
|
||||
"GE_SWAP"
|
||||
]
|
||||
@@ -96,6 +109,7 @@
|
||||
"0x700D": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_GRAVE_ESC",
|
||||
"label": "Unswap `⇄Esc",
|
||||
"aliases": [
|
||||
"GE_NORM"
|
||||
]
|
||||
@@ -103,6 +117,7 @@
|
||||
"0x700E": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_BACKSLASH_BACKSPACE",
|
||||
"label": "Swap \\⇄Bspc",
|
||||
"aliases": [
|
||||
"BS_SWAP"
|
||||
]
|
||||
@@ -110,6 +125,7 @@
|
||||
"0x700F": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACE",
|
||||
"label": "Unswap \\⇄Bspc",
|
||||
"aliases": [
|
||||
"BS_NORM"
|
||||
]
|
||||
@@ -117,6 +133,7 @@
|
||||
"0x7010": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACE",
|
||||
"label": "Toggle \\⇄Bspc",
|
||||
"aliases": [
|
||||
"BS_TOGG"
|
||||
]
|
||||
@@ -124,6 +141,7 @@
|
||||
"0x7011": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_NKRO_ON",
|
||||
"label": "NKRO On",
|
||||
"aliases": [
|
||||
"NK_ON"
|
||||
]
|
||||
@@ -131,6 +149,7 @@
|
||||
"0x7012": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_NKRO_OFF",
|
||||
"label": "NKRO Off",
|
||||
"aliases": [
|
||||
"NK_OFF"
|
||||
]
|
||||
@@ -138,6 +157,7 @@
|
||||
"0x7013": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_NKRO",
|
||||
"label": "Toggle NKRO",
|
||||
"aliases": [
|
||||
"NK_TOGG"
|
||||
]
|
||||
@@ -145,6 +165,7 @@
|
||||
"0x7014": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_ALT_GUI",
|
||||
"label": "Swap Alt⇄GUI",
|
||||
"aliases": [
|
||||
"AG_SWAP"
|
||||
]
|
||||
@@ -152,6 +173,7 @@
|
||||
"0x7015": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_ALT_GUI",
|
||||
"label": "Unswap Alt⇄GUI",
|
||||
"aliases": [
|
||||
"AG_NORM"
|
||||
]
|
||||
@@ -159,6 +181,7 @@
|
||||
"0x7016": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_ALT_GUI",
|
||||
"label": "Toggle Alt⇄GUI",
|
||||
"aliases": [
|
||||
"AG_TOGG"
|
||||
]
|
||||
@@ -166,6 +189,7 @@
|
||||
"0x7017": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_LCTL_LGUI",
|
||||
"label": "Swap LCtl⇄LGUI",
|
||||
"aliases": [
|
||||
"CG_LSWP"
|
||||
]
|
||||
@@ -173,6 +197,7 @@
|
||||
"0x7018": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_LCTL_LGUI",
|
||||
"label": "Unswap LCtl⇄LGUI",
|
||||
"aliases": [
|
||||
"CG_LNRM"
|
||||
]
|
||||
@@ -180,6 +205,7 @@
|
||||
"0x7019": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_RCTL_RGUI",
|
||||
"label": "Swap RCtl⇄RGUI",
|
||||
"aliases": [
|
||||
"CG_RSWP"
|
||||
]
|
||||
@@ -187,6 +213,7 @@
|
||||
"0x701A": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_RCTL_RGUI",
|
||||
"label": "Unswap RCtl⇄RGUI",
|
||||
"aliases": [
|
||||
"CG_RNRM"
|
||||
]
|
||||
@@ -194,6 +221,7 @@
|
||||
"0x701B": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_CTL_GUI",
|
||||
"label": "Swap Ctl⇄GUI",
|
||||
"aliases": [
|
||||
"CG_SWAP"
|
||||
]
|
||||
@@ -201,6 +229,7 @@
|
||||
"0x701C": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_CTL_GUI",
|
||||
"label": "Unswap Ctl⇄GUI",
|
||||
"aliases": [
|
||||
"CG_NORM"
|
||||
]
|
||||
@@ -208,6 +237,7 @@
|
||||
"0x701D": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_CTL_GUI",
|
||||
"label": "Toggle Ctl⇄GUI",
|
||||
"aliases": [
|
||||
"CG_TOGG"
|
||||
]
|
||||
@@ -215,6 +245,7 @@
|
||||
"0x701E": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_EE_HANDS_LEFT",
|
||||
"label": "EE Hands Left",
|
||||
"aliases": [
|
||||
"EH_LEFT"
|
||||
]
|
||||
@@ -222,6 +253,7 @@
|
||||
"0x701F": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_EE_HANDS_RIGHT",
|
||||
"label": "EE Hands Right",
|
||||
"aliases": [
|
||||
"EH_RGHT"
|
||||
]
|
||||
@@ -229,6 +261,7 @@
|
||||
"0x7020": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_SWAP_ESCAPE_CAPS_LOCK",
|
||||
"label": "Swap Esc⇄Caps",
|
||||
"aliases": [
|
||||
"EC_SWAP"
|
||||
]
|
||||
@@ -236,6 +269,7 @@
|
||||
"0x7021": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCK",
|
||||
"label": "Unswap Esc⇄Caps",
|
||||
"aliases": [
|
||||
"EC_NORM"
|
||||
]
|
||||
@@ -243,6 +277,7 @@
|
||||
"0x7022": {
|
||||
"group": "magic",
|
||||
"key": "QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCK",
|
||||
"label": "Toggle Esc⇄Caps",
|
||||
"aliases": [
|
||||
"EC_TOGG"
|
||||
]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@
|
||||
"0x7C77": {
|
||||
"group": "quantum",
|
||||
"key": "QK_TRI_LAYER_LOWER",
|
||||
"label": "Lower",
|
||||
"aliases": [
|
||||
"TL_LOWR"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7C78": {
|
||||
"group": "quantum",
|
||||
"key": "QK_TRI_LAYER_UPPER",
|
||||
"label": "Upper",
|
||||
"aliases": [
|
||||
"TL_UPPR"
|
||||
]
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"0x7200": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_ON",
|
||||
"label": "Sequencer On",
|
||||
"aliases": [
|
||||
"SQ_ON"
|
||||
]
|
||||
@@ -12,6 +13,7 @@
|
||||
"0x7201": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_OFF",
|
||||
"label": "Sequencer Off",
|
||||
"aliases": [
|
||||
"SQ_OFF"
|
||||
]
|
||||
@@ -19,6 +21,7 @@
|
||||
"0x7202": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_TOGGLE",
|
||||
"label": "Toggle Sequencer",
|
||||
"aliases": [
|
||||
"SQ_TOGG"
|
||||
]
|
||||
@@ -26,6 +29,7 @@
|
||||
"0x7203": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_TEMPO_DOWN",
|
||||
"label": "Tempo Down",
|
||||
"aliases": [
|
||||
"SQ_TMPD"
|
||||
]
|
||||
@@ -33,6 +37,7 @@
|
||||
"0x7204": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_TEMPO_UP",
|
||||
"label": "Tempo Up",
|
||||
"aliases": [
|
||||
"SQ_TMPU"
|
||||
]
|
||||
@@ -40,6 +45,7 @@
|
||||
"0x7205": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_RESOLUTION_DOWN",
|
||||
"label": "Resolution Down",
|
||||
"aliases": [
|
||||
"SQ_RESD"
|
||||
]
|
||||
@@ -47,6 +53,7 @@
|
||||
"0x7206": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_RESOLUTION_UP",
|
||||
"label": "Resolution Up",
|
||||
"aliases": [
|
||||
"SQ_RESU"
|
||||
]
|
||||
@@ -54,6 +61,7 @@
|
||||
"0x7207": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_STEPS_ALL",
|
||||
"label": "All Steps",
|
||||
"aliases": [
|
||||
"SQ_SALL"
|
||||
]
|
||||
@@ -61,6 +69,7 @@
|
||||
"0x7208": {
|
||||
"group": "sequencer",
|
||||
"key": "QK_SEQUENCER_STEPS_CLEAR",
|
||||
"label": "Clear Steps",
|
||||
"aliases": [
|
||||
"SQ_SCLR"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x56F0": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_TOGGLE",
|
||||
"label": "Toggle Swap Hands",
|
||||
"aliases": [
|
||||
"SH_TOGG"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x56F1": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_TAP_TOGGLE",
|
||||
"label": "Swap Hands Tap Toggle",
|
||||
"aliases": [
|
||||
"SH_TT"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x56F2": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_MOMENTARY_ON",
|
||||
"label": "Swap Hands Momentary On",
|
||||
"aliases": [
|
||||
"SH_MON"
|
||||
]
|
||||
@@ -24,6 +27,7 @@
|
||||
"0x56F3": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_MOMENTARY_OFF",
|
||||
"label": "Swap Hands Momentary Off",
|
||||
"aliases": [
|
||||
"SH_MOFF"
|
||||
]
|
||||
@@ -31,6 +35,7 @@
|
||||
"0x56F4": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_OFF",
|
||||
"label": "Unswap Hands",
|
||||
"aliases": [
|
||||
"SH_OFF"
|
||||
]
|
||||
@@ -38,6 +43,7 @@
|
||||
"0x56F5": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_ON",
|
||||
"label": "Swap Hands",
|
||||
"aliases": [
|
||||
"SH_ON"
|
||||
]
|
||||
@@ -45,6 +51,7 @@
|
||||
"0x56F6": {
|
||||
"group": "swap_hands",
|
||||
"key": "QK_SWAP_HANDS_ONE_SHOT",
|
||||
"label": "Swap Hands One Shot",
|
||||
"aliases": [
|
||||
"SH_OS"
|
||||
]
|
||||
|
||||
@@ -2,131 +2,163 @@
|
||||
"keycodes": {
|
||||
"0x7E40": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_0"
|
||||
"key": "QK_USER_0",
|
||||
"label": "User 0"
|
||||
},
|
||||
"0x7E41": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_1"
|
||||
"key": "QK_USER_1",
|
||||
"label": "User 1"
|
||||
},
|
||||
"0x7E42": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_2"
|
||||
"key": "QK_USER_2",
|
||||
"label": "User 2"
|
||||
},
|
||||
"0x7E43": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_3"
|
||||
"key": "QK_USER_3",
|
||||
"label": "User 3"
|
||||
},
|
||||
"0x7E44": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_4"
|
||||
"key": "QK_USER_4",
|
||||
"label": "User 4"
|
||||
},
|
||||
"0x7E45": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_5"
|
||||
"key": "QK_USER_5",
|
||||
"label": "User 5"
|
||||
},
|
||||
"0x7E46": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_6"
|
||||
"key": "QK_USER_6",
|
||||
"label": "User 6"
|
||||
},
|
||||
"0x7E47": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_7"
|
||||
"key": "QK_USER_7",
|
||||
"label": "User 7"
|
||||
},
|
||||
"0x7E48": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_8"
|
||||
"key": "QK_USER_8",
|
||||
"label": "User 8"
|
||||
},
|
||||
"0x7E49": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_9"
|
||||
"key": "QK_USER_9",
|
||||
"label": "User 9"
|
||||
},
|
||||
"0x7E4A": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_10"
|
||||
"key": "QK_USER_10",
|
||||
"label": "User 10"
|
||||
},
|
||||
"0x7E4B": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_11"
|
||||
"key": "QK_USER_11",
|
||||
"label": "User 11"
|
||||
},
|
||||
"0x7E4C": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_12"
|
||||
"key": "QK_USER_12",
|
||||
"label": "User 12"
|
||||
},
|
||||
"0x7E4D": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_13"
|
||||
"key": "QK_USER_13",
|
||||
"label": "User 13"
|
||||
},
|
||||
"0x7E4E": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_14"
|
||||
"key": "QK_USER_14",
|
||||
"label": "User 14"
|
||||
},
|
||||
"0x7E4F": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_15"
|
||||
"key": "QK_USER_15",
|
||||
"label": "User 15"
|
||||
},
|
||||
"0x7E50": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_16"
|
||||
"key": "QK_USER_16",
|
||||
"label": "User 16"
|
||||
},
|
||||
"0x7E51": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_17"
|
||||
"key": "QK_USER_17",
|
||||
"label": "User 17"
|
||||
},
|
||||
"0x7E52": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_18"
|
||||
"key": "QK_USER_18",
|
||||
"label": "User 18"
|
||||
},
|
||||
"0x7E53": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_19"
|
||||
"key": "QK_USER_19",
|
||||
"label": "User 19"
|
||||
},
|
||||
"0x7E54": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_20"
|
||||
"key": "QK_USER_20",
|
||||
"label": "User 20"
|
||||
},
|
||||
"0x7E55": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_21"
|
||||
"key": "QK_USER_21",
|
||||
"label": "User 21"
|
||||
},
|
||||
"0x7E56": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_22"
|
||||
"key": "QK_USER_22",
|
||||
"label": "User 22"
|
||||
},
|
||||
"0x7E57": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_23"
|
||||
"key": "QK_USER_23",
|
||||
"label": "User 23"
|
||||
},
|
||||
"0x7E58": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_24"
|
||||
"key": "QK_USER_24",
|
||||
"label": "User 24"
|
||||
},
|
||||
"0x7E59": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_25"
|
||||
"key": "QK_USER_25",
|
||||
"label": "User 25"
|
||||
},
|
||||
"0x7E5A": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_26"
|
||||
"key": "QK_USER_26",
|
||||
"label": "User 26"
|
||||
},
|
||||
"0x7E5B": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_27"
|
||||
"key": "QK_USER_27",
|
||||
"label": "User 27"
|
||||
},
|
||||
"0x7E5C": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_28"
|
||||
"key": "QK_USER_28",
|
||||
"label": "User 28"
|
||||
},
|
||||
"0x7E5D": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_29"
|
||||
"key": "QK_USER_29",
|
||||
"label": "User 29"
|
||||
},
|
||||
"0x7E5E": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_30"
|
||||
"key": "QK_USER_30",
|
||||
"label": "User 30"
|
||||
},
|
||||
"0x7E5F": {
|
||||
"group": "user",
|
||||
"key": "QK_USER_31"
|
||||
"key": "QK_USER_31",
|
||||
"label": "User 31"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7C79": {
|
||||
"group": "quantum",
|
||||
"key": "QK_REPEAT_KEY",
|
||||
"label": "Repeat",
|
||||
"aliases": [
|
||||
"QK_REP"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7C7A": {
|
||||
"group": "quantum",
|
||||
"key": "QK_ALT_REPEAT_KEY",
|
||||
"label": "Repeat Alternate",
|
||||
"aliases": [
|
||||
"QK_AREP"
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"0x7810": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_ON",
|
||||
"label": "LED Matrix On",
|
||||
"aliases": [
|
||||
"LM_ON"
|
||||
]
|
||||
@@ -10,6 +11,7 @@
|
||||
"0x7811": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_OFF",
|
||||
"label": "LED Matrix Off",
|
||||
"aliases": [
|
||||
"LM_OFF"
|
||||
]
|
||||
@@ -17,6 +19,7 @@
|
||||
"0x7812": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_TOGGLE",
|
||||
"label": "Toggle LED Matrix",
|
||||
"aliases": [
|
||||
"LM_TOGG"
|
||||
]
|
||||
@@ -24,6 +27,7 @@
|
||||
"0x7813": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_MODE_NEXT",
|
||||
"label": "LED Matrix Next",
|
||||
"aliases": [
|
||||
"LM_NEXT"
|
||||
]
|
||||
@@ -31,6 +35,7 @@
|
||||
"0x7814": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_MODE_PREVIOUS",
|
||||
"label": "LED Matrix Previous",
|
||||
"aliases": [
|
||||
"LM_PREV"
|
||||
]
|
||||
@@ -38,6 +43,7 @@
|
||||
"0x7815": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_BRIGHTNESS_UP",
|
||||
"label": "LED Matrix Brightness Up",
|
||||
"aliases": [
|
||||
"LM_BRIU"
|
||||
]
|
||||
@@ -45,6 +51,7 @@
|
||||
"0x7816": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_BRIGHTNESS_DOWN",
|
||||
"label": "LED Matrix Brightness Down",
|
||||
"aliases": [
|
||||
"LM_BRID"
|
||||
]
|
||||
@@ -52,6 +59,7 @@
|
||||
"0x7817": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_SPEED_UP",
|
||||
"label": "LED Matrix Speed Up",
|
||||
"aliases": [
|
||||
"LM_SPDU"
|
||||
]
|
||||
@@ -59,6 +67,7 @@
|
||||
"0x7818": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_SPEED_DOWN",
|
||||
"label": "LED Matrix Speed Down",
|
||||
"aliases": [
|
||||
"LM_SPDD"
|
||||
]
|
||||
@@ -67,6 +76,7 @@
|
||||
"0x7820": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_TOGGLE",
|
||||
"label": "Toggle RGB Underglow",
|
||||
"aliases": [
|
||||
"UG_TOGG"
|
||||
]
|
||||
@@ -74,6 +84,7 @@
|
||||
"0x7821": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_MODE_NEXT",
|
||||
"label": "RGB Underglow Next",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"UG_NEXT"
|
||||
@@ -82,6 +93,7 @@
|
||||
"0x7822": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_MODE_PREVIOUS",
|
||||
"label": "RGB Underglow Previous",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"UG_PREV"
|
||||
@@ -90,6 +102,7 @@
|
||||
"0x7823": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_HUE_UP",
|
||||
"label": "RGB Underglow Hue Up",
|
||||
"aliases": [
|
||||
"UG_HUEU"
|
||||
]
|
||||
@@ -97,6 +110,7 @@
|
||||
"0x7824": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_HUE_DOWN",
|
||||
"label": "RGB Underglow Hue Down",
|
||||
"aliases": [
|
||||
"UG_HUED"
|
||||
]
|
||||
@@ -104,6 +118,7 @@
|
||||
"0x7825": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_SATURATION_UP",
|
||||
"label": "RGB Underglow Saturation Up",
|
||||
"aliases": [
|
||||
"UG_SATU"
|
||||
]
|
||||
@@ -111,6 +126,7 @@
|
||||
"0x7826": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_SATURATION_DOWN",
|
||||
"label": "RGB Underglow Saturation Down",
|
||||
"aliases": [
|
||||
"UG_SATD"
|
||||
]
|
||||
@@ -118,6 +134,7 @@
|
||||
"0x7827": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_VALUE_UP",
|
||||
"label": "RGB Underglow Value Up",
|
||||
"aliases": [
|
||||
"UG_VALU"
|
||||
]
|
||||
@@ -125,6 +142,7 @@
|
||||
"0x7828": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_VALUE_DOWN",
|
||||
"label": "RGB Underglow Value Down",
|
||||
"aliases": [
|
||||
"UG_VALD"
|
||||
]
|
||||
@@ -132,6 +150,7 @@
|
||||
"0x7829": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_SPEED_UP",
|
||||
"label": "RGB Underglow Speed Up",
|
||||
"aliases": [
|
||||
"UG_SPDU"
|
||||
]
|
||||
@@ -139,6 +158,7 @@
|
||||
"0x782A": {
|
||||
"group": "underglow",
|
||||
"key": "QK_UNDERGLOW_SPEED_DOWN",
|
||||
"label": "RGB Underglow Speed Down",
|
||||
"aliases": [
|
||||
"UG_SPDD"
|
||||
]
|
||||
@@ -147,6 +167,7 @@
|
||||
"0x7840": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_ON",
|
||||
"label": "RGB Matrix On",
|
||||
"aliases": [
|
||||
"RM_ON"
|
||||
]
|
||||
@@ -154,6 +175,7 @@
|
||||
"0x7841": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_OFF",
|
||||
"label": "RGB Matrix Off"
|
||||
"aliases": [
|
||||
"RM_OFF"
|
||||
]
|
||||
@@ -161,6 +183,7 @@
|
||||
"0x7842": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_TOGGLE",
|
||||
"label": "Toggle RGB Matrix",
|
||||
"aliases": [
|
||||
"RM_TOGG"
|
||||
]
|
||||
@@ -168,6 +191,7 @@
|
||||
"0x7843": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_MODE_NEXT",
|
||||
"label": "RGB Matrix Next",
|
||||
"aliases": [
|
||||
"RM_NEXT"
|
||||
]
|
||||
@@ -175,6 +199,7 @@
|
||||
"0x7844": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_MODE_PREVIOUS",
|
||||
"label": "RGB Matrix Previous",
|
||||
"aliases": [
|
||||
"RM_PREV"
|
||||
]
|
||||
@@ -182,6 +207,7 @@
|
||||
"0x7845": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_HUE_UP",
|
||||
"label": "RGB Matrix Hue Up",
|
||||
"aliases": [
|
||||
"RM_HUEU"
|
||||
]
|
||||
@@ -189,6 +215,7 @@
|
||||
"0x7846": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_HUE_DOWN",
|
||||
"label": "RGB Matrix Hue Down",
|
||||
"aliases": [
|
||||
"RM_HUED"
|
||||
]
|
||||
@@ -196,6 +223,7 @@
|
||||
"0x7847": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_SATURATION_UP",
|
||||
"label": "RGB Matrix Saturation Up",
|
||||
"aliases": [
|
||||
"RM_SATU"
|
||||
]
|
||||
@@ -203,6 +231,7 @@
|
||||
"0x7848": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_SATURATION_DOWN",
|
||||
"label": "RGB Matrix Saturation Down",
|
||||
"aliases": [
|
||||
"RM_SATD"
|
||||
]
|
||||
@@ -210,6 +239,7 @@
|
||||
"0x7849": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_VALUE_UP",
|
||||
"label": "RGB Matrix Value Up",
|
||||
"aliases": [
|
||||
"RM_VALU"
|
||||
]
|
||||
@@ -217,6 +247,7 @@
|
||||
"0x784A": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_VALUE_DOWN",
|
||||
"label": "RGB Matrix Value Down",
|
||||
"aliases": [
|
||||
"RM_VALD"
|
||||
]
|
||||
@@ -224,6 +255,7 @@
|
||||
"0x784B": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_SPEED_UP",
|
||||
"label": "RGB Matrix Speed Up",
|
||||
"aliases": [
|
||||
"RM_SPDU"
|
||||
]
|
||||
@@ -231,6 +263,7 @@
|
||||
"0x784C": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_SPEED_DOWN",
|
||||
"label": "RGB Matrix Speed Down",
|
||||
"aliases": [
|
||||
"RM_SPDD"
|
||||
]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"0x00CD": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_CURSOR_UP",
|
||||
"label": "Mouse cursor up",
|
||||
"label": "Mouse Up",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_UP"
|
||||
@@ -12,7 +12,7 @@
|
||||
"0x00CE": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_CURSOR_DOWN",
|
||||
"label": "Mouse cursor down",
|
||||
"label": "Mouse Down",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_DOWN"
|
||||
@@ -21,7 +21,7 @@
|
||||
"0x00CF": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_CURSOR_LEFT",
|
||||
"label": "Mouse cursor left",
|
||||
"label": "Mouse Left",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_LEFT"
|
||||
@@ -30,7 +30,7 @@
|
||||
"0x00D0": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_CURSOR_RIGHT",
|
||||
"label": "Mouse cursor right",
|
||||
"label": "Mouse Right",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_RGHT"
|
||||
@@ -39,7 +39,7 @@
|
||||
"0x00D1": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_1",
|
||||
"label": "Mouse button 1",
|
||||
"label": "Mouse Button 1",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN1"
|
||||
@@ -48,7 +48,7 @@
|
||||
"0x00D2": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_2",
|
||||
"label": "Mouse button 2",
|
||||
"label": "Mouse Button 2",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN2"
|
||||
@@ -57,7 +57,7 @@
|
||||
"0x00D3": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_3",
|
||||
"label": "Mouse button 3",
|
||||
"label": "Mouse Button 3",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN3"
|
||||
@@ -66,7 +66,7 @@
|
||||
"0x00D4": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_4",
|
||||
"label": "Mouse button 4",
|
||||
"label": "Mouse Button 4",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN4"
|
||||
@@ -75,7 +75,7 @@
|
||||
"0x00D5": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_5",
|
||||
"label": "Mouse button 5",
|
||||
"label": "Mouse Button 5",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN5"
|
||||
@@ -84,7 +84,7 @@
|
||||
"0x00D6": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_6",
|
||||
"label": "Mouse button 6",
|
||||
"label": "Mouse Button 6",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN6"
|
||||
@@ -93,7 +93,7 @@
|
||||
"0x00D7": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_7",
|
||||
"label": "Mouse button 7",
|
||||
"label": "Mouse Button 7",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN7"
|
||||
@@ -102,7 +102,7 @@
|
||||
"0x00D8": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_BUTTON_8",
|
||||
"label": "Mouse button 8",
|
||||
"label": "Mouse Button 8",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_BTN8"
|
||||
@@ -111,7 +111,7 @@
|
||||
"0x00D9": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_WHEEL_UP",
|
||||
"label": "Mouse wheel up",
|
||||
"label": "Mouse Wheel Up",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_WHLU"
|
||||
@@ -120,7 +120,7 @@
|
||||
"0x00DA": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_WHEEL_DOWN",
|
||||
"label": "Mouse wheel down",
|
||||
"label": "Mouse Wheel Down",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_WHLD"
|
||||
@@ -129,7 +129,7 @@
|
||||
"0x00DB": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_WHEEL_LEFT",
|
||||
"label": "Mouse wheel left",
|
||||
"label": "Mouse Wheel Left",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_WHLL"
|
||||
@@ -138,7 +138,7 @@
|
||||
"0x00DC": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_WHEEL_RIGHT",
|
||||
"label": "Mouse wheel right",
|
||||
"label": "Mouse Wheel Right",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_WHLR"
|
||||
@@ -147,7 +147,7 @@
|
||||
"0x00DD": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_ACCELERATION_0",
|
||||
"label": "Set mouse acceleration to 0",
|
||||
"label": "Acceleration 0",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_ACL0"
|
||||
@@ -156,7 +156,7 @@
|
||||
"0x00DE": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_ACCELERATION_1",
|
||||
"label": "Set mouse acceleration to 1",
|
||||
"label": "Acceleration 1",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_ACL1"
|
||||
@@ -165,7 +165,7 @@
|
||||
"0x00DF": {
|
||||
"group": "mouse",
|
||||
"key": "QK_MOUSE_ACCELERATION_2",
|
||||
"label": "Set mouse acceleration to 2",
|
||||
"label": "Acceleration 2",
|
||||
"aliases": [
|
||||
"!reset!",
|
||||
"MS_ACL2"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"0x7780": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_AUTO",
|
||||
"label": "Output Auto",
|
||||
"aliases": [
|
||||
"OU_AUTO"
|
||||
]
|
||||
@@ -15,6 +16,7 @@
|
||||
"0x7781": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_NEXT",
|
||||
"label": "Next Output",
|
||||
"aliases": [
|
||||
"OU_NEXT"
|
||||
]
|
||||
@@ -22,6 +24,7 @@
|
||||
"0x7782": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_PREV",
|
||||
"label": "Previous Output",
|
||||
"aliases": [
|
||||
"OU_PREV"
|
||||
]
|
||||
@@ -29,6 +32,7 @@
|
||||
"0x7783": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_NONE",
|
||||
"label": "None",
|
||||
"aliases": [
|
||||
"OU_NONE"
|
||||
]
|
||||
@@ -36,6 +40,7 @@
|
||||
"0x7784": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_USB",
|
||||
"label": "USB",
|
||||
"aliases": [
|
||||
"OU_USB"
|
||||
]
|
||||
@@ -43,6 +48,7 @@
|
||||
"0x7785": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_2P4GHZ",
|
||||
"label": "2.4GHz",
|
||||
"aliases": [
|
||||
"OU_2P4G"
|
||||
]
|
||||
@@ -50,6 +56,7 @@
|
||||
"0x7786": {
|
||||
"group": "connection",
|
||||
"key": "QK_OUTPUT_BLUETOOTH",
|
||||
"label": "Bluetooth",
|
||||
"aliases": [
|
||||
"OU_BT"
|
||||
]
|
||||
@@ -58,6 +65,7 @@
|
||||
"0x7790": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE_NEXT",
|
||||
"label": "Bluetooth Profile Next",
|
||||
"aliases": [
|
||||
"BT_NEXT"
|
||||
]
|
||||
@@ -65,6 +73,7 @@
|
||||
"0x7791": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE_PREV",
|
||||
"label": "Bluetooth Profile Previous",
|
||||
"aliases": [
|
||||
"BT_PREV"
|
||||
]
|
||||
@@ -72,6 +81,7 @@
|
||||
"0x7792": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_UNPAIR",
|
||||
"label": "Unpair",
|
||||
"aliases": [
|
||||
"BT_UNPR"
|
||||
]
|
||||
@@ -79,6 +89,7 @@
|
||||
"0x7793": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE1",
|
||||
"label": "Bluetooth Profile 1",
|
||||
"aliases": [
|
||||
"BT_PRF1"
|
||||
]
|
||||
@@ -86,6 +97,7 @@
|
||||
"0x7794": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE2",
|
||||
"label": "Bluetooth Profile 2",
|
||||
"aliases": [
|
||||
"BT_PRF2"
|
||||
]
|
||||
@@ -93,6 +105,7 @@
|
||||
"0x7795": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE3",
|
||||
"label": "Bluetooth Profile 3",
|
||||
"aliases": [
|
||||
"BT_PRF3"
|
||||
]
|
||||
@@ -100,6 +113,7 @@
|
||||
"0x7796": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE4",
|
||||
"label": "Bluetooth Profile 4",
|
||||
"aliases": [
|
||||
"BT_PRF4"
|
||||
]
|
||||
@@ -107,6 +121,7 @@
|
||||
"0x7797": {
|
||||
"group": "connection",
|
||||
"key": "QK_BLUETOOTH_PROFILE5",
|
||||
"label": "Bluetooth Profile 5",
|
||||
"aliases": [
|
||||
"BT_PRF5"
|
||||
]
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"0x7C7B": {
|
||||
"group": "quantum",
|
||||
"key": "QK_LAYER_LOCK",
|
||||
"label": "Layer Lock",
|
||||
"aliases": [
|
||||
"QK_LLCK"
|
||||
]
|
||||
|
||||
0
data/constants/keycodes/keycodes_0.0.8.hjson
Normal file
0
data/constants/keycodes/keycodes_0.0.8.hjson
Normal file
37
data/constants/keycodes/keycodes_0.0.8_lighting.hjson
Normal file
37
data/constants/keycodes/keycodes_0.0.8_lighting.hjson
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"keycodes": {
|
||||
"0x7819": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_FLAG_NEXT",
|
||||
"label": "LED Matrix Flag Next",
|
||||
"aliases": [
|
||||
"LM_FLGN"
|
||||
]
|
||||
},
|
||||
"0x781A": {
|
||||
"group": "led_matrix",
|
||||
"key": "QK_LED_MATRIX_FLAG_PREVIOUS",
|
||||
"label": "LED Matrix Flag Previous",
|
||||
"aliases": [
|
||||
"LM_FLGP"
|
||||
]
|
||||
},
|
||||
|
||||
"0x784D": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_FLAG_NEXT",
|
||||
"label": "RGB Matrix Flag Next",
|
||||
"aliases": [
|
||||
"RM_FLGN"
|
||||
]
|
||||
},
|
||||
"0x784E": {
|
||||
"group": "rgb_matrix",
|
||||
"key": "QK_RGB_MATRIX_FLAG_PREVIOUS",
|
||||
"label": "RGB Matrix Flag Previous",
|
||||
"aliases": [
|
||||
"RM_FLGP"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
3
data/constants/module_hooks/1.1.2.hjson
Normal file
3
data/constants/module_hooks/1.1.2.hjson
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
// This version exists to signify addition of split data sync support.
|
||||
}
|
||||
@@ -43,6 +43,14 @@
|
||||
"BOOTMAGIC_ROW": {"info_key": "bootmagic.matrix.0", "value_type": "int"},
|
||||
"BOOTMAGIC_ROW_RIGHT": {"info_key": "split.bootmagic.matrix.0", "value_type": "int"},
|
||||
|
||||
// Battery
|
||||
"BATTERY_SAMPLE_INTERVAL": {"info_key": "battery.sample_interval", "value_type": "int"},
|
||||
"BATTERY_ADC_PIN": {"info_key": "battery.adc.pin"},
|
||||
"BATTERY_ADC_REF_VOLTAGE_MV": {"info_key": "battery.adc.reference_voltage", "value_type": "int"},
|
||||
"BATTERY_ADC_VOLTAGE_DIVIDER_R1": {"info_key": "battery.adc.divider_r1", "value_type": "int"},
|
||||
"BATTERY_ADC_VOLTAGE_DIVIDER_R2": {"info_key": "battery.adc.divider_r2", "value_type": "int"},
|
||||
"BATTERY_ADC_RESOLUTION": {"info_key": "battery.adc.resolution", "value_type": "int"},
|
||||
|
||||
// Caps Word
|
||||
"BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "flag"},
|
||||
"CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
|
||||
@@ -90,6 +98,7 @@
|
||||
|
||||
// LED Matrix
|
||||
"LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"},
|
||||
"LED_MATRIX_FLAG_STEPS": {"info_key": "led_matrix.flag_steps", "value_type": "array.int"},
|
||||
"LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "flag"},
|
||||
"LED_MATRIX_LED_FLUSH_LIMIT": {"info_key": "led_matrix.led_flush_limit", "value_type": "int"},
|
||||
"LED_MATRIX_LED_PROCESS_LIMIT": {"info_key": "led_matrix.led_process_limit", "value_type": "int", "to_json": false},
|
||||
@@ -103,6 +112,7 @@
|
||||
"LED_MATRIX_DEFAULT_ON": {"info_key": "led_matrix.default.on", "value_type": "bool"},
|
||||
"LED_MATRIX_DEFAULT_VAL": {"info_key": "led_matrix.default.val", "value_type": "int"},
|
||||
"LED_MATRIX_DEFAULT_SPD": {"info_key": "led_matrix.default.speed", "value_type": "int"},
|
||||
"LED_MATRIX_DEFAULT_FLAGS": {"info_key": "led_matrix.default.flags", "value_type": "int"},
|
||||
|
||||
// Locking Switch
|
||||
"LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "flag"},
|
||||
@@ -120,6 +130,7 @@
|
||||
"MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "flag"},
|
||||
"MATRIX_INPUT_PRESSED_STATE": {"info_key": "matrix_pins.input_pressed_state", "value_type": "int"},
|
||||
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
|
||||
"MATRIX_MASKED": {"info_key": "matrix_pins.masked", "value_type": "flag"},
|
||||
|
||||
// Mouse Keys
|
||||
"MOUSEKEY_DELAY": {"info_key": "mousekey.delay", "value_type": "int"},
|
||||
@@ -138,6 +149,7 @@
|
||||
|
||||
// RGB Matrix
|
||||
"RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"},
|
||||
"RGB_MATRIX_FLAG_STEPS": {"info_key": "rgb_matrix.flag_steps", "value_type": "array.int"},
|
||||
"RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"},
|
||||
"RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "flag"},
|
||||
"RGB_MATRIX_LED_FLUSH_LIMIT": {"info_key": "rgb_matrix.led_flush_limit", "value_type": "int"},
|
||||
@@ -155,6 +167,7 @@
|
||||
"RGB_MATRIX_DEFAULT_SAT": {"info_key": "rgb_matrix.default.sat", "value_type": "int"},
|
||||
"RGB_MATRIX_DEFAULT_VAL": {"info_key": "rgb_matrix.default.val", "value_type": "int"},
|
||||
"RGB_MATRIX_DEFAULT_SPD": {"info_key": "rgb_matrix.default.speed", "value_type": "int"},
|
||||
"RGB_MATRIX_DEFAULT_FLAGS": {"info_key": "rgb_matrix.default.flags", "value_type": "int"},
|
||||
|
||||
// RGBLight
|
||||
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
|
||||
@@ -183,7 +196,7 @@
|
||||
|
||||
// Split Keyboard
|
||||
"SOFT_SERIAL_PIN": {"info_key": "split.serial.pin"},
|
||||
"SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
|
||||
"SELECT_SOFT_SERIAL_SPEED": {"info_key": "split.serial.speed", "value_type": "int"},
|
||||
"SPLIT_HAND_MATRIX_GRID": {"info_key": "split.handedness.matrix_grid", "value_type": "array", "to_c": false},
|
||||
"SPLIT_HAND_PIN": {"info_key": "split.handedness.pin"},
|
||||
"SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "flag"},
|
||||
@@ -211,6 +224,7 @@
|
||||
"PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "flag"},
|
||||
"RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "flag"},
|
||||
"RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "flag"},
|
||||
"SPECULATIVE_HOLD": {"info_key": "tapping.speculative_hold", "value_type": "flag"},
|
||||
"TAP_CODE_DELAY": {"info_key": "qmk.tap_keycode_delay", "value_type": "int"},
|
||||
"TAP_HOLD_CAPS_DELAY": {"info_key": "qmk.tap_capslock_delay", "value_type": "int"},
|
||||
"TAPPING_TERM": {"info_key": "tapping.term", "value_type": "int"},
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
"on_state": 1
|
||||
},
|
||||
"debounce": 5,
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 4
|
||||
},
|
||||
"features": {
|
||||
"command": false,
|
||||
"console": false
|
||||
@@ -23,7 +26,8 @@
|
||||
"animation": "solid",
|
||||
"on": true,
|
||||
"val": 255,
|
||||
"speed": 128
|
||||
"speed": 128,
|
||||
"flags": 255
|
||||
},
|
||||
"led_flush_limit": 16,
|
||||
"max_brightness": 255,
|
||||
@@ -53,7 +57,8 @@
|
||||
"hue": 0,
|
||||
"sat": 255,
|
||||
"val": 255,
|
||||
"speed": 128
|
||||
"speed": 128,
|
||||
"flags": 255
|
||||
},
|
||||
"hue_steps": 8,
|
||||
"led_flush_limit": 16,
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
"AUDIO_DRIVER": {"info_key": "audio.driver"},
|
||||
"BACKLIGHT_DRIVER": {"info_key": "backlight.driver"},
|
||||
"BATTERY_DRIVER": {"info_key": "battery.driver"},
|
||||
"BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"},
|
||||
"BOARD": {"info_key": "board"},
|
||||
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
|
||||
@@ -53,8 +54,8 @@
|
||||
"WS2812_DRIVER": {"info_key": "ws2812.driver"},
|
||||
|
||||
// Items we want flagged in lint
|
||||
"DEFAULT_FOLDER": {"info_key": "_deprecated.default_folder", "deprecated": true},
|
||||
"CTPC": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
|
||||
"CONVERT_TO_PROTON_C": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
|
||||
"DEFAULT_FOLDER": {"info_key": "_invalid.default_folder", "invalid": true},
|
||||
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true}
|
||||
}
|
||||
|
||||
@@ -68,6 +68,81 @@
|
||||
"bakeneko80": {
|
||||
"target": "kkatano/bakeneko80"
|
||||
},
|
||||
"bastardkb/charybdis/3x5/v2/elitec": {
|
||||
"target": "bastardkb/charybdis/3x5/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x5/v2/splinky_2": {
|
||||
"target": "bastardkb/charybdis/3x5/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x5/v2/splinky_3": {
|
||||
"target": "bastardkb/charybdis/3x5/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x5/v2/stemcell": {
|
||||
"target": "bastardkb/charybdis/3x5/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x6/v2/elitec": {
|
||||
"target": "bastardkb/charybdis/3x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x6/v2/splinky_2": {
|
||||
"target": "bastardkb/charybdis/3x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x6/v2/splinky_3": {
|
||||
"target": "bastardkb/charybdis/3x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/3x6/v2/stemcell": {
|
||||
"target": "bastardkb/charybdis/3x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/4x6/v2/elitec": {
|
||||
"target": "bastardkb/charybdis/4x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/4x6/v2/splinky_2": {
|
||||
"target": "bastardkb/charybdis/4x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/4x6/v2/splinky_3": {
|
||||
"target": "bastardkb/charybdis/4x6/elitec"
|
||||
},
|
||||
"bastardkb/charybdis/4x6/v2/stemcell": {
|
||||
"target": "bastardkb/charybdis/4x6/elitec"
|
||||
},
|
||||
"bastardkb/dilemma/3x5_2/splinky": {
|
||||
"target": "bastardkb/dilemma/3x5_2/promicro"
|
||||
},
|
||||
"bastardkb/scylla/v2/elitec": {
|
||||
"target": "bastardkb/scylla/promicro"
|
||||
},
|
||||
"bastardkb/scylla/v2/splinky_2": {
|
||||
"target": "bastardkb/scylla/promicro"
|
||||
},
|
||||
"bastardkb/scylla/v2/splinky_3": {
|
||||
"target": "bastardkb/scylla/promicro"
|
||||
},
|
||||
"bastardkb/scylla/v2/stemcell": {
|
||||
"target": "bastardkb/scylla/promicro"
|
||||
},
|
||||
"bastardkb/skeletyl/v2/elitec": {
|
||||
"target": "bastardkb/skeletyl/promicro"
|
||||
},
|
||||
"bastardkb/skeletyl/v2/splinky_2": {
|
||||
"target": "bastardkb/skeletyl/promicro"
|
||||
},
|
||||
"bastardkb/skeletyl/v2/splinky_3": {
|
||||
"target": "bastardkb/skeletyl/promicro"
|
||||
},
|
||||
"bastardkb/skeletyl/v2/stemcell": {
|
||||
"target": "bastardkb/skeletyl/promicro"
|
||||
},
|
||||
"bastardkb/tbkmini/v2/elitec": {
|
||||
"target": "bastardkb/tbkmini/promicro"
|
||||
},
|
||||
"bastardkb/tbkmini/v2/splinky_2": {
|
||||
"target": "bastardkb/tbkmini/promicro"
|
||||
},
|
||||
"bastardkb/tbkmini/v2/splinky_3": {
|
||||
"target": "bastardkb/tbkmini/promicro"
|
||||
},
|
||||
"bastardkb/tbkmini/v2/stemcell": {
|
||||
"target": "bastardkb/tbkmini/promicro"
|
||||
},
|
||||
"bear_face": {
|
||||
"target": "bear_face/v1"
|
||||
},
|
||||
@@ -257,44 +332,11 @@
|
||||
"handwired/jscotto/scottostarter": {
|
||||
"target": "handwired/scottokeebs/scottostarter"
|
||||
},
|
||||
"helix/pico/sc/back": {
|
||||
"target": "helix/pico/sc"
|
||||
"helix": {
|
||||
"target": "helix/beta"
|
||||
},
|
||||
"helix/pico/sc/under": {
|
||||
"target": "helix/pico/sc"
|
||||
},
|
||||
"helix/rev2/back/oled": {
|
||||
"target": "helix/rev2/back"
|
||||
},
|
||||
"helix/rev2/oled": {
|
||||
"target": "helix/rev2"
|
||||
},
|
||||
"helix/rev2/oled/back": {
|
||||
"target": "helix/rev2/back"
|
||||
},
|
||||
"helix/rev2/oled/under": {
|
||||
"target": "helix/rev2/under"
|
||||
},
|
||||
"helix/rev2/sc/back": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oled": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oledback": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oledunder": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/under": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/under": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/under/oled": {
|
||||
"target": "helix/rev2/under"
|
||||
"helix/rev2": {
|
||||
"target": "helix/beta"
|
||||
},
|
||||
"honeycomb": {
|
||||
"target": "keyhive/honeycomb"
|
||||
@@ -407,6 +449,9 @@
|
||||
"lfkeyboards/smk65": {
|
||||
"target": "lfkeyboards/smk65/revb"
|
||||
},
|
||||
"ll3macorn/bongopad": {
|
||||
"target": "ll3ma/bongopad"
|
||||
},
|
||||
"m3v3van": {
|
||||
"target": "matthewdias/m3n3van"
|
||||
},
|
||||
@@ -1575,8 +1620,11 @@
|
||||
"0_sixty": {
|
||||
"target": "0_sixty/base"
|
||||
},
|
||||
"0xcb/splaytoraid": {
|
||||
"target": "0xcb/splaytoraid/rp2040_ce"
|
||||
"0xcb/splaytoraid/32u4": {
|
||||
"target": "0xcb/splaytoraid"
|
||||
},
|
||||
"0xcb/splaytoraid/rp2040_ce": {
|
||||
"target": "0xcb/splaytoraid"
|
||||
},
|
||||
"1upkeyboards/pi40": {
|
||||
"target": "1upkeyboards/pi40/mit_v1_0"
|
||||
@@ -1587,12 +1635,24 @@
|
||||
"1upkeyboards/sweet16": {
|
||||
"target": "1upkeyboards/sweet16/v1"
|
||||
},
|
||||
"1upkeyboards/sweet16v2/kb2040": {
|
||||
"target": "1upkeyboards/sweet16v2"
|
||||
},
|
||||
"1upkeyboards/sweet16v2/pro_micro": {
|
||||
"target": "1upkeyboards/sweet16v2"
|
||||
},
|
||||
"25keys/aleth42": {
|
||||
"target": "25keys/aleth42/rev1"
|
||||
},
|
||||
"25keys/zinc": {
|
||||
"target": "25keys/zinc/rev1"
|
||||
},
|
||||
"40percentclub/gherkin/kb2040": {
|
||||
"target": "40percentclub/gherkin"
|
||||
},
|
||||
"40percentclub/gherkin/pro_micro": {
|
||||
"target": "40percentclub/gherkin"
|
||||
},
|
||||
"40percentclub/i75": {
|
||||
"target": "40percentclub/i75/promicro"
|
||||
},
|
||||
@@ -1690,7 +1750,7 @@
|
||||
"target": "durgod/dgk6x/galaxy"
|
||||
},
|
||||
"durgod/venus": {
|
||||
"target": "durgod/dgk6x/venus"
|
||||
"target": "durgod/dgk6x/venus_ansi"
|
||||
},
|
||||
"dztech/tofu/ii": {
|
||||
"target": "dztech/tofu/ii/v1"
|
||||
@@ -1881,6 +1941,12 @@
|
||||
"kin80": {
|
||||
"target": "kin80/blackpill401"
|
||||
},
|
||||
"kprepublic/cstc40/daughterboard": {
|
||||
"target": "kprepublic/cstc40/rev1"
|
||||
},
|
||||
"kprepublic/cstc40/single_pcb": {
|
||||
"target": "kprepublic/cstc40/rev2"
|
||||
},
|
||||
"kumaokobo/kudox_full": {
|
||||
"target": "kumaokobo/kudox_full/rev1"
|
||||
},
|
||||
@@ -2214,8 +2280,17 @@
|
||||
"trnthsn/s6xty5neor2": {
|
||||
"target": "trnthsn/s6xty5neor2/stm32f103"
|
||||
},
|
||||
"tweetydabird/lotus58": {
|
||||
"target": "tweetydabird/lotus58/promicro"
|
||||
"tweetydabird/lotus58/elite_c": {
|
||||
"target": "tweetydabird/lotus58"
|
||||
},
|
||||
"tweetydabird/lotus58/nanoboot": {
|
||||
"target": "tweetydabird/lotus58"
|
||||
},
|
||||
"tweetydabird/lotus58/promicro": {
|
||||
"target": "tweetydabird/lotus58"
|
||||
},
|
||||
"tweetydabird/lotus58/rp2040_ce": {
|
||||
"target": "tweetydabird/lotus58"
|
||||
},
|
||||
"unison": {
|
||||
"target": "unison/v04"
|
||||
@@ -2258,5 +2333,54 @@
|
||||
},
|
||||
"zsa/planck_ez": {
|
||||
"target": "zsa/planck_ez/base"
|
||||
},
|
||||
// DEFAULT_FOLDER removed during 2025 Q3 cycle
|
||||
"cannonkeys/satisfaction75": {
|
||||
"target": "cannonkeys/satisfaction75/rev1"
|
||||
},
|
||||
"converter/adb_usb": {
|
||||
"target": "converter/adb_usb/rev1"
|
||||
},
|
||||
"converter/sun_usb": {
|
||||
"target": "converter/sun_usb/type5"
|
||||
},
|
||||
"converter/usb_usb": {
|
||||
"target": "converter/usb_usb/hasu"
|
||||
},
|
||||
"durgod/dgk6x": {
|
||||
"target": "durgod/dgk6x/hades_ansi"
|
||||
},
|
||||
"ergodox_ez": {
|
||||
"target": "ergodox_ez/base"
|
||||
},
|
||||
"ferris/0_2": {
|
||||
"target": "ferris/0_2/base"
|
||||
},
|
||||
"handwired/dygma/raise": {
|
||||
"target": "handwired/dygma/raise/ansi"
|
||||
},
|
||||
"helix/rev3_4rows": {
|
||||
"target": "helix/rev3"
|
||||
},
|
||||
"helix/rev3_5rows": {
|
||||
"target": "helix/rev3"
|
||||
},
|
||||
"ibm/model_m/mschwingen": {
|
||||
"target": "ibm/model_m/mschwingen/led_wired"
|
||||
},
|
||||
"mechwild/sugarglider": {
|
||||
"target": "mechwild/sugarglider/wide_oled/f401"
|
||||
},
|
||||
"mechwild/sugarglider/wide_oled": {
|
||||
"target": "mechwild/sugarglider/wide_oled/f401"
|
||||
},
|
||||
"novelkeys/nk65": {
|
||||
"target": "novelkeys/nk65/v1"
|
||||
},
|
||||
"novelkeys/nk65/base": {
|
||||
"target": "novelkeys/nk65/v1"
|
||||
},
|
||||
"sirius/uni660/rev2": {
|
||||
"target": "sirius/uni660/rev2/ansi"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,6 +188,28 @@
|
||||
"as_caps_lock": {"type": "boolean"}
|
||||
}
|
||||
},
|
||||
"battery": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"driver": {
|
||||
"type": "string",
|
||||
"enum": ["adc", "custom", "vendor"]
|
||||
},
|
||||
"adc": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
|
||||
"reference_voltage": {"type": "integer"},
|
||||
"divider_r1": {"type": "integer"},
|
||||
"divider_r2": {"type": "integer"},
|
||||
"resolution": {"type": "integer"}
|
||||
}
|
||||
},
|
||||
"sample_interval": {"type": "integer"}
|
||||
}
|
||||
},
|
||||
"bluetooth": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -311,6 +333,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"dynamic_keymap": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"eeprom_max_addr": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
"layer_count": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 32
|
||||
}
|
||||
}
|
||||
},
|
||||
"eeprom": {
|
||||
"properties": {
|
||||
"driver": {"type": "string"},
|
||||
@@ -473,6 +506,7 @@
|
||||
"ghost": {"type": "boolean"},
|
||||
"input_pressed_state": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
"io_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
"masked": {"type": "boolean"},
|
||||
"direct": {
|
||||
"type": "array",
|
||||
"items": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}
|
||||
@@ -520,7 +554,8 @@
|
||||
"on": {"type": "boolean"},
|
||||
"animation": {"type": "string"},
|
||||
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
}
|
||||
},
|
||||
"driver": {
|
||||
@@ -548,6 +583,11 @@
|
||||
"maxItems": 2,
|
||||
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
},
|
||||
"flag_steps": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
},
|
||||
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
"val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
@@ -603,7 +643,8 @@
|
||||
"hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
}
|
||||
},
|
||||
"driver": {
|
||||
@@ -633,6 +674,11 @@
|
||||
"maxItems": 2,
|
||||
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
},
|
||||
"flag_steps": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
|
||||
},
|
||||
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
|
||||
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
"hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
|
||||
@@ -863,8 +909,7 @@
|
||||
},
|
||||
"soft_serial_speed": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
"$comment": "Deprecated: use split.serial.speed instead"
|
||||
},
|
||||
"serial": {
|
||||
"type": "object",
|
||||
@@ -874,7 +919,12 @@
|
||||
"type": "string",
|
||||
"enum": ["bitbang", "usart", "vendor"]
|
||||
},
|
||||
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}
|
||||
"pin": {"$ref": "./definitions.jsonschema#/mcu_pin"},
|
||||
"speed": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"transport": {
|
||||
|
||||
@@ -35,6 +35,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"dip_switches": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["on", "off"],
|
||||
"properties": {
|
||||
"on": {"type": "string"},
|
||||
"off": {"type": "string"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"macros": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
||||
@@ -36,7 +36,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch
|
||||
## Encoder flip
|
||||
|
||||
* Flips the encoder direction so that `clockwise == true` is for actually turning the knob clockwise
|
||||
* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected dirction is simple for users.
|
||||
* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected direction is simple for users.
|
||||
* Cleans up documentation page for encoders
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ These PRs move the V-USB driver code out of the qmk_firmware repository and into
|
||||
|
||||
Updates all of the per key tap-hold functions to pass the `keyrecord_t` structure, and include documentation changes.
|
||||
|
||||
Any remaining versions or code outside of the main repo will need to be converted:
|
||||
Any remaining versions or code outside of the main repo will need to be converted:
|
||||
| Old function | New Function |
|
||||
|------------------------------------------------------|---------------------------------------------------------------------------|
|
||||
|`uint16_t get_tapping_term(uint16_t keycode)` |`uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record)` |
|
||||
@@ -38,7 +38,7 @@ After the next breaking change you will not be able to build if `bin/qmk hello`
|
||||
[#8269](https://github.com/qmk/qmk_firmware/pull/8269)
|
||||
|
||||
- Provides debug functionality on ChibiOS/ARM that is more compliant than previous integrations.
|
||||
- Less maintenence, fewer QMK customisations, and allows QMK to sidestep previous compile and runtime issues.
|
||||
- Less maintenance, fewer QMK customisations, and allows QMK to sidestep previous compile and runtime issues.
|
||||
- A `make git-submodule` may be required after pulling the latest QMK Firmware code to update to the new dependency.
|
||||
|
||||
### Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup
|
||||
@@ -51,8 +51,10 @@ After the next breaking change you will not be able to build if `bin/qmk hello`
|
||||
|
||||
The `RGB_DISABLE_AFTER_TIMEOUT` definition is now deprecated, and has been superseded by `RGB_DISABLE_TIMEOUT`. To use the new definition, rename `RGB_DISABLE_AFTER_TIMEOUT` to `RGB_DISABLE_TIMEOUT` in your `config.h` file, and multiply the value set by 1200.
|
||||
|
||||
Before: `#define RGB_DISABLE_AFTER_TIMEOUT 100`
|
||||
After: `#define RGB_DISABLE_TIMEOUT 120000`
|
||||
```diff
|
||||
-#define RGB_DISABLE_AFTER_TIMEOUT 100
|
||||
+#define RGB_DISABLE_TIMEOUT 120000
|
||||
```
|
||||
|
||||
### Switch to qmk forks for everything
|
||||
|
||||
@@ -103,8 +105,8 @@ This allows current lily58 firmware to advance with updates to the `split_common
|
||||
- Alternatively, if you did not change the OLED code from that in `default`, you may find it easier to simply copy the [relevant section](https://github.com/qmk/qmk_firmware/blob/4ac310668501ae6786c711ecc8f01f62ddaa1c0b/keyboards/lily58/keymaps/default/keymap.c#L138-L172). Otherwise, the changes you need to make are as follows (sample change [here](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7R138-R173))
|
||||
- [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L138-L141) the block
|
||||
```c
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
```
|
||||
- Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
|
||||
@@ -127,7 +129,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
|
||||
* Refactor to use split_common and remove split codes under the zinc/revx/
|
||||
* Add - backlight RGB LED and/or underglow RGB LED option
|
||||
* Add - continuous RGB animations feature (between L and R halves)
|
||||
* Add - continuous RGB animations feature (between L and R halves)
|
||||
* Fix - keymap files to adapt to changes
|
||||
* all authors of keymaps confirmed this PR
|
||||
* Update - documents and rules.mk
|
||||
@@ -164,8 +166,8 @@ void keyboard_pre_init_kb(void) {
|
||||
- The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete [this section](https://github.com/qmk/qmk_firmware/blob/e6b9980bd45c186f7360df68c24b6e05a80c10dc/keyboards/lily58/keymaps/default/keymap.c#L144-L190)
|
||||
- [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L91-L158) the block
|
||||
```c
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
```
|
||||
- Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
|
||||
|
||||
@@ -12,7 +12,7 @@ Added support for MK66F18 (Teensy 3.6) microcontroller.
|
||||
|
||||
### New command: qmk console ([#12828](https://github.com/qmk/qmk_firmware/pull/12828)) {#new-command-qmk-console}
|
||||
|
||||
A new `qmk console` command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.
|
||||
A new `qmk console` command has been added for attaching to your keyboard's console. It operates similarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.
|
||||
|
||||
### Improved command: qmk config {#improve-command-qmk-config}
|
||||
|
||||
@@ -121,8 +121,8 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
tap_code(KC_UP);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
// If you return true, this will allow the keyboard level code to run, as well.
|
||||
return true;
|
||||
// If you return true, this will allow the keyboard level code to run, as well.
|
||||
//Returning false will override the keyboard level code. Depending on how the keyboard level function is set up.
|
||||
}
|
||||
```
|
||||
|
||||
@@ -104,7 +104,7 @@ void dip_switch_update_user(uint8_t index, bool active) {
|
||||
}
|
||||
}
|
||||
|
||||
void dip_switch_update_mask_kb(uint32_t state) {
|
||||
void dip_switch_update_mask_kb(uint32_t state) {
|
||||
dip_switch_update_mask_user(state);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ Bootloader configuration is no longer assumed. Keyboards must now set either:
|
||||
|
||||
### Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127))
|
||||
|
||||
In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products.
|
||||
In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products.
|
||||
|
||||
### Updated Keyboard Codebases {#updated-keyboard-codebases}
|
||||
|
||||
|
||||
181
docs/ChangeLog/20250831.md
Normal file
181
docs/ChangeLog/20250831.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# QMK Breaking Changes - 2025 Aug 31 Changelog
|
||||
|
||||
## Changes Requiring User Action
|
||||
|
||||
### Updated Keyboard Codebases
|
||||
|
||||
| Old Keyboard Name | New Keyboard Name |
|
||||
|--------------------------------------|----------------------------------|
|
||||
| bastardkb/charybdis/3x5/v2/elitec | bastardkb/charybdis/3x5/elitec |
|
||||
| bastardkb/charybdis/3x5/v2/splinky_2 | bastardkb/charybdis/3x5/elitec |
|
||||
| bastardkb/charybdis/3x5/v2/splinky_3 | bastardkb/charybdis/3x5/elitec |
|
||||
| bastardkb/charybdis/3x5/v2/stemcell | bastardkb/charybdis/3x5/elitec |
|
||||
| bastardkb/charybdis/3x6/v2/elitec | bastardkb/charybdis/3x6/elitec |
|
||||
| bastardkb/charybdis/3x6/v2/splinky_2 | bastardkb/charybdis/3x6/elitec |
|
||||
| bastardkb/charybdis/3x6/v2/splinky_3 | bastardkb/charybdis/3x6/elitec |
|
||||
| bastardkb/charybdis/3x6/v2/stemcell | bastardkb/charybdis/3x6/elitec |
|
||||
| bastardkb/charybdis/4x6/v2/elitec | bastardkb/charybdis/4x6/elitec |
|
||||
| bastardkb/charybdis/4x6/v2/splinky_2 | bastardkb/charybdis/4x6/elitec |
|
||||
| bastardkb/charybdis/4x6/v2/splinky_3 | bastardkb/charybdis/4x6/elitec |
|
||||
| bastardkb/charybdis/4x6/v2/stemcell | bastardkb/charybdis/4x6/elitec |
|
||||
| bastardkb/dilemma/3x5_2/splinky | bastardkb/dilemma/3x5_2/promicro |
|
||||
| bastardkb/scylla/v2/elitec | bastardkb/scylla/promicro |
|
||||
| bastardkb/scylla/v2/splinky_2 | bastardkb/scylla/promicro |
|
||||
| bastardkb/scylla/v2/splinky_3 | bastardkb/scylla/promicro |
|
||||
| bastardkb/scylla/v2/stemcell | bastardkb/scylla/promicro |
|
||||
| bastardkb/skeletyl/v2/elitec | bastardkb/skeletyl/promicro |
|
||||
| bastardkb/skeletyl/v2/splinky_2 | bastardkb/skeletyl/promicro |
|
||||
| bastardkb/skeletyl/v2/splinky_3 | bastardkb/skeletyl/promicro |
|
||||
| bastardkb/skeletyl/v2/stemcell | bastardkb/skeletyl/promicro |
|
||||
| bastardkb/tbkmini/v2/elitec | bastardkb/tbkmini/promicro |
|
||||
| bastardkb/tbkmini/v2/splinky_2 | bastardkb/tbkmini/promicro |
|
||||
| bastardkb/tbkmini/v2/splinky_3 | bastardkb/tbkmini/promicro |
|
||||
| bastardkb/tbkmini/v2/stemcell | bastardkb/tbkmini/promicro |
|
||||
| helix/rev2 | helix/beta |
|
||||
| helix/rev3_4rows | helix/rev3 |
|
||||
| helix/rev3_5rows | helix/rev3 |
|
||||
| kprepublic/cstc40/daughterboard | kprepublic/cstc40/rev1 |
|
||||
| kprepublic/cstc40/single_pcb | kprepublic/cstc40/rev2 |
|
||||
| ll3macorn/bongopad | ll3ma/bongopad |
|
||||
| novelkeys/nk65/base | novelkeys/nk65/v1 |
|
||||
| tweetydabird/lotus58/elite_c | tweetydabird/lotus58 |
|
||||
| tweetydabird/lotus58/nanoboot | tweetydabird/lotus58 |
|
||||
| tweetydabird/lotus58/promicro | tweetydabird/lotus58 |
|
||||
| tweetydabird/lotus58/rp2040_ce | tweetydabird/lotus58 |
|
||||
|
||||
### Mitigate VIA keylogger security issues [#25414](https://github.com/qmk/qmk_firmware/pull/25414)
|
||||
|
||||
VIA's keyboard matrix testing functionality, which allows users to identify active key presses, has been identified as a potential security concern by community members and security researchers. This feature has been demonstrated to enable unauthorized keystroke capture, with documented examples showing how malicious scripts could exploit this capability to create keyloggers. A recent security assessment revealed that user credentials could be compromised by exploiting the matrix testing function combined with VIA's keycode assignment queries. In this attack scenario, a script could remain active during a locked session and capture password input when users authenticate upon return.
|
||||
|
||||
The QMK team notified the VIA team of this security vulnerability on May 17, 2022, and made multiple subsequent attempts to coordinate a mitigation strategy. Despite repeated outreach, the VIA team has provided no acknowledgment or response to these security concerns. Given the severity of the potential security implications and the lack of engagement from the VIA team, the QMK team has unilaterally implemented a security enhancement that modifies the keyboard matrix testing functionality to prevent the reporting of key press events. This change prioritizes user security and data protection over potential feature compatibility concerns within VIA.
|
||||
|
||||
## Deprecation Notices
|
||||
|
||||
In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here.
|
||||
|
||||
### `DEFAULT_FOLDER` removal ([#23281](https://github.com/qmk/qmk_firmware/pull/23281))
|
||||
|
||||
`DEFAULT_FOLDER` was originally introduced to work around limitations within the build system.
|
||||
Parent folders containing common configuration would create invalid build targets.
|
||||
|
||||
With the introduction of [`keyboard.json`](./20240526#keyboard-json) as a configuration file, the build system now has a consistent method to detect build targets.
|
||||
The `DEFAULT_FOLDER` functionality is now removed with the intent that `rules.mk` is now pure configuration.
|
||||
|
||||
Backwards compatibility of build targets has been maintained where possible.
|
||||
|
||||
### Converter `Pin Compatible` updates ([#20330](https://github.com/qmk/qmk_firmware/pull/20330))
|
||||
|
||||
Converter support has been further limited to only function if a keyboard declares that it is compatible.
|
||||
|
||||
This can be configured in the following ways:
|
||||
|
||||
:::::tabs
|
||||
|
||||
==== keyboard.json
|
||||
|
||||
```json [keyboard.json]
|
||||
{
|
||||
"development_board": "promicro", // [!code focus]
|
||||
}
|
||||
```
|
||||
|
||||
==== rules.mk
|
||||
|
||||
```make [rules.mk]
|
||||
PIN_COMPATIBLE = promicro
|
||||
```
|
||||
|
||||
:::::
|
||||
|
||||
see the [Converters Feature](../feature_converters) documentation for more information.
|
||||
|
||||
### Removal of deprecated RGB and Mouse keycodes ([#25444](https://github.com/qmk/qmk_firmware/pull/25444))
|
||||
|
||||
Backwards compatibility of deprecated RGB and Mouse keycodes has been removed.
|
||||
|
||||
See the following documentation for the list of currently supported keycodes:
|
||||
|
||||
* [RGB Lighting](../features/rgblight#keycodes)
|
||||
* [RGB Matrix](../features/rgb_matrix#keycodes)
|
||||
* [Mouse keys](../features/mouse_keys#mapping-mouse-actions)
|
||||
|
||||
## Full changelist
|
||||
|
||||
Core:
|
||||
* Remove converter assumption that everything is a promicro ([#20330](https://github.com/qmk/qmk_firmware/pull/20330))
|
||||
* Remove `DEFAULT_FOLDER` handling ([#23281](https://github.com/qmk/qmk_firmware/pull/23281))
|
||||
* Add core handling for pointing device failures. ([#25315](https://github.com/qmk/qmk_firmware/pull/25315))
|
||||
* Relocate remaining `process_record_quantum` keycodes ([#25328](https://github.com/qmk/qmk_firmware/pull/25328))
|
||||
* Remove `process_action_kb` callback ([#25331](https://github.com/qmk/qmk_firmware/pull/25331))
|
||||
* Add `{rgb|led}_matrix_get_mode_name()`. ([#25344](https://github.com/qmk/qmk_firmware/pull/25344))
|
||||
* Align sleep_led logic ([#25395](https://github.com/qmk/qmk_firmware/pull/25395))
|
||||
* Mitigate VIA keylogger security issues ([#25414](https://github.com/qmk/qmk_firmware/pull/25414))
|
||||
* Deprecate some nonstandard mod & mod-tap keycode aliases ([#25437](https://github.com/qmk/qmk_firmware/pull/25437))
|
||||
* Refactor Starlight Smooth matrix effect ([#25442](https://github.com/qmk/qmk_firmware/pull/25442))
|
||||
* Remove deprecated `RGB_` and Mouse keycodes ([#25444](https://github.com/qmk/qmk_firmware/pull/25444))
|
||||
* Configure SPI for `QMK_PM2040` board ([#25481](https://github.com/qmk/qmk_firmware/pull/25481))
|
||||
* Configure SPI for `STEMCELL` board ([#25486](https://github.com/qmk/qmk_firmware/pull/25486))
|
||||
* Configure SPI for `QMK_BLOK` board ([#25487](https://github.com/qmk/qmk_firmware/pull/25487))
|
||||
* Clamp reactive offset value ([#25489](https://github.com/qmk/qmk_firmware/pull/25489))
|
||||
* Relocate `AUDIO_INIT_DELAY` implementation ([#25491](https://github.com/qmk/qmk_firmware/pull/25491))
|
||||
* Add MATRIX_ROWS_PER_HAND definition ([#25513](https://github.com/qmk/qmk_firmware/pull/25513))
|
||||
* Refactor battery driver ([#25550](https://github.com/qmk/qmk_firmware/pull/25550))
|
||||
* Add cachyos as pattern when installing dependencies ([#25580](https://github.com/qmk/qmk_firmware/pull/25580))
|
||||
|
||||
CLI:
|
||||
* Add MATRIX_MASKED DD config ([#25383](https://github.com/qmk/qmk_firmware/pull/25383))
|
||||
* Ensure keyboard aliases do not point to themselves ([#25500](https://github.com/qmk/qmk_firmware/pull/25500))
|
||||
|
||||
Keyboards:
|
||||
* [Update] E8ghtyNeo caps indicator ([#25009](https://github.com/qmk/qmk_firmware/pull/25009))
|
||||
* Keychron C3 Pro `c3_pro.c` corrections ([#25049](https://github.com/qmk/qmk_firmware/pull/25049))
|
||||
* Update franky36 pid and vid ([#25160](https://github.com/qmk/qmk_firmware/pull/25160))
|
||||
* Added Encoder support for Soyuz ([#25279](https://github.com/qmk/qmk_firmware/pull/25279))
|
||||
* CSTC40 rev3 (FXTWINK) ([#25285](https://github.com/qmk/qmk_firmware/pull/25285))
|
||||
* Migrate remaining `DEFAULT_FOLDER` to keyboard aliases ([#25291](https://github.com/qmk/qmk_firmware/pull/25291))
|
||||
* Configure boards to use development_board - R ([#25316](https://github.com/qmk/qmk_firmware/pull/25316))
|
||||
* Configure boards to use development_board - P ([#25317](https://github.com/qmk/qmk_firmware/pull/25317))
|
||||
* Configure boards to use development_board - NO ([#25338](https://github.com/qmk/qmk_firmware/pull/25338))
|
||||
* Configure boards to use development_board - LM ([#25341](https://github.com/qmk/qmk_firmware/pull/25341))
|
||||
* maple_computing/launchpad - Remove broken `default_rgb` keymap ([#25342](https://github.com/qmk/qmk_firmware/pull/25342))
|
||||
* update winry25 VID and PID ([#25351](https://github.com/qmk/qmk_firmware/pull/25351))
|
||||
* Configure boards to use development_board - DE ([#25369](https://github.com/qmk/qmk_firmware/pull/25369))
|
||||
* Configure boards to use development_board - FGHIJ ([#25370](https://github.com/qmk/qmk_firmware/pull/25370))
|
||||
* refactor(mercutio): layouts & reformatting ([#25408](https://github.com/qmk/qmk_firmware/pull/25408))
|
||||
* Configure boards to use development_board - ABC ([#25417](https://github.com/qmk/qmk_firmware/pull/25417))
|
||||
* Configure boards to use development_board - K ([#25421](https://github.com/qmk/qmk_firmware/pull/25421))
|
||||
* Refactor `helix/pico` ([#25428](https://github.com/qmk/qmk_firmware/pull/25428))
|
||||
* Refactor `helix/rev2` ([#25429](https://github.com/qmk/qmk_firmware/pull/25429))
|
||||
* Refactor `helix/rev3_{4,5}rows` ([#25430](https://github.com/qmk/qmk_firmware/pull/25430))
|
||||
* Migrate `helix` common configuration ([#25433](https://github.com/qmk/qmk_firmware/pull/25433))
|
||||
* Refactor `bastardkb/tbkmini` ([#25438](https://github.com/qmk/qmk_firmware/pull/25438))
|
||||
* Convert `novelkeys/nk65` to use RGB Matrix ([#25450](https://github.com/qmk/qmk_firmware/pull/25450))
|
||||
* Convert moon to lite custom matrix ([#25452](https://github.com/qmk/qmk_firmware/pull/25452))
|
||||
* Refactor `bastardkb/skeletyl` ([#25456](https://github.com/qmk/qmk_firmware/pull/25456))
|
||||
* Refactor `bastardkb/scylla` ([#25459](https://github.com/qmk/qmk_firmware/pull/25459))
|
||||
* Refactor `bastardkb/dilemma/3x5_2` ([#25462](https://github.com/qmk/qmk_firmware/pull/25462))
|
||||
* Migrate `usb.force_nkro` to `host.default.nkro` ([#25468](https://github.com/qmk/qmk_firmware/pull/25468))
|
||||
* Give mouse report to pointing_device_task_user first in ploopyco devices ([#25475](https://github.com/qmk/qmk_firmware/pull/25475))
|
||||
* Refactor `bastardkb/charybdis/3x5` ([#25488](https://github.com/qmk/qmk_firmware/pull/25488))
|
||||
* Refactor `bastardkb/charybdis/3x6` ([#25493](https://github.com/qmk/qmk_firmware/pull/25493))
|
||||
* Refactor `bastardkb/charybdis/4x6` ([#25494](https://github.com/qmk/qmk_firmware/pull/25494))
|
||||
* Rebrand For Ll3ma Keyboards ([#25498](https://github.com/qmk/qmk_firmware/pull/25498))
|
||||
* Remove some encoder resolution that duplicate defaults ([#25517](https://github.com/qmk/qmk_firmware/pull/25517))
|
||||
* Remove overriding of `DF()` within keyboards ([#25541](https://github.com/qmk/qmk_firmware/pull/25541))
|
||||
* Refactor inland/kb83 ([#25542](https://github.com/qmk/qmk_firmware/pull/25542))
|
||||
* Refactor `tweetydabird/lotus58` ([#25547](https://github.com/qmk/qmk_firmware/pull/25547))
|
||||
* Swap spleeb to default GENERIC_PROMICRO_RP2040 board files ([#25564](https://github.com/qmk/qmk_firmware/pull/25564))
|
||||
|
||||
Keyboard fixes:
|
||||
* Fix `keebio/quefrency/rev1:default60` ([#25423](https://github.com/qmk/qmk_firmware/pull/25423))
|
||||
* Fixup `bastardkb/tbkmini` keymap's build target ([#25458](https://github.com/qmk/qmk_firmware/pull/25458))
|
||||
* Miscellaneous fixes for lint warnings ([#25469](https://github.com/qmk/qmk_firmware/pull/25469))
|
||||
* Fix pytest/has_community default keymap location ([#25471](https://github.com/qmk/qmk_firmware/pull/25471))
|
||||
* Fix serial speed DD configuration & migrate keyboards ([#25546](https://github.com/qmk/qmk_firmware/pull/25546))
|
||||
* Update rgb x coordinate of rightmost column ([#25556](https://github.com/qmk/qmk_firmware/pull/25556))
|
||||
|
||||
Bugs:
|
||||
* Fix buggy switch statement in quantum.c ([#25322](https://github.com/qmk/qmk_firmware/pull/25322))
|
||||
* Compilation fixes for `-fno-common` ([#25436](https://github.com/qmk/qmk_firmware/pull/25436))
|
||||
* Only userspace should be searched for keyboard aliases when locating keymaps ([#25477](https://github.com/qmk/qmk_firmware/pull/25477))
|
||||
* Allow `qmk flash <filename>` to flash AT32 boards ([#25497](https://github.com/qmk/qmk_firmware/pull/25497))
|
||||
190
docs/ChangeLog/20251130.md
Normal file
190
docs/ChangeLog/20251130.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# QMK Breaking Changes - 2025 Nov 30 Changelog
|
||||
|
||||
## Notable Features {#notable-features}
|
||||
|
||||
### Speculative Hold option for mod-taps: hold mods instantly while unsettled [#25572](https://github.com/qmk/qmk_firmware/pull/25572)
|
||||
|
||||
Speculative Hold makes mod-tap keys more responsive by applying the modifier instantly on keydown, before the tap-hold decision is made. This is especially useful for actions like Shift+click and Ctrl+scroll wheel with an external mouse, which can feel laggy with standard mod-taps.
|
||||
|
||||
The firmware holds the modifier speculatively. Once the key's behavior is settled:
|
||||
|
||||
* If held, the modifier remains active as expected until the key is released.
|
||||
* If tapped, the speculative modifier is canceled just before the tapping keycode is sent.
|
||||
|
||||
Speculative Hold applies the modifier early but does not change the underlying tap-hold decision logic. Speculative Hold is compatible to use in combination with any other tap-hold options.
|
||||
|
||||
see the [Speculative Hold](../tap_hold#speculative-hold) documentation for more information.
|
||||
|
||||
## Changes Requiring User Action
|
||||
|
||||
### Updated Keyboard Codebases
|
||||
|
||||
| Old Keyboard Name | New Keyboard Name |
|
||||
|----------------------------------|-------------------------|
|
||||
| 0xcb/splaytoraid/32u4 | 0xcb/splaytoraid |
|
||||
| 0xcb/splaytoraid/rp2040_ce | 0xcb/splaytoraid |
|
||||
| 1upkeyboards/sweet16v2/kb2040 | 1upkeyboards/sweet16v2 |
|
||||
| 1upkeyboards/sweet16v2/pro_micro | 1upkeyboards/sweet16v2 |
|
||||
| 40percentclub/gherkin/kb2040 | 40percentclub/gherkin |
|
||||
| 40percentclub/gherkin/pro_micro | 40percentclub/gherkin |
|
||||
| durgod/dgk6x/venus | durgod/dgk6x/venus_ansi |
|
||||
|
||||
### Reduce tap dance memory usage, move state out of data [#25415](https://github.com/qmk/qmk_firmware/pull/25415)
|
||||
|
||||
The tap dance state has been separated from the action structure. Custom tap dance functions now receive the state as a separate parameter instead of accessing it through `action->state`.
|
||||
|
||||
If your keymap uses custom tap dance functions that access the tap dance state, you need to update your code.
|
||||
|
||||
* You can't use `action->state`. Instead you need to call `tap_dance_state_t *tap_dance_get_state(uint8_t tap_dance_idx)` to get the state.
|
||||
* You now get a pointer to the state, so use `->` notation rather than `.` notation to get fields from it.
|
||||
|
||||
### Before:
|
||||
```c
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_action_t *action;
|
||||
|
||||
switch (keycode) {
|
||||
case TD(CT_CLN):
|
||||
action = tap_dance_get(QK_TAP_DANCE_GET_INDEX(keycode));
|
||||
if (!record->event.pressed && action->state.count && !action->state.finished) {
|
||||
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
|
||||
tap_code16(tap_hold->tap);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
### After:
|
||||
```c
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_action_t *action;
|
||||
tap_dance_state_t* state;
|
||||
switch (keycode) {
|
||||
case TD(CT_CLN):
|
||||
action = tap_dance_get(QK_TAP_DANCE_GET_INDEX(keycode));
|
||||
state = tap_dance_get_state(QK_TAP_DANCE_GET_INDEX(keycode));
|
||||
if (!record->event.pressed && state != NULL && state->count && !state->finished) {
|
||||
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
|
||||
tap_code16(tap_hold->tap);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
## Deprecation Notices
|
||||
|
||||
In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here.
|
||||
|
||||
### Remove override of QK_{LED,RGB}_MATRIX_TOGGLE keycode [#25672](https://github.com/qmk/qmk_firmware/pull/25672)
|
||||
|
||||
[#24649](https://github.com/qmk/qmk_firmware/pull/24649) implemented genetic behavior, including keycodes, to cycle flags.
|
||||
|
||||
Any overriding of existing keycodes that duplicate this behavior will be removed to ensure consistency with core functionality.
|
||||
|
||||
## Full changelist
|
||||
|
||||
Core:
|
||||
* suspend: suppress wake up keypress ([#23389](https://github.com/qmk/qmk_firmware/pull/23389))
|
||||
* [Feature Improvement]add option to keep layer state when recording dynamic macros ([#24418](https://github.com/qmk/qmk_firmware/pull/24418))
|
||||
* Add generic handling to cycle LED/RGB Matrix flags ([#24649](https://github.com/qmk/qmk_firmware/pull/24649))
|
||||
* Implement `mod_t` packed struct ([#25168](https://github.com/qmk/qmk_firmware/pull/25168))
|
||||
* Implement minimal connection update logic ([#25334](https://github.com/qmk/qmk_firmware/pull/25334))
|
||||
* Reduce tap dance memory usage, move state out of data ([#25415](https://github.com/qmk/qmk_firmware/pull/25415))
|
||||
* Refactor debounce algorithm with static allocation ([#25515](https://github.com/qmk/qmk_firmware/pull/25515))
|
||||
* Restructure Pixel Rain interval code ([#25516](https://github.com/qmk/qmk_firmware/pull/25516))
|
||||
* Guard remapping logic with MAGIC_ENABLE ([#25537](https://github.com/qmk/qmk_firmware/pull/25537))
|
||||
* Update default OLED font ([#25565](https://github.com/qmk/qmk_firmware/pull/25565))
|
||||
* Speculative Hold option for mod-taps: hold mods instantly while unsettled. ([#25572](https://github.com/qmk/qmk_firmware/pull/25572))
|
||||
* Simplify hue calculation in raindrops animation ([#25587](https://github.com/qmk/qmk_firmware/pull/25587))
|
||||
* Simplify tap_code16_delay ([#25595](https://github.com/qmk/qmk_firmware/pull/25595))
|
||||
* Debounce: Deprecate num_rows parameter ([#25632](https://github.com/qmk/qmk_firmware/pull/25632))
|
||||
* Add I2C Transmit and Receive function ([#25637](https://github.com/qmk/qmk_firmware/pull/25637))
|
||||
* [QP] Minor cleanup and support for RGB888 surface ([#25706](https://github.com/qmk/qmk_firmware/pull/25706))
|
||||
* Restrict mouse timer activation to movement keycodes ([#25716](https://github.com/qmk/qmk_firmware/pull/25716))
|
||||
* Update STM32F446 default HSE to 8MHz ([#25717](https://github.com/qmk/qmk_firmware/pull/25717))
|
||||
* making flowtap timer public so it can be used easily with combos ([#25731](https://github.com/qmk/qmk_firmware/pull/25731))
|
||||
* Add PixArt PAW-3222 mouse sensor driver ([#25763](https://github.com/qmk/qmk_firmware/pull/25763))
|
||||
* Merge upstream uf2conv changes ([#25786](https://github.com/qmk/qmk_firmware/pull/25786))
|
||||
* Partially skip generating community modules when none enabled ([#25819](https://github.com/qmk/qmk_firmware/pull/25819))
|
||||
|
||||
CLI:
|
||||
* Generate default encoder resolution for sparse config ([#25247](https://github.com/qmk/qmk_firmware/pull/25247))
|
||||
* Add DIP Switch map support to keymap.json ([#25431](https://github.com/qmk/qmk_firmware/pull/25431))
|
||||
* Add return code to `qmk userspace-doctor` ([#25775](https://github.com/qmk/qmk_firmware/pull/25775))
|
||||
* Better defaulting of `{RGB,LED}_MATRIX_DEFAULT_FLAGS` ([#25785](https://github.com/qmk/qmk_firmware/pull/25785))
|
||||
* add BCD versions of QMK Version ([#25804](https://github.com/qmk/qmk_firmware/pull/25804))
|
||||
* Lint error on missing keyboard readme ([#25814](https://github.com/qmk/qmk_firmware/pull/25814))
|
||||
|
||||
Submodule updates:
|
||||
* Update ChibiOS-Contrib. ([#25751](https://github.com/qmk/qmk_firmware/pull/25751))
|
||||
|
||||
Keyboards:
|
||||
* `atreus`: restore intended matrix implementations ([#24082](https://github.com/qmk/qmk_firmware/pull/24082))
|
||||
* add SteelSeries prime, a stripped down prime+ ([#24719](https://github.com/qmk/qmk_firmware/pull/24719))
|
||||
* Add new macropad Sharkropad ([#24961](https://github.com/qmk/qmk_firmware/pull/24961))
|
||||
* Addition of the D60B tsangan pcb ([#25245](https://github.com/qmk/qmk_firmware/pull/25245))
|
||||
* Migrate `eeconfig_init_kb` implementations to config ([#25422](https://github.com/qmk/qmk_firmware/pull/25422))
|
||||
* Generate `CUSTOM_MATRIX = lite` without `matrix_pins.custom` ([#25453](https://github.com/qmk/qmk_firmware/pull/25453))
|
||||
* Add classic48 keyboard ([#25492](https://github.com/qmk/qmk_firmware/pull/25492))
|
||||
* add durgod venus iso support ([#25526](https://github.com/qmk/qmk_firmware/pull/25526))
|
||||
* Migrate `g_led_config` to DD (0-9, A) ([#25558](https://github.com/qmk/qmk_firmware/pull/25558))
|
||||
* Migrate `g_led_config` to DD (B, C) ([#25559](https://github.com/qmk/qmk_firmware/pull/25559))
|
||||
* Migrate `g_led_config` to DD (D) ([#25560](https://github.com/qmk/qmk_firmware/pull/25560))
|
||||
* Migrate `g_led_config` to DD (E, F) ([#25561](https://github.com/qmk/qmk_firmware/pull/25561))
|
||||
* Remove duplication of RP2040 config defaults ([#25563](https://github.com/qmk/qmk_firmware/pull/25563))
|
||||
* Refactor 40percentclub/ut47 ([#25571](https://github.com/qmk/qmk_firmware/pull/25571))
|
||||
* E7-V2 Implementation ([#25594](https://github.com/qmk/qmk_firmware/pull/25594))
|
||||
* Migrate `g_led_config` to DD (G) ([#25598](https://github.com/qmk/qmk_firmware/pull/25598))
|
||||
* Migrate `g_led_config` to DD (H) ([#25599](https://github.com/qmk/qmk_firmware/pull/25599))
|
||||
* Migrate `g_led_config` to DD (I) ([#25600](https://github.com/qmk/qmk_firmware/pull/25600))
|
||||
* Migrate `g_led_config` to DD (JK1) ([#25601](https://github.com/qmk/qmk_firmware/pull/25601))
|
||||
* Migrate `g_led_config` to DD (K2) ([#25602](https://github.com/qmk/qmk_firmware/pull/25602))
|
||||
* Migrate `g_led_config` to DD (K3) ([#25603](https://github.com/qmk/qmk_firmware/pull/25603))
|
||||
* Migrate `g_led_config` to DD (K4) ([#25605](https://github.com/qmk/qmk_firmware/pull/25605))
|
||||
* Migrate `g_led_config` to DD (K5) ([#25606](https://github.com/qmk/qmk_firmware/pull/25606))
|
||||
* Migrate `g_led_config` to DD (K6) ([#25607](https://github.com/qmk/qmk_firmware/pull/25607))
|
||||
* Refactor `40percentclub/gherkin` ([#25608](https://github.com/qmk/qmk_firmware/pull/25608))
|
||||
* Refactor `0xcb/splaytoraid` ([#25609](https://github.com/qmk/qmk_firmware/pull/25609))
|
||||
* Refactor `1upkeyboards/sweet16v2` ([#25610](https://github.com/qmk/qmk_firmware/pull/25610))
|
||||
* Migrate `g_led_config` to DD (K7) ([#25616](https://github.com/qmk/qmk_firmware/pull/25616))
|
||||
* Migrate `g_led_config` to DD (L) ([#25617](https://github.com/qmk/qmk_firmware/pull/25617))
|
||||
* Migrate `g_led_config` to DD (M1) ([#25618](https://github.com/qmk/qmk_firmware/pull/25618))
|
||||
* Migrate `g_led_config` to DD (M2) ([#25619](https://github.com/qmk/qmk_firmware/pull/25619))
|
||||
* Migrate `g_led_config` to DD (M3) ([#25620](https://github.com/qmk/qmk_firmware/pull/25620))
|
||||
* Migrate `g_led_config` to DD (NO) ([#25621](https://github.com/qmk/qmk_firmware/pull/25621))
|
||||
* Migrate `g_led_config` to DD (P) ([#25622](https://github.com/qmk/qmk_firmware/pull/25622))
|
||||
* Migrate `g_led_config` to DD (QR) ([#25623](https://github.com/qmk/qmk_firmware/pull/25623))
|
||||
* Migrate `g_led_config` to DD (S) ([#25624](https://github.com/qmk/qmk_firmware/pull/25624))
|
||||
* Migrate `g_led_config` to DD (TUW) ([#25625](https://github.com/qmk/qmk_firmware/pull/25625))
|
||||
* Remove idobao *_DISABLE_UNDERGLOW behaviour ([#25638](https://github.com/qmk/qmk_firmware/pull/25638))
|
||||
* Migrate `g_led_config` to DD (YZ) ([#25650](https://github.com/qmk/qmk_firmware/pull/25650))
|
||||
* Tidy Keebio keyboards ([#25653](https://github.com/qmk/qmk_firmware/pull/25653))
|
||||
* Remove encoder resolution where duplicating defaults ([#25654](https://github.com/qmk/qmk_firmware/pull/25654))
|
||||
* Custom oled fonts cleanup ([#25665](https://github.com/qmk/qmk_firmware/pull/25665))
|
||||
* Binepad KnobX1 - refactor `x1_layer_led` function as weak ([#25668](https://github.com/qmk/qmk_firmware/pull/25668))
|
||||
* Add DD {LED,RGB}_MATRIX_DEFAULT_FLAGS support ([#25671](https://github.com/qmk/qmk_firmware/pull/25671))
|
||||
* keyboards: Add Royal Kludge RK61 ([#25694](https://github.com/qmk/qmk_firmware/pull/25694))
|
||||
* Add TRKeyboard TRK2 keyboard ([#25754](https://github.com/qmk/qmk_firmware/pull/25754))
|
||||
|
||||
Keyboard fixes:
|
||||
* Fixup `kprepublic/bm60hsrgb/rev2` ([#25644](https://github.com/qmk/qmk_firmware/pull/25644))
|
||||
* Fixup `kprepublic/bm60hsrgb_iso/rev2` ([#25648](https://github.com/qmk/qmk_firmware/pull/25648))
|
||||
* Fixup `kprepublic/bm60hsrgb_poker/rev2` ([#25649](https://github.com/qmk/qmk_firmware/pull/25649))
|
||||
* Fixup `rgbkb/pan` ([#25678](https://github.com/qmk/qmk_firmware/pull/25678))
|
||||
* Align use of keymap level `_kb` callbacks ([#25774](https://github.com/qmk/qmk_firmware/pull/25774))
|
||||
|
||||
Others:
|
||||
* Rework converter docs ([#18314](https://github.com/qmk/qmk_firmware/pull/18314))
|
||||
* Update USBaspLoader ISP instructions ([#25590](https://github.com/qmk/qmk_firmware/pull/25590))
|
||||
* Add LED/RGB Matrix flags API docs ([#25673](https://github.com/qmk/qmk_firmware/pull/25673))
|
||||
|
||||
Bugs:
|
||||
* Fix single key combos activating only once ([#25198](https://github.com/qmk/qmk_firmware/pull/25198))
|
||||
* Fix RGB matrix not syncing and turning off properly on timeout ([#25467](https://github.com/qmk/qmk_firmware/pull/25467))
|
||||
* Fix drv haptics docs by using the correct function name ([#25733](https://github.com/qmk/qmk_firmware/pull/25733))
|
||||
* Fix Magic GUI masking logic ([#25780](https://github.com/qmk/qmk_firmware/pull/25780))
|
||||
* Fix Speculative Hold to enable also right-handed RSFT, RCTL by default. ([#25797](https://github.com/qmk/qmk_firmware/pull/25797))
|
||||
* Fix community layout keymap discovery ([#25802](https://github.com/qmk/qmk_firmware/pull/25802))
|
||||
* Fix preference of output file for 'qmk generate-autocorrect-data' ([#25818](https://github.com/qmk/qmk_firmware/pull/25818))
|
||||
75
docs/ChangeLog/20260222.md
Normal file
75
docs/ChangeLog/20260222.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# QMK Breaking Changes - 2026 Feb 22 Changelog
|
||||
|
||||
## Deprecation Notices
|
||||
|
||||
### Removal of deprecated GPIO defines ([#26028](https://github.com/qmk/qmk_firmware/pull/26028))
|
||||
|
||||
QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem.
|
||||
|
||||
The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling.
|
||||
|
||||
Previous backwards compatibility has now been removed. see the [GPIO Control](../drivers/gpio#macros) documentation for more information.
|
||||
|
||||
### Removal of deprecated isLeftHand ([25897](https://github.com/qmk/qmk_firmware/pull/25897))
|
||||
|
||||
Users should migrate to `is_keyboard_left()` found in `split_util.h` instead. For example:
|
||||
|
||||
```diff
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
- return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
|
||||
+ return is_keyboard_left() ? OLED_ROTATION_180 : OLED_ROTATION_0;
|
||||
}
|
||||
```
|
||||
|
||||
The deprecated variable `isLeftHand` will be removed in a future breaking changes cycle.
|
||||
|
||||
## Full changelist
|
||||
|
||||
Core:
|
||||
* Refactor Makefile logic for locating keymaps ([#25808](https://github.com/qmk/qmk_firmware/pull/25808))
|
||||
* Move shutdown delay to audio feature ([#25859](https://github.com/qmk/qmk_firmware/pull/25859))
|
||||
* Refactor core use of deprecated `isLeftHand` ([#25888](https://github.com/qmk/qmk_firmware/pull/25888))
|
||||
* Allow custom data sync for community modules ([#25955](https://github.com/qmk/qmk_firmware/pull/25955))
|
||||
* Remove an unreachable break statement ([#26006](https://github.com/qmk/qmk_firmware/pull/26006))
|
||||
* Remove duplicate host.h ([#26007](https://github.com/qmk/qmk_firmware/pull/26007))
|
||||
* Remove redundant EEPROM update ([#26008](https://github.com/qmk/qmk_firmware/pull/26008))
|
||||
* Remove redundant unsigned comparison in apa102_set_brightness ([#26010](https://github.com/qmk/qmk_firmware/pull/26010))
|
||||
* Remove unused headers ([#26011](https://github.com/qmk/qmk_firmware/pull/26011))
|
||||
* Return INVALID_DEFERRED_TOKEN on allocation failure ([#26012](https://github.com/qmk/qmk_firmware/pull/26012))
|
||||
* Remove deprecated GPIO defines ([#26028](https://github.com/qmk/qmk_firmware/pull/26028))
|
||||
|
||||
CLI:
|
||||
* Enforce EOL when formatting files ([#24989](https://github.com/qmk/qmk_firmware/pull/24989))
|
||||
* Allow keymap.json to disable config flags ([#25502](https://github.com/qmk/qmk_firmware/pull/25502))
|
||||
* Remove unused `qmk.keymap.write_file`/`qmk.keymap.write_json` ([#25854](https://github.com/qmk/qmk_firmware/pull/25854))
|
||||
* Include userspace version (QMK_USERSPACE_VERSION) in version.h ([#25882](https://github.com/qmk/qmk_firmware/pull/25882))
|
||||
* Lint out-of-bounds bootmagic config ([#25899](https://github.com/qmk/qmk_firmware/pull/25899))
|
||||
* Report permission issues in `qmk doctor` ([#25931](https://github.com/qmk/qmk_firmware/pull/25931))
|
||||
* Minor alignment of CLI formatting commands ([#25946](https://github.com/qmk/qmk_firmware/pull/25946))
|
||||
* Update lint to validate keymap names ([#25969](https://github.com/qmk/qmk_firmware/pull/25969))
|
||||
* Add 'none of the above' to `new-keyboard` dev board prompt ([#25998](https://github.com/qmk/qmk_firmware/pull/25998))
|
||||
* Remove `config_h_features` from generated `info.json` ([#26024](https://github.com/qmk/qmk_firmware/pull/26024))
|
||||
* Promote duplication of defaults check to error ([#26025](https://github.com/qmk/qmk_firmware/pull/26025))
|
||||
|
||||
Keyboards:
|
||||
* Add Soldered Macro Pad ([#25834](https://github.com/qmk/qmk_firmware/pull/25834))
|
||||
* Remove redundant URLs from `.json` ([#25856](https://github.com/qmk/qmk_firmware/pull/25856))
|
||||
* Guard encoder behaviour on `projectcain/vault*` ([#25864](https://github.com/qmk/qmk_firmware/pull/25864))
|
||||
* Refactor keyboard/keymap use of deprecated `isLeftHand` ([#25891](https://github.com/qmk/qmk_firmware/pull/25891))
|
||||
* Remove some unnecessary matrix externs ([#25975](https://github.com/qmk/qmk_firmware/pull/25975))
|
||||
* Migrate ROW_SHIFTER to core MATRIX_ROW_SHIFTER ([#25977](https://github.com/qmk/qmk_firmware/pull/25977))
|
||||
|
||||
Keyboard fixes:
|
||||
* Fix out-of-bounds bootmagic config ([#25898](https://github.com/qmk/qmk_firmware/pull/25898))
|
||||
* Fix incorrect `matrix_scan_custom` implementations ([#25999](https://github.com/qmk/qmk_firmware/pull/25999))
|
||||
|
||||
Others:
|
||||
* Add missing labels to DD keycode definitions ([#25503](https://github.com/qmk/qmk_firmware/pull/25503))
|
||||
* Copilot instructions for pull requests ([#25857](https://github.com/qmk/qmk_firmware/pull/25857))
|
||||
|
||||
Bugs:
|
||||
* Fix flash wear leveling sector calculation ([#24776](https://github.com/qmk/qmk_firmware/pull/24776))
|
||||
* [Bugfix] WS2812 indexing in split boards ([#25407](https://github.com/qmk/qmk_firmware/pull/25407))
|
||||
* Correctly resolve keyboard alias during 'qmk new-keymap' ([#25570](https://github.com/qmk/qmk_firmware/pull/25570))
|
||||
* Fixes for is31fl3729 LED matrix driver off-by-one errors ([#25902](https://github.com/qmk/qmk_firmware/pull/25902))
|
||||
* Match Key override index type to bounds type to prevent overflow ([#25939](https://github.com/qmk/qmk_firmware/pull/25939))
|
||||
@@ -21,8 +21,14 @@
|
||||
{ "text": "Debugging QMK", "link": "/faq_debug" },
|
||||
{ "text": "Keymap FAQ", "link": "/faq_keymap" },
|
||||
{ "text": "Squeezing Space from AVR", "link": "/squeezing_avr" },
|
||||
{ "text": "Glossary", "link": "/reference_glossary" },
|
||||
{ "text": "License Violations", "link": "/license_violations" }
|
||||
{ "text": "Glossary", "link": "/reference_glossary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Licensing",
|
||||
"items": [
|
||||
{ "text": "License Violations", "link": "/license_violations" },
|
||||
{ "text": "Proprietary Libraries", "link": "/proprietary_libs" }
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -169,6 +175,7 @@
|
||||
]
|
||||
},
|
||||
{ "text": "Audio", "link": "/features/audio" },
|
||||
{ "text": "Battery", "link": "/features/battery" },
|
||||
{ "text": "Bootmagic", "link": "/features/bootmagic" },
|
||||
{ "text": "Converters", "link": "/feature_converters" },
|
||||
{ "text": "Custom Matrix", "link": "/custom_matrix" },
|
||||
@@ -207,7 +214,7 @@
|
||||
{ "text": "My Pull Request Was Flagged", "link": "/breaking_changes_instructions" },
|
||||
{
|
||||
"text": "Most Recent ChangeLog",
|
||||
"link": "/ChangeLog/20250525"
|
||||
"link": "/ChangeLog/20260222"
|
||||
},
|
||||
{ "text": "Past Breaking Changes", "link": "/breaking_changes_history" },
|
||||
{ "text": "Deprecation Policy", "link": "/support_deprecation_policy" }
|
||||
|
||||
@@ -10,25 +10,25 @@ Practically, this means QMK merges the `develop` branch into the `master` branch
|
||||
|
||||
## What has been included in past Breaking Changes?
|
||||
|
||||
* [2025 May 25](ChangeLog/20250525)
|
||||
* [2025 Feb 23](ChangeLog/20250223)
|
||||
* [2024 Nov 24](ChangeLog/20241124)
|
||||
* [2026 Feb 22](ChangeLog/20260222)
|
||||
* [2025 Nov 30](ChangeLog/20251130)
|
||||
* [2025 Aug 31](ChangeLog/20250831)
|
||||
* [Older Breaking Changes](breaking_changes_history)
|
||||
|
||||
## When is the next Breaking Change?
|
||||
|
||||
The next Breaking Change is scheduled for Aug 31, 2025.
|
||||
The next Breaking Change is scheduled for May 31, 2026.
|
||||
|
||||
### Important Dates
|
||||
|
||||
* 2025 May 25 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
|
||||
* 2025 Aug 3 - `develop` closed to new PRs.
|
||||
* 2025 Aug 3 - Call for testers.
|
||||
* 2025 Aug 17 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
|
||||
* 2025 Aug 24 - `develop` is locked, only critical bugfix PRs merged.
|
||||
* 2025 Aug 29 - `master` is locked, no PRs merged.
|
||||
* 2025 Aug 31 - Merge `develop` to `master`.
|
||||
* 2025 Aug 31 - `master` is unlocked. PRs can be merged again.
|
||||
* 2025 Feb 22 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
|
||||
* 2026 May 3 - `develop` closed to new PRs.
|
||||
* 2026 May 3 - Call for testers.
|
||||
* 2026 May 17 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
|
||||
* 2026 May 24 - `develop` is locked, only critical bugfix PRs merged.
|
||||
* 2026 May 29 - `master` is locked, no PRs merged.
|
||||
* 2026 May 31 - Merge `develop` to `master`.
|
||||
* 2026 May 31 - `master` is unlocked. PRs can be merged again.
|
||||
|
||||
## What changes will be included?
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
This page links to all previous changelogs from the QMK Breaking Changes process.
|
||||
|
||||
* [2026 Feb 22](ChangeLog/20260222) - version 0.32.0
|
||||
* [2025 Nov 30](ChangeLog/20251130) - version 0.31.0
|
||||
* [2025 Aug 31](ChangeLog/20250831) - version 0.30.0
|
||||
* [2025 May 25](ChangeLog/20250525) - version 0.29.0
|
||||
* [2025 Feb 23](ChangeLog/20250223) - version 0.28.0
|
||||
* [2024 Nov 24](ChangeLog/20241124) - version 0.27.0
|
||||
|
||||
41
docs/cli.md
41
docs/cli.md
@@ -4,47 +4,18 @@
|
||||
|
||||
The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.
|
||||
|
||||
### Requirements {#requirements}
|
||||
### Installation {#installation}
|
||||
|
||||
QMK requires Python 3.9 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
|
||||
|
||||
### Install Using Homebrew (macOS, some Linux) {#install-using-homebrew}
|
||||
|
||||
If you have installed [Homebrew](https://brew.sh) you can tap and install QMK:
|
||||
The recommended way to install the QMK CLI and all necessary dependencies (toolchains, flashing utilities, udev rules on Linux) is to use the bootstrapper script:
|
||||
|
||||
```
|
||||
brew install qmk/qmk/qmk
|
||||
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
|
||||
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
|
||||
curl -fsSL https://install.qmk.fm | sh
|
||||
```
|
||||
|
||||
### Install Using uv {#install-using-uv}
|
||||
|
||||
If you have installed [uv](https://docs.astral.sh/uv/), the QMK CLI can be installed and managed as a uv tool:
|
||||
For more options, run:
|
||||
|
||||
```
|
||||
uv tool install qmk
|
||||
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
|
||||
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
|
||||
curl -fsSL https://install.qmk.fm | sh -s -- --help
|
||||
```
|
||||
|
||||
This installation can be updated via `uv tool upgrade qmk`. See [Upgrading tools](https://docs.astral.sh/uv/guides/tools/#upgrading-tools) for more information.
|
||||
|
||||
### Install Using pip {#install-using-easy_install-or-pip}
|
||||
|
||||
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.9 (or later) installed and have installed pip. Then install QMK with this command:
|
||||
|
||||
```
|
||||
python3 -m pip install qmk
|
||||
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
|
||||
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
|
||||
```
|
||||
|
||||
### Packaging For Other Operating Systems {#packaging-for-other-operating-systems}
|
||||
|
||||
We are looking for people to create and maintain a `qmk` package for more operating systems. If you would like to create a package for your OS please follow these guidelines:
|
||||
|
||||
* Follow best practices for your OS when they conflict with these guidelines
|
||||
* Document why in a comment when you do deviate
|
||||
* Install using a virtualenv
|
||||
* Instruct the user to set the environment variable `QMK_HOME` to have the firmware source checked out somewhere other than `~/qmk_firmware`.
|
||||
For detailed setup instructions, see [Setting Up Your QMK Environment](newbs_getting_started#set-up-your-environment).
|
||||
|
||||
@@ -17,12 +17,12 @@ qmk compile [-c] <configuratorExport.json>
|
||||
**Usage for Keymaps**:
|
||||
|
||||
```
|
||||
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] [--compiledb] -kb <keyboard_name> -km <keymap_name>
|
||||
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] [--compiledb] -kb <keyboard> -km <keymap>
|
||||
```
|
||||
|
||||
**Usage in Keyboard Directory**:
|
||||
|
||||
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap_name>`
|
||||
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap>`
|
||||
```
|
||||
qmk compile
|
||||
```
|
||||
@@ -30,7 +30,7 @@ qmk compile
|
||||
**Usage for building all keyboards that support a specific keymap**:
|
||||
|
||||
```
|
||||
qmk compile -kb all -km <keymap_name>
|
||||
qmk compile -kb all -km <keymap>
|
||||
```
|
||||
|
||||
**Example**:
|
||||
@@ -62,7 +62,7 @@ $ qmk compile
|
||||
|
||||
Must be under `qmk_firmware/layouts/`, and in a keymap folder.
|
||||
```
|
||||
qmk compile -kb <keyboard_name>
|
||||
qmk compile -kb <keyboard>
|
||||
```
|
||||
|
||||
**Example**:
|
||||
@@ -77,11 +77,11 @@ $ qmk compile -kb dz60
|
||||
|
||||
It is possible to speed up compilation by adding the `-j`/`--parallel` flag.
|
||||
```
|
||||
qmk compile -j <num_jobs> -kb <keyboard_name>
|
||||
qmk compile -j <num_jobs> -kb <keyboard>
|
||||
```
|
||||
The `num_jobs` argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs.
|
||||
```
|
||||
qmk compile -j 0 -kb <keyboard_name>
|
||||
qmk compile -j 0 -kb <keyboard>
|
||||
```
|
||||
|
||||
**Compilation Database**:
|
||||
@@ -120,7 +120,7 @@ qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configurat
|
||||
**Usage for Keymaps**:
|
||||
|
||||
```
|
||||
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
|
||||
qmk flash -kb <keyboard> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
|
||||
```
|
||||
|
||||
**Usage for pre-compiled firmwares**:
|
||||
@@ -631,14 +631,15 @@ This command compiles all the External Userspace build targets.
|
||||
**Usage**:
|
||||
|
||||
```
|
||||
qmk userspace-compile [-h] [-e ENV] [-n] [-c] [-j PARALLEL] [-t]
|
||||
qmk userspace-compile [-h] [-e ENV] [-p] [-n] [-c] [-j PARALLEL] [-t]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times.
|
||||
-e, --env ENV Set a variable to be passed to make. May be passed multiple times.
|
||||
-p, --print-failures Print failed builds.
|
||||
-n, --dry-run Don't actually build, just show the commands to be run.
|
||||
-c, --clean Remove object files before compiling.
|
||||
-j PARALLEL, --parallel PARALLEL
|
||||
-j, --parallel PARALLEL
|
||||
Set the number of parallel make jobs; 0 means unlimited.
|
||||
-t, --no-temp Remove temporary files during build.
|
||||
```
|
||||
|
||||
@@ -12,11 +12,11 @@ If you intend to maintain keyboards and/or contribute to QMK, you can enable the
|
||||
|
||||
`qmk config user.developer=True`
|
||||
|
||||
This will allow you to see all available subcommands.
|
||||
**Note:** You will have to install additional requirements:
|
||||
```
|
||||
python3 -m pip install -r requirements-dev.txt
|
||||
```
|
||||
This will allow you to see all available subcommands.
|
||||
|
||||
::: tip
|
||||
If you installed QMK using the bootstrapper (`curl -fsSL https://install.qmk.fm | sh`), the development requirements are already installed.
|
||||
:::
|
||||
|
||||
# Subcommands
|
||||
|
||||
|
||||
@@ -364,8 +364,6 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
|
||||
|
||||
## Build Options
|
||||
|
||||
* `DEFAULT_FOLDER`
|
||||
* Used to specify a default folder when a keyboard has more than one sub-folder.
|
||||
* `FIRMWARE_FORMAT`
|
||||
* Defines which format (bin, hex) is copied to the root `qmk_firmware` folder after building.
|
||||
* `SRC`
|
||||
|
||||
@@ -74,7 +74,7 @@ void matrix_init(void) {
|
||||
// TODO: initialize hardware and global matrix state here
|
||||
|
||||
// Unless hardware debouncing - Init the configured debounce routine
|
||||
debounce_init(MATRIX_ROWS);
|
||||
debounce_init();
|
||||
|
||||
// This *must* be called for correct keyboard behavior
|
||||
matrix_init_kb();
|
||||
@@ -86,7 +86,7 @@ uint8_t matrix_scan(void) {
|
||||
// TODO: add matrix scanning routine here
|
||||
|
||||
// Unless hardware debouncing - use the configured debounce routine
|
||||
changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
|
||||
changed = debounce(raw_matrix, matrix, changed);
|
||||
|
||||
// This *must* be called for correct keyboard behavior
|
||||
matrix_scan_kb();
|
||||
|
||||
@@ -145,7 +145,7 @@ void keyboard_pre_init_user(void) {
|
||||
|
||||
This is called when the matrix is initialized, and after some of the hardware has been set up, but before many of the features have been initialized.
|
||||
|
||||
This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependant on where it's started.
|
||||
This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependent on where it's started.
|
||||
|
||||
|
||||
### `matrix_init_*` Function Documentation
|
||||
@@ -209,7 +209,7 @@ You should use this function if you need custom matrix scanning code. It can als
|
||||
|
||||
This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn.
|
||||
|
||||
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
|
||||
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throttling their behaviour if you do indeed require implementing something special.
|
||||
|
||||
### Example `void housekeeping_task_user(void)` implementation
|
||||
|
||||
@@ -246,7 +246,7 @@ void check_rgb_timeout(void) {
|
||||
}
|
||||
}
|
||||
/* Then, call the above functions from QMK's built in post processing functions like so */
|
||||
/* Runs at the end of each scan loop, check if RGB timeout has occured or not */
|
||||
/* Runs at the end of each scan loop, check if RGB timeout has occurred or not */
|
||||
void housekeeping_task_user(void) {
|
||||
#ifdef RGBLIGHT_TIMEOUT
|
||||
check_rgb_timeout();
|
||||
@@ -316,7 +316,7 @@ bool shutdown_kb(bool jump_to_bootloader) {
|
||||
if (!shutdown_user(jump_to_bootloader)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (jump_to_bootloader) {
|
||||
// red for bootloader
|
||||
rgb_matrix_set_color_all(RGB_OFF);
|
||||
|
||||
@@ -6,7 +6,7 @@ This page describes how QMK's data driven JSON configuration system works. It is
|
||||
|
||||
Historically QMK has been configured through a combination of two mechanisms- `rules.mk` and `config.h`. While this worked well when QMK was only a handful of keyboards we've grown to encompass nearly 4000 supported keyboards. That extrapolates out to 6000 configuration files under `keyboards/` alone! The freeform nature of these files and the unique patterns people have used to avoid duplication have made ongoing maintenance a challenge, and a large number of our keyboards follow patterns that are outdated and sometimes harder to understand.
|
||||
|
||||
We have also been working on bringing the power of QMK to people who aren't comformable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced `info.json` as a first step towards this. The QMK API is an effort to combine these 3 sources of information- `config.h`, `rules.mk`, and `info.json`- into a single source of truth that end-user tools can use.
|
||||
We have also been working on bringing the power of QMK to people who aren't comfortable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced `info.json` as a first step towards this. The QMK API is an effort to combine these 3 sources of information- `config.h`, `rules.mk`, and `info.json`- into a single source of truth that end-user tools can use.
|
||||
|
||||
Now we have support for generating `rules.mk` and `config.h` values from `info.json`, allowing us to have a single source of truth. This will allow us to use automated tooling to maintain keyboards saving a lot of time and maintenance work.
|
||||
|
||||
|
||||
@@ -14,6 +14,10 @@ Example:
|
||||
This page covers my super cool feature. You can use this feature to make coffee, squeeze fresh oj, and have an egg mcmuffin and hashbrowns delivered from your local macca's by drone.
|
||||
```
|
||||
|
||||
# Paragraphs
|
||||
|
||||
Do not use hard line breaks within the raw Markdown for each paragraph. These are optional in Markdown, and have no effect on the rendered output. This means each raw paragraph will be a single long line in your editor (best viewed with line wrapping enabled).
|
||||
|
||||
# Headings
|
||||
|
||||
Your page should generally have multiple "H1" headings. Only H1 and H2 headings will included in the Table of Contents, so plan them out appropriately. Excess width should be avoided in H1 and H2 headings to prevent the Table of Contents from getting too wide.
|
||||
|
||||
@@ -4,7 +4,7 @@ QMK presents itself to the host as a regular HID keyboard device, and as such re
|
||||
|
||||
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
|
||||
|
||||
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with MSYS2, the `qmk_install.sh` script will have already installed the drivers for you.
|
||||
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with MSYS2, the QMK CLI installation script will have already installed the drivers for you.
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -22,7 +22,7 @@ If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is pr
|
||||
|
||||
If the arrow appears green, select the driver, and click **Install Driver**. See the [list of known bootloaders](#list-of-known-bootloaders) for the correct driver to install.
|
||||
|
||||

|
||||

|
||||
|
||||
Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change.
|
||||
|
||||
@@ -30,15 +30,15 @@ Finally, unplug and replug the keyboard to make sure the new driver has been loa
|
||||
|
||||
If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the `HidUsb` driver installed on all of its interfaces:
|
||||
|
||||

|
||||

|
||||
|
||||
Open the Device Manager, select **View → Devices by container**, and look for an entry with your keyboard's name.
|
||||
|
||||

|
||||

|
||||
|
||||
Right-click each entry and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first if it appears.
|
||||
|
||||

|
||||

|
||||
|
||||
Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver.
|
||||
|
||||
@@ -54,11 +54,11 @@ Open the Device Manager, select **View → Devices by container**, and look for
|
||||
|
||||
Find the `Inf name` value in the Details tab of the device properties. This should generally be something like `oemXX.inf`:
|
||||
|
||||

|
||||

|
||||
|
||||
Then, open a new Command Prompt window as an Administrator (type in `cmd` into the Start menu and press Ctrl+Shift+Enter). Run `pnputil /enum-drivers` to verify the `Inf name` matches the `Published Name` field of one of the entries:
|
||||
|
||||

|
||||

|
||||
|
||||
Run `pnputil /delete-driver oemXX.inf /uninstall`. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
SPI 18x12 LED matrix driver by Awinic. Supports a maximum of four drivers, each controlling up to 216 single-color LEDs, or 72 RGB LEDs.
|
||||
|
||||
[AW20216S Datasheet](https://doc.awinic.com/doc/20230609wm/b6a9c70b-e1bd-495b-925f-bcbed3fc2620.pdf)
|
||||
[AW20216S Datasheet](https://doc.awinic.com/doc/202412/a055779b-49c0-4d09-8f04-73029f44b72b.pdf)
|
||||
|
||||
## Usage {#usage}
|
||||
|
||||
@@ -44,7 +44,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Battery Driver
|
||||
|
||||
This driver provides support for sampling battery level.
|
||||
This driver provides support for directly sampling battery level.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -10,21 +10,17 @@ To use this driver, add the following to your `rules.mk`:
|
||||
BATTERY_DRIVER_REQUIRED = yes
|
||||
```
|
||||
|
||||
## Basic Configuration {#basic-configuration}
|
||||
|
||||
Add the following to your `config.h`:
|
||||
|
||||
|Define |Default |Description |
|
||||
|--------------------------|--------|--------------------------------------------------|
|
||||
|`BATTERY_SAMPLE_INTERVAL` |`30000` |The time between battery samples in milliseconds. |
|
||||
::::info Note
|
||||
This is already configured for you if you are using the [Battery](../features/battery) feature.
|
||||
::::
|
||||
|
||||
## Driver Configuration {#driver-configuration}
|
||||
|
||||
Driver selection can be configured in `rules.mk` as `BATTERY_DRIVER`. Valid values are `adc` (default), `vendor`, or `custom`. See below for information on individual drivers.
|
||||
Driver selection can be configured in `rules.mk` as `BATTERY_DRIVER`. Valid values are `adc`, `vendor`, or `custom`. See below for information on individual drivers.
|
||||
|
||||
### ADC Driver {#adc-driver}
|
||||
|
||||
This is the default battery driver. The default configuration assumes the battery is connected to a ADC capable pin through a voltage divider.
|
||||
The default configuration assumes the battery is connected to a ADC capable pin through a voltage divider.
|
||||
|
||||
```make
|
||||
BATTERY_DRIVER = adc
|
||||
@@ -32,42 +28,25 @@ BATTERY_DRIVER = adc
|
||||
|
||||
The following `#define`s apply only to the `adc` driver:
|
||||
|
||||
|Define |Default |Description |
|
||||
|-----------------------------|--------------|--------------------------------------------------------------|
|
||||
|`BATTERY_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. |
|
||||
|`BATTERY_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. |
|
||||
|Define |Default |Description |
|
||||
|---------------------------------|--------------|--------------------------------------------------------------|
|
||||
|`BATTERY_ADC_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. |
|
||||
|`BATTERY_ADC_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. |
|
||||
|`BATTERY_ADC_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_ADC_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. |
|
||||
|
||||
## Functions
|
||||
### Custom Driver {#custom-driver}
|
||||
|
||||
### `uint8_t battery_get_percent(void)` {#api-battery-get-percent}
|
||||
A custom driver is expected to implement the following interface:
|
||||
|
||||
Sample battery level.
|
||||
```c
|
||||
void battery_driver_init(void) {
|
||||
// Perform any initialisation here
|
||||
}
|
||||
|
||||
#### Return Value {#api-battery-get-percent-return}
|
||||
|
||||
The battery percentage, in the range 0-100.
|
||||
|
||||
## Callbacks
|
||||
|
||||
### `void battery_percent_changed_user(uint8_t level)` {#api-battery-percent-changed-user}
|
||||
|
||||
User hook called when battery level changed.
|
||||
|
||||
### Arguments {#api-battery-percent-changed-user-arguments}
|
||||
|
||||
- `uint8_t level`
|
||||
The battery percentage, in the range 0-100.
|
||||
|
||||
---
|
||||
|
||||
### `void battery_percent_changed_kb(uint8_t level)` {#api-battery-percent-changed-kb}
|
||||
|
||||
Keyboard hook called when battery level changed.
|
||||
|
||||
### Arguments {#api-battery-percent-changed-kb-arguments}
|
||||
|
||||
- `uint8_t level`
|
||||
The battery percentage, in the range 0-100.
|
||||
uint8_t battery_driver_sample_percent(void) {
|
||||
// Read and return current state here
|
||||
return value;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -221,6 +221,31 @@ Receive multiple bytes from the selected I2C device.
|
||||
|
||||
---
|
||||
|
||||
### `i2c_status_t i2c_transmit_and_receive(uint8_t address, const uint8_t* tx_data, uint16_t tx_length, uint8_t* rx_data, uint16_t rx_length, uint16_t timeout)` {#api-i2c-transmit-and-receive}
|
||||
|
||||
Send and receive multiple bytes from the selected I2C device.
|
||||
|
||||
#### Arguments {#api-i2c-transmit-and-receive-arguments}
|
||||
|
||||
- `uint8_t address`
|
||||
The 7-bit I2C address of the device.
|
||||
- `const uint8_t* tx_data`
|
||||
A pointer to the data to transmit.
|
||||
- `uint16_t tx_length`
|
||||
The number of bytes to write. Take care not to overrun the length of `tx_data`.
|
||||
- `uint8_t* rx_data`
|
||||
A pointer to a buffer to read into.
|
||||
- `uint16_t rx_length`
|
||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
#### Return Value {#api-i2c-transmit-and-receive-return}
|
||||
|
||||
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
|
||||
---
|
||||
|
||||
### `i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-write-register}
|
||||
|
||||
Write to a register with an 8-bit address on the I2C device.
|
||||
|
||||
@@ -37,7 +37,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {
|
||||
|
||||
@@ -50,7 +50,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {
|
||||
|
||||
@@ -120,7 +120,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {
|
||||
|
||||
@@ -61,7 +61,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
|
||||
|
||||
@@ -145,7 +145,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
|
||||
|
||||
@@ -129,7 +129,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
|
||||
|
||||
@@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
|
||||
|
||||
@@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
|
||||
|
||||
@@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {
|
||||
|
||||
@@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
|
||||
|
||||
@@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {
|
||||
|
||||
@@ -132,7 +132,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {
|
||||
|
||||
@@ -33,7 +33,7 @@ On ARM platforms the bitbang driver causes connection issues when using it toget
|
||||
+-------+ +-------+
|
||||
```
|
||||
|
||||
One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function.
|
||||
One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function.
|
||||
|
||||
### Setup
|
||||
|
||||
@@ -63,12 +63,12 @@ SERIAL_DRIVER = bitbang
|
||||
|
||||
## USART Half-duplex
|
||||
|
||||
Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or imcompatible PCB design).
|
||||
Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or incompatible PCB design).
|
||||
|
||||
### Pin configuration
|
||||
|
||||
```
|
||||
LEFT RIGHT
|
||||
LEFT RIGHT
|
||||
+-------+ | | +-------+
|
||||
| | R R | |
|
||||
| | | SERIAL | | |
|
||||
@@ -80,7 +80,7 @@ Targeting ARM boards based on ChibiOS, where communication is offloaded to a USA
|
||||
+-------+ +-------+
|
||||
```
|
||||
|
||||
Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work.
|
||||
Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work.
|
||||
|
||||
::: warning
|
||||
***Note:*** A pull-up resistor isn't required for RP2040 controllers configured with PIO subsystem.
|
||||
@@ -278,7 +278,7 @@ There are several advanced configuration options that can be defined in your key
|
||||
|
||||
### Baudrate
|
||||
|
||||
If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
|
||||
If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
|
||||
|
||||
```c
|
||||
#define SELECT_SOFT_SERIAL_SPEED n
|
||||
@@ -307,19 +307,19 @@ This is the default time window in milliseconds in which a successful communicat
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file:
|
||||
If you're having issues with serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file:
|
||||
|
||||
```c
|
||||
#define SERIAL_DEBUG
|
||||
```
|
||||
|
||||
|
||||
::: tip
|
||||
The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](../faq_debug).
|
||||
:::
|
||||
|
||||
## Alternate Functions for selected STM32 MCUs
|
||||
|
||||
Pins for USART Peripherals with
|
||||
Pins for USART Peripherals with
|
||||
|
||||
### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user