mirror of
https://github.com/libratbag/libratbag.git
synced 2026-11-07 23:23:52 +01:00
Compare commits
1191 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42787ee422 | ||
|
|
611dd9be0d | ||
|
|
fd20f9e642 | ||
|
|
9be5576967 | ||
|
|
9fe511fcc5 | ||
|
|
f0b69aab19 | ||
|
|
7610b80ced | ||
|
|
f0a05bb522 | ||
|
|
2669cc28b2 | ||
|
|
302702d94a | ||
|
|
e1136c4d30 | ||
|
|
0012853a1d | ||
|
|
afb85f868c | ||
|
|
b76fcdadde | ||
|
|
ba7c092ee2 | ||
|
|
3483bd8c14 | ||
|
|
0fb0eb3d42 | ||
|
|
5fb1f4429d | ||
|
|
5f5e294598 | ||
|
|
b4218737cd | ||
|
|
3875bb70fd | ||
|
|
e9d67b7235 | ||
|
|
8a476a8724 | ||
|
|
d67cbec5f8 | ||
|
|
f82c6f72b6 | ||
|
|
af30fc28cd | ||
|
|
3fb8a51456 | ||
|
|
ceaa3c3ad5 | ||
|
|
551b918ba8 | ||
|
|
3105428ba1 | ||
|
|
b3f2406180 | ||
|
|
902160f430 | ||
|
|
fd6d0b6198 | ||
|
|
5ed98fdb22 | ||
|
|
e0e73c2971 | ||
|
|
0d3b4f1b64 | ||
|
|
20b6e3deeb | ||
|
|
ffcdee912d | ||
|
|
5357d4cbc2 | ||
|
|
26c534cc74 | ||
|
|
904c7988bb | ||
|
|
7d255a2f93 | ||
|
|
d0a5cb1f0e | ||
|
|
71b1d66287 | ||
|
|
32ebbca42f | ||
|
|
a0afbfeb3f | ||
|
|
9dfd4fd03a | ||
|
|
b0ea75979a | ||
|
|
a5c1ca202e | ||
|
|
8d40ad6c0c | ||
|
|
72d11de597 | ||
|
|
47cc5fce92 | ||
|
|
5da791b268 | ||
|
|
e63802b01a | ||
|
|
cd89b123ce | ||
|
|
f6546b3222 | ||
|
|
cd8ddc8444 | ||
|
|
cdb3226ef1 | ||
|
|
ce377fc36c | ||
|
|
fe1308fe38 | ||
|
|
983d3e2a88 | ||
|
|
3a3d9e1148 | ||
|
|
afbba26feb | ||
|
|
8cc37047fb | ||
|
|
c8f56cc535 | ||
|
|
b6936ddd3b | ||
|
|
d4d9712316 | ||
|
|
2353af214b | ||
|
|
a4d19efb93 | ||
|
|
cb0b458824 | ||
|
|
48c476b28c | ||
|
|
d6c3bf881d | ||
|
|
1b000e627a | ||
|
|
75bcf39114 | ||
|
|
33ced3dfb7 | ||
|
|
906f17add2 | ||
|
|
016de548fc | ||
|
|
665c022382 | ||
|
|
81c7b42bec | ||
|
|
edb054c6f8 | ||
|
|
8ae995b72d | ||
|
|
a941b75ef2 | ||
|
|
8cb85da6be | ||
|
|
7ff59a636f | ||
|
|
6cd050f541 | ||
|
|
ab3f1df06e | ||
|
|
caa31e17cf | ||
|
|
b7e6103496 | ||
|
|
b1b6a2761e | ||
|
|
11f4f32947 | ||
|
|
4f5d0dffec | ||
|
|
d213bdb86e | ||
|
|
e69e1de17b | ||
|
|
cad05ffced | ||
|
|
196d53e65f | ||
|
|
c606b1abe3 | ||
|
|
b4009669b9 | ||
|
|
d458305f93 | ||
|
|
9c11960665 | ||
|
|
e8fc8b45d1 | ||
|
|
e64a121572 | ||
|
|
607e47953c | ||
|
|
a5816055dc | ||
|
|
62ac0772f5 | ||
|
|
fc9e63a5aa | ||
|
|
936a8f7a92 | ||
|
|
818e665853 | ||
|
|
3a3b11ade4 | ||
|
|
3bc31edd72 | ||
|
|
485df20a83 | ||
|
|
49291c4b45 | ||
|
|
02ec2442d3 | ||
|
|
a8b4d9c6f3 | ||
|
|
22a6ac1c7e | ||
|
|
42c302c860 | ||
|
|
e2b1581aef | ||
|
|
10a3e87980 | ||
|
|
2d465a63e1 | ||
|
|
c2315323f4 | ||
|
|
05d7e9b324 | ||
|
|
71a399f20f | ||
|
|
8259c2e706 | ||
|
|
89980a4a72 | ||
|
|
79e94b4a7e | ||
|
|
122f05c272 | ||
|
|
b06ac1035e | ||
|
|
647fe432b2 | ||
|
|
4e2e9f037b | ||
|
|
f92fee0b15 | ||
|
|
d7c394f379 | ||
|
|
7fec19f8f2 | ||
|
|
11c1e2d71a | ||
|
|
e2cbaf9dea | ||
|
|
bf9d86e228 | ||
|
|
f24a3bd441 | ||
|
|
df5742ebfe | ||
|
|
0c569e0bf7 | ||
|
|
5ea1731f38 | ||
|
|
572064aba8 | ||
|
|
da2764e78d | ||
|
|
4e56afae22 | ||
|
|
d46251900c | ||
|
|
43def1b3a5 | ||
|
|
247ff7695d | ||
|
|
7a14026f2d | ||
|
|
55925db29e | ||
|
|
87d4aed3ad | ||
|
|
7de944aaa0 | ||
|
|
488774d3ba | ||
|
|
0673af2991 | ||
|
|
0e84b63921 | ||
|
|
6e34f314f8 | ||
|
|
e3268f2ce6 | ||
|
|
47623654d0 | ||
|
|
94423769b9 | ||
|
|
4efe8f4830 | ||
|
|
ac06e7d0c8 | ||
|
|
f534cb55b0 | ||
|
|
bb3f386cca | ||
|
|
6393338d0f | ||
|
|
b225e4bd80 | ||
|
|
635257d6b8 | ||
|
|
b31a8c5355 | ||
|
|
412f3fef87 | ||
|
|
8f88573a08 | ||
|
|
c1265bc98a | ||
|
|
723d394c02 | ||
|
|
808f423600 | ||
|
|
ae9c639a74 | ||
|
|
932cbf0a5c | ||
|
|
486842b6cb | ||
|
|
2ae8233eeb | ||
|
|
cdd70105b5 | ||
|
|
6babb7b307 | ||
|
|
26843861c0 | ||
|
|
2eed8dbb92 | ||
|
|
a13ee32c61 | ||
|
|
dbe98ed5b9 | ||
|
|
c425780220 | ||
|
|
1e9839cb67 | ||
|
|
bbeaef749e | ||
|
|
240231b065 | ||
|
|
6f27053ab0 | ||
|
|
fc16a8dc7c | ||
|
|
6256e9046f | ||
|
|
563550c473 | ||
|
|
a04f2d1c24 | ||
|
|
d86933d746 | ||
|
|
55f7d75567 | ||
|
|
6ee1c0a591 | ||
|
|
94d32930e2 | ||
|
|
2b2d8e8980 | ||
|
|
10305a123c | ||
|
|
11db35edba | ||
|
|
836922b133 | ||
|
|
4d00a815a4 | ||
|
|
0e28d82a16 | ||
|
|
336440cddb | ||
|
|
b2a3d39122 | ||
|
|
4b7b9d2e48 | ||
|
|
57097ceddb | ||
|
|
c7ce1a96a7 | ||
|
|
daf9580ca5 | ||
|
|
396b8bee87 | ||
|
|
c8c1c63531 | ||
|
|
704710814e | ||
|
|
f497dab1d8 | ||
|
|
67ee0fab14 | ||
|
|
d17868303e | ||
|
|
6d05b7df67 | ||
|
|
30c482aab2 | ||
|
|
bf127d4c68 | ||
|
|
9f9f6294c3 | ||
|
|
3bba3d9bcb | ||
|
|
6b65ed2198 | ||
|
|
8e9dd6f392 | ||
|
|
f3df391d71 | ||
|
|
16daac7311 | ||
|
|
653b834e01 | ||
|
|
8c32036e03 | ||
|
|
ba10000feb | ||
|
|
f07007b6e6 | ||
|
|
a002a58a5e | ||
|
|
57ca3086ae | ||
|
|
a46c30253d | ||
|
|
391a0e923e | ||
|
|
cac289119d | ||
|
|
2607114709 | ||
|
|
d171f953c7 | ||
|
|
734977f176 | ||
|
|
10a1cc9bbc | ||
|
|
367aa29dfe | ||
|
|
79711dfdad | ||
|
|
32a5ad377e | ||
|
|
5328c20a58 | ||
|
|
014212bbd9 | ||
|
|
3fcf13b58e | ||
|
|
55fd6c7a71 | ||
|
|
d6bbc33dda | ||
|
|
d24ea1e662 | ||
|
|
e4d4a7905a | ||
|
|
af729ec16b | ||
|
|
8ae35fa11b | ||
|
|
561f0ac866 | ||
|
|
12ac8b17f0 | ||
|
|
b568963b14 | ||
|
|
583a050945 | ||
|
|
fe5ed89995 | ||
|
|
9ceec4f9f7 | ||
|
|
e55c3812db | ||
|
|
d924218c7c | ||
|
|
8a3eb946fe | ||
|
|
c734cec88a | ||
|
|
109621f73e | ||
|
|
6e09afd61e | ||
|
|
943308ccaf | ||
|
|
253e8f6edc | ||
|
|
17d8bcacf6 | ||
|
|
6280268919 | ||
|
|
caa75d170d | ||
|
|
a7f44211df | ||
|
|
a3466f0e99 | ||
|
|
222dda17a6 | ||
|
|
29fb0f855f | ||
|
|
91dfc3477d | ||
|
|
42caf3bc94 | ||
|
|
7778da715e | ||
|
|
0c2e4121af | ||
|
|
107a649e08 | ||
|
|
a17613459b | ||
|
|
3392b5e276 | ||
|
|
13656b60f7 | ||
|
|
c2f93dc672 | ||
|
|
468e6108ca | ||
|
|
59e134149a | ||
|
|
29b2e64a1d | ||
|
|
4ce6a872ca | ||
|
|
8fa5a82376 | ||
|
|
0ef2dff374 | ||
|
|
208bb15149 | ||
|
|
549a6c47b8 | ||
|
|
400451efe1 | ||
|
|
2ee88948f3 | ||
|
|
ace60f76da | ||
|
|
451af331b9 | ||
|
|
b87a770970 | ||
|
|
e59ef319b0 | ||
|
|
8a1487f6f4 | ||
|
|
44d36d2bf0 | ||
|
|
635865efa5 | ||
|
|
38949013f7 | ||
|
|
e1879818b4 | ||
|
|
9b2614109f | ||
|
|
abe99fec6a | ||
|
|
21936db58b | ||
|
|
74f01f3de4 | ||
|
|
53ba4d975d | ||
|
|
97306ddd5a | ||
|
|
16e052d846 | ||
|
|
1586913fc7 | ||
|
|
cf9a3e48b7 | ||
|
|
ec835e2e82 | ||
|
|
b86211204c | ||
|
|
1d6995be72 | ||
|
|
536576fe8b | ||
|
|
b514f49b08 | ||
|
|
46a466ffe1 | ||
|
|
15f1667fa4 | ||
|
|
284c13b2fe | ||
|
|
e9bb4f98ae | ||
|
|
45b8d792cc | ||
|
|
b93dfcfda4 | ||
|
|
3ffdc8daa0 | ||
|
|
e38bc7a760 | ||
|
|
2dca516afa | ||
|
|
b489ac871d | ||
|
|
50fb898138 | ||
|
|
c676fcefb1 | ||
|
|
bb4dd2aae0 | ||
|
|
9b11340e91 | ||
|
|
3cd5a1f986 | ||
|
|
874d7eccb8 | ||
|
|
44c4b901e2 | ||
|
|
2371960a1d | ||
|
|
874aa8e63e | ||
|
|
1225f421c0 | ||
|
|
5f0f5d2843 | ||
|
|
1d464767e1 | ||
|
|
9551dddbb8 | ||
|
|
563c274705 | ||
|
|
71ed64a843 | ||
|
|
efb3efc828 | ||
|
|
982e6cc7fe | ||
|
|
44dc754e31 | ||
|
|
18887e4c86 | ||
|
|
46d5fae2e5 | ||
|
|
4b31945e1d | ||
|
|
7e685f5196 | ||
|
|
050db150f6 | ||
|
|
a3de0e1ff7 | ||
|
|
acc0066f08 | ||
|
|
eb9f98e58d | ||
|
|
6d996bf1aa | ||
|
|
34fbfe105c | ||
|
|
dfeac1bcbc | ||
|
|
3d345570eb | ||
|
|
6000688c30 | ||
|
|
9b409822c3 | ||
|
|
363eab80f0 | ||
|
|
66fc7b545e | ||
|
|
bb4b673df8 | ||
|
|
e104eca02c | ||
|
|
01c362eadc | ||
|
|
fff3589a20 | ||
|
|
a4e1e1690d | ||
|
|
38dce69838 | ||
|
|
23ff4e753d | ||
|
|
f24cb6dc66 | ||
|
|
b738136154 | ||
|
|
447931d779 | ||
|
|
920b71d94c | ||
|
|
a786aaf390 | ||
|
|
d395db1a11 | ||
|
|
ad0b7e53d9 | ||
|
|
0ed621db8f | ||
|
|
5ae473dcd1 | ||
|
|
ac384137bd | ||
|
|
e43cf7ab08 | ||
|
|
acb65a1bc8 | ||
|
|
e5f4b49e36 | ||
|
|
31d0fa00d9 | ||
|
|
d28f330d43 | ||
|
|
a29adaf913 | ||
|
|
ea3e68cf7d | ||
|
|
158594ec20 | ||
|
|
6e51849ae5 | ||
|
|
29731aa578 | ||
|
|
4d0ef4f2c1 | ||
|
|
e7d03448cc | ||
|
|
2725a55770 | ||
|
|
e5be1a70eb | ||
|
|
26493aceaf | ||
|
|
c4f5bd5218 | ||
|
|
7c65b0b4a9 | ||
|
|
d81c68d94f | ||
|
|
a5a2ea1a70 | ||
|
|
507d10378a | ||
|
|
08f3f7daf2 | ||
|
|
9b848084fd | ||
|
|
e1ebf7ad1b | ||
|
|
38f46a9be8 | ||
|
|
d07b7582db | ||
|
|
af194a22f0 | ||
|
|
d8c7050f6f | ||
|
|
30e834b18b | ||
|
|
49770a22e7 | ||
|
|
de8cba13cf | ||
|
|
1fab318dd3 | ||
|
|
e2190964c2 | ||
|
|
8eddf99823 | ||
|
|
9fede0e68d | ||
|
|
1e62916e75 | ||
|
|
447c69f034 | ||
|
|
fc0ab95087 | ||
|
|
7fe4d6f097 | ||
|
|
fa57b417e9 | ||
|
|
1aec9c0f54 | ||
|
|
d1918a063c | ||
|
|
770dd62b1d | ||
|
|
b474e76ac2 | ||
|
|
6fa6e18408 | ||
|
|
8ee19efee9 | ||
|
|
45282e7bd9 | ||
|
|
54b04ffff8 | ||
|
|
1243d5bb13 | ||
|
|
627fc5054f | ||
|
|
a0830a8aaa | ||
|
|
02cbfc23b7 | ||
|
|
3da2630158 | ||
|
|
e02d0724a3 | ||
|
|
920fb3917f | ||
|
|
f36b2dbce9 | ||
|
|
ef7e6f6db5 | ||
|
|
3459fab8ec | ||
|
|
8063385d03 | ||
|
|
3dabcaa3a0 | ||
|
|
6c182b8e9b | ||
|
|
ae805a3568 | ||
|
|
d0001b8e0e | ||
|
|
cbcdc4b724 | ||
|
|
3bc3da967c | ||
|
|
b50ffef327 | ||
|
|
ec223eb2e6 | ||
|
|
573d3d399e | ||
|
|
0f5beb619e | ||
|
|
89aff23c11 | ||
|
|
fd27957b57 | ||
|
|
554ee88c86 | ||
|
|
868d71a08b | ||
|
|
9b3c33a2fe | ||
|
|
109cc69da9 | ||
|
|
113bd4859e | ||
|
|
2a2b7487d4 | ||
|
|
2b4022dcbf | ||
|
|
7555cf1607 | ||
|
|
9c75a7cc7e | ||
|
|
0337ae41ab | ||
|
|
ff39e67615 | ||
|
|
7ba5563eeb | ||
|
|
968b9383d3 | ||
|
|
be6c381751 | ||
|
|
27a0db37d8 | ||
|
|
5858816b53 | ||
|
|
a1376180b4 | ||
|
|
75d1400206 | ||
|
|
78475a6d15 | ||
|
|
63f93111fb | ||
|
|
1ea21ed6ce | ||
|
|
18a8fb9651 | ||
|
|
2e836a40d3 | ||
|
|
c09872e589 | ||
|
|
575b7bce98 | ||
|
|
3e04abde30 | ||
|
|
790c5e90bd | ||
|
|
85a358e07c | ||
|
|
3af0544421 | ||
|
|
f69b4d53f6 | ||
|
|
cb4be02a56 | ||
|
|
bacdab2596 | ||
|
|
ec7bb2f63a | ||
|
|
74a5551a8d | ||
|
|
3e0c803a37 | ||
|
|
55682c3a5d | ||
|
|
ae9e287b8d | ||
|
|
03c264cec1 | ||
|
|
410e01de61 | ||
|
|
d167dfd83b | ||
|
|
9b7d8f5f24 | ||
|
|
366fbc3fda | ||
|
|
f1d20f1f35 | ||
|
|
558f59b52c | ||
|
|
1a3ef63519 | ||
|
|
17380baae9 | ||
|
|
314c3e2f78 | ||
|
|
6ba5cc3319 | ||
|
|
1148d172b5 | ||
|
|
a930cdad87 | ||
|
|
b951d83a64 | ||
|
|
f56df6b1d0 | ||
|
|
1e35b2ace6 | ||
|
|
e75c20a249 | ||
|
|
c63ffdd3ef | ||
|
|
40658c6d0e | ||
|
|
251efd3b40 | ||
|
|
94320099b0 | ||
|
|
f592cabcd7 | ||
|
|
a58096fade | ||
|
|
b140bc2827 | ||
|
|
aeaa69b9e1 | ||
|
|
a535897ae7 | ||
|
|
1074a2b2e6 | ||
|
|
51c1be3806 | ||
|
|
b9e647ccb8 | ||
|
|
e063aa3d2a | ||
|
|
9a74e30c64 | ||
|
|
f26de4bb29 | ||
|
|
e9008eeaba | ||
|
|
d5dc8eccd6 | ||
|
|
13736d0ced | ||
|
|
a926afe8de | ||
|
|
af78dc4ec2 | ||
|
|
1c85d77d56 | ||
|
|
c8929b50fa | ||
|
|
e58e79cb8d | ||
|
|
049e12b2eb | ||
|
|
5c71f9552d | ||
|
|
c3be9e1af1 | ||
|
|
186d626c40 | ||
|
|
dfc433cb74 | ||
|
|
ab2dae47af | ||
|
|
ec442b960d | ||
|
|
670720b40f | ||
|
|
0787e35964 | ||
|
|
9f4df9582c | ||
|
|
d282590746 | ||
|
|
9e5047976b | ||
|
|
d69a2ec5ba | ||
|
|
4bfd5d9a13 | ||
|
|
091e651831 | ||
|
|
d52c2c0320 | ||
|
|
cd71ce67b1 | ||
|
|
43f501907e | ||
|
|
d26d5b83f1 | ||
|
|
c401414310 | ||
|
|
c34fe85780 | ||
|
|
a19a79d33a | ||
|
|
8edf6e7609 | ||
|
|
835a694c4b | ||
|
|
a47492e62c | ||
|
|
186a1deda8 | ||
|
|
132212652f | ||
|
|
5a40d93a30 | ||
|
|
f62940c1e5 | ||
|
|
0f808ed387 | ||
|
|
d8edf2d9e4 | ||
|
|
6827f5ed81 | ||
|
|
f3208b499b | ||
|
|
94e0842a06 | ||
|
|
e0de98ba01 | ||
|
|
1adb147f6d | ||
|
|
b1c4bba3b2 | ||
|
|
cdbdcd23e6 | ||
|
|
23d1290b22 | ||
|
|
5edcdfba5b | ||
|
|
6d105a002c | ||
|
|
3b1a41f154 | ||
|
|
0153efbf9c | ||
|
|
db34ab5255 | ||
|
|
52e10d029f | ||
|
|
1c94ef5c56 | ||
|
|
5efd83fc41 | ||
|
|
33966989db | ||
|
|
c56c76e07d | ||
|
|
8440a36f92 | ||
|
|
3e31b45db0 | ||
|
|
548a40dba6 | ||
|
|
c437882e96 | ||
|
|
4a61dc413b | ||
|
|
59df7defdb | ||
|
|
77fa6a1e65 | ||
|
|
0f8031c201 | ||
|
|
5842dccc2a | ||
|
|
0c5b1998a5 | ||
|
|
f52ebd0dba | ||
|
|
1857378a76 | ||
|
|
d2600583bb | ||
|
|
e2a4684f83 | ||
|
|
ed39cf3dee | ||
|
|
c4d3b1e606 | ||
|
|
be1fb30751 | ||
|
|
a2b3c32124 | ||
|
|
26e7237010 | ||
|
|
26a6215122 | ||
|
|
376adfdf2a | ||
|
|
d990e3f027 | ||
|
|
2473f66cb3 | ||
|
|
8e9bf7b48a | ||
|
|
7edae05b37 | ||
|
|
909749fc00 | ||
|
|
15b4b4a3ca | ||
|
|
cad05f1256 | ||
|
|
703e1f6f0d | ||
|
|
19451f9df7 | ||
|
|
3314b41202 | ||
|
|
f636fd8f53 | ||
|
|
77847f570c | ||
|
|
afaf3fa83d | ||
|
|
4c7f644599 | ||
|
|
692f7f008a | ||
|
|
0a62c3dfa8 | ||
|
|
7cd2cfed44 | ||
|
|
c31e11d385 | ||
|
|
efe6021e76 | ||
|
|
8d67389042 | ||
|
|
4037587f74 | ||
|
|
94daeb1444 | ||
|
|
937b30c415 | ||
|
|
6f0242f05b | ||
|
|
921837fd0f | ||
|
|
d06cdcc53c | ||
|
|
5828355426 | ||
|
|
50dc321b7b | ||
|
|
43f033db80 | ||
|
|
623c53f1e4 | ||
|
|
39762718b9 | ||
|
|
ae3804f7b4 | ||
|
|
0dd08dfb84 | ||
|
|
bb23f68d53 | ||
|
|
83345a17d2 | ||
|
|
b9f6554767 | ||
|
|
7eadd20879 | ||
|
|
3844a60837 | ||
|
|
6cdf8a901a | ||
|
|
c868c43179 | ||
|
|
01ca2a6de7 | ||
|
|
d64af72f74 | ||
|
|
c2fe745813 | ||
|
|
ddefbf95a3 | ||
|
|
a2b651985e | ||
|
|
788c261ce9 | ||
|
|
35070cc17e | ||
|
|
79be057e91 | ||
|
|
aa8f506dd0 | ||
|
|
c6486b1960 | ||
|
|
2f8e3a1610 | ||
|
|
432d32bedc | ||
|
|
8cb2d21ff5 | ||
|
|
1103c208a8 | ||
|
|
7e59f0f974 | ||
|
|
c647d6df99 | ||
|
|
97a927bb7d | ||
|
|
7c650aeeca | ||
|
|
3fd7cd0137 | ||
|
|
7e97936f0e | ||
|
|
643a4a89f4 | ||
|
|
cfd93cf332 | ||
|
|
340e5b7d86 | ||
|
|
be624fe943 | ||
|
|
cb102e115c | ||
|
|
952eb1cf0e | ||
|
|
709ffa37b2 | ||
|
|
f4f206f3e5 | ||
|
|
7036428066 | ||
|
|
18239f1aee | ||
|
|
fe8fde79f6 | ||
|
|
9f805a4ebe | ||
|
|
572f00cf2a | ||
|
|
330b4641ad | ||
|
|
c1c8b1eda2 | ||
|
|
aa251448d3 | ||
|
|
e27b1eb99f | ||
|
|
faaf93b194 | ||
|
|
58957667e1 | ||
|
|
0db7ba0c85 | ||
|
|
c42c15ad0e | ||
|
|
fc50e38ae2 | ||
|
|
b2d29a0285 | ||
|
|
87ecd6e252 | ||
|
|
2b49550b9b | ||
|
|
6ddba76c93 | ||
|
|
d9e7298aee | ||
|
|
49b7029506 | ||
|
|
468787601e | ||
|
|
804d8f7969 | ||
|
|
9b53119121 | ||
|
|
b773ac085b | ||
|
|
13419dcbb8 | ||
|
|
c9322fa983 | ||
|
|
6cfca9e34b | ||
|
|
282398493b | ||
|
|
022dc74354 | ||
|
|
cd6ffca413 | ||
|
|
b19a6ebcfc | ||
|
|
811281372b | ||
|
|
c361b8500f | ||
|
|
bcf302904d | ||
|
|
e0e4d5062a | ||
|
|
abd1a04fed | ||
|
|
ab1d7628f1 | ||
|
|
670cf90e11 | ||
|
|
f5210e1902 | ||
|
|
5bcafb5bee | ||
|
|
d8e132f550 | ||
|
|
7e9566b00f | ||
|
|
7c313a31fd | ||
|
|
861562e58a | ||
|
|
0a6b4b3778 | ||
|
|
b4f451285e | ||
|
|
5f0ebdead7 | ||
|
|
de3bb0e579 | ||
|
|
9dcd2c6c05 | ||
|
|
34196c9960 | ||
|
|
5399d15658 | ||
|
|
5f98d8d029 | ||
|
|
10903e2434 | ||
|
|
b7f53effa1 | ||
|
|
129551f3f4 | ||
|
|
4f62424e8a | ||
|
|
ae65ab3ae8 | ||
|
|
96067f18ca | ||
|
|
67e1c8667b | ||
|
|
ab67517584 | ||
|
|
9fe892f10f | ||
|
|
bf18e9b795 | ||
|
|
e95bb9601c | ||
|
|
a16ffa3946 | ||
|
|
8c97a12741 | ||
|
|
0982d6a4a9 | ||
|
|
3160d86050 | ||
|
|
6faa59c70d | ||
|
|
ced958f135 | ||
|
|
d5ccaed457 | ||
|
|
2c799eca30 | ||
|
|
98fb63e2e3 | ||
|
|
55bab29233 | ||
|
|
c0c77100ad | ||
|
|
aa50df8eaf | ||
|
|
c12ca6008a | ||
|
|
c6bc6b2576 | ||
|
|
f53bf7d4ad | ||
|
|
40bd189cc0 | ||
|
|
7097f1dea6 | ||
|
|
70f3da98db | ||
|
|
f281bd751e | ||
|
|
04b54d26e2 | ||
|
|
19cdf6d7e9 | ||
|
|
0018431f31 | ||
|
|
8380e1686b | ||
|
|
c14ffe36e3 | ||
|
|
a4dd9bcdf3 | ||
|
|
c1cabeeeeb | ||
|
|
ca69365a86 | ||
|
|
98fa9c168a | ||
|
|
0e26b6e2be | ||
|
|
760c3f3ff9 | ||
|
|
8aaa6894df | ||
|
|
636d254d41 | ||
|
|
f6e5dd6c2c | ||
|
|
5637755345 | ||
|
|
a9c4f46412 | ||
|
|
7aed3640c4 | ||
|
|
85f2ec3910 | ||
|
|
6274dea4ac | ||
|
|
a938521c9e | ||
|
|
9450d1402f | ||
|
|
8209ce56b6 | ||
|
|
a6d03fde18 | ||
|
|
5fff0ece5b | ||
|
|
d915fdfe45 | ||
|
|
7b861ada4c | ||
|
|
fa1799eef3 | ||
|
|
77cc2fa82d | ||
|
|
de4bd4a2d2 | ||
|
|
c61782f1a4 | ||
|
|
6503407007 | ||
|
|
09295d9d0e | ||
|
|
2c379d09c9 | ||
|
|
994ade7fff | ||
|
|
769289fe01 | ||
|
|
f05950f37c | ||
|
|
de16f1a4b1 | ||
|
|
d1db382607 | ||
|
|
82a0cd4ec4 | ||
|
|
ec85b6db3e | ||
|
|
a9f4049841 | ||
|
|
dab5d2c0b7 | ||
|
|
51d625244d | ||
|
|
7b1e7dc4e7 | ||
|
|
019d020535 | ||
|
|
89d071bb80 | ||
|
|
499ebc7d18 | ||
|
|
e522e0bb07 | ||
|
|
f55a314666 | ||
|
|
97ac0f81f2 | ||
|
|
8cfcab3363 | ||
|
|
6f72accbee | ||
|
|
e021937867 | ||
|
|
82d197462f | ||
|
|
78bdfe7a59 | ||
|
|
586fc7a97d | ||
|
|
2faa94920e | ||
|
|
01163d8f77 | ||
|
|
04990e4ea2 | ||
|
|
37c8dec45c | ||
|
|
df2a06690d | ||
|
|
2c4cdc6dc6 | ||
|
|
96c2f404d2 | ||
|
|
e33a515fd6 | ||
|
|
8fc58e259c | ||
|
|
caadd86091 | ||
|
|
e16aafe86c | ||
|
|
6a0ebe9e45 | ||
|
|
79f4b9c0d6 | ||
|
|
e6433abd09 | ||
|
|
96f3b7858b | ||
|
|
f5abc191d8 | ||
|
|
251b602323 | ||
|
|
fe3169182c | ||
|
|
642a5339bc | ||
|
|
c251053f03 | ||
|
|
4b97b00518 | ||
|
|
faa1a24c25 | ||
|
|
b78b5cd73e | ||
|
|
4eb5411bf1 | ||
|
|
22af1176d3 | ||
|
|
bb6d8a6ea4 | ||
|
|
935f68ae8f | ||
|
|
2fd939f514 | ||
|
|
dbc0672061 | ||
|
|
804f2eec76 | ||
|
|
73c24319d1 | ||
|
|
6b3fc6338e | ||
|
|
c6855df5fc | ||
|
|
9ed61fd072 | ||
|
|
1a764944e7 | ||
|
|
e311f89357 | ||
|
|
ecdba84977 | ||
|
|
c003eccb1e | ||
|
|
f36fdc0492 | ||
|
|
907b96d447 | ||
|
|
b4682e836c | ||
|
|
30e8fbedd8 | ||
|
|
fc1887c01f | ||
|
|
d51acfd730 | ||
|
|
35e38a5469 | ||
|
|
2ae3976868 | ||
|
|
5dcdc3c652 | ||
|
|
af68f6046c | ||
|
|
c0c4ba156a | ||
|
|
22135f31d5 | ||
|
|
0c7ca85f5b | ||
|
|
478c5bbb68 | ||
|
|
487e66e64d | ||
|
|
2b5b0b1772 | ||
|
|
13bb5b52e1 | ||
|
|
90d2a48cfb | ||
|
|
97a37d21e1 | ||
|
|
9cf6100e00 | ||
|
|
932cf905ef | ||
|
|
7da53c61cf | ||
|
|
714c0d5330 | ||
|
|
dc92abb5e5 | ||
|
|
b0c515b59d | ||
|
|
8e6c13832e | ||
|
|
e33f655f61 | ||
|
|
8e8b7b0611 | ||
|
|
d28f2f0123 | ||
|
|
a8eea870f5 | ||
|
|
7e12e45311 | ||
|
|
b31c1d5ff3 | ||
|
|
f6949458b7 | ||
|
|
15dd6b4f2b | ||
|
|
7afd59149c | ||
|
|
a47f506293 | ||
|
|
ad88f755a4 | ||
|
|
f243abb65c | ||
|
|
a4b177436d | ||
|
|
8367569236 | ||
|
|
5bbb2b28ea | ||
|
|
2b92ab6dd6 | ||
|
|
c05c3dcaa3 | ||
|
|
dd71c23a04 | ||
|
|
299c49c291 | ||
|
|
b1feabaf64 | ||
|
|
2722e008e0 | ||
|
|
178b08cd0a | ||
|
|
bf20845249 | ||
|
|
4dc15451b7 | ||
|
|
3a764b6aae | ||
|
|
190e78c79c | ||
|
|
eb01399f26 | ||
|
|
c815654c94 | ||
|
|
f1ce908b50 | ||
|
|
fb07204d9f | ||
|
|
1e5648b11d | ||
|
|
0902e3420f | ||
|
|
2750f8c49b | ||
|
|
57ffc9c5d3 | ||
|
|
a2b858008f | ||
|
|
28956126ec | ||
|
|
698d8ab365 | ||
|
|
44471d3c42 | ||
|
|
ad1fa22196 | ||
|
|
04ebd96bb7 | ||
|
|
09b5ae14b1 | ||
|
|
8aa127186c | ||
|
|
a962082173 | ||
|
|
5c0dbe4d5c | ||
|
|
5934816b11 | ||
|
|
28dd84713f | ||
|
|
11b31cf9bd | ||
|
|
dfd2d88953 | ||
|
|
6a097bd691 | ||
|
|
2776d1ce8e | ||
|
|
fa12517fb2 | ||
|
|
9624d1bdcd | ||
|
|
8f7bf150df | ||
|
|
f5270e1539 | ||
|
|
0834b210ca | ||
|
|
cc41adbbf9 | ||
|
|
8944353716 | ||
|
|
53ff42ea55 | ||
|
|
63a666025f | ||
|
|
25a92e61ef | ||
|
|
70a33ec78d | ||
|
|
d358d7433b | ||
|
|
08ce9773dd | ||
|
|
f745734d90 | ||
|
|
5443083b1d | ||
|
|
cc19496699 | ||
|
|
b595691c5e | ||
|
|
7d784a1a91 | ||
|
|
a664042f64 | ||
|
|
5bc4470a8c | ||
|
|
b8ed1ea3a4 | ||
|
|
f2ad49cf20 | ||
|
|
fd6a9e73ed | ||
|
|
db57a8e7b6 | ||
|
|
2a35bf009f | ||
|
|
42d49d74ab | ||
|
|
a9f34249fc | ||
|
|
1ce59bcc1f | ||
|
|
bb35821c45 | ||
|
|
bbec42c426 | ||
|
|
cb487a6d1a | ||
|
|
7fdcf62bf2 | ||
|
|
f82c1119bf | ||
|
|
f60f8a12ab | ||
|
|
fd348d456d | ||
|
|
0f73a97bc8 | ||
|
|
7783f50110 | ||
|
|
617cd628ea | ||
|
|
9601ba1323 | ||
|
|
b85fcd0cee | ||
|
|
3c879b7389 | ||
|
|
44e7bc1c23 | ||
|
|
0bcaeaeb33 | ||
|
|
da60f0748c | ||
|
|
5418392143 | ||
|
|
6c18b16a00 | ||
|
|
8e5ad717c4 | ||
|
|
1ff263f0a4 | ||
|
|
e9f0ca4385 | ||
|
|
079b67f111 | ||
|
|
a224ef6d0b | ||
|
|
0c0a6d39cb | ||
|
|
3439058a54 | ||
|
|
6414f7901f | ||
|
|
4d6390ea66 | ||
|
|
3f83d5057d | ||
|
|
67f1c00181 | ||
|
|
c4013ca4b0 | ||
|
|
25294d9a63 | ||
|
|
7d241642f9 | ||
|
|
d1e42ac56c | ||
|
|
45129b2bc8 | ||
|
|
0568b4c39d | ||
|
|
5b152a6c3f | ||
|
|
52d4e35192 | ||
|
|
a1a3750bc8 | ||
|
|
3cfda944d0 | ||
|
|
852fc2da2d | ||
|
|
adefb2921b | ||
|
|
27a141fd87 | ||
|
|
2b63ca4935 | ||
|
|
107d7e652f | ||
|
|
7e8d40b57a | ||
|
|
6c40b18229 | ||
|
|
9d51d70f70 | ||
|
|
96a9a0f6a4 | ||
|
|
31b513e6d7 | ||
|
|
d831d6e515 | ||
|
|
89de42ad8e | ||
|
|
01fcef9b9d | ||
|
|
2bcacfc1ac | ||
|
|
1e2edefd93 | ||
|
|
3aabba255d | ||
|
|
fc874c0249 | ||
|
|
e543723856 | ||
|
|
eb8e4bbfa8 | ||
|
|
821e2798b9 | ||
|
|
3a0dc8f8a5 | ||
|
|
f75152f074 | ||
|
|
f72c96914b | ||
|
|
23036eec08 | ||
|
|
045a46aa9d | ||
|
|
01876023bb | ||
|
|
e2ae29efdc | ||
|
|
f67389c017 | ||
|
|
20a57b76a8 | ||
|
|
d54d77c395 | ||
|
|
a8897ca8ca | ||
|
|
4e62a3bdd9 | ||
|
|
d8a60eca94 | ||
|
|
9aa2120c7d | ||
|
|
f7e3f51b54 | ||
|
|
aef7b3e9bb | ||
|
|
21d0219809 | ||
|
|
3cf59af3e9 | ||
|
|
28438e638b | ||
|
|
c1bf3be48e | ||
|
|
27293a22df | ||
|
|
fc07672983 | ||
|
|
c14a0ca2a1 | ||
|
|
64037febdc | ||
|
|
fd10ebbc87 | ||
|
|
91eefb9a3f | ||
|
|
1da0180e0f | ||
|
|
22abddc9d4 | ||
|
|
e912f56c26 | ||
|
|
a715679f1f | ||
|
|
55673442f1 | ||
|
|
b6294d4f93 | ||
|
|
40112e6061 | ||
|
|
0785bf138d | ||
|
|
e18e25d685 | ||
|
|
a9dc630fae | ||
|
|
85fdea19c2 | ||
|
|
792b6c28df | ||
|
|
d874a2e5f1 | ||
|
|
5c68164d48 | ||
|
|
b1d99a744b | ||
|
|
9f544cbe1c | ||
|
|
ad06d29140 | ||
|
|
a658b117a7 | ||
|
|
638b505ade | ||
|
|
ff3730f3fb | ||
|
|
00f488dc13 | ||
|
|
ca2f32ea58 | ||
|
|
0ebbccc6cf | ||
|
|
7c622ecc58 | ||
|
|
c12cb66824 | ||
|
|
c476cd0654 | ||
|
|
98315343b0 | ||
|
|
eb6787181d | ||
|
|
f7d9ca63e2 | ||
|
|
b563467164 | ||
|
|
86e9a7abcd | ||
|
|
030eaa7c1c | ||
|
|
ae129fe911 | ||
|
|
6190f0c7bf | ||
|
|
717505daef | ||
|
|
8ede0b734f | ||
|
|
090851fce1 | ||
|
|
164232bbbc | ||
|
|
917308d24d | ||
|
|
4054616190 | ||
|
|
578142964d | ||
|
|
37bd43511b | ||
|
|
b53981c439 | ||
|
|
bf8442a250 | ||
|
|
198523fe8f | ||
|
|
7f7507a0dd | ||
|
|
a08c8ebc60 | ||
|
|
aa76cb5005 | ||
|
|
be008cd86c | ||
|
|
6f9aa5aa24 | ||
|
|
bfe6d446ad | ||
|
|
855a6bd831 | ||
|
|
f5ff267c54 | ||
|
|
014c4105f4 | ||
|
|
52fea6f3ce | ||
|
|
97eee9e0c5 | ||
|
|
5cc234e27e | ||
|
|
2bbcc51a8b | ||
|
|
1824b977f7 | ||
|
|
99011fd3bf | ||
|
|
43ab3c961e | ||
|
|
f7523f000e | ||
|
|
346631cd75 | ||
|
|
8517e103b0 | ||
|
|
815a81a610 | ||
|
|
20b9339620 | ||
|
|
2e93ac07f6 | ||
|
|
f385622ec6 | ||
|
|
de83186c3c | ||
|
|
fa0d57dd47 | ||
|
|
b164fa622f | ||
|
|
e4c654841b | ||
|
|
a411248c7c | ||
|
|
a066203b4a | ||
|
|
819c70fa9a | ||
|
|
9f9383e6ff | ||
|
|
70222b3033 | ||
|
|
5e2d7de6c2 | ||
|
|
765ee6c08c | ||
|
|
aceef4d0d0 | ||
|
|
654956baa6 | ||
|
|
577a7c52fc | ||
|
|
212ab08c15 | ||
|
|
18a0be561f | ||
|
|
0528981a0a | ||
|
|
eac1e91638 | ||
|
|
a8600faeb3 | ||
|
|
9c33eede5c | ||
|
|
85acab4642 | ||
|
|
0b5ccfeaed | ||
|
|
f108ffa9ff | ||
|
|
f233b6bf77 | ||
|
|
c95d8e05ca | ||
|
|
b3237fd001 | ||
|
|
7704c102e4 | ||
|
|
55cb7447f9 | ||
|
|
77eaa70f77 | ||
|
|
70d864af09 | ||
|
|
15968c8e39 | ||
|
|
0558bd4101 | ||
|
|
3962ec7745 | ||
|
|
2164a3b549 | ||
|
|
f0417a9535 | ||
|
|
9d9c42cc6a | ||
|
|
6c285fa2a1 | ||
|
|
d6116e00bc | ||
|
|
c54b382775 | ||
|
|
184e2b646c | ||
|
|
8a8379c7eb | ||
|
|
8e8d827e00 | ||
|
|
2fad2e3ccd | ||
|
|
4c66d7f5ba | ||
|
|
124385fc31 | ||
|
|
5fe39f94ab | ||
|
|
e8d1645150 | ||
|
|
d1ea517f9a | ||
|
|
c6627d6266 | ||
|
|
2138ab05e5 | ||
|
|
ce3038fd8e | ||
|
|
555d00c9a8 | ||
|
|
12f013681a | ||
|
|
7a498310e2 | ||
|
|
9af58224fa | ||
|
|
61abdb57a7 | ||
|
|
e0cb0c70e1 | ||
|
|
420a05cabf | ||
|
|
262dd532e6 | ||
|
|
80ed6d1399 | ||
|
|
c04f1b57aa | ||
|
|
7aca92f2b3 | ||
|
|
e199278d6f | ||
|
|
f2a55bca55 | ||
|
|
bcd62aec6b | ||
|
|
c4e4330bd1 | ||
|
|
c70b53a162 | ||
|
|
3262def07c | ||
|
|
d049c13062 | ||
|
|
5ffed21e0e | ||
|
|
92ffda48ee | ||
|
|
91a4a325ae | ||
|
|
7cff5e58f0 | ||
|
|
17f0fc41d1 | ||
|
|
958e86f67e | ||
|
|
acb0118897 | ||
|
|
85a045c538 | ||
|
|
fbffe241e6 | ||
|
|
765fd1565a | ||
|
|
1a677c0b1d | ||
|
|
eeb8788413 | ||
|
|
c24ca68d63 | ||
|
|
e189dc3b1f | ||
|
|
ff8f391e91 | ||
|
|
0a9c2824ba | ||
|
|
dc37d3bf62 | ||
|
|
2780e6f3d7 | ||
|
|
260df58856 | ||
|
|
cba28a97a0 | ||
|
|
eca2203603 | ||
|
|
e926212554 | ||
|
|
65463b6efb | ||
|
|
9ac799bc95 | ||
|
|
7e4d757bdf | ||
|
|
1a8037cd6c | ||
|
|
dbc8a37b56 | ||
|
|
b1851ada93 | ||
|
|
c0799b0c1d | ||
|
|
e461710811 | ||
|
|
bea8e89cc7 | ||
|
|
17d66153b0 | ||
|
|
8ca0c11154 | ||
|
|
c4afc3d5c0 | ||
|
|
c22d51e439 | ||
|
|
aa052ae005 | ||
|
|
3f0b41ec3c |
244
.circleci/config.yml
Normal file
244
.circleci/config.yml
Normal file
@@ -0,0 +1,244 @@
|
||||
libratbag_references:
|
||||
build_dependencies: &build_dependencies
|
||||
FEDORA_DEP_BUILD: gcc gcc-c++ meson dbus-daemon glib2-devel json-glib-devel libevdev-devel libudev-devel libunistring-devel python3-devel python3-evdev swig
|
||||
FEDORA_DEP_TEST: check-devel python3-gobject python3-lxml valgrind
|
||||
FEDORA_DEP_DOC: python3-sphinx python3-sphinx_rtd_theme
|
||||
UBUNTU_DEP_BUILD: gcc g++ meson pkg-config systemd libevdev-dev libglib2.0-dev libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev python3-dev python3-evdev swig
|
||||
UBUNTU_DEP_TEST: check python3-gi python3-lxml valgrind
|
||||
default_settings: &default_settings
|
||||
working_directory: ~/libratbag
|
||||
environment:
|
||||
LANG: C.UTF-8
|
||||
build_default: &build_default
|
||||
name: Build
|
||||
command: |
|
||||
rm -rf build
|
||||
meson build ${MESON_PARAMS}
|
||||
meson configure build
|
||||
ninja -v -C build ${NINJA_ARGS}
|
||||
environment:
|
||||
MESON_PARAMS: --prefix=/usr
|
||||
build_buildtype_plain: &build_buildtype_plain
|
||||
run:
|
||||
<<: *build_default
|
||||
name: Build with buildtype plain
|
||||
environment:
|
||||
MESON_PARAMS: --prefix=/usr -Dbuildtype=plain
|
||||
build_buildtype_release: &build_buildtype_release
|
||||
run:
|
||||
<<: *build_default
|
||||
name: Build with buildtype release
|
||||
environment:
|
||||
MESON_PARAMS: --prefix=/usr -Dbuildtype=release
|
||||
build_and_test: &build_and_test
|
||||
run:
|
||||
<<: *build_default
|
||||
name: Build and test
|
||||
environment:
|
||||
NINJA_ARGS: test
|
||||
build_with_docs: &build_with_docs
|
||||
run:
|
||||
<<: *build_default
|
||||
name: Build with documentation
|
||||
environment:
|
||||
MESON_PARAMS: -Ddocumentation=true
|
||||
install: &install
|
||||
run:
|
||||
name: Installing
|
||||
command: ninja -C build install
|
||||
check_install: &check_install
|
||||
run:
|
||||
name: Checking installation
|
||||
command: |
|
||||
PREFIX=/usr/local/
|
||||
diff -u <(cd data/devices; ls *.device) <(cd $PREFIX/share/libratbag; ls *.device)
|
||||
check_uninstall: &check_uninstall
|
||||
run:
|
||||
name: Checking if any files are left after uninstall
|
||||
command: |
|
||||
PREFIX=/root/test_install
|
||||
meson build_install --prefix=$PREFIX
|
||||
ninja -C build_install install
|
||||
ninja -C build_install uninstall
|
||||
if [ -d $PREFIX ]
|
||||
then
|
||||
tree $PREFIX
|
||||
exit 1
|
||||
fi
|
||||
export_logs: &export_logs
|
||||
store_artifacts:
|
||||
path: ~/libratbag/build/meson-logs
|
||||
start_dbus: &start_dbus
|
||||
run:
|
||||
name: Start dbus daemon
|
||||
command: |
|
||||
mkdir /run/dbus
|
||||
/usr/bin/dbus-daemon --system --fork
|
||||
|
||||
fedora_prep_cache: &fedora_prep_cache
|
||||
<<: *default_settings
|
||||
steps:
|
||||
- run:
|
||||
name: Initializing Fedora dnf cache
|
||||
command: dnf install -y --downloadonly git ${FEDORA_DEP_BUILD} ${FEDORA_DEP_TEST} ${FEDORA_DEP_DOC}
|
||||
- persist_to_workspace:
|
||||
root: /var/cache/
|
||||
paths:
|
||||
- dnf/*
|
||||
environment:
|
||||
*build_dependencies
|
||||
|
||||
fedora_fetch_cache: &fedora_fetch_cache
|
||||
attach_workspace:
|
||||
at: /var/cache/
|
||||
|
||||
fedora_install: &fedora_install
|
||||
run:
|
||||
name: Install prerequisites
|
||||
command: |
|
||||
echo keepcache=1 >> /etc/dnf/dnf.conf
|
||||
dnf install -y git ${FEDORA_DEP_BUILD} ${FEDORA_DEP_TEST}
|
||||
sed -i 's/systemd//' /etc/nsswitch.conf
|
||||
|
||||
fedora_settings: &fedora_settings
|
||||
<<: *default_settings
|
||||
steps:
|
||||
- *fedora_fetch_cache
|
||||
- *fedora_install
|
||||
- checkout
|
||||
- *start_dbus
|
||||
- *build_and_test
|
||||
- *install
|
||||
- *check_install
|
||||
- *check_uninstall
|
||||
- *build_buildtype_plain
|
||||
- *build_buildtype_release
|
||||
- *export_logs
|
||||
environment:
|
||||
*build_dependencies
|
||||
|
||||
ubuntu_settings: &ubuntu_settings
|
||||
<<: *default_settings
|
||||
steps:
|
||||
- run:
|
||||
name: Install prerequisites
|
||||
command: |
|
||||
apt-get update
|
||||
apt-get install -y software-properties-common
|
||||
apt-get remove -y libnss-systemd
|
||||
add-apt-repository universe
|
||||
apt-get update
|
||||
apt-get install -y git ${UBUNTU_DEP_BUILD} ${UBUNTU_DEP_TEST}
|
||||
- checkout
|
||||
- *start_dbus
|
||||
- *build_and_test
|
||||
- *install
|
||||
- *check_install
|
||||
- *check_uninstall
|
||||
- *build_buildtype_plain
|
||||
- *build_buildtype_release
|
||||
- *export_logs
|
||||
environment:
|
||||
*build_dependencies
|
||||
|
||||
doc_build: &doc_build
|
||||
<<: *default_settings
|
||||
steps:
|
||||
- *fedora_fetch_cache
|
||||
- *fedora_install
|
||||
- run:
|
||||
name: Install documentation build-deps
|
||||
command: dnf install -y ${FEDORA_DEP_DOC}
|
||||
- checkout
|
||||
- *build_with_docs
|
||||
- *export_logs
|
||||
- store_artifacts:
|
||||
path: ~/libratbag/build/doc/html
|
||||
- persist_to_workspace:
|
||||
root: build
|
||||
paths:
|
||||
- doc/html/*
|
||||
environment:
|
||||
*build_dependencies
|
||||
|
||||
docs_deploy: &docs_deploy
|
||||
<<: *default_settings
|
||||
steps:
|
||||
- *fedora_fetch_cache
|
||||
- run:
|
||||
name: Install prerequisites
|
||||
command: dnf install -y git tree
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: build
|
||||
- run:
|
||||
name: Setup the deploy SSH key
|
||||
command: |
|
||||
ssh-add -L | tail -n1 > ~/.ssh/deploy.pub
|
||||
cat <<EOF > ~/.ssh/config
|
||||
Host github.com
|
||||
IdentityFile /root/.ssh/deploy.pub
|
||||
IdentitiesOnly yes
|
||||
EOF
|
||||
- run:
|
||||
name: Clone doc repository
|
||||
command: |
|
||||
cd ~
|
||||
git clone ssh://git@github.com/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_PROJECT_REPONAME}.github.io
|
||||
- run:
|
||||
name: Copy the doc, commit and push
|
||||
command: |
|
||||
set +e
|
||||
cd ~/${CIRCLE_PROJECT_REPONAME}.github.io
|
||||
\cp -r ~/${CIRCLE_PROJECT_REPONAME}/build/doc/html/* .
|
||||
if ! git diff-index --quiet HEAD --; then
|
||||
git config --global user.email "libratbag@librabtag.github.io"
|
||||
git config --global user.name "The libratbag crew"
|
||||
git add .
|
||||
git commit -m "update docs from ${CIRCLE_SHA1}"
|
||||
git push
|
||||
fi
|
||||
|
||||
version: 2
|
||||
jobs:
|
||||
fedora_cache:
|
||||
<<: *fedora_prep_cache
|
||||
docker:
|
||||
- image: fedora:31
|
||||
fedora_31:
|
||||
<<: *fedora_settings
|
||||
docker:
|
||||
- image: fedora:31
|
||||
ubuntu_19_04:
|
||||
<<: *ubuntu_settings
|
||||
docker:
|
||||
- image: ubuntu:19.04
|
||||
doc_build:
|
||||
<<: *doc_build
|
||||
docker:
|
||||
- image: fedora:31
|
||||
doc_deploy:
|
||||
<<: *docs_deploy
|
||||
docker:
|
||||
- image: fedora:31
|
||||
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
compile_and_test:
|
||||
jobs:
|
||||
- fedora_cache
|
||||
- ubuntu_19_04
|
||||
- fedora_31:
|
||||
requires:
|
||||
- fedora_cache
|
||||
- doc_build:
|
||||
requires:
|
||||
- fedora_cache
|
||||
- doc_deploy:
|
||||
requires:
|
||||
- fedora_cache
|
||||
- doc_build
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
20
.editorconfig
Normal file
20
.editorconfig
Normal file
@@ -0,0 +1,20 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{c,h}]
|
||||
indent_style = tab
|
||||
tab_width = 8
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[{*.{py,py.in},tools/ratbagctl.*.in}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{yml,xsl}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
3
.flake8
Normal file
3
.flake8
Normal file
@@ -0,0 +1,3 @@
|
||||
[flake8]
|
||||
ignore = E402,E501
|
||||
exclude = .git,__pycache__,build,data,piper/piper.py
|
||||
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Information**
|
||||
<!-- If your issue is related to a Logitech device please make sure you are running at least Linux 5.2 -->
|
||||
- `ratbagd` version (`ratbagd --version`):
|
||||
- Distribution:
|
||||
- Kernel version (ex. `uname -srmo`): `KERNEL VERSION HERE`
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Logs**
|
||||
Please start the daemon with verbosity and reproduce the issue.
|
||||
|
||||
First make sure it isn't running already.
|
||||
```
|
||||
$ ratbagd --verbose=raw
|
||||
OUTPUT HERE
|
||||
```
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
52
.gitignore
vendored
52
.gitignore
vendored
@@ -1,52 +0,0 @@
|
||||
*.o
|
||||
*.pc
|
||||
*.la
|
||||
*.lo
|
||||
*.swp
|
||||
*~
|
||||
*.sig
|
||||
*.tar.*
|
||||
*.announce
|
||||
*.patch
|
||||
*.rej
|
||||
*.trs
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
stamp-h1
|
||||
.libs/
|
||||
.deps/
|
||||
src/libratbag-version.h
|
||||
doc/libratbag.doxygen
|
||||
doc/html
|
||||
tags
|
||||
test-driver
|
||||
compile
|
||||
m4
|
||||
symbols-leak-test
|
||||
symbols-leak-test.log
|
||||
test-build-cxx
|
||||
test-build-linker
|
||||
test-build-pedantic-c99
|
||||
test-build-std-gnuc90
|
||||
test-suite.log
|
||||
test-context
|
||||
test-device
|
||||
test-*.log
|
||||
ratbag-command
|
||||
hidpp10-dump-page
|
||||
hidpp20-dump-page
|
||||
lur-command
|
||||
3
COPYING
3
COPYING
@@ -1,4 +1,5 @@
|
||||
Copyright © 2015 Red Hat, Inc.
|
||||
Copyright © 2015-2017 Red Hat, Inc.
|
||||
Copyright © 2015 David Herrmann <dh.herrmann@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
SUBDIRS = src doc test tools hwdb data
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
|
||||
valgrind:
|
||||
(cd test; $(MAKE) valgrind)
|
||||
170
README.md
170
README.md
@@ -1,21 +1,111 @@
|
||||
/*!@mainpage
|
||||
|
||||
libratbag
|
||||
=========
|
||||
|
||||
libratbag is a configuration library for gaming mice. It provides a generic
|
||||
way to access the various features exposed by these mice and abstracts away
|
||||
hardware-specific and kernel-specific quirks.
|
||||
<img src="https://libratbag.github.io/_images/logo.svg" alt="" width="30%" align="right">
|
||||
|
||||
Architecture
|
||||
------------
|
||||
libratbag provides **ratbagd**, a DBus daemon to configure input devices,
|
||||
mainly gaming mice. The daemon provides a generic way to access the various
|
||||
features exposed by these mice and abstracts away hardware-specific and
|
||||
kernel-specific quirks.
|
||||
|
||||
libratbag has two main components, the front-end API and wrapper code, and
|
||||
the back-end HW-specific drivers:
|
||||
libratbag currently supports devices from Logitech, Etekcity, GSkill,
|
||||
Roccat, Steelseries. See [the device
|
||||
files](https://github.com/libratbag/libratbag/tree/master/data/devices) for
|
||||
a complete list of supported devices.
|
||||
|
||||
+-----+ +-----+ +-----------+ +----------+
|
||||
| app | -> | API | -> | hw-driver | -> | protocol | -> device
|
||||
+-----+ +-----+ +-----------+ +----------+
|
||||
Users interact through a GUI like
|
||||
[Piper](https://github.com/libratbag/piper/). For developers, the
|
||||
`ratbagctl` tool is the prime tool for debugging.
|
||||
|
||||
Installing libratbag from system packages
|
||||
-----------------------------------------
|
||||
|
||||
libratbag is packaged for some distributions, you can use your system's
|
||||
package manager to install it. See [the
|
||||
wiki](https://github.com/libratbag/libratbag/wiki/Installation) for details.
|
||||
|
||||
Compiling libratbag
|
||||
-------------------
|
||||
|
||||
libratbag uses the [meson build system](http://mesonbuild.com) which in
|
||||
turn uses ninja to invoke the compiler. Run the following commands to clone
|
||||
libratbag and initialize the build:
|
||||
|
||||
git clone https://github.com/libratbag/libratbag.git
|
||||
cd libratbag
|
||||
meson builddir
|
||||
ninja -C builddir
|
||||
sudo ninja -C builddir install
|
||||
|
||||
The default prefix is `/usr/local`, i.e. it will not overwrite the system
|
||||
installation. For more information, see [the
|
||||
wiki](https://github.com/libratbag/libratbag/wiki/Installation).
|
||||
|
||||
And to build or re-build after code-changes, run:
|
||||
|
||||
ninja -C builddir
|
||||
sudo ninja -C builddir install
|
||||
|
||||
Note: `builddir` is the build output directory and can be changed to any
|
||||
other directory name. To set configure-time options, use e.g.
|
||||
|
||||
meson configure builddir -Ddocumentation=false
|
||||
|
||||
Run `meson configure builddir` to list the options.
|
||||
|
||||
Running ratbagd as DBus-activated systemd service
|
||||
-------------------------------------------------
|
||||
|
||||
To run ratbagd, simply run it as root `sudo ratbagd`. However,
|
||||
ratbagd is intended to run as dbus-activated systemd service and installs
|
||||
the following files:
|
||||
|
||||
/usr/share/dbus-1/system.d/org.freedesktop.ratbag1.conf
|
||||
/usr/share/dbus-1/system-services/org.freedesktop.ratbag1.conf
|
||||
/usr/share/systemd/system/ratbagd.service
|
||||
|
||||
These files are installed into the prefix by `ninja install`, see also the
|
||||
configure-time options `-Dsystemd-unit-dir` and `-Ddbus-root-dir`.
|
||||
Developers are encouraged to simply symlink to the files in the git
|
||||
repository.
|
||||
|
||||
For the files to take effect, you should run
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl reload dbus.service
|
||||
|
||||
And finally, to enable the service:
|
||||
|
||||
sudo systemctl enable ratbagd.service
|
||||
|
||||
This places the required symlink into the systemd directory so that dbus
|
||||
activation is possible.
|
||||
|
||||
The DBus Interface
|
||||
-------------------
|
||||
|
||||
Full documentation of the DBus interface to interact with devices is
|
||||
available here: [ratbagd DBus Interface description](https://libratbag.github.io/).
|
||||
|
||||
libratbag Internal Architecture
|
||||
-------------------------------
|
||||
|
||||
libratbag has two main components, libratbag and ratbagd. Applications like
|
||||
Piper talk over DBus to ratbagd. ratbagd uses libratbag to access the actual
|
||||
devices.
|
||||
|
||||
+-------+ +------+ +---------+ +-----------+
|
||||
| Piper | -> | DBus | -> | ratbagd | -> | libratbag | -> device
|
||||
+-------+ +------+ +---------+ +-----------+
|
||||
|
||||
|
||||
Inside libratbag, we have the general frontend and API. Each device is
|
||||
handled by a HW-specific backend. That HW backend is responsible for the
|
||||
device-specific communication (usually some vendor-specific HID protocol).
|
||||
|
||||
+---------+ +-----+ +------------+ +----------+
|
||||
| ratbagd | -> | API | -> | hw backend | -> | protocol | -> device
|
||||
+---------+ +-----+ +------------+ +----------+
|
||||
|
||||
The API layer is HW agnostic. Depend on the HW, the protocol may be part of
|
||||
the driver implementation (e.g. etekcity) or a separate set of files
|
||||
@@ -24,36 +114,24 @@ implemented. The HW driver then only accesses the bits required for
|
||||
libratbag. This allows us to optionally export the protocol as separate
|
||||
library in the future, if other projects require it.
|
||||
|
||||
Adding Devices
|
||||
--------------
|
||||
Adding Devices to libratbag
|
||||
---------------------------
|
||||
|
||||
As of commit 3605bede4 libratbag now uses a hwdb entry to match the device
|
||||
with the drivers. To access a device through libratbag, the udev property
|
||||
RATBAG_DRIVER must be set for a device's event node. Check with
|
||||
libratbag relies on a device database to match a device with the drivers.
|
||||
See the [data/devices/](https://github.com/libratbag/libratbag/tree/master/data/devices)
|
||||
directory for the set of known devices. These files
|
||||
are usually installed into `$prefix/$datadir` (e.g. `/usr/share/libratbag/`).
|
||||
|
||||
sudo udevadm info /sys/class/input/eventX | grep RATBAG_DRIVER
|
||||
Adding a new device can be as simple as adding a new `.device` file. This is
|
||||
the case for many devices with a shared protocol (e.g. Logitech's HID++).
|
||||
See the
|
||||
[data/devices/device.example](https://github.com/libratbag/libratbag/tree/master/data/devices/device.example)
|
||||
file for guidance on what information must be set. Look for existing devices
|
||||
from the same vendor as guidance too.
|
||||
|
||||
If your device is not yet assigned the property, it is not in the hwdb. It
|
||||
may however be supported by one of our existing drivers. Try enabling it by
|
||||
adding the device vendor-id/product-id to the hwdb file in
|
||||
`hwdb/70-libratbag-mouse.hwdb`. For example, for a HID++ 1.0 device, edit
|
||||
the 70-libratbag-mouse.hwdb file and add an entry with `RATBAG_DRIVER=hidpp10`.
|
||||
For the other drivers, look for the id of the driver in driver-{drivername}.c
|
||||
file and do the same.
|
||||
|
||||
Once your device is added to the hwdb, install libratbag and trigger a hwdb
|
||||
update:
|
||||
|
||||
sudo udevadm hwdb --update
|
||||
sudo udevadm control --reload
|
||||
|
||||
Then unplug/replug your mouse. `RATBAG_DRIVER` should appear in the udev
|
||||
properties of your device with the value you previously set. If the property
|
||||
is not assigned, the hwdb entry does not correctly match your device or the
|
||||
installed udev rules/hwdb entries are not picked up by udev.
|
||||
|
||||
If the device doesn't work, you'll have to start reverse-engineering the
|
||||
device-specific protocol. Good luck :)
|
||||
If the device has a different protocol and doesn't work after adding the
|
||||
device file, you'll have to start reverse-engineering the device-specific
|
||||
protocol. Good luck :)
|
||||
|
||||
Source
|
||||
------
|
||||
@@ -63,20 +141,20 @@ Source
|
||||
Bugs
|
||||
----
|
||||
|
||||
Bugs can be reported in the issue tracker on our github repo:
|
||||
https://github.com/libratbag/libratbag/issues
|
||||
Bugs can be reported in [our issue tracker](https://github.com/libratbag/libratbag/issues)
|
||||
|
||||
Mailing list
|
||||
------------
|
||||
|
||||
libratbag discussions happen on the input-tools mailing list hosted on
|
||||
freedesktop.org: http://lists.freedesktop.org/archives/input-tools/
|
||||
libratbag discussions happen on the [input-tools mailing
|
||||
list](http://lists.freedesktop.org/archives/input-tools/) hosted on
|
||||
freedesktop.org
|
||||
|
||||
Device-specific notes
|
||||
---------------------
|
||||
|
||||
A number of device-specific notes and observations can be found in our
|
||||
"device-notes" repository: http://libratbag.github.io/device-notes/
|
||||
wiki: https://github.com/libratbag/libratbag/wiki/Devices
|
||||
|
||||
License
|
||||
-------
|
||||
@@ -92,6 +170,4 @@ libratbag is licensed under the MIT license.
|
||||
|
||||
See the COPYING file for the full license information.
|
||||
|
||||
[](https://semaphoreci.com/libratbag/libratbag)
|
||||
|
||||
*/
|
||||
[](https://circleci.com/gh/libratbag/libratbag)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
test -n "$srcdir" || srcdir=`dirname "$0"`
|
||||
test -n "$srcdir" || srcdir=.
|
||||
(
|
||||
cd "$srcdir" &&
|
||||
autoreconf --force -v --install
|
||||
) || exit
|
||||
test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
|
||||
164
configure.ac
164
configure.ac
@@ -1,164 +0,0 @@
|
||||
AC_PREREQ([2.64])
|
||||
|
||||
m4_define([libratbag_major_version], [0])
|
||||
m4_define([libratbag_minor_version], [3])
|
||||
m4_define([libratbag_micro_version], [0])
|
||||
m4_define([libratbag_version],
|
||||
[libratbag_major_version.libratbag_minor_version.libratbag_micro_version])
|
||||
|
||||
AC_INIT([libratbag],
|
||||
[libratbag_version],
|
||||
[],
|
||||
[libratbag],
|
||||
[])
|
||||
|
||||
AC_SUBST([LIBRATBAG_VERSION_MAJOR], [libratbag_major_version])
|
||||
AC_SUBST([LIBRATBAG_VERSION_MINOR], [libratbag_minor_version])
|
||||
AC_SUBST([LIBRATBAG_VERSION_MICRO], [libratbag_micro_version])
|
||||
AC_SUBST([LIBRATBAG_VERSION], [libratbag_version])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
|
||||
|
||||
# Before making a release, the LIBRATBAG_LT_VERSION and LIBLUR_LT_VERSION
|
||||
# strings should be modified.
|
||||
# The strings are of the form C:R:A.
|
||||
# a) If binary compatibility has been broken (eg removed or changed interfaces)
|
||||
# change to C+1:0:0.
|
||||
# b) If interfaces have been changed or added, but binary compatibility has
|
||||
# been preserved, change to C+1:0:A+1
|
||||
# c) If the interface is the same as the previous version, change to C:R+1:A
|
||||
LIBRATBAG_LT_VERSION=2:0:0
|
||||
LIBLUR_LT_VERSION=2:0:0
|
||||
AC_SUBST(LIBRATBAG_LT_VERSION)
|
||||
AC_SUBST(LIBLUR_LT_VERSION)
|
||||
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
# Check for programs
|
||||
AC_PROG_CC_C99
|
||||
AC_PROG_CXX # Only used by build C++ test
|
||||
AC_PROG_GREP
|
||||
|
||||
# Initialize libtool
|
||||
LT_PREREQ([2.2])
|
||||
LT_INIT
|
||||
|
||||
PKG_PROG_PKG_CONFIG()
|
||||
PKG_CHECK_MODULES(LIBUDEV, [libudev])
|
||||
PKG_CHECK_MODULES(LIBEVDEV, [libevdev])
|
||||
|
||||
if test "x$GCC" = "xyes"; then
|
||||
GCC_CXXFLAGS="-Wall -Wextra -Wno-unused-parameter -g -fvisibility=hidden"
|
||||
GCC_CFLAGS="$GCC_CXXFLAGS -Wmissing-prototypes -Wstrict-prototypes"
|
||||
fi
|
||||
AC_SUBST(GCC_CFLAGS)
|
||||
AC_SUBST(GCC_CXXFLAGS)
|
||||
|
||||
AC_ARG_WITH(udev-base-dir, AS_HELP_STRING([--with-udev-base-dir=DIR], [where udev base directory is]))
|
||||
if test -n "$with_udev_base_dir" ; then
|
||||
UDEV_BASE_DIR="$with_udev_base_dir"
|
||||
else
|
||||
UDEV_BASE_DIR="/usr/lib/udev"
|
||||
fi
|
||||
AC_SUBST(UDEV_BASE_DIR)
|
||||
|
||||
AC_ARG_ENABLE([documentation],
|
||||
[AC_HELP_STRING([--enable-documentation],
|
||||
[Enable building the documentation (default=auto)])],
|
||||
[build_documentation="$enableval"],
|
||||
[build_documentation="auto"])
|
||||
|
||||
if test "x$build_documentation" = "xyes" -o "x$build_documentation" = "xauto"; then
|
||||
AC_PATH_PROG(DOXYGEN, doxygen)
|
||||
if test "x$DOXYGEN" = "x"; then
|
||||
if test "x$build_documentation" = "xyes"; then
|
||||
AC_MSG_ERROR([Documentation build requested but doxygen not found. Install doxygen or disable the documentation using --disable-documentation])
|
||||
fi
|
||||
else
|
||||
AC_MSG_CHECKING([for compatible doxygen version])
|
||||
doxygen_version=`$DOXYGEN --version`
|
||||
AS_VERSION_COMPARE([$doxygen_version], [1.6.0],
|
||||
[AC_MSG_RESULT([no])
|
||||
DOXYGEN=""],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([yes])])
|
||||
if test "x$DOXYGEN" = "x" -a "x$build_documentation" = "xyes"; then
|
||||
AC_MSG_ERROR([Doxygen $doxygen_version too old. Doxygen 1.6+ required for documentation build. Install required doxygen version or disable the documentation using --disable-documentation])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(DOT, dot)
|
||||
if test "x$DOT" = "x"; then
|
||||
if test "x$build_documentation" = "xyes"; then
|
||||
AC_MSG_ERROR([Documentation build requested but graphviz's dot not found. Install graphviz or disable the documentation using --disable-documentation])
|
||||
fi
|
||||
else
|
||||
AC_MSG_CHECKING([for compatible dot version])
|
||||
dot_version=`$DOT -V 2>&1|$GREP -oP '(?<=version\W)@<:@0-9.@:>@*(?=\W(.*))'`
|
||||
AS_VERSION_COMPARE([$dot_version], [2.26.0],
|
||||
[AC_MSG_RESULT([no])
|
||||
DOT=""],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([yes])])
|
||||
if test "x$DOT" = "x" -a "x$build_documentation" = "xyes"; then
|
||||
AC_MSG_ERROR([Graphviz dot $dot_version too old. Graphviz 2.26+ required for documentation build. Install required graphviz version or disable the documentation using --disable-documentation])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$DOXYGEN" != "x" -a "x$DOT" != "x"; then
|
||||
build_documentation="yes"
|
||||
else
|
||||
build_documentation="no"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(tests,
|
||||
AS_HELP_STRING([--enable-tests], [Build the tests (default=auto)]),
|
||||
[build_tests="$enableval"],
|
||||
[build_tests="auto"])
|
||||
|
||||
PKG_CHECK_MODULES(CHECK, [check >= 0.9.10], [HAVE_CHECK="yes"], [HAVE_CHECK="no"])
|
||||
|
||||
if test "x$build_tests" = "xauto"; then
|
||||
build_tests="$HAVE_CHECK"
|
||||
fi
|
||||
if test "x$build_tests" = "xyes"; then
|
||||
if test "x$HAVE_CHECK" = "xno"; then
|
||||
AC_MSG_ERROR([Cannot build tests, check is missing])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(VALGRIND, [valgrind])
|
||||
fi
|
||||
|
||||
AC_DEFINE(BUILD_TESTS, [1], ["Build the test suite])
|
||||
AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" != "x"])
|
||||
AM_CONDITIONAL(BUILD_TESTS, [test "x$build_tests" = "xyes"])
|
||||
AM_CONDITIONAL(BUILD_DOCS, [test "x$build_documentation" = "xyes"])
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
data/Makefile
|
||||
doc/Makefile
|
||||
doc/libratbag.doxygen
|
||||
hwdb/Makefile
|
||||
src/Makefile
|
||||
src/libratbag.pc
|
||||
src/libratbag-version.h
|
||||
src/liblur.pc
|
||||
test/Makefile
|
||||
tools/Makefile])
|
||||
AC_CONFIG_FILES([test/symbols-leak-test],
|
||||
[chmod +x test/symbols-leak-test])
|
||||
AC_OUTPUT
|
||||
|
||||
AC_MSG_RESULT([
|
||||
Prefix ${prefix}
|
||||
udev base directory: ${UDEV_BASE_DIR}
|
||||
|
||||
Build documentation ${build_documentation}
|
||||
Build tests ${build_tests}
|
||||
Tests use valgrind ${VALGRIND}
|
||||
])
|
||||
@@ -1,2 +0,0 @@
|
||||
libratbagdatadir = $(datadir)/libratbag
|
||||
dist_libratbagdata_DATA = $(shell find $(top_srcdir)/data -name "*.svg" -printf "%P\n")
|
||||
11
data/devices/README.md
Normal file
11
data/devices/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
libratbag data files
|
||||
====================
|
||||
|
||||
This directory contains the data files for each supported device. libratbag
|
||||
reads these files to identify the backend driver for any given device. If a
|
||||
device is not listed, libratbag will not support it.
|
||||
|
||||
See the device.example file for instructions on the various options.
|
||||
|
||||
See the libratbag wiki for more information:
|
||||
https://github.com/libratbag/libratbag/wiki/Adding-a-device/
|
||||
227
data/devices/data-parse-test.py
Executable file
227
data/devices/data-parse-test.py
Executable file
@@ -0,0 +1,227 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright © 2017 Red Hat, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Device data verification script
|
||||
#
|
||||
|
||||
import argparse
|
||||
import configparser
|
||||
import re
|
||||
|
||||
|
||||
def assertIn(element, l):
|
||||
if element not in l:
|
||||
raise AssertionError('{} must be in {}'.format(element, l))
|
||||
|
||||
|
||||
def assertNotIn(element, l):
|
||||
if element in l:
|
||||
raise AssertionError('{} must not be in {}'.format(element, l))
|
||||
|
||||
|
||||
def check_match_str(string):
|
||||
bustypes = ['usb', 'bluetooth']
|
||||
|
||||
matches = string.split(';')
|
||||
for match in matches:
|
||||
if not match: # empty string if trailing ;
|
||||
continue
|
||||
|
||||
parts = match.split(':')
|
||||
assert(len(parts) == 3)
|
||||
assertIn(parts[0], bustypes)
|
||||
vid = parts[1]
|
||||
assert(vid == '{:04x}'.format(int(vid, 16)))
|
||||
pid = parts[2]
|
||||
assert(pid == '{:04x}'.format(int(pid, 16)))
|
||||
|
||||
|
||||
def check_ledtypes_str(string):
|
||||
permitted_types = ['logo', 'side', 'battery', 'dpi', 'switches']
|
||||
|
||||
types = string.split(';')
|
||||
for t in types:
|
||||
if not t: # emtpy string if trailing ;
|
||||
continue
|
||||
|
||||
assertIn(t, permitted_types)
|
||||
|
||||
|
||||
def check_section_device(section):
|
||||
required_keys = ['Name', 'Driver', 'DeviceMatch']
|
||||
permitted_keys = required_keys + ['LedTypes']
|
||||
|
||||
for key in section.keys():
|
||||
assertIn(key, permitted_keys)
|
||||
|
||||
for r in required_keys:
|
||||
assertIn(r, section)
|
||||
|
||||
try:
|
||||
check_ledtypes_str(section['LedTypes'])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
check_match_str(section['DeviceMatch'])
|
||||
|
||||
|
||||
def check_dpi_range_str(string):
|
||||
import re
|
||||
|
||||
m = re.search('^([0-9]+):([0-9]+)@([0-9.]+)$', string)
|
||||
assert(m is not None)
|
||||
min = int(m.group(1))
|
||||
max = int(m.group(2))
|
||||
steps = float(m.group(3))
|
||||
|
||||
assert(min >= 0 and min <= 400)
|
||||
assert(max >= 2000 and max <= 12000)
|
||||
assert(steps > 0 and steps <= 100)
|
||||
|
||||
if int(steps) == steps:
|
||||
steps = int(steps)
|
||||
|
||||
assert(string == '{}:{}@{}'.format(min, max, steps))
|
||||
|
||||
|
||||
def check_dpi_list_str(string):
|
||||
entries = string.split(';')
|
||||
# Remove possible empty last entry if trailing with a ;
|
||||
if not entries[len(entries) - 1]:
|
||||
entries = entries[:-1]
|
||||
|
||||
for idx, entry in enumerate(entries):
|
||||
dpi = int(entry)
|
||||
assert(dpi >= 0 and dpi <= 12000)
|
||||
if idx > 0:
|
||||
prev = entries[idx - 1]
|
||||
prev_dpi = int(prev)
|
||||
assert(dpi > prev_dpi)
|
||||
|
||||
|
||||
def check_profile_type_str(string):
|
||||
types = ['G9', 'G500', 'G700']
|
||||
assertIn(string, types)
|
||||
|
||||
|
||||
def check_section_hidpp10(section):
|
||||
permitted = ['Profiles', 'ProfileType', 'DpiRange', 'DpiList', 'DeviceIndex', 'Leds']
|
||||
for key in section.keys():
|
||||
assertIn(key, permitted)
|
||||
|
||||
try:
|
||||
nprofiles = int(section['Profiles'])
|
||||
# 10 is arbitrarily chosen
|
||||
assert(nprofiles > 0 and nprofiles < 10)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
index = int(section['DeviceIndex'], 16)
|
||||
assert(index > 0 and index <= 0xff)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
check_dpi_range_str(section['DpiRange'])
|
||||
assertNotIn('DpiList', section.keys())
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
check_dpi_list_str(section['DpiList'])
|
||||
assertNotIn('DpiRange', section.keys())
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
check_profile_type_str(section['ProfileType'])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
leds = int(section['Leds'])
|
||||
# 10 is arbitrarily chosen
|
||||
assert(leds > 0 and leds < 10)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
def check_section_hidpp20(section):
|
||||
permitted = ['DeviceIndex', 'Quirk']
|
||||
for key in section.keys():
|
||||
assertIn(key, permitted)
|
||||
|
||||
try:
|
||||
index = int(section['DeviceIndex'], 16)
|
||||
assert(index > 0 and index <= 0xff)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
def check_section_driver(driver, section):
|
||||
if driver == 'hidpp10':
|
||||
check_section_hidpp10(section)
|
||||
elif driver == 'hidpp20':
|
||||
check_section_hidpp20(section)
|
||||
else:
|
||||
assert('Unsupported driver section {}'.format(driver))
|
||||
|
||||
|
||||
def validate_data_file_name(path):
|
||||
# Matching any of the characters in the regular expression will throw an
|
||||
# error. Currently only tests the square brackets [], parentheses, and curly
|
||||
# braces.
|
||||
illegal_characters_regex = '([\[\]\{\}\(\)])'
|
||||
found_characters = re.findall(illegal_characters_regex, path)
|
||||
if found_characters:
|
||||
raise AssertionError("data file name '{}' contains illegal characters: '{}'".format(path, ''.join(found_characters)))
|
||||
|
||||
def parse_data_file(path):
|
||||
print('Parsing file {}'.format(path))
|
||||
data = configparser.ConfigParser(strict=True)
|
||||
# Don't convert to lowercase
|
||||
data.optionxform = lambda option: option
|
||||
data.read(path)
|
||||
|
||||
assertIn('Device', data.sections())
|
||||
check_section_device(data['Device'])
|
||||
|
||||
driver = data['Device']['Driver']
|
||||
driver_section = 'Driver/{}'.format(driver)
|
||||
|
||||
permitted_sections = ['Device', driver_section]
|
||||
for s in data.sections():
|
||||
assertIn(s, permitted_sections)
|
||||
|
||||
if data.has_section(driver_section):
|
||||
check_section_driver(driver, data[driver_section])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Device data-file checker")
|
||||
parser.add_argument('file', nargs='+')
|
||||
args = parser.parse_args()
|
||||
for path in args.file:
|
||||
validate_data_file_name(path)
|
||||
parse_data_file(path)
|
||||
54
data/devices/device.example
Normal file
54
data/devices/device.example
Normal file
@@ -0,0 +1,54 @@
|
||||
# Example description file for a libratbag device
|
||||
#
|
||||
# Make sure the file has a recognizable name with a '.device' suffix
|
||||
|
||||
[Device]
|
||||
# The kernel name of the device. This name is not used by libratbag, it is
|
||||
# used by debugging tools.
|
||||
Name=Logitech Example Device
|
||||
|
||||
# DeviceMatch is a triplet of bus:vid:pid, where bus is 'usb' or bluetooth'
|
||||
# and pid/vid are lowercase 4-digit hexadecimal numbers with preceding
|
||||
# zeroes.
|
||||
DeviceMatch=usb:12ab:00f2
|
||||
|
||||
# The libratbag driver backend
|
||||
Driver=hidpp10
|
||||
|
||||
# The types of the LEDs, in the indexed order they appear in, separated by a
|
||||
# semicolon.
|
||||
# Allowed values: logo, side, battery, dpi
|
||||
LedTypes=logo;side
|
||||
|
||||
# Only one group of driver-specific properties is permitted and it must be
|
||||
# [Driver/<drivername>]. It is a bug do have any other [Driver/foo] group in
|
||||
# a device file, but this example file lists all.
|
||||
|
||||
[Driver/hidpp10]
|
||||
# The number of profiles, must be greater than 0
|
||||
Profiles=1
|
||||
|
||||
# The type of the profile
|
||||
ProfileType=G9
|
||||
|
||||
# The range of available resolutions in the form min:max@step
|
||||
# Mutually exclusive with DpiList
|
||||
DpiRange=50:5700@50
|
||||
|
||||
# The list of available resolutions, separated by semicolons.
|
||||
# Mutually exclusive with DpiRange
|
||||
# Where possible, DpiRange should be preferred
|
||||
DpiList=50;200;400;800
|
||||
|
||||
# The HID++ 1.0 device index
|
||||
# Should be unset unless required
|
||||
# DeviceIndex=1
|
||||
|
||||
# The number of LEDs
|
||||
Leds=1
|
||||
|
||||
|
||||
[Driver/hidpp20]
|
||||
# The HID++ 2.0 device index
|
||||
# Should be unset unless required
|
||||
# DeviceIndex=1
|
||||
57
data/devices/duplicate-check.py
Executable file
57
data/devices/duplicate-check.py
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright © 2018 Red Hat, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import configparser
|
||||
|
||||
|
||||
def parse_data_file(path):
|
||||
data = configparser.ConfigParser(strict=True)
|
||||
# Don't convert to lowercase
|
||||
data.optionxform = lambda option: option
|
||||
data.read(path)
|
||||
|
||||
matches = data['Device']['DeviceMatch']
|
||||
return matches.split(';')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='Device duplicate match checker')
|
||||
parser.add_argument('file', nargs='+')
|
||||
args = parser.parse_args()
|
||||
device_matches = {}
|
||||
duplicates = False
|
||||
for path in args.file:
|
||||
matches = parse_data_file(path)
|
||||
fname = os.path.basename(path)
|
||||
for m in matches:
|
||||
if m in device_matches:
|
||||
print('Duplicate DeviceMatch={} in {} and {}'.format(m, fname, device_matches[m]))
|
||||
duplicates = True
|
||||
device_matches[m] = fname
|
||||
|
||||
if duplicates:
|
||||
sys.exit(1)
|
||||
4
data/devices/etekcity-scroll-alpha.device
Normal file
4
data/devices/etekcity-scroll-alpha.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Etekcity Scroll Alpha
|
||||
DeviceMatch=usb:1ea7:4011
|
||||
Driver=etekcity
|
||||
5
data/devices/gskill-MX-780.device
Normal file
5
data/devices/gskill-MX-780.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# G.Skill MX-780
|
||||
[Device]
|
||||
Name=G.Skill MX-780
|
||||
DeviceMatch=usb:28da:3101
|
||||
Driver=gskill
|
||||
5
data/devices/logitech-M325.device
Normal file
5
data/devices/logitech-M325.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech M325 over unifying
|
||||
[Device]
|
||||
Name=Logitech M325
|
||||
DeviceMatch=usb:046d:400a
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-M570.device
Normal file
5
data/devices/logitech-M570.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech M570
|
||||
[Device]
|
||||
Name=Logitech M570
|
||||
DeviceMatch=usb:046d:1028
|
||||
Driver=hidpp10
|
||||
5
data/devices/logitech-M585-M590.device
Normal file
5
data/devices/logitech-M585-M590.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech M585/M590
|
||||
[Device]
|
||||
Name=Logitech M585/M590
|
||||
DeviceMatch=usb:046d:406b;bluetooth:046d:b01b
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-M705.device
Normal file
5
data/devices/logitech-M705.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech M705
|
||||
[Device]
|
||||
Name=Logitech M705
|
||||
DeviceMatch=usb:046d:101b
|
||||
Driver=hidpp10
|
||||
4
data/devices/logitech-MX-Anywhere2.device
Normal file
4
data/devices/logitech-MX-Anywhere2.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech MX Anywhere 2
|
||||
DeviceMatch=usb:046d:404a;bluetooth:046d:b013;bluetooth:046d:b018
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-MX-Anywhere2S.device
Normal file
4
data/devices/logitech-MX-Anywhere2S.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech MX Anywhere 2S
|
||||
DeviceMatch=bluetooth:046d:b01a;usb:046d:406a
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-MX-Ergo.device
Normal file
5
data/devices/logitech-MX-Ergo.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech MX Ergo
|
||||
[Device]
|
||||
Name=Logitech MX Ergo
|
||||
DeviceMatch=bluetooth:046d:b01d;usb:046d:406f
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-MX-Master-2S.device
Normal file
5
data/devices/logitech-MX-Master-2S.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech MX Master 2S
|
||||
[Device]
|
||||
Name=Logitech MX Master 2S
|
||||
DeviceMatch=bluetooth:046d:b019;usb:046d:4069
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-MX-Master-3.device
Normal file
5
data/devices/logitech-MX-Master-3.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech MX Master 3
|
||||
[Device]
|
||||
Name=Logitech MX Master 3
|
||||
DeviceMatch=bluetooth:046d:b023;usb:046d:4082
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-MX-Master.device
Normal file
5
data/devices/logitech-MX-Master.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech MX Master
|
||||
[Device]
|
||||
Name=Logitech MX Master
|
||||
DeviceMatch=usb:046d:4041;bluetooth:046d:b012;usb:046d:4060;bluetooth:046d:b017;bluetooth:046d:b01e;usb:046d:4071
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-MX-Vertical.device
Normal file
4
data/devices/logitech-MX-Vertical.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech MX Vertical
|
||||
DeviceMatch=usb:046d:407b
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-MX518.device
Normal file
4
data/devices/logitech-MX518.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=MX518
|
||||
DeviceMatch=usb:046d:c08e
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-Marathon-M705.device
Normal file
4
data/devices/logitech-Marathon-M705.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech Marathon M705
|
||||
DeviceMatch=usb:046d:406d
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-T650.device
Normal file
5
data/devices/logitech-T650.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech T650 over unifying
|
||||
[Device]
|
||||
Name=Logitech T650
|
||||
DeviceMatch=usb:046d:4101
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-Wireless-Touchpad.device
Normal file
5
data/devices/logitech-Wireless-Touchpad.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech Wireless Touchpad (Unifying)
|
||||
[Device]
|
||||
Name=Logitech Wireless Touchpad
|
||||
DeviceMatch=usb:046d:4011
|
||||
Driver=hidpp20
|
||||
8
data/devices/logitech-g-powerplay.device
Normal file
8
data/devices/logitech-g-powerplay.device
Normal file
@@ -0,0 +1,8 @@
|
||||
[Device]
|
||||
Name=Logitech G Powerplay
|
||||
DeviceMatch=usb:046d:405f
|
||||
LedTypes=logo
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
DeviceIndex=7
|
||||
8
data/devices/logitech-g-pro-wireless.device
Normal file
8
data/devices/logitech-g-pro-wireless.device
Normal file
@@ -0,0 +1,8 @@
|
||||
[Device]
|
||||
Name=Logitech G Pro Wireless
|
||||
DeviceMatch=usb:046d:4079;usb:046d:c088
|
||||
LedTypes=logo;battery;dpi;
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
DeviceIndex=1
|
||||
5
data/devices/logitech-g-pro.device
Normal file
5
data/devices/logitech-g-pro.device
Normal file
@@ -0,0 +1,5 @@
|
||||
[Device]
|
||||
Name=Logitech Gaming Mouse G Pro
|
||||
DeviceMatch=usb:046d:c085;usb:046d:c08c
|
||||
Driver=hidpp20
|
||||
LedTypes=logo;side
|
||||
6
data/devices/logitech-g102-g203.device
Normal file
6
data/devices/logitech-g102-g203.device
Normal file
@@ -0,0 +1,6 @@
|
||||
# G102 and G203 (USB)
|
||||
[Device]
|
||||
Name=Logitech Gaming Mouse G102/G103
|
||||
DeviceMatch=usb:046d:c084
|
||||
Driver=hidpp20
|
||||
LedTypes=logo;side;
|
||||
5
data/devices/logitech-g300.device
Normal file
5
data/devices/logitech-g300.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# WARNING: this file was automatically converted and has not yet been vetted
|
||||
[Device]
|
||||
Name=Logitech G300
|
||||
DeviceMatch=usb:046d:c246
|
||||
Driver=logitech_g300
|
||||
6
data/devices/logitech-g302.device
Normal file
6
data/devices/logitech-g302.device
Normal file
@@ -0,0 +1,6 @@
|
||||
# G302 over USB
|
||||
[Device]
|
||||
Name=Logitech Gaming Mouse G302
|
||||
DeviceMatch=usb:046d:c07f
|
||||
Driver=hidpp20
|
||||
LedTypes=logo;side;
|
||||
6
data/devices/logitech-g303.device
Normal file
6
data/devices/logitech-g303.device
Normal file
@@ -0,0 +1,6 @@
|
||||
# G303 over USB
|
||||
[Device]
|
||||
Name=Logitech Gaming Mouse G303
|
||||
DeviceMatch=usb:046d:c080
|
||||
Driver=hidpp20
|
||||
LedTypes=logo;side;
|
||||
7
data/devices/logitech-g305.device
Normal file
7
data/devices/logitech-g305.device
Normal file
@@ -0,0 +1,7 @@
|
||||
[Device]
|
||||
Name=Logitech Gaming Mouse G305
|
||||
DeviceMatch=usb:046d:4074
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
Quirk=G305
|
||||
5
data/devices/logitech-g402.device
Normal file
5
data/devices/logitech-g402.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech G402 Gaming Mouse USB
|
||||
[Device]
|
||||
Name=Logitech G402 Gaming Mouse
|
||||
DeviceMatch=usb:046d:c07e
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g403-hero.device
Normal file
4
data/devices/logitech-g403-hero.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G403 Hero
|
||||
DeviceMatch=usb:046d:c08f
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g403-wireless.device
Normal file
4
data/devices/logitech-g403-wireless.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G403 Wireless
|
||||
DeviceMatch=usb:046d:405d;usb:046d:c082
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g403.device
Normal file
4
data/devices/logitech-g403.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G403
|
||||
DeviceMatch=usb:046d:c083
|
||||
Driver=hidpp20
|
||||
9
data/devices/logitech-g5-2007.device
Normal file
9
data/devices/logitech-g5-2007.device
Normal file
@@ -0,0 +1,9 @@
|
||||
# Name=Logitech G5 2007
|
||||
[Device]
|
||||
Name=Logitech G5
|
||||
DeviceMatch=usb:046d:c049
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiList=400;800;1600;2000
|
||||
Profiles=1
|
||||
7
data/devices/logitech-g5.device
Normal file
7
data/devices/logitech-g5.device
Normal file
@@ -0,0 +1,7 @@
|
||||
[Device]
|
||||
Name=G5
|
||||
DeviceMatch=usb:046d:c041
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiList=400;800;1600;2000
|
||||
9
data/devices/logitech-g500.device
Normal file
9
data/devices/logitech-g500.device
Normal file
@@ -0,0 +1,9 @@
|
||||
[Device]
|
||||
Name=Logitech G500
|
||||
DeviceMatch=usb:046d:c068
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:5700@23.53
|
||||
ProfileType=G500
|
||||
Profiles=1
|
||||
9
data/devices/logitech-g500s.device
Normal file
9
data/devices/logitech-g500s.device
Normal file
@@ -0,0 +1,9 @@
|
||||
[Device]
|
||||
Name=Logitech G500s
|
||||
DeviceMatch=usb:046d:c24e
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:8200@50
|
||||
ProfileType=G500
|
||||
Profiles=1
|
||||
4
data/devices/logitech-g502-hero-wireless.device
Normal file
4
data/devices/logitech-g502-hero-wireless.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G502 Hero Wireless
|
||||
DeviceMatch=usb:046d:407f;usb:046d:c08d
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g502-hero.device
Normal file
4
data/devices/logitech-g502-hero.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G502 Hero
|
||||
DeviceMatch=usb:046d:c08b
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g502-proteus-core.device
Normal file
4
data/devices/logitech-g502-proteus-core.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G502 Proteus Core
|
||||
DeviceMatch=usb:046d:c07d
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g502-proteus-spectrum.device
Normal file
4
data/devices/logitech-g502-proteus-spectrum.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G502 Proteus Spectrum
|
||||
DeviceMatch=usb:046d:c332
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-g513.device
Normal file
5
data/devices/logitech-g513.device
Normal file
@@ -0,0 +1,5 @@
|
||||
[Device]
|
||||
Name=Logitech G513
|
||||
DeviceMatch=usb:046d:c33c
|
||||
LedTypes=switches
|
||||
Driver=hidpp20
|
||||
5
data/devices/logitech-g600.device
Normal file
5
data/devices/logitech-g600.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# WARNING: this file was automatically converted and has not yet been vetted
|
||||
[Device]
|
||||
Name=Logitech G600
|
||||
DeviceMatch=usb:046d:c24a
|
||||
Driver=logitech_g600
|
||||
9
data/devices/logitech-g602.device
Normal file
9
data/devices/logitech-g602.device
Normal file
@@ -0,0 +1,9 @@
|
||||
# Logitech G602 over wireless USB
|
||||
[Device]
|
||||
Name=Logitech G602
|
||||
DeviceMatch=usb:046d:402c
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
DeviceIndex=1
|
||||
Quirk=G602
|
||||
5
data/devices/logitech-g603.device
Normal file
5
data/devices/logitech-g603.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech G603
|
||||
[Device]
|
||||
Name=Logitech G603
|
||||
DeviceMatch=usb:046d:406c;bluetooth:046d:b01c
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g604.device
Normal file
4
data/devices/logitech-g604.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G604
|
||||
DeviceMatch=usb:046d:4085;bluetooth:046d:b024
|
||||
Driver=hidpp20
|
||||
9
data/devices/logitech-g7.device
Normal file
9
data/devices/logitech-g7.device
Normal file
@@ -0,0 +1,9 @@
|
||||
# Logitech G7
|
||||
# http://support.logitech.com/en_us/product/g7-laser-cordless-mouse/specs
|
||||
[Device]
|
||||
Name=Logitech G7
|
||||
DeviceMatch=usb:046d:c51a
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
Profiles=1
|
||||
12
data/devices/logitech-g700-wireless.device
Normal file
12
data/devices/logitech-g700-wireless.device
Normal file
@@ -0,0 +1,12 @@
|
||||
# Logitech G700 over wireless USB
|
||||
# http://support.logitech.com/en_us/product/wireless-gaming-mouse-g700/specs
|
||||
[Device]
|
||||
Name=Logitech G700
|
||||
DeviceMatch=usb:046d:c531
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:5700@23.53
|
||||
ProfileType=G700
|
||||
DeviceIndex=1
|
||||
Profiles=5
|
||||
11
data/devices/logitech-g700.device
Normal file
11
data/devices/logitech-g700.device
Normal file
@@ -0,0 +1,11 @@
|
||||
# Logitech G700 over USB
|
||||
# http://support.logitech.com/en_us/product/wireless-gaming-mouse-g700/specs
|
||||
[Device]
|
||||
Name=Logitech G700
|
||||
DeviceMatch=usb:046d:c06b
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:5700@23.53
|
||||
ProfileType=G700
|
||||
Profiles=5
|
||||
11
data/devices/logitech-g700s.device
Normal file
11
data/devices/logitech-g700s.device
Normal file
@@ -0,0 +1,11 @@
|
||||
# Logitech G700s over USB
|
||||
# http://support.logitech.com/en_us/product/g700s-rechargable-wireless-gaming-mouse/specs
|
||||
[Device]
|
||||
Name=Logitech G700s
|
||||
DeviceMatch=usb:046d:c07c
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:8200@50
|
||||
ProfileType=G700
|
||||
Profiles=5
|
||||
5
data/devices/logitech-g703-hero.device
Normal file
5
data/devices/logitech-g703-hero.device
Normal file
@@ -0,0 +1,5 @@
|
||||
[Device]
|
||||
Name=Logitech G703 Hero
|
||||
DeviceMatch=usb:046d:4086;usb:046d:c090
|
||||
Driver=hidpp20
|
||||
|
||||
5
data/devices/logitech-g703.device
Normal file
5
data/devices/logitech-g703.device
Normal file
@@ -0,0 +1,5 @@
|
||||
[Device]
|
||||
Name=Logitech G703
|
||||
DeviceMatch=usb:046d:c087;usb:046d:4070
|
||||
Driver=hidpp20
|
||||
|
||||
5
data/devices/logitech-g815.device
Normal file
5
data/devices/logitech-g815.device
Normal file
@@ -0,0 +1,5 @@
|
||||
[Device]
|
||||
Name=Logitech G815
|
||||
DeviceMatch=usb:046d:c33f
|
||||
LedTypes=logo;switches
|
||||
Driver=hidpp20
|
||||
13
data/devices/logitech-g9.device
Normal file
13
data/devices/logitech-g9.device
Normal file
@@ -0,0 +1,13 @@
|
||||
# Logitech G9
|
||||
# http://support.logitech.com/en_us/product/g9-laser-mouse/specs
|
||||
[Device]
|
||||
Name=Logitech G9
|
||||
DeviceMatch=usb:046d:c048
|
||||
LedTypes=dpi
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiList=200;400;600;800;1000;1200;1400;1600;1800;2000;2200;2400;2600;2800;3000;3200
|
||||
ProfileType=G9
|
||||
Profiles=5
|
||||
Leds=1
|
||||
5
data/devices/logitech-g900.device
Normal file
5
data/devices/logitech-g900.device
Normal file
@@ -0,0 +1,5 @@
|
||||
# Logitech G900
|
||||
[Device]
|
||||
Name=Logitech G900
|
||||
DeviceMatch=usb:046d:c081;usb:046d:4053
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g903-hero.device
Normal file
4
data/devices/logitech-g903-hero.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G903 Hero
|
||||
DeviceMatch=usb:046d:c091;usb:046d:4087
|
||||
Driver=hidpp20
|
||||
4
data/devices/logitech-g903.device
Normal file
4
data/devices/logitech-g903.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Logitech G903
|
||||
DeviceMatch=usb:046d:c086;usb:046d:4067
|
||||
Driver=hidpp20
|
||||
8
data/devices/logitech-g910.device
Normal file
8
data/devices/logitech-g910.device
Normal file
@@ -0,0 +1,8 @@
|
||||
[Device]
|
||||
Name=Logitech G910
|
||||
DeviceMatch=usb:046d:c335
|
||||
LedTypes=logo;switches
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
DeviceIndex=ff
|
||||
8
data/devices/logitech-g915.device
Normal file
8
data/devices/logitech-g915.device
Normal file
@@ -0,0 +1,8 @@
|
||||
[Device]
|
||||
Name=Logitech G915
|
||||
DeviceMatch=usb:046d:c33e
|
||||
LedTypes=logo;switches
|
||||
Driver=hidpp20
|
||||
|
||||
[Driver/hidpp20]
|
||||
DeviceIndex=1
|
||||
11
data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device
Normal file
11
data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device
Normal file
@@ -0,0 +1,11 @@
|
||||
# Logitech G9x [Call of Duty MW3 Edition]
|
||||
# http://support.logitech.com/en_us/product/laser-mouse-g9x/specs
|
||||
[Device]
|
||||
Name=Logitech G9x [Call of Duty MW3 Edition]
|
||||
DeviceMatch=usb:046d:c249
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:5700@23.53
|
||||
ProfileType=G500
|
||||
Profiles=5
|
||||
11
data/devices/logitech-g9x-Original.device
Normal file
11
data/devices/logitech-g9x-Original.device
Normal file
@@ -0,0 +1,11 @@
|
||||
# Logitech G9x [Original]
|
||||
# http://support.logitech.com/en_us/product/g9x-laser-mouse/specs
|
||||
[Device]
|
||||
Name=G9x [Original]
|
||||
DeviceMatch=usb:046d:c066
|
||||
Driver=hidpp10
|
||||
|
||||
[Driver/hidpp10]
|
||||
DpiRange=0:5700@23.53
|
||||
ProfileType=G500
|
||||
Profiles=5
|
||||
74
data/devices/receiver-check.py
Executable file
74
data/devices/receiver-check.py
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright © 2018 Red Hat, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import configparser
|
||||
|
||||
# see the IDs from
|
||||
# https://github.com/torvalds/linux/blob/master/drivers/hid/hid-ids.h#L772
|
||||
# https://github.com/torvalds/linux/blob/master/drivers/hid/hid-logitech-dj.c#L1826
|
||||
logitech_receivers = [
|
||||
0xc50c, # USB_DEVICE_ID_S510_RECEIVER
|
||||
0xc517, # USB_DEVICE_ID_S510_RECEIVER_2
|
||||
0xc512, # USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500
|
||||
0xc513, # USB_DEVICE_ID_MX3000_RECEIVER
|
||||
0xc51b, # USB_DEVICE_ID_LOGITECH_27MHZ_MOUSE_RECEIVER
|
||||
0xc52b, # USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER
|
||||
0xc52f, # USB_DEVICE_ID_LOGITECH_NANO_RECEIVER
|
||||
0xc532, # USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER_2
|
||||
0xc534, # USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_2
|
||||
0xc539, # USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1
|
||||
0xc53f, # USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1_1
|
||||
0xc53a, # USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_POWERPLAY
|
||||
]
|
||||
RECEIVERS = ['usb:046d:{}'.format(r) for r in logitech_receivers]
|
||||
|
||||
|
||||
def parse_data_file(path):
|
||||
data = configparser.ConfigParser(strict=True)
|
||||
# Don't convert to lowercase
|
||||
data.optionxform = lambda option: option
|
||||
data.read(path)
|
||||
|
||||
matches = data['Device']['DeviceMatch']
|
||||
return matches.split(';')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='Checks that no unifying receiver ID is in the device files')
|
||||
parser.add_argument('file', nargs='+')
|
||||
args = parser.parse_args()
|
||||
receiver_found = False
|
||||
for path in args.file:
|
||||
matches = parse_data_file(path)
|
||||
fname = os.path.basename(path)
|
||||
for m in matches:
|
||||
if m in RECEIVERS:
|
||||
print('Receiver ID {} found in file {}'.format(m, fname))
|
||||
receiver_found = True
|
||||
|
||||
if receiver_found:
|
||||
sys.exit(1)
|
||||
4
data/devices/roccat-kone-pure.device
Normal file
4
data/devices/roccat-kone-pure.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Roccat Kone Pure
|
||||
DeviceMatch=usb:1e7d:2dc2
|
||||
Driver=roccat-kone-pure
|
||||
4
data/devices/roccat-kone-xtd.device
Normal file
4
data/devices/roccat-kone-xtd.device
Normal file
@@ -0,0 +1,4 @@
|
||||
[Device]
|
||||
Name=Roccat Kone XTD
|
||||
DeviceMatch=usb:1e7d:2e22
|
||||
Driver=roccat
|
||||
11
data/devices/steelseries-kinzu-v2.device
Normal file
11
data/devices/steelseries-kinzu-v2.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Kinzu V2
|
||||
DeviceMatch=usb:1038:1378
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=1
|
||||
Buttons=3
|
||||
Leds=0
|
||||
DpiList=400;800;1600;3200
|
||||
MacroLength=0
|
||||
11
data/devices/steelseries-kinzu-v3.device
Normal file
11
data/devices/steelseries-kinzu-v3.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Kinzu V3
|
||||
DeviceMatch=usb:1038:1388
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=1
|
||||
Buttons=3
|
||||
Leds=0
|
||||
DpiList=400;800;1600;2000
|
||||
MacroLength=0
|
||||
11
data/devices/steelseries-rival-310.device
Normal file
11
data/devices/steelseries-rival-310.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Rival 310
|
||||
DeviceMatch=usb:1038:1720
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=2
|
||||
Buttons=6
|
||||
Leds=2
|
||||
DpiRange=100:12000@100
|
||||
MacroLength=1
|
||||
11
data/devices/steelseries-rival-600.device
Normal file
11
data/devices/steelseries-rival-600.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Rival 600
|
||||
DeviceMatch=usb:1038:1724
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=3
|
||||
Buttons=7
|
||||
Leds=8
|
||||
DpiRange=100:12000@100
|
||||
MacroLength=1
|
||||
11
data/devices/steelseries-rival.device
Normal file
11
data/devices/steelseries-rival.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Rival
|
||||
DeviceMatch=usb:1038:1384
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=1
|
||||
Buttons=6
|
||||
Leds=2
|
||||
DpiRange=50:6500@50
|
||||
MacroLength=1
|
||||
11
data/devices/steelseries-sensei-310.device
Normal file
11
data/devices/steelseries-sensei-310.device
Normal file
@@ -0,0 +1,11 @@
|
||||
[Device]
|
||||
Name=SteelSeries Sensei 310
|
||||
DeviceMatch=usb:1038:1722
|
||||
Driver=steelseries
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=2
|
||||
Buttons=8
|
||||
Leds=2
|
||||
DpiRange=100:12000@100
|
||||
MacroLength=1
|
||||
14
data/devices/steelseries-sensei-raw.device
Normal file
14
data/devices/steelseries-sensei-raw.device
Normal file
@@ -0,0 +1,14 @@
|
||||
[Device]
|
||||
Name=SteelSeries Sensei Raw
|
||||
DeviceMatch=usb:1038:1369
|
||||
Driver=steelseries
|
||||
LedTypes=logo;dpi
|
||||
|
||||
[Driver/steelseries]
|
||||
DeviceVersion=1
|
||||
Buttons=8
|
||||
Leds=1
|
||||
DpiRange=90:5670@90
|
||||
MacroLength=1
|
||||
MonoLed=1
|
||||
ShortButton=1
|
||||
@@ -1,553 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="414.6424mm"
|
||||
height="285.98199mm"
|
||||
viewBox="0 0 1469.2054 1013.322"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="etekcity.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4449">
|
||||
<stop
|
||||
style="stop-color:#a6a6a6;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4451" />
|
||||
<stop
|
||||
style="stop-color:#484848;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4453" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4336">
|
||||
<stop
|
||||
style="stop-color:#898989;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4338" />
|
||||
<stop
|
||||
style="stop-color:#898989;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4340" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4449"
|
||||
id="linearGradient4562"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.698701,0,0,1.698701,340.78058,475.26804)"
|
||||
x1="31.968746"
|
||||
y1="18.546629"
|
||||
x2="31.968746"
|
||||
y2="29.577879" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4449"
|
||||
id="linearGradient4215"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.698701,0,0,1.698701,111.54723,131.64433)"
|
||||
x1="31.968746"
|
||||
y1="18.546629"
|
||||
x2="31.968746"
|
||||
y2="29.577879" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4336"
|
||||
id="linearGradient4219"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="97.085503"
|
||||
y1="74.08123"
|
||||
x2="95.471596"
|
||||
y2="200.83122"
|
||||
gradientTransform="translate(0,85.407996)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.67909341"
|
||||
inkscape:cx="650.93837"
|
||||
inkscape:cy="527.80453"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer6"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="50"
|
||||
fit-margin-left="50"
|
||||
fit-margin-right="50"
|
||||
fit-margin-bottom="50"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Mouse"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(522.78594,97.359194)"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g4271"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="translate(0,85.407996)">
|
||||
<path
|
||||
sodipodi:nodetypes="cczcccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4249"
|
||||
d="m 421.23361,409.14757 c 4.4349,4.09496 9.16721,10.86185 32.57742,27.27412 4.08118,24.47294 2.40765,48.35999 1.01015,67.42768 -1.3975,19.06769 -9.52288,85.7367 -30.55711,85.7367 l -41.92133,-6.18719 8.9651,-171.72593 32.38801,-150.26019 27.05315,-2.27284 -2.70689,27.21098 -26.19294,53.47495 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="matrix(-1,0,0,1,580.95786,0)"
|
||||
id="use4266"
|
||||
xlink:href="#path4249"
|
||||
y="0"
|
||||
x="0"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 454.66443,352.50287 c -1.36013,24.01275 -2.08377,48.50286 -4.67196,71.59456 -2.99078,6.00192 -6.27359,9.95971 -9.59645,13.63706 l -17.17259,0 7.07107,-84.85281 z"
|
||||
id="path4251"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 438.62826,441.14375 -0.37881,7.82869 8.9651,7.3236 -2.77792,38.13326 -11.36421,12.12183 -0.37881,36.61803 -3.03046,4.54569 -18.43528,0 0,-106.69736 z"
|
||||
id="path4253"
|
||||
inkscape:connector-curvature="0" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path4251"
|
||||
id="use4275"
|
||||
transform="matrix(-1,0,0,1,580.95786,4.8707099e-7)"
|
||||
width="100%"
|
||||
height="100%" />
|
||||
<ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
|
||||
id="path4243"
|
||||
cx="290.47894"
|
||||
cy="231.07376"
|
||||
rx="57.5"
|
||||
ry="36.875" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path4253"
|
||||
id="use4277"
|
||||
transform="matrix(-1,0,0,1,580.95786,4.8707099e-7)"
|
||||
width="100%"
|
||||
height="100%" />
|
||||
<path
|
||||
style="fill:#282828;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 287.12424,258.10527 0.33399,-51.40625 c -49.49582,9.30987 -55.75059,5.0826 -65.29102,1.07031 -24.72942,18.12217 -56.91711,38.05902 -92.98242,48.79297 -3.12319,24.73221 -3.43113,59.04672 -2.64063,84.07422 24.02292,13.33912 22.23564,42.84183 24.32227,61.05859 2.08662,18.21675 9.10156,119.0332 9.10156,119.0332 l -3.28125,27.4375 29.4375,54.3711 c -0.20477,8.84869 -0.59006,18.78502 -3.83008,47.24609 -9.03868,2.58062 -17.44268,1.97853 -25.29101,-1.39258 0.11517,13.78573 -0.8627,27.56815 0.71875,41.27539 14.20182,16.9502 20.70885,34.21986 70.98828,70.96485 l 8.20703,14.6914 c 16.51245,9.42952 29.26306,14.71639 53.5625,18.88477 24.29944,-4.16838 37.05005,-9.45525 53.5625,-18.88477 l 8.20703,-14.6914 c 50.27943,-36.74499 56.78646,-54.01465 70.98828,-70.96485 1.58145,-13.70724 0.60163,-27.48966 0.7168,-41.27539 -7.84833,3.37111 -16.25038,3.9732 -25.28906,1.39258 -3.24002,-28.46107 -3.62531,-38.3974 -3.83008,-47.24609 l 29.43555,-54.3711 -3.2793,-27.4375 c 0,0 7.01494,-100.81645 9.10156,-119.0332 2.08663,-18.21676 0.29739,-47.71947 24.32031,-61.05859 0.7905,-25.0275 0.48452,-59.34201 -2.63867,-84.07422 -36.06531,-10.73395 -68.25495,-30.6708 -92.98437,-48.79297 -9.54043,4.01229 -15.79325,8.23956 -65.28907,-1.07031 l 0.33399,51.40625 z"
|
||||
id="path3441"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccscccccccccccccccccscccccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 290.44411,257.77582 0,148.84598"
|
||||
id="path4289"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 300.46818,468.48417 16.60743,25.35742 30.71289,0 -24.28516,-81.07226 -33.02344,-17.13086 -33.02539,17.13086 -24.28515,81.07226 30.71484,0 16.60742,-25.35742 z"
|
||||
id="path4247"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
|
||||
id="rect4245"
|
||||
width="31.607143"
|
||||
height="75.178574"
|
||||
x="274.67535"
|
||||
y="264.91306"
|
||||
rx="3.25"
|
||||
ry="3.25" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Actions"
|
||||
style="display:inline"
|
||||
transform="translate(647.36582,205.64997)">
|
||||
<path
|
||||
style="fill:url(#linearGradient4219);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 152.84766,110.283 c -17.81104,3.02933 -36.57571,6.1705 -54.244144,0.64648 -25.929275,18.82906 -54.231433,34.7539 -84.722657,44.87305 -2.267978,23.61933 -2.794179,47.45001 -1.847656,71.07617 18.144518,13.21721 22.915716,37.18855 23.587891,58.32032 1.804576,24.12767 4.185653,48.26187 6.046875,72.41992 l 118.802731,0.0762 0,-125.89453 -7.125,0 c -1.8005,0 -3.25,-1.4495 -3.25,-3.25 l 0,-68.67774 c 0,-1.8005 1.4495,-3.25 3.25,-3.25 l 2.79297,0 c -3.65158,-6.86961 -3.48047,-22.71099 -3.48047,-29.125 0,-8.30734 0.18214,-11.47599 0.18946,-17.21484 z"
|
||||
id="path4311"
|
||||
inkscape:connector-curvature="0" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path4311"
|
||||
id="use4348"
|
||||
transform="matrix(-1,0,0,1,332.05619,4.8707099e-7)"
|
||||
width="100%"
|
||||
height="100%" />
|
||||
<circle
|
||||
style="fill:#898989;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="path4352"
|
||||
cx="165.89903"
|
||||
cy="194.21156"
|
||||
r="13.13577" />
|
||||
<path
|
||||
style="fill:#898989;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 137.89648,308.63847 c -7.08138,23.63737 -14.16276,47.27474 -21.24414,70.91211 6.46875,0 12.9375,0 19.40625,0 5.5381,-8.45225 11.07362,-16.9062 16.61329,-25.35742 8.81901,0 17.63802,0 26.45703,0 5.53967,8.45122 11.07518,16.90517 16.61328,25.35742 6.4681,0 12.9362,0 19.40429,0 -7.08138,-23.63802 -14.16276,-47.27604 -21.24414,-70.91406 -9.33398,-4.84245 -18.66797,-9.6849 -28.00195,-14.52735 -9.33463,4.8431 -18.66927,9.6862 -28.00391,14.5293 z"
|
||||
id="path4357"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#898989;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.537109,248.04472 c -2.2402592,0.0287 -3.9856276,0.53324 -4.490234,2.23242 l 0.1484375,2.74414 c 1.566854,20.99222 0.9583123,42.50038 4.9707035,63.15039 2.505291,3.63263 4.593974,10.22639 10.0625,9.10547 2.27923,-0.28382 5.935234,1.35787 7.783203,-0.11133 -0.110687,-1.42127 -0.227935,-3.00203 -0.335938,-4.37109 -1.747534,-15.80777 -2.957208,-31.72139 -4.207031,-47.62695 -0.981314,-8.30104 -2.720121,-16.92373 -6.697266,-24.52539 -2.423075,-0.21119 -5.059619,-0.62548 -7.234375,-0.59766 z"
|
||||
id="use4396"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#898989;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 29.908203,336.79667 c -2.498699,0.0115 -4.997394,0.0237 -7.496094,0.0352 1.076291,6.12748 -5.106457,9.59114 -8.654297,13.10351 -0.801383,7.60601 1.388334,15.20355 1.240235,22.90625 0.386982,5.74471 -0.452066,12.90012 5.291015,16.36133 4.914007,3.76099 8.544715,9.60791 7.142579,15.97266 0.546689,9.90826 -1.025444,20.199 1.144531,29.53125 1.282147,0.72035 2.637282,0.97704 4.027344,1.01562 l 2.785156,-23.28515 c 0,0 -2.865754,-41.1439 -5.480469,-75.64063 z"
|
||||
id="use4398"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#898989;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 325.85938,248.27909 c -3.91081,0.0612 -7.82162,0.12234 -11.73243,0.1836 -3.99052,7.54373 -5.75751,16.10502 -6.7539,24.36914 l -4.36914,52.40039 c 4.98584,0.0372 11.46228,2.25512 14.20312,-3.56055 7.33121,-8.30294 4.7292,-20.04995 6.30078,-30.04492 0.96913,-14.44425 1.56431,-28.8791 2.35157,-43.34766 z"
|
||||
id="path4404"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#898989;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 305.09766,336.58964 c -1.06262,0.008 -2.13053,0.0756 -3.20118,0.15039 -2.61591,34.50868 -5.48437,75.69727 -5.48437,75.69727 l 2.78906,23.33203 c 1.63662,-0.029 3.18696,-0.39571 4.5293,-1.54883 1.37166,-12.4594 -0.25013,-25.66177 1.20508,-38.00586 4.53808,-5.87556 13.22025,-10.32447 11.56445,-19.05078 0.39672,-9.20118 1.90359,-18.85755 1.6582,-27.79492 -4.1312,-2.80281 -9.9803,-6.58258 -8.65039,-12.34961 -1.44987,-0.34149 -2.92443,-0.44095 -4.41015,-0.42969 z"
|
||||
id="path4406"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient4215);fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
d="m 165.89904,157.51634 -3.21162,5.56391 -3.21159,5.56059 3.66282,0 0,11.76151 2.76039,-1.59253 2.76039,1.59253 0,-11.76151 3.66282,0 -3.21161,-5.56059 -3.2116,-5.56391 z"
|
||||
id="path4441"
|
||||
inkscape:connector-curvature="0" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path4441"
|
||||
id="use4460"
|
||||
transform="matrix(1,0,0,-1,-4.295044e-6,388.30011)"
|
||||
width="100%"
|
||||
height="100%" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Leaders"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4556"
|
||||
d="m 395.13239,501.14005 -3.21162,5.56391 -3.21159,5.56059 3.66282,0 0,11.76151 2.76039,-1.59253 2.76039,1.59253 0,-11.76151 3.66282,0 -3.21161,-5.56059 -3.2116,-5.56391 z"
|
||||
style="display:inline;fill:url(#linearGradient4562);fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
<use
|
||||
style="display:inline"
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="matrix(1.0000001,0,0,-1.0000001,229.23333,737.5807)"
|
||||
id="use4558"
|
||||
xlink:href="#path4441"
|
||||
y="0"
|
||||
x="0" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 164.75586,327.92021 115.08162,-115.08161 95.36037,0"
|
||||
id="path4546"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 77.129499,171.52978 32.952959,22.802079"
|
||||
id="path4211"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 165.48259,195.09061 32.39613,0 0,-238.553341"
|
||||
id="path4213"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 256.78078,159.74937 333.77774,26.386719"
|
||||
id="path4215"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 375.15404,291.50573 -61.68003,0"
|
||||
id="path4221"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 375.28322,364.38474 -64.17738,0"
|
||||
id="path4225"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -175.41308,446.16063 16.018609,281.97114"
|
||||
id="path4227"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -177.6219,526.41468 23.381369,366.64285"
|
||||
id="path4229"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="Controls"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="27.097548"
|
||||
y="16.66757"
|
||||
id="text4473"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="27.097548"
|
||||
y="16.66757"
|
||||
id="tspan4217">Button0</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4477"
|
||||
y="21.853914"
|
||||
x="336.33337"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="21.853914"
|
||||
x="336.33337"
|
||||
id="tspan4479"
|
||||
sodipodi:role="line">Button1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="196.44098"
|
||||
y="-51.004951"
|
||||
id="text4481"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4483"
|
||||
x="196.44098"
|
||||
y="-51.004951">Button2</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4485"
|
||||
y="446.01364"
|
||||
x="-176.11456"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="446.01364"
|
||||
x="-176.11456"
|
||||
id="tspan4487"
|
||||
sodipodi:role="line">Button3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-177.07159"
|
||||
y="526.30017"
|
||||
id="text4489"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4491"
|
||||
x="-177.07159"
|
||||
y="526.30017">Button4</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4493"
|
||||
y="212.67909"
|
||||
x="375.72412"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="212.67909"
|
||||
x="375.72412"
|
||||
id="tspan4495"
|
||||
sodipodi:role="line">Button5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="375.72412"
|
||||
y="288.81161"
|
||||
id="text4497"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4499"
|
||||
x="375.72412"
|
||||
y="288.81161">Button6</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4501"
|
||||
y="364.41678"
|
||||
x="375.72412"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="364.41678"
|
||||
x="375.72412"
|
||||
id="tspan4503"
|
||||
sodipodi:role="line">Button7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="417.32373"
|
||||
y="526.42987"
|
||||
id="text4505"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4507"
|
||||
x="417.32373"
|
||||
y="526.42987">Button8</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4509"
|
||||
y="583.15552"
|
||||
x="417.32373"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="583.15552"
|
||||
x="417.32373"
|
||||
id="tspan4511"
|
||||
sodipodi:role="line">Button9</tspan></text>
|
||||
<g
|
||||
id="g4602"
|
||||
transform="translate(-140.12576,-153.50496)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4572"
|
||||
y="109.05057"
|
||||
x="-431.3205"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4576"
|
||||
y="109.05057"
|
||||
x="-431.3205"
|
||||
sodipodi:role="line">Resolution0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-431.3205"
|
||||
y="182.02396"
|
||||
id="text4580"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-431.3205"
|
||||
y="182.02396"
|
||||
id="tspan4582">Resolution1</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4584"
|
||||
y="254.99734"
|
||||
x="-431.3205"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4586"
|
||||
y="254.99734"
|
||||
x="-431.3205"
|
||||
sodipodi:role="line">Resolution2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-431.3205"
|
||||
y="327.97079"
|
||||
id="text4588"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-431.3205"
|
||||
y="327.97079"
|
||||
id="tspan4590">Resolution3</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4592"
|
||||
y="400.94421"
|
||||
x="-431.3205"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4594"
|
||||
y="400.94421"
|
||||
x="-431.3205"
|
||||
sodipodi:role="line">Resolution4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-431.3205"
|
||||
y="473.91763"
|
||||
id="text4596"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-431.3205"
|
||||
y="473.91763"
|
||||
id="tspan4598">Resolution5</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||
id="rect4600"
|
||||
width="323.85489"
|
||||
height="479.4184"
|
||||
x="-615.48309"
|
||||
y="-116.64217"
|
||||
rx="10.321068"
|
||||
ry="10.321068" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-591.40881"
|
||||
y="625.81189"
|
||||
id="text4211"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4213"
|
||||
x="-591.40881"
|
||||
y="625.81189">Current Profile</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer6"
|
||||
inkscape:label="Title">
|
||||
<text
|
||||
transform="translate(647.36582,205.64997)"
|
||||
xml:space="preserve"
|
||||
style="display:inline;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-271.95749"
|
||||
y="-131.81583"
|
||||
id="text4223"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4225"
|
||||
x="-271.95749"
|
||||
y="-131.81583"
|
||||
style="font-size:70.00000763px">Etekcity Scroll Alpha</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 27 KiB |
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 64 KiB |
@@ -1,389 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="414.6424mm"
|
||||
height="285.98199mm"
|
||||
viewBox="0 0 1469.2054 1013.322"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logitech-mx_master.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5204">
|
||||
<stop
|
||||
style="stop-color:#868686;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5206" />
|
||||
<stop
|
||||
style="stop-color:#868686;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5208" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5128">
|
||||
<stop
|
||||
style="stop-color:#3a3a3a;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5130" />
|
||||
<stop
|
||||
style="stop-color:#aaaaaa;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5132" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5128"
|
||||
id="linearGradient5134"
|
||||
x1="230.63638"
|
||||
y1="432.30179"
|
||||
x2="238.061"
|
||||
y2="447.85815"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
spreadMethod="reflect" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5204"
|
||||
id="linearGradient5210"
|
||||
x1="196.63423"
|
||||
y1="468.17209"
|
||||
x2="170.13423"
|
||||
y2="402.67206"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.70710678"
|
||||
inkscape:cx="672.09896"
|
||||
inkscape:cy="504.57351"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="50"
|
||||
fit-margin-left="50"
|
||||
fit-margin-right="50"
|
||||
fit-margin-bottom="50"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Mouse"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(522.78594,97.359194)"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<path
|
||||
style="fill:#433737;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 921.14258,351.92188 c -10.71472,0.3561 17.48242,40.65039 17.48242,40.65039 l -0.99805,38.58007 c -0.0632,-0.10181 -0.1163,-0.2052 -0.18164,-0.30664 -0.41273,0.4635 -0.8827,0.9276 -1.47656,1.39063 C 883.92622,472.81347 836.5,478.32226 756.5,516.32227 c -80,37.99997 -316.69239,159.29807 -343.5,147.5 -0.19217,-0.0846 -0.3462,-0.18445 -0.50195,-0.28321 -0.14711,0.0864 -0.35538,0.19871 -0.49805,0.28321 -0.0138,-0.0118 -0.0272,-0.0234 -0.041,-0.0352 l -0.0273,0.0156 c 20.65212,21.99316 41.34778,28.42752 134.68945,6.01954 l 67.87891,0 c 0,0 31.685,6.41255 73,41.25 56.21397,47.40048 70.15272,37.94645 213.83008,7.3789 120.72766,-25.68496 98.22343,-76.56575 107.07816,-168.1289 5.6329,-58.24749 15.6725,-114.94915 -35.90824,-161 -31.61176,-28.22275 -46.12465,-37.57431 -51.35742,-37.40039 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5084"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3d3d3d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 766.6582,304.5 c -179.15881,0.002 -367.84961,155.86523 -367.84961,155.86523 -21.93235,32.98189 -41.23548,69.54864 -57.98242,109.60157 7.5036,28.04106 30.67382,59.21512 71.17383,93.85547 59.9519,-35.50497 512.63903,-236.02476 512.5,-244 95.7156,51.99999 -269.006,189 -269,189 -12.27104,5.04673 -14.55606,11.0677 -7.5,18 l 2.06445,1.76953 0.002,0 11.89062,10.1875 c -0.62249,0.15805 -1.26128,0.30706 -1.87305,0.48242 -47.26127,13.54738 -84.55325,23.64795 -114.41015,30.79101 L 615,669.82227 l 63.40625,-16.95508 38.59961,33.06445 c 38.18376,34.64823 37.84255,32.06806 141.42187,14.14258 C 964.16532,681.77523 962.3307,680.80807 974.39258,545.2168 984.45817,432.06647 1011.3318,377.81074 858.42773,320.35742 828.82733,309.23515 797.88772,304.49969 766.6582,304.5 Z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5077"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="scccccccccsccccssss" />
|
||||
<path
|
||||
style="fill:#826c5e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 924.5,419.82227 c 0.13868,7.95534 -450.25292,207.4789 -512.00586,243.71484 0.15695,0.0995 0.31224,0.19994 0.50586,0.28516 26.80761,11.79809 263.5,-109.50001 343.5,-147.5 80,-38.00001 127.42622,-43.50878 179.46875,-84.08594 0.5964,-0.46501 1.06842,-0.93101 1.48242,-1.39649 -2.56726,-3.98332 -6.80221,-7.67699 -12.95117,-11.01757 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5079"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 633.2832,328.9668 c -128.50884,43.87332 -234.47461,131.39843 -234.47461,131.39843 -21.86064,32.87406 -41.10756,69.31169 -57.8164,109.21094 l 0.008,-0.004 61.25,-46.25 c -0.31467,-30.27892 8.67871,-33.61166 108.5,-91 105.67745,-60.75512 109.87649,-54.6167 115.74609,-80.49805 1.83541,-8.09301 4.52898,-16.4514 6.78711,-22.85742 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5101"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 640.70703,428.57422 c -3.04651,0.0756 -6.31444,0.73835 -9.96875,2.0918 -19.09188,7.07104 -141.89935,74.20682 -175.71484,98.99414 -48.59449,35.62053 -48.4375,14.14257 -48.4375,14.14257 l -4.24219,-20.85937 c 0,0 -0.0901,0.0489 -0.0937,0.0508 9.1e-4,0.11168 -10e-4,0.2157 0,0.32813 l -61.25,46.25 -0.008,0.004 c -0.0548,0.13093 -0.11124,0.25961 -0.16602,0.39063 7.5036,28.04104 30.67382,59.21512 71.17383,93.85547 0.14966,-0.0886 0.33959,-0.19447 0.49414,-0.28516 0.0169,-0.01 0.0397,-0.0213 0.0566,-0.0312 1.02546,-0.60112 2.16407,-1.25057 3.39844,-1.93945 0.2066,-0.11531 0.43415,-0.23971 0.64648,-0.35743 1.08032,-0.59888 2.2254,-1.22479 3.45118,-1.88476 0.32998,-0.17769 0.67334,-0.36095 1.01367,-0.54297 1.22538,-0.65535 2.51457,-1.33647 3.87109,-2.04687 0.32591,-0.17069 0.65104,-0.34183 0.98438,-0.51563 0.98003,-0.51099 2.03888,-1.05627 3.08203,-1.59375 1.50441,-0.77516 3.19823,-1.63034 4.83007,-2.45898 2.6812,-1.36148 5.48308,-2.77245 8.49219,-4.27149 1.45002,-0.72234 2.95192,-1.46789 4.47461,-2.2207 3.14575,-1.55527 6.43566,-3.16851 9.87696,-4.84766 1.7505,-0.85415 3.50304,-1.70917 5.32617,-2.59375 3.69907,-1.79476 7.57491,-3.665 11.55664,-5.57812 1.62203,-0.77935 3.19102,-1.53607 4.85742,-2.33399 4.85137,-2.32297 9.91021,-4.73306 15.11328,-7.20312 1.05862,-0.50256 2.06054,-0.98002 3.13281,-1.48828 6.27234,-2.97314 12.74159,-6.02841 19.44532,-9.18164 0.19493,-0.0917 0.37504,-0.1777 0.57031,-0.26954 0.88374,-0.4156 1.84183,-0.86083 2.73242,-1.27929 8.89106,-4.17765 18.33343,-8.58591 27.83008,-13.01563 9.48674,-4.42512 19.20352,-8.94432 29.15625,-13.5625 5.63004,-2.6124 11.17539,-5.18811 16.91992,-7.84765 11.03955,-5.11098 22.24511,-10.28776 33.57227,-15.51563 4.59686,-2.12162 9.06381,-4.18813 13.6875,-6.32031 31.79772,-14.66333 64.04275,-29.4992 94.89648,-43.72656 0.64347,-0.29672 1.23671,-0.57103 1.87891,-0.86719 -0.0661,-2.523 -0.5325,-5.27289 -1.4043,-8.3125 -2.95973,-10.3194 -36.14133,-35.93502 -56.06055,-50.55859 C 663.08118,438.83704 654.18972,428.94451 642,428.57812 c -0.42664,-0.0128 -0.85775,-0.0147 -1.29297,-0.004 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5107"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:1.00065422;stroke-opacity:1"
|
||||
id="rect5118"
|
||||
width="42.955582"
|
||||
height="22.140448"
|
||||
x="-63.730179"
|
||||
y="299.94894"
|
||||
rx="3.3438475"
|
||||
ry="3.162921"
|
||||
transform="matrix(0.89707316,-0.44188205,0.39545007,0.91848747,0,0)" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 275.08906,417.33778 4.375,22.875 80.75,-60.625 z"
|
||||
id="path5120"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 281.58906,443.33778 91.75,-68.625 c 10.87423,-8.13345 34.03844,-10.26653 -9.25,21.375 -37.38734,27.32814 -82.5,47.25 -82.5,47.25 z"
|
||||
id="path5122"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cssc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient5134);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 197.58906,448.96278 c 6.125,13 10.625,29.125 10.625,29.125 0,0 57.34269,-25.16319 68.25,-30.75 -0.13843,-9.48681 -3.52264,-22.72856 -8.375,-27.875 -27.125,3.75 -70.5,29.5 -70.5,29.5 z"
|
||||
id="path5124"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#797979;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 3.47828,341.26173 c 0,0 6.886406,9.46214 7.95495,30.22881 -9.7125082,0.38797 -22.45064,-1.59098 -48.96714,10.78339 -26.5165,12.37437 -35.70889,37.29989 -35.70889,37.29989 l -6.84404,-0.46967 -8.1731,-22.75242 c 0,0 5.196794,-22.7334 30.485095,-40.41753 C -32.486544,338.25007 3.47828,341.26173 3.47828,341.26173 Z"
|
||||
id="path5138"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccsccczc" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 527.89648,441.94336 c -11.21543,-6.8e-4 -35.91089,1.15173 -54.02148,10.37891 -20.66776,10.53002 -34.76604,36.66892 -38.41016,44.00195 l 7.17383,19.9707 c 2.6388,-7.65898 11.92913,-28.82418 37.36133,-42.34765 27.46537,-14.60461 48.83613,-10.8705 53.86328,-9.67383 -1.11415,-11.22385 -3.86953,-18.48609 -5.74414,-22.32617 -0.0929,-1.7e-4 -0.12786,-0.004 -0.22266,-0.004 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5140"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 485.25195,479.63281 c -26.5165,12.37437 -35.70886,37.34486 -35.70886,37.34486 9.75656,-6.29912 84.5483,-48.37571 84.5483,-48.37571 -6.04962,0.7682 -22.32294,-1.34352 -48.83944,11.03085 z"
|
||||
transform="translate(-522.78594,-97.359255)"
|
||||
id="path5145"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sccs" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Actions"
|
||||
style="display:inline"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
sodipodi:insensitive="true">
|
||||
<path
|
||||
style="display:inline;fill:#868686;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -6.1035156,230.91992 c -19.3024674,3.60682 -35.0488854,16.31894 -52.6556354,24.21599 -51.094769,27.0536 -101.437299,55.94388 -149.051399,88.65901 -9.95415,5.51243 -22.54214,11.99271 -33.83984,6.61914 -6.38959,-3.90926 -7.96324,-11.94005 -8.66992,-18.82617 -15.28799,12.40039 -32.51253,23.07504 -46.6875,36.30469 11.43671,32.54466 37.53518,57.07166 61.90234,80.5625 1.79409,1.58773 4.14015,-3.28155 6.15485,-2.80815 C -144.1825,402.09598 -56.798635,363.92186 29.448769,323.50255 46.66114,315.61589 63.86767,307.71041 80.912109,299.46484 75.326356,287.31278 62.865961,280.7519 53.502952,271.87742 35.5688,257.98999 18.22755,242.94827 -1.484375,231.63672 c -1.4916064,-0.46547 -3.0527704,-0.75113 -4.6191406,-0.7168 z"
|
||||
id="path5151"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:#868686;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -28.414062,137.02148 c -76.907488,29.50803 -148.819988,71.80459 -213.308758,122.89206 -13.55128,17.43946 -23.11685,37.54603 -33.88323,56.82187 -3.7754,7.32186 -7.34192,14.58222 -10.84707,22.04584 11.21464,-8.37958 22.86793,-16.47415 33.20898,-25.8125 -0.25698,-17.631 11.68533,-33.06792 26.42383,-41.59375 31.52229,-22.08766 66.11652,-39.23093 99.04413,-59.05073 30.395219,-17.37588 61.961588,-32.92482 91.295711,-52.0313 6.692064,-6.28955 7.910236,-15.49613 9.814453,-23.93359 l -0.935164,0.35421 -0.812882,0.30789 z"
|
||||
id="path5162"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:#868686;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 152.77364,310.2307 c 1.1582,6.05599 2.3164,12.11198 3.4746,18.16797 21.37631,-16.04948 42.75261,-32.09896 64.12891,-48.14843 -22.5345,9.99349 -45.06901,19.98697 -67.60351,29.98046 z"
|
||||
id="path5173"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:#868686;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 261.2834,263.28539 c -12.21657,2.16029 -20.42211,12.86093 -30.56476,19.12846 -18.40968,13.8199 -38.36778,28.59535 -55.81414,41.82076 29.28272,-15.22709 58.48771,-31.62916 82.88671,-54.0625 1.70896,-1.96865 4.73868,-4.48833 4.69532,-6.85547 -0.39767,-0.0641 -0.80252,-0.0596 -1.20313,-0.0312 z"
|
||||
id="path5187"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:url(#linearGradient5210);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 42.546875,449.04102 c 19.339052,15.73498 36.723013,34.10436 57.603515,47.67578 20.60808,9.36671 43.55773,2.08926 64.83959,-0.49809 35.57938,-6.15258 71.49952,-11.18454 106.39931,-20.59787 15.04923,-4.60526 29.72058,-14.93837 34.46618,-30.81811 9.43121,-25.52623 9.54274,-53.05503 12.87313,-79.81517 -0.62149,-4.24546 3.55982,-14.72991 -0.52003,-14.51534 -91.88723,32.85626 -183.77446,65.71253 -275.661695,98.5688 z"
|
||||
id="path5192"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="display:inline;fill:#868686;fill-opacity:1;stroke:none;stroke-width:1.00065422;stroke-opacity:1"
|
||||
d="m -27.103516,182.32422 c -10.397754,4.71799 -21.409505,9.91406 -30.929687,15.4375 2.508683,3.97971 3.88786,8.5168 5.707031,12.72266 10.007293,-5.84796 21.032198,-9.89858 31.039063,-15.81641 -1.598593,-4.02995 -3.118058,-9.77197 -5.816407,-12.34375 z"
|
||||
id="rect5212"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Leaders"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -345.36582,473.672 139,-91"
|
||||
id="path5269"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -367.36582,346.672 192,-87"
|
||||
id="path5271"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -336.36582,223.672 152,5"
|
||||
id="path5273"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 22.63418,39.672 -60,152"
|
||||
id="path5275"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 296.63418,105.672 -132,205"
|
||||
id="path5277"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 431.63418,222.672 -187,54"
|
||||
id="path5279"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 398.63418,512.672 -163,-63"
|
||||
id="path5281"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="Controls"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-352.13092"
|
||||
y="486.22949"
|
||||
id="text4473"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4475"
|
||||
x="-352.13092"
|
||||
y="486.22949">Button0</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4477"
|
||||
y="225.95509"
|
||||
x="-348.13092"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="225.95509"
|
||||
x="-348.13092"
|
||||
id="tspan4479"
|
||||
sodipodi:role="line">Button1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-376.13092"
|
||||
y="351.68076"
|
||||
id="text4481"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4483"
|
||||
x="-376.13092"
|
||||
y="351.68076">Button2</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4485"
|
||||
y="218.54855"
|
||||
x="442.71985"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="218.54855"
|
||||
x="442.71985"
|
||||
id="tspan4487"
|
||||
sodipodi:role="line">Button3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="296.71985"
|
||||
y="96.274208"
|
||||
id="text4489"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4491"
|
||||
x="296.71985"
|
||||
y="96.274208">Button4</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4493"
|
||||
y="524.99994"
|
||||
x="402.71985"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="524.99994"
|
||||
x="402.71985"
|
||||
id="tspan4495"
|
||||
sodipodi:role="line">Button5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-29.28018"
|
||||
y="29.72551"
|
||||
id="text4497"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4499"
|
||||
x="-29.28018"
|
||||
y="29.72551">Button6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-425.66364"
|
||||
y="83.6576"
|
||||
id="text4572"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-425.66364"
|
||||
y="83.6576"
|
||||
id="tspan4576">Resolution0</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||
id="rect4600"
|
||||
width="323.85489"
|
||||
height="120.2081"
|
||||
x="-469.70047"
|
||||
y="11.469827"
|
||||
rx="10.321068"
|
||||
ry="10.321068" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Title">
|
||||
<text
|
||||
transform="translate(647.36582,205.64997)"
|
||||
xml:space="preserve"
|
||||
style="display:inline;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-261.24213"
|
||||
y="-97.912132"
|
||||
id="text4223"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4225"
|
||||
x="-261.24213"
|
||||
y="-97.912132"
|
||||
style="font-size:70.00000763px">Logitech MX Master</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 23 KiB |
16
data/logo.svg
Normal file
16
data/logo.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg class="ratbag-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<path class="ratbag-bag" d="M38.8 22.1a48.4 48.4 0 0 1 22.7 0s9-8.9 5-11.2c-6-3.2-3.9.8-16.3 3.5 15.5-7.5 5.4-5.7-16.3-3.5-5.3.5 5 11.2 5 11.2zm20.7 2.8c5.7 17.1-.8 4.7-2-.1-4 22.1-3.7 7.7-3-.6-5-.5-10.7-.4-15.7 1.3a47 47 0 0 0-17 32.7c0 13.3 5 7.9 28.4 7.9 28.8 0 28.4 5.4 28.4-7.9 0-9.8-9-25.9-19-33.3z" />
|
||||
<path class="ratbag-rats" fill="#fff" d="M35.8 62.3c3.3 3.4-1 2.4-1.9.1-5.6 1.9-16.9.7-3.8-16.3.5-.4.6.5.4 1-4 6.8-7.5 15.5.3 13.2-1-8.2 3.2-14.1 6.8-19.7 1.1-1.4 2.3-4.3 2.8-5.5-3-2.1-.8-2 1.2-1.5 1.7-1.6 3.5-2.5 6.6-3 1.7 2.5-2.7 8.2-2.7 8.2 0 2.3.1 3.7.4 4.9 3 6.5 1.2 7.3-1.4 2.9-.3.1.3 2.6-1.4 7.9.5 5.9-2.5 7-2.5 7 7.3 2.2 1 3-1 .5-.8-.5-2.9-.1-3.8.3zm15-9c.1-1.7 1.4-4 1.8-.4 2 2.1 7.5-3.4 13.3-2.2 3.7.8 5 3.3 4.5 7.4 11.7 3.8 4.3 7.9-4.6 6.9 11.8-2.5 9.3-4.1 3.5-5-.4.8-4.6 1.6-5.5 1.5-3.9 1.5-6.7 2.2-3.2-.2l-4.5-.4c-3.9 2.8-2.9 2.4-1.7-.3-2-1.4-6 1.9-6.3-.1 0-.6 1.6-5.9 2.6-7.2z"/>
|
||||
<path class="ratbag-eyes" d="M51 56.9c.6.4-1 1.2-1 1.2s.1-1.6 1-1.2zm-7-22.6c-.8-.4 1-1.2 1-1.2s-.3 1.7-1 1.2z"/>
|
||||
<path class="ratbag-logotype" d="M81.3 89.3c-.6.9-2.3 1.1-2.7 0 0-1.3.6-2.5.5-3.8-.5.5-1 1.6-1.6 2.3-1 1-1.8 2.4-3.4 2.3-1.3-.2-2.8-.7-3.3-2-1.3-1.8-.8-4-.5-6 .7-2.8 2.6-5.3 5.2-6.7 1.3-.4 3.2-.2 4 1.2 0 2.3-1.5 4.9-3.8 4.9-2.6-.7 1.4-3 .7-4.2-1.4-.3-1.8 1.8-2.4 2.8-.8 2-1.5 4.3-1 6.4 1.6 3.5 5-2.8 2.5-1.4-1 .7-2.9 0-1.5-1.2 1-1 2.4-1.3 3.6-2.1 5.6-2.2 3.5.3 3.7 7.5zm-18.3-6c-.1.6 2-.1 2.3.3.4.4-.4-2.2-.6-2.6zm3.6-8c1.2 4.7 2 9 3.4 13.2-.2 1-1.6 1.7-2.6 1.5-1.4-1.2-.2-2.8-1.6-4-.3-.4-3.7-.5-3.8.5l-1.4 3.2c-.6.6-2.9.9-2.5-.4.5-1.4 1-2.8 1.8-4l3.4-9.6c.5-1.3 2.3-1.2 3.3-.4zm-10.5 9.5c-.4-.8-1.3-1.5-2.3-1.4-.8-.3-.6.5-.7 1 0 1.1-.2 2.2-.4 3.3 1-.3 1.9-1 2.7-1.7.4-.2.7-.7.7-1.2zm-6.3 5.8c-1.3 0-1.2-2 0-2 0-3.5.3-7 1-10.3.6-.7 1.6-1 2.4-1.2 1 .4 1 1.4.6 2.2-.4.9 0 1.4.8.7.8-.6 1-1.6 1-2.5-.8-1.9-4.3-.3-4.8-.4-1.2-.6.3-1.5 1-1.7.8-.4 1.7-.9 2.7-.7 1.2 0 2.7-.1 3.6 1 .8 1.2.1 2.8-.6 4-.3.7-1.6 1.3-1.7 1.8 6.4 1.1.8 9.4-6 9zm-1.6-13.4c-2.1.6-.9 3.4-1.4 5-.4 2.7-.9 5.5-.8 8.3-1.3 1.3-3.5-.3-2.9-2 0-2.8.1-5.7.6-8.5.4-1.2.6-2.9-1.1-2-2 .3-2.2-2.5 0-2.2 3 .2.7-3.6 2.5-4.8 1.8-1 3.6 1 2.5 2.7.1.5-.6 1.7.4 1.5 2-.8 2.4 3 .2 2zm-12.3 5.2c-1 .6.6 1.1 1 1.5 1 1 .2-.8 0-1.2-.9-1.7-.4-2-1-.3zm3-7.2l2 9.9c.3 1.5 1.6 3.7 0 4.7-1.4.8-2.4-.5-3.3-1.4-.9-.7-1.9-1.2-2.6-2.1-1-.3-1.9 2.8-2.9 3.8-.8 0-3 .2-1.8-1 .5-1.8 1.2-3.5 1.8-5.3-1.3-1 .3-2 1-2.6a52 52 0 0 0 2.4-5.6c.7-1 2.6-1.3 3.3-.4zm-16.4 2.9v2.4c1.6-.4 4-2.4 2.2-4-1.5-1.4-2.5 0-2.2 1.6zm6.7 3.3c2 1.2.6 3.8.5 5.6-.2 2-2.5 4.1-4.3 2.3-1.2-1.1-3.7-4.3-4.1-1-.5 2.5-3.3 1.7-2.8-.6.3-2.3 1-4.6 1.2-7-.3-2.4-1-4.8-.3-7.2 1-2.7 4.4-2.5 6.4-1.3 2.3.9 3.8 3.7 2.3 6-.5 2-3.1 3.1-3.7 4.6 1.2 2 3.6 2.9 3.4-.3.3-.5.8-1 1.4-1z" />
|
||||
|
||||
<!-- comment out style section to remove animated eyes-->
|
||||
<style>
|
||||
.ratbag-eyes{animation: color-cycle 5s linear infinite}
|
||||
@keyframes color-cycle{
|
||||
20%{fill: #27A269}
|
||||
40%{fill: #E5A50B}
|
||||
60%{fill: #EE323A}
|
||||
80%{fill: #C061CA}}
|
||||
</style>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1,621 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="414.6424mm"
|
||||
height="285.98199mm"
|
||||
viewBox="0 0 1469.2054 1013.322"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="roccat-kone-xtd.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.3581868"
|
||||
inkscape:cx="554.68333"
|
||||
inkscape:cy="461.59649"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer5"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="50"
|
||||
fit-margin-left="50"
|
||||
fit-margin-right="50"
|
||||
fit-margin-bottom="50"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1571"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Mouse"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(522.78594,97.359194)"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:20.31594276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m -6.8766439,519.77381 c -32.5046101,10.85914 -64.2932331,9.07935 -55.9542041,-23.77308 18.883288,-74.39257 -57.845532,2.41084 -29.233145,-133.3763"
|
||||
id="path4770"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="csc" />
|
||||
<path
|
||||
style="fill:#293843;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m -33.934887,422.04568 10.14038,-25.10953 C 52.122953,323.19727 160.74504,269.07207 269.83981,256.48052 c 114.24665,-13.18617 232.89306,-1.04277 284.3675,72.85307 67.68352,97.16539 16.07476,170.11753 -8.69176,195.56454 -20.05502,20.60604 -39.26023,38.76732 -57.46217,50.70193 -38.08063,24.96863 -99.02413,29.12078 -118.30443,27.5239 -56.28478,-4.66179 -227.65266,41.307 -235.6432,46.83891 L 32.219046,607.9527 C 4.8894737,559.61921 -21.751345,509.50644 -33.934887,422.04568 Z"
|
||||
id="path3661"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccsssssccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 520.63342,372.91486 c -22.02158,0.11026 -45.15654,9.22867 -63.99943,19.07328 -68.64532,35.8642 -269.2094,153.12888 -338.02986,180.28255 l -87.122352,34.37512 c 0.245863,0.43536 0.49112,0.87206 0.737105,1.30711 l 39.216027,16.16965 c 44.83999,-15.41316 98.86516,-40.41176 154.72423,-67.21674 90.48008,-43.41854 177.45369,-92.45774 236.96271,-121.89569 60.39622,-29.87684 105.87888,-24.18751 112.83284,44.85426 6.15884,-13.91293 10.75607,-30.17964 11.63778,-48.45529 -13.44827,-44.58801 -39.32739,-58.63259 -66.95905,-58.49425 z"
|
||||
id="path4463" />
|
||||
<path
|
||||
style="fill:#00ff3a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 460.17444,405.06363 c -25.33816,12.5814 -164.20311,89.16529 -247.36725,132.94909 -31.24494,16.55348 -62.91668,32.44366 -95.5461,46.08015 l 3.13236,9.65662 c 54.85379,-22.99389 108.07344,-49.78006 161.39646,-76.09146 64.31558,-32.64428 127.12882,-68.2385 192.32459,-99.13545 18.32983,-7.64259 38.30614,-12.8303 58.27155,-10.58417 14.47996,1.85097 28.06901,9.59531 37.24885,20.96153 6.66994,-53.74538 -76.10417,-40.33748 -109.46046,-23.83631 z"
|
||||
id="path4468"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 270.88842,559.80819 26.12051,4.09732 62.14289,-30.90074 c 11.97455,-20.17142 5.93562,-23.53024 5.29239,-31.92505 l -91.50713,47.4608 c -3.16993,2.58552 -6.42443,5.13123 -2.04866,11.26767 z"
|
||||
id="path4545"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 392.10122,486.05615 c 1.23298,4.69552 4.04803,7.598 -1.19506,19.63307 l -9.73117,17.58438 80.75159,-31.4129 c 5.77716,-10.78358 11.4074,-21.61616 11.4384,-34.31516 -2.7867,-11.40006 -8.20083,-9.22506 -13.65779,-6.82888 z"
|
||||
id="path4547"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 20.837165,461.33753 26.414193,480.9345 62.94875,466.25238 55.307676,431.63187 Z"
|
||||
id="path4549"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 178.69842,365.35554 12.29201,31.24217 56.50906,-25.09617 -12.46274,-27.48628 z"
|
||||
id="path4551"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 261.4987,335.64987 11.95056,26.63267 49.85089,-20.31594 12.80416,-3.41445 -6.82888,-14.16994 -12.97489,-3.41445 z"
|
||||
id="path4553"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;writing-mode:tb-rl;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4560"
|
||||
d="m 204.43745,364.0435 2.09895,5.60714 5.81901,-2.56255 0.64062,1.71134 -5.81901,2.56254 2.09895,5.60714 -1.75511,0.77292 -2.09894,-5.60715 -5.81902,2.56255 -0.64059,-1.71135 5.81898,-2.56254 -2.09892,-5.60714 1.75508,-0.7729 z" />
|
||||
<path
|
||||
d="m 305.42303,329.94388 4.03768,8.95391 -2.72436,1.22853 -4.03769,-8.95391 2.72437,-1.22853 z"
|
||||
id="path4567"
|
||||
inkscape:connector-curvature="0"
|
||||
style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4569"
|
||||
d="m 46.989112,448.7916 2.557622,11.39542 -2.682847,1.56354 -2.557622,-11.39545 2.682847,-1.56351 z" />
|
||||
<path
|
||||
d="m 42.643233,451.50777 2.557622,11.39545 -2.682847,1.56351 -2.557622,-11.39545 2.682847,-1.56351 z"
|
||||
id="path4577"
|
||||
inkscape:connector-curvature="0"
|
||||
style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4579"
|
||||
d="m 38.478433,454.34466 2.557622,11.39543 -2.682847,1.56354 -2.557622,-11.39545 2.682847,-1.56352 z" />
|
||||
<path
|
||||
style="fill:#838d96;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 119.43841,465.4441 5.37199,3.74229 1.87114,-8.26926 z"
|
||||
id="path4581"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#838d96;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 99.218,376.23286 -2.29366,6.51884 6.33774,-3.25942 z"
|
||||
id="path4583"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 370.13999,299.12951 c -0.43414,-0.004 -0.88599,0.004 -1.35658,0.0243 -114.61991,18.29248 -262.7613,57.8235 -362.6396132,162.97056 l -0.2413441,18.34924 -23.0804397,18.75305 c 0.295394,0.96107 0.592605,1.91666 0.892085,2.8672 L 6.8682998,485.78508 11.938416,498.5815 c 3.022522,1.91455 4.542353,4.99753 13.03731,2.65575 0,0 35.049508,-13.87527 66.878294,-31.62836 25.86269,-14.4254 169.13513,-92.29377 297.45122,-135.68783 3.53168,-1.85807 6.92052,-3.82383 2.89753,-11.3479 l -11.34789,-17.38339 c -1.68431,-3.27833 -4.20267,-6.0005 -10.71489,-6.06024 z m 0.85055,7.18994 c 0.76127,-0.0183 1.49621,0.14715 2.1413,0.68389 2.28062,2.60105 3.95393,5.73706 5.90572,8.6044 2.36789,3.85426 5.13602,7.51375 7.31692,11.43239 -2.00889,0.76437 -4.02217,1.5172 -6.0383,2.2622 -74.38121,26.47497 -146.51346,58.91354 -216.93155,94.53357 -23.7859,11.80119 -47.13201,24.45131 -70.49007,37.07193 -21.87976,12.03816 -44.368571,22.99172 -67.494965,32.39674 -2.178032,0.79387 -4.91012,2.49014 -7.139522,0.97798 -2.462342,-3.62775 -3.065109,-8.18739 -5.10326,-12.05744 -0.191754,-5.72806 0.125694,-11.45575 0.125574,-17.18406 19.24401,-19.99827 40.662677,-37.85032 63.501803,-53.60899 56.88977,-39.14613 121.81546,-65.28367 188.25625,-83.14833 34.45174,-9.02055 69.30996,-16.66573 104.56505,-21.77335 0.46215,-0.10291 0.9283,-0.17995 1.38505,-0.19093 z"
|
||||
id="path4585" />
|
||||
<path
|
||||
style="fill:#202427;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 69.56866,436.43193 c 2.34022,-18.39325 11.0874,-31.41629 35.56456,-46.25604 24.47717,-14.83973 51.02774,-12.17822 62.53237,-11.10613 4.19739,0.39116 6.14741,2.1271 9.65751,8.20888 l 9.65751,18.10785 c -9.72905,-3.24303 -45.31306,0.55135 -63.36379,8.82104 -23.93977,10.96767 -32.63451,13.417 -49.78556,44.90031 z"
|
||||
id="path4590"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="czsccscc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.26995659px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#838d96;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="541.47949"
|
||||
y="544.12469"
|
||||
id="text4751"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0.81792144,-0.30782972,0,1.2226113,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4753"
|
||||
x="541.47949"
|
||||
y="544.12469">></tspan></text>
|
||||
<path
|
||||
style="fill:#838d96;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 300.25264,556.5858 10.24335,-10.8622 0.29876,2.6035 -4.75887,5.05767 6.35939,-0.96032 0.72556,2.19804 z"
|
||||
id="path4759"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#151d23;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 175.51398,404.23374 c -14.95857,0.0867 -38.3591,3.7713 -51.89715,9.97357 -23.8618,10.93194 -32.57995,13.40905 -49.62048,44.60172 l 112.98222,-53.41898 -0.0122,-0.008 c -2.4337,-0.80767 -6.47543,-1.17722 -11.45245,-1.14838 z"
|
||||
id="path4761" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Actions"
|
||||
style="display:inline"
|
||||
transform="translate(647.36582,205.64997)">
|
||||
<ellipse
|
||||
style="display:inline;fill:#898989;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="path4352"
|
||||
cx="-12.758862"
|
||||
cy="294.12094"
|
||||
rx="11.98534"
|
||||
ry="11.985341" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Leaders"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -216.45721,492.54598 -83.92758,424.07234"
|
||||
id="path4368"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -148.71984,592.67948 0.00785948,357.80752"
|
||||
id="path4370"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -231.919,376.21442 -92.76289,355.5987"
|
||||
id="path4372"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -237.07293,234.84948 113.38646,72.89129"
|
||||
id="path4374"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M -177.52663,109.77463 -12.600865,294.57984"
|
||||
id="path4376"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -30.915721,22.80206 6.62648,247.38865"
|
||||
id="path4378"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 107.50411,-32.41862 96.45998,252.52009"
|
||||
id="path4380"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 258.44064,52.98937 162.7248,230.43182"
|
||||
id="path4382"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 130.32866,662.62568 199.53858,430.69882"
|
||||
id="path4384"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 192.9121,662.62567 295.9907,385.786"
|
||||
id="path4386"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="Controls"
|
||||
transform="translate(647.36582,205.64997)"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g4200"
|
||||
transform="translate(1110.0988,277.2489)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4572"
|
||||
y="-44.454391"
|
||||
x="-571.44623"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4576"
|
||||
y="-44.454391"
|
||||
x="-571.44623"
|
||||
sodipodi:role="line">Resolution0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-571.44623"
|
||||
y="28.518997"
|
||||
id="text4580"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-571.44623"
|
||||
y="28.518997"
|
||||
id="tspan4582">Resolution1</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4584"
|
||||
y="101.49239"
|
||||
x="-571.44623"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4586"
|
||||
y="101.49239"
|
||||
x="-571.44623"
|
||||
sodipodi:role="line">Resolution2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-571.44623"
|
||||
y="174.46584"
|
||||
id="text4588"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-571.44623"
|
||||
y="174.46584"
|
||||
id="tspan4590">Resolution3</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4592"
|
||||
y="247.43925"
|
||||
x="-571.44623"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4594"
|
||||
y="247.43925"
|
||||
x="-571.44623"
|
||||
sodipodi:role="line">Resolution4</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||
id="rect4600"
|
||||
width="323.85489"
|
||||
height="410.20847"
|
||||
x="494.82077"
|
||||
y="158.72498"
|
||||
rx="10.321068"
|
||||
ry="10.321068" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-629.95673"
|
||||
y="789.13135"
|
||||
id="text4211"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4213"
|
||||
x="-629.95673"
|
||||
y="789.13135">Current Profile</tspan></text>
|
||||
<g
|
||||
id="g4230"
|
||||
transform="translate(-73.440271,-63.319721)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4473"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4217"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="text4212"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="tspan4214">Button12</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4224"
|
||||
transform="translate(112.10123,30.187304)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="6.9855804"
|
||||
y="647.10291"
|
||||
id="text4216"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="6.9855804"
|
||||
y="647.10291"
|
||||
id="tspan4218">Button3</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4220"
|
||||
y="690.54315"
|
||||
x="6.9855804"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4222"
|
||||
y="690.54315"
|
||||
x="6.9855781"
|
||||
sodipodi:role="line">Button15</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4250"
|
||||
transform="translate(14.912823,34.604968)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4238"
|
||||
y="642.68524"
|
||||
x="195.12758"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4240"
|
||||
y="642.68524"
|
||||
x="195.12758"
|
||||
sodipodi:role="line">Button4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="195.12758"
|
||||
y="686.12549"
|
||||
id="text4242"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="195.12758"
|
||||
y="686.12549"
|
||||
id="tspan4244">Button16</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4256"
|
||||
transform="translate(86.33157,-599.32852)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="195.12758"
|
||||
y="642.68524"
|
||||
id="text4258"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="195.12758"
|
||||
y="642.68524"
|
||||
id="tspan4260">Button10</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4262"
|
||||
y="686.12549"
|
||||
x="195.12758"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4264"
|
||||
y="686.12549"
|
||||
x="195.12758"
|
||||
sodipodi:role="line">Button22</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-76.385377,-689.15417)"
|
||||
id="g4266">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4268"
|
||||
y="642.68524"
|
||||
x="195.12758"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4270"
|
||||
y="642.68524"
|
||||
x="195.12758"
|
||||
sodipodi:role="line">Button9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="195.12758"
|
||||
y="686.12549"
|
||||
id="text4272"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="195.12758"
|
||||
y="686.12549"
|
||||
id="tspan4274">Button21</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0.18730648,35.341239)"
|
||||
id="g4276">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="text4278"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="tspan4280">Button5</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4282"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4284"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button17</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4286"
|
||||
transform="translate(-73.440271,-166.39834)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4288"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4290"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button11</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="text4292"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="tspan4294">Button23</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-86.693235,-300.40054)"
|
||||
id="g4338">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="text4340"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="tspan4342">Button1</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4344"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4346"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button13</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4348"
|
||||
transform="translate(-31.472552,-438.82039)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4350"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4352"
|
||||
y="547.70569"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="text4354"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="591.14594"
|
||||
id="tspan4356">Button14</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(115.04633,-541.16273)"
|
||||
id="g4358">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="text4360"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-157.20392"
|
||||
y="547.70569"
|
||||
id="tspan4362">Button6</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4364"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40.00000381px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4366"
|
||||
y="591.14594"
|
||||
x="-157.20392"
|
||||
sodipodi:role="line">Button18</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer6"
|
||||
inkscape:label="Title"
|
||||
sodipodi:insensitive="true">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="733.21844"
|
||||
y="73.834145"
|
||||
id="text4223"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4225"
|
||||
x="733.21844"
|
||||
y="73.834145"
|
||||
style="font-size:70.00000763px;text-align:center;text-anchor:middle">Roccat Kone XTD</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 35 KiB |
19
dbus/org.freedesktop.ratbag1.conf.in
Normal file
19
dbus/org.freedesktop.ratbag1.conf.in
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?> <!--*-nxml-*-->
|
||||
<!DOCTYPE busconfig PUBLIC
|
||||
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||
|
||||
<busconfig>
|
||||
|
||||
<policy user="root">
|
||||
<allow own="org.freedesktop.ratbag1"/>
|
||||
<allow send_destination="org.freedesktop.ratbag1"/>
|
||||
<allow receive_sender="org.freedesktop.ratbag1"/>
|
||||
</policy>
|
||||
|
||||
<policy @access@>
|
||||
<allow send_destination="org.freedesktop.ratbag1"/>
|
||||
<allow receive_sender="org.freedesktop.ratbag1"/>
|
||||
</policy>
|
||||
|
||||
</busconfig>
|
||||
5
dbus/org.freedesktop.ratbag1.service.in
Normal file
5
dbus/org.freedesktop.ratbag1.service.in
Normal file
@@ -0,0 +1,5 @@
|
||||
[D-BUS Service]
|
||||
Name=org.freedesktop.ratbag1
|
||||
Exec=@bindir@/ratbagd
|
||||
User=root
|
||||
SystemdService=ratbagd.service
|
||||
26
dbus/org.freedesktop.ratbag_devel1.conf.in
Normal file
26
dbus/org.freedesktop.ratbag_devel1.conf.in
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?> <!--*-nxml-*-->
|
||||
<!DOCTYPE busconfig PUBLIC
|
||||
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||
|
||||
<!--
|
||||
WARNING: this file is for testing of libratbag during development.
|
||||
If you don't know why this file is in your dbus configuration
|
||||
folder, remove it.
|
||||
-->
|
||||
|
||||
<busconfig>
|
||||
|
||||
<policy user="root">
|
||||
<allow own="org.freedesktop.ratbag_devel1"/>
|
||||
<allow send_destination="org.freedesktop.ratbag_devel1"/>
|
||||
<allow receive_sender="org.freedesktop.ratbag_devel1"/>
|
||||
</policy>
|
||||
|
||||
<!-- allow everyone to talk to the daemon -->
|
||||
<policy context="default">
|
||||
<allow send_destination="org.freedesktop.ratbag_devel1"/>
|
||||
<allow receive_sender="org.freedesktop.ratbag_devel1"/>
|
||||
</policy>
|
||||
|
||||
</busconfig>
|
||||
@@ -1,38 +0,0 @@
|
||||
if BUILD_DOCS
|
||||
|
||||
noinst_DATA = html/index.html
|
||||
|
||||
header_files = \
|
||||
$(top_srcdir)/src/libratbag.h \
|
||||
$(top_srcdir)/README.md
|
||||
|
||||
style_files = \
|
||||
style/header.html \
|
||||
style/footer.html \
|
||||
style/customdoxygen.css \
|
||||
style/bootstrap.css
|
||||
|
||||
html/index.html: libratbag.doxygen $(header_files) $(diagram_files) $(style_files)
|
||||
$(AM_V_GEN)(cat $<; \
|
||||
echo "INPUT = $(header_files)"; \
|
||||
) | $(DOXYGEN) -
|
||||
|
||||
clean-local:
|
||||
$(AM_V_at)rm -rf html
|
||||
|
||||
doc_src= $(shell find html -type f -printf "html/%P\n" 2>/dev/null)
|
||||
EXTRA_DIST = $(builddir)/html/index.html \
|
||||
$(doc_src) \
|
||||
$(diagram_files) \
|
||||
$(header_files) \
|
||||
$(style_files)
|
||||
endif
|
||||
|
||||
# make sure doc was built before running dist
|
||||
dist-hook:
|
||||
@test -f $(distdir)/html/index.html || (\
|
||||
echo "******************************************************" && \
|
||||
echo "Couldn't find documentation files, refusing make dist." && \
|
||||
echo "Install doxygen to build documentation for tarball." && \
|
||||
echo "******************************************************" && \
|
||||
test )
|
||||
154
doc/conf.py.in
Normal file
154
doc/conf.py.in
Normal file
@@ -0,0 +1,154 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# @PACKAGE_NAME@ documentation build configuration file, created by
|
||||
# sphinx-quickstart on Wed Oct 11 13:45:08 2017.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#
|
||||
# needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = []
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
#
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = '@PACKAGE_NAME@'
|
||||
copyright = '2017, The ratbaggers'
|
||||
author = 'The ratbaggers'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = ''
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = ''
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This patterns also effect to html_static_path and html_extra_path
|
||||
exclude_patterns = []
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = False
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
# html_theme = 'alabaster'
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#
|
||||
# html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = '@PACKAGE_NAME@doc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, '@PACKAGE_NAME@.tex', '@PACKAGE_NAME@ Documentation',
|
||||
'The ratbaggers', 'manual'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, '@PACKAGE_NAME@', '@PACKAGE_NAME@ Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, '@PACKAGE_NAME@', '@PACKAGE_NAME@ Documentation',
|
||||
author, '@PACKAGE_NAME@', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
570
doc/dbus.rst
Normal file
570
doc/dbus.rst
Normal file
@@ -0,0 +1,570 @@
|
||||
********
|
||||
DBus API
|
||||
********
|
||||
|
||||
Note: **the DBus interface is subject to change**
|
||||
|
||||
Interfaces:
|
||||
|
||||
* :ref:`manager`
|
||||
* :ref:`device`
|
||||
* :ref:`profile`
|
||||
* :ref:`resolution`
|
||||
* :ref:`button`
|
||||
* :ref:`led`
|
||||
|
||||
Changing settings on a device is a three-step process:
|
||||
|
||||
#. Change the various properties to the desired value
|
||||
#. Invoke :func:`org.freedesktop.ratbag1.Device.Commit() <Commit>`
|
||||
#. Optional: if an error occured writing the new data to the device,
|
||||
a :func:`org.freedesktop.ratbag1.Resync <Resync>` signal is emitted on the device and
|
||||
all properties are updated accordingly.
|
||||
|
||||
The time it takes to write settings to a device varies greatly, any caller
|
||||
must be prepared to receive a :func:`org.freedesktop.ratbag1.Device.Resync
|
||||
<Resync>` signal several seconds after
|
||||
:func:`org.freedesktop.ratbag1.Device.Commit() <Commit>`.
|
||||
|
||||
Notes on the DBus API
|
||||
---------------------
|
||||
|
||||
For easier debugging, objects paths are constructed from the device. e.g.
|
||||
``/org/freedesktop/ratbag/button/event5/p0/b10`` is the button interface for
|
||||
button 10 on profile 0 on event5. The naming is subject to change. Do not
|
||||
rely on a constructed object path in your application.
|
||||
|
||||
Types
|
||||
.....
|
||||
|
||||
Types used by these interfaces:
|
||||
|
||||
+----------+-----------------------------------+
|
||||
| Type | Description |
|
||||
+==========+===================================+
|
||||
| ``b`` | Bool |
|
||||
+----------+-----------------------------------+
|
||||
| ``o`` | Object path |
|
||||
+----------+-----------------------------------+
|
||||
| ``s`` | String |
|
||||
+----------+-----------------------------------+
|
||||
| ``u`` | Unsigned 32-bit integer |
|
||||
+----------+-----------------------------------+
|
||||
|``(uuu)`` | A triplet of 32-bit integers |
|
||||
+----------+-----------------------------------+
|
||||
| ``ao`` | Array of object paths |
|
||||
+----------+-----------------------------------+
|
||||
| ``as`` | Array of strings |
|
||||
+----------+-----------------------------------+
|
||||
| ``au`` | Array of 32-bit integers |
|
||||
+----------+-----------------------------------+
|
||||
| ``a(uu)``| Array of 2 32-bit integer tuples |
|
||||
+----------+-----------------------------------+
|
||||
|
||||
For details on each type, see the `DBus Specification
|
||||
<https://dbus.freedesktop.org/doc/dbus-specification.html>`_.
|
||||
|
||||
Flags
|
||||
.....
|
||||
|
||||
Properties marked as **constant** do not change for the lifetime of the
|
||||
object. Properties marked as **mutable** may change, and a
|
||||
``org.freedesktop.DBus.Properties.PropertyChanged`` signal is sent for those
|
||||
unless otherwise specified.
|
||||
|
||||
.. _manager:
|
||||
|
||||
org.freedesktop.ratbag1.Manager
|
||||
-------------------------------
|
||||
|
||||
The **org.freedesktop.ratbag1.Manager** interface is the entry point to
|
||||
interact with ratbagd.
|
||||
|
||||
.. attribute:: APIVersion
|
||||
|
||||
:type: i
|
||||
:flags: read-only,constant
|
||||
|
||||
The DBus API version. This is a stopgap feature while the DBus API
|
||||
is still in flux. The version has no backwards or
|
||||
forward-compatibilty guarantees - your client must understand
|
||||
**exactly** the same version, it is not enough to support an older
|
||||
or a newer version.
|
||||
|
||||
This API will be removed once the DBus API is declared stable.
|
||||
|
||||
.. attribute:: Devices
|
||||
|
||||
:type: ao
|
||||
:flags: read-only, mutable
|
||||
|
||||
An array of read-only object paths referencing the available
|
||||
devices. The devices implement the :ref:`device` interface.
|
||||
|
||||
.. _device:
|
||||
|
||||
org.freedesktop.ratbag1.Device
|
||||
-------------------------------
|
||||
|
||||
The **org.freedesktop.ratbag1.Device** interface describes a single device
|
||||
known to ratbagd.
|
||||
|
||||
.. attribute:: Model
|
||||
|
||||
:type: s
|
||||
:flags: read-only, constant
|
||||
|
||||
An ID identifying the physical device model. This string is
|
||||
guaranteed to be unique for a specific model and always identical
|
||||
for devices of that model.
|
||||
|
||||
This is a string of one of the following formats:
|
||||
|
||||
- ``usb:1234:abcd:0``
|
||||
- ``bluetooth:5678:ef01:0``
|
||||
- ``unknown``
|
||||
|
||||
In the future, other formats may get added. Clients must ignore
|
||||
unknown string formats.
|
||||
|
||||
For a string starting with ``usb:``, the format is the bus type (USB)
|
||||
followed by a 4-digit lowercase hex USB vendor ID, followed by a
|
||||
4-digit lowercase hex USB product ID, followed by an decimal version
|
||||
number of unspecified length. These four elements are separated by a
|
||||
colon (``:``).
|
||||
|
||||
For a string starting with ``bluetooth:``, the format is the bus type
|
||||
(Bluetooth) followed by a 4-digit lowercase hex Bluetooth vendor ID,
|
||||
followed by a 4-digit lowercase hex Bluetooth product ID, followed
|
||||
by an decimal version number of unspecified length. These four
|
||||
elements are separated by a colon (``:``).
|
||||
|
||||
For the string ``unknown``, the model of the device cannot be
|
||||
determined. This is usually a bug in libratbag.
|
||||
|
||||
For a ``Model`` of type ``usb`` and ``bluetooth``, the version
|
||||
number is reserved for use by libratbag. Device with identical
|
||||
vendor and product IDs but different versions must be considered
|
||||
different devices. For example, the version may increase when a
|
||||
manufacturer re-uses USB Ids.
|
||||
|
||||
Vendor or product IDs of 0 are valid IDs (e.g. used used by test
|
||||
devices).
|
||||
|
||||
.. attribute:: Name
|
||||
|
||||
:type: s
|
||||
:flags: read-only, constant
|
||||
|
||||
The device's name, suitable for presentation to the user.
|
||||
|
||||
.. attribute:: Profiles
|
||||
|
||||
:type: ao
|
||||
:flags: read-only, mutable
|
||||
|
||||
This property is mutable if the device supports adding and removing
|
||||
profiles.
|
||||
|
||||
Provides the list of profile paths for all profiles on this device, see
|
||||
:ref:`profile`
|
||||
|
||||
.. function:: Commit() → ()
|
||||
|
||||
Commits the changes to the device. This call always succeeds,
|
||||
the data is written to the device asynchronously. Where an error
|
||||
occurs, the :func:`Resync` signal is emitted and all properties are
|
||||
updated to the current state.
|
||||
|
||||
.. function:: Resync()
|
||||
|
||||
:type: Signal
|
||||
|
||||
Emitted when an internal error occurs, usually on writing values to
|
||||
the device after :func:`Commit()`. Upon receiving this
|
||||
signal, clients are expected to resync their property values with
|
||||
ratbagd.
|
||||
|
||||
|
||||
.. _profile:
|
||||
|
||||
org.freedesktop.ratbag1.Profile
|
||||
-------------------------------
|
||||
|
||||
.. attribute:: Index
|
||||
|
||||
:type: u
|
||||
:flags: read-only, constant
|
||||
|
||||
The zero-based index of this profile
|
||||
|
||||
.. attribute:: Name
|
||||
|
||||
:type: s
|
||||
:flags: read-write, mutable
|
||||
|
||||
The name of this profile. If the name is the empty string, the
|
||||
profile name cannot be changed.
|
||||
|
||||
.. attribute:: Enabled
|
||||
|
||||
:type: b
|
||||
:flags: read-write, mutable
|
||||
|
||||
True if this is the profile is enabled, false otherwise.
|
||||
|
||||
Note that a disabled profile might not have correct bindings, so it's
|
||||
a good thing to rebind everything before calling
|
||||
:func:`Commit`.
|
||||
|
||||
.. attribute:: IsActive
|
||||
|
||||
:type: b
|
||||
:flags: read-only, mutable
|
||||
|
||||
True if this is the currently active profile, false otherwise.
|
||||
|
||||
Profiles can only be set to active, but never to not active - at least one
|
||||
profile must be active at all times. This property is read-only, use the
|
||||
:func:`SetActive` method to activate a profile.
|
||||
|
||||
.. attribute:: Resolutions
|
||||
|
||||
:type: ao
|
||||
:flags: read-only, mutable
|
||||
|
||||
This property is mutable if the device supports adding and removing
|
||||
resolutions.
|
||||
|
||||
Provides the object paths of all resolutions in this profile, see
|
||||
:ref:`resolution`.
|
||||
|
||||
.. attribute:: Buttons
|
||||
|
||||
:type: ao
|
||||
:flags: read-only, constant
|
||||
|
||||
Provides the object paths of all buttons in this profile, see
|
||||
:ref:`button`.
|
||||
|
||||
.. attribute:: Leds
|
||||
|
||||
:type: ao
|
||||
:flags: read-only, constant
|
||||
|
||||
Provides the object paths of all LEDs in this profile, see
|
||||
:ref:`led`.
|
||||
|
||||
.. attribute:: ReportRate
|
||||
|
||||
:type: u
|
||||
:flags: read-write, mutable
|
||||
|
||||
uint for the report rate in Hz assigned to this profile. This rate
|
||||
must be one of those listed in :attr:`ReportRates`.
|
||||
|
||||
.. attribute:: ReportRates
|
||||
|
||||
:type: au
|
||||
:flags: read-write, constant
|
||||
|
||||
A list of permitted report rates. Values in this list may be used
|
||||
in the :attr:`ReportRate` property. This list is always sorted
|
||||
ascending, the lowest report rate is the first item in the list.
|
||||
|
||||
This list may be empty if the device does not support reading and/or
|
||||
writing to resolutions.
|
||||
|
||||
.. function:: SetActive() → ()
|
||||
|
||||
Set this profile to be the active profile
|
||||
|
||||
.. _resolution:
|
||||
|
||||
org.freedesktop.ratbag1.Resolution
|
||||
----------------------------------
|
||||
|
||||
.. attribute:: Index
|
||||
|
||||
:type: u
|
||||
:flags: read-only, constant
|
||||
|
||||
Index of the resolution
|
||||
|
||||
.. attribute:: IsActive
|
||||
|
||||
:type: b
|
||||
:flags: read-only, mutable
|
||||
|
||||
True if this is the currently active resolution, false otherwise.
|
||||
|
||||
Resolutions can only be set to active, but never to not
|
||||
active - at least one resoultion must be active at all
|
||||
times. This property is read-only, use the
|
||||
:func:`SetActive` method to set a resolution as the
|
||||
active resolution.
|
||||
|
||||
.. attribute:: IsDefault
|
||||
|
||||
:type: b
|
||||
:flags: read-only, mutable
|
||||
|
||||
True if this is the currently default resolution, false
|
||||
otherwise. If the device does not have the default
|
||||
resolution capability, this property is always false.
|
||||
|
||||
Resolutions can only be set to default, but never to not
|
||||
default - at least one resolution must be default at all
|
||||
times. This property is read-only, use the
|
||||
:func:`SetDefault` method to set a resolution as
|
||||
the default resolution.
|
||||
|
||||
.. attribute:: Resolution
|
||||
|
||||
:type: v
|
||||
:flags: read-write, mutable
|
||||
|
||||
The resolution for this entry in dpi.
|
||||
|
||||
If the variant is a single unsigned integer (``u``), the value is
|
||||
the resolution for both the x- and the y- axis.
|
||||
|
||||
If the variant is a unsigned integer tuple (``(uu)``), the value is
|
||||
the resolution for the x- and y- axis separately.
|
||||
|
||||
A client must leave the type intact, assigning a single ``u`` to a
|
||||
resolution object previously exporting ``(uu)`` is invalid.
|
||||
|
||||
The value for the resolution must be equal to one of the values in
|
||||
:attr:`Resolutions`.
|
||||
|
||||
.. attribute:: Resolutions
|
||||
|
||||
:type: au
|
||||
:flags: read-only, constant
|
||||
|
||||
A list of permitted resolutions. Values in this list may be used in
|
||||
the :attr:`Resolution` property. This list is always sorted
|
||||
ascending, the lowest resolution is the first item in the list.
|
||||
|
||||
This list may be empty if the device does not support reading and/or
|
||||
writing to resolutions.
|
||||
|
||||
.. function:: SetDefault() → ()
|
||||
|
||||
Set this resolution to be the default
|
||||
|
||||
.. function:: SetActive() → ()
|
||||
|
||||
Set this resolution to be the active one
|
||||
|
||||
.. _button:
|
||||
|
||||
org.freedesktop.ratbag1.Button
|
||||
------------------------------
|
||||
|
||||
.. attribute:: Index
|
||||
|
||||
:type: u
|
||||
:flags: read-only, constant
|
||||
|
||||
Index of the button
|
||||
|
||||
.. attribute:: Mapping
|
||||
|
||||
:type: (uv)
|
||||
:flags: read-write, mutable
|
||||
|
||||
The current button mapping. The first element is the ``ActionType``
|
||||
for this button and must be one of those in :attr:`ActionTypes`.
|
||||
|
||||
If the ActionType is *Button*, the variant is an unsigned integer
|
||||
(``u``) denoting the button number to map to.
|
||||
|
||||
If the ActionType is *Special*, the variant is an unsigned integer
|
||||
(``u``) denoting the special value to map to.
|
||||
|
||||
If the ActionType is *Macro*, the variant is an array of integer
|
||||
tuples (``a(uu)``) where each tuple is ``(type, keycode)`` and the
|
||||
type is one of the following:
|
||||
|
||||
+---------+--------------------------------------+
|
||||
| Value | Description |
|
||||
+=========+======================================+
|
||||
| 0 | Key release event |
|
||||
+---------+--------------------------------------+
|
||||
| 1 | Key press event |
|
||||
+---------+--------------------------------------+
|
||||
|
||||
If the ActionType is *Unknown*, the variant is an unsigned integer
|
||||
(``u``) of value 0.
|
||||
|
||||
.. attribute:: ActionTypes
|
||||
|
||||
:type: au
|
||||
:flags: read-only, constant
|
||||
|
||||
+---------+---------+--------------------------------------+
|
||||
| Value | Name | Description |
|
||||
+=========+=========+======================================+
|
||||
| 0 | None | No mapping configured |
|
||||
+---------+---------+--------------------------------------+
|
||||
| 1 | Button | Mapping to a logical button number |
|
||||
+---------+---------+--------------------------------------+
|
||||
| 2 | Special | Mapping to a special function |
|
||||
+---------+---------+--------------------------------------+
|
||||
| 3 | Macro | Mapping to a macro key sequence |
|
||||
+---------+---------+--------------------------------------+
|
||||
| 1000 | Unknown | An unknown or unreadable mapping type|
|
||||
+---------+---------+--------------------------------------+
|
||||
|
||||
See :ref:`button_special` for a list of supported special
|
||||
functions.
|
||||
|
||||
Clients must ignore :attr:`ActionTypes` unknown to them.
|
||||
|
||||
.. function:: Disable() → ()
|
||||
|
||||
Disable this button
|
||||
|
||||
.. _led:
|
||||
|
||||
org.freedesktop.ratbag1.Led
|
||||
---------------------------
|
||||
|
||||
.. attribute:: Index
|
||||
|
||||
:type: u
|
||||
:flags: read-only, constant
|
||||
|
||||
Index of the LED
|
||||
|
||||
.. attribute:: Mode
|
||||
|
||||
:type: u
|
||||
:flags: read-write, mutable
|
||||
|
||||
Enum describing the current mode, see :attr:`Modes`.
|
||||
|
||||
.. attribute:: Modes
|
||||
|
||||
:type: au
|
||||
:flags: read-only, constant
|
||||
|
||||
A list of modes supported by this LED.
|
||||
|
||||
+-------+-------------------------------------+
|
||||
| Value | Definition |
|
||||
+=======+=====================================+
|
||||
| 0 | LED is off |
|
||||
+-------+-------------------------------------+
|
||||
| 1 | LED is on with constant brightness |
|
||||
+-------+-------------------------------------+
|
||||
| 2 | LED cycles through a set of colors. |
|
||||
| | This mode ignores the :attr:`Color` |
|
||||
| | values. |
|
||||
+-------+-------------------------------------+
|
||||
| 3 | LED uses a breathing-style animation|
|
||||
+-------+-------------------------------------+
|
||||
|
||||
In the future, extra values may get added. Clients must ignore
|
||||
unknown Modes.
|
||||
|
||||
.. attribute:: Color
|
||||
|
||||
:type: (uuu)
|
||||
:flags: read-write, mutable
|
||||
|
||||
32-bit unsigned int triplet (RGB) of the LED's color. Only the least
|
||||
significant bits are valid, the :attr:`ColorDepth` property defines
|
||||
the number of bits for each color. When writing to this property,
|
||||
all bits outside the color depth must be 0.
|
||||
|
||||
.. attribute:: ColorDepth
|
||||
|
||||
:type: u
|
||||
:flags: read-only, constant
|
||||
|
||||
An enum specifying the color depth of this LED. Permitted values are:
|
||||
|
||||
+-------+-------------------------------+
|
||||
| Value | Definition |
|
||||
+=======+===============================+
|
||||
| 0 | 0 bits per color (monochrome) |
|
||||
+-------+-------------------------------+
|
||||
| 1 | 8 bits per color |
|
||||
+-------+-------------------------------+
|
||||
| 2 | 1 bit per color |
|
||||
+-------+-------------------------------+
|
||||
|
||||
In the future, extra values may get added. Clients must ignore
|
||||
unknown ``ColorDepths`` and not manipulate the LED color where
|
||||
the ``ColorDepth`` is unknown.
|
||||
|
||||
.. attribute:: EffectDuration
|
||||
|
||||
:type: u
|
||||
:flags: read-write, mutable
|
||||
|
||||
The effect duration in ms, possible values are in the range 0 - 10000
|
||||
|
||||
.. attribute:: Brightness
|
||||
|
||||
:type: u
|
||||
:flags: read-write, mutable
|
||||
|
||||
The brightness of the LED, normalized to the range 0-255, inclusive.
|
||||
Where the LED supports less than 8-bit of brightness, libratbag maps
|
||||
the value to a device-supported value in an implementation-defined
|
||||
manner.
|
||||
|
||||
|
||||
.. _button_special:
|
||||
|
||||
Special button functions
|
||||
------------------------
|
||||
|
||||
All special button function values are based on the value
|
||||
``0x40000000`` (``1 << 30``).
|
||||
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| Offset | Value |Description |
|
||||
+============+============+===================================================+
|
||||
| 0 | 0x40000000 | Unknown |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 1 | 0x40000001 | Doublelick |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 2 | 0x40000002 | Wheel left |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 3 | 0x40000003 | Wheel right |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 4 | 0x40000004 | Wheel up |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 5 | 0x40000005 | Wheel down |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 6 | 0x40000006 | Ratchet mode switch |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 7 | 0x40000007 | Resolution cycle up |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 8 | 0x40000008 | Resolution cycle down |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 9 | 0x40000009 | Resolution up |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 10 | 0x4000000a | Resolution down |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 11 | 0x4000000b | Resolution alternate |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 12 | 0x4000000c | Resolution default |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 13 | 0x4000000d | Profile cycle up |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 14 | 0x4000000e | Profile cycle down |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 15 | 0x4000000f | Profile up |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 16 | 0x40000010 | Profile down |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 17 | 0x40000011 | Second mode |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
| 18 | 0x40000012 | Battery level |
|
||||
+------------+------------+---------------------------------------------------+
|
||||
53
doc/doxygen-enums-to-rst.xsl
Normal file
53
doc/doxygen-enums-to-rst.xsl
Normal file
@@ -0,0 +1,53 @@
|
||||
<!-- XSLT script to combine the generated output into a single file.
|
||||
If you have xsltproc you could use:
|
||||
xsltproc combine.xslt index.xml >all.xml
|
||||
-->
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="text" indent="yes"/>
|
||||
<xsl:strip-space elements="detaileddescription briefdescription"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:text>
|
||||
************
|
||||
Enumerations
|
||||
************
|
||||
|
||||
This document contains the enums used by libratbag's DBus interface.
|
||||
|
||||
</xsl:text>
|
||||
<xsl:apply-templates select="//memberdef"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="memberdef">
|
||||
|
||||
<xsl:value-of select="name"/>
|
||||
---------------------------------------
|
||||
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:if test="briefdescription != ''">
|
||||
<xsl:value-of select="briefdescription"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="detaileddescription != ''">
|
||||
<xsl:value-of select="detaileddescription"/>
|
||||
</xsl:if>
|
||||
|
||||
.. cpp:enum:: <xsl:value-of select="name"/>
|
||||
|
||||
<xsl:text>

</xsl:text>
|
||||
<xsl:apply-templates select="./enumvalue"/>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="enumvalue">
|
||||
.. cpp:enumerator:: <xsl:value-of select="name"/><xsl:text> </xsl:text><xsl:value-of select="initializer"/>
|
||||
<xsl:text>

</xsl:text>
|
||||
<xsl:if test="briefdescription != ''">
|
||||
<xsl:text> </xsl:text><xsl:value-of select="briefdescription"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="detaileddescription != ''">
|
||||
<xsl:text> </xsl:text><xsl:value-of select="detaileddescription"/>
|
||||
</xsl:if>
|
||||
<xsl:text>

</xsl:text>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
22
doc/index.rst
Normal file
22
doc/index.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
.. libratbag documentation master file, created by
|
||||
sphinx-quickstart on Wed Oct 11 13:45:08 2017.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
**********************
|
||||
The libratbag DBus API
|
||||
**********************
|
||||
|
||||
.. image:: ../../data/logo.svg
|
||||
:width: 400
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
The DBus Interfaces <dbus.rst>
|
||||
|
||||
This document describes the DBus API that is the public interface for
|
||||
libratbag.
|
||||
|
||||
Note: **the DBus interface is subject to change**
|
||||
@@ -8,19 +8,8 @@ EXTRACT_ALL = YES
|
||||
EXTRACT_STATIC = YES
|
||||
MAX_INITIALIZER_LINES = 0
|
||||
QUIET = YES
|
||||
INPUT = @top_srcdir@/src/libratbag.h \
|
||||
@top_srcdir@/README.txt
|
||||
GENERATE_HTML = YES
|
||||
HTML_TIMESTAMP = YES
|
||||
USE_MATHJAX = YES
|
||||
# Keep this list in sync with meson.build
|
||||
INPUT = @top_srcdir@/src/libratbag-enums.h
|
||||
GENERATE_HTML = NO
|
||||
GENERATE_XML = YES
|
||||
GENERATE_LATEX = NO
|
||||
MACRO_EXPANSION = YES
|
||||
EXPAND_ONLY_PREDEF = YES
|
||||
PREDEFINED = LIBRATBAG_ATTRIBUTE_PRINTF(f, \
|
||||
a)= \
|
||||
LIBRATBAG_ATTRIBUTE_DEPRECATED
|
||||
|
||||
HTML_HEADER = @top_srcdir@/doc/style/header.html
|
||||
HTML_FOOTER = @top_srcdir@/doc/style/footer.html
|
||||
HTML_EXTRA_STYLESHEET = @top_srcdir@/doc/style/customdoxygen.css \
|
||||
@top_srcdir@/doc/style/bootstrap.css
|
||||
|
||||
42
doc/meson.build
Normal file
42
doc/meson.build
Normal file
@@ -0,0 +1,42 @@
|
||||
if get_option('documentation')
|
||||
|
||||
cmd_sphinx = find_program('sphinx-build-3', 'sphinx-build3', 'sphinx-build')
|
||||
|
||||
doc_config = configuration_data()
|
||||
doc_config.set('PACKAGE_NAME', meson.project_name())
|
||||
doc_config.set('PACKAGE_VERSION', meson.project_version())
|
||||
doc_config.set('top_srcdir', meson.source_root())
|
||||
|
||||
# Sphinx really really wants a _static directory in its source tree. Let's
|
||||
# make it happy
|
||||
run_command('mkdir', '-p', join_paths(meson.build_root(), 'doc', '_static'))
|
||||
|
||||
# Effectively a noop copy. We *must* generate enums.rst so that will end up
|
||||
# in the build directory. sphinx doesn't allow for multiple source
|
||||
# directories, so any .rst and the conf.py must be copied over to the
|
||||
# build directory too
|
||||
src_rsts = ['index.rst', 'dbus.rst']
|
||||
dst_rsts = []
|
||||
foreach rst : src_rsts
|
||||
f = configure_file(input : rst,
|
||||
output : rst,
|
||||
configuration : doc_config,
|
||||
install : false)
|
||||
dst_rsts += f
|
||||
endforeach
|
||||
|
||||
sphinx_conf = configure_file(input : 'conf.py.in',
|
||||
output : 'conf.py',
|
||||
configuration : doc_config,
|
||||
install : false)
|
||||
|
||||
custom_target('sphinx',
|
||||
input : [ sphinx_conf, dst_rsts ],
|
||||
output : 'html',
|
||||
command : [ cmd_sphinx, '-b', 'html', '-q', '-n',
|
||||
join_paths(meson.build_root(), 'doc'),
|
||||
join_paths(meson.build_root(), 'doc', 'html') ],
|
||||
build_by_default : true,
|
||||
install : false)
|
||||
|
||||
endif
|
||||
@@ -1,229 +0,0 @@
|
||||
These licenses apply to the doxygen documentation HTML style only. They do
|
||||
not apply or affect libratbag itself.
|
||||
|
||||
Apache: https://github.com/Velron/doxygen-bootstrapped/
|
||||
MIT: https://bootswatch.com/paper/bootstrap.css
|
||||
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2011-2015 Twitter, Inc
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
7500
doc/style/bootstrap.css
vendored
7500
doc/style/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user