Compare commits

...

564 Commits

Author SHA1 Message Date
Yaroslav Chvanov
9f4789f874 libratbag 0.18 2024-09-24 19:00:05 +03:00
Yaroslav Chvanov
7e1c7b3c7d release.sh: use bash from PATH in shebang
Fixes NixOS.
2024-09-24 19:00:05 +03:00
Yaroslav Chvanov
3bf556fb69 ratbagd: format with ruff format 2024-09-24 18:59:58 +03:00
Odd Eirik Nes
52dff63a64 data: add an additional usb identifier for Logitech G733 2024-09-24 15:59:11 +00:00
Yaroslav Chvanov
1c9662043f ratbagctl: use correct type hint for def main
Fixes: 34217a752b ("Update ratbagctl.test")
2024-06-04 18:52:37 +03:00
Yaroslav Chvanov
6f5470249d ratbagctl: remove unused imports 2024-06-04 18:50:12 +03:00
Yaroslav Chvanov
4845cc901f ratbagctl: fix Ruff warnings 2024-06-04 18:43:32 +03:00
Yaroslav Chvanov
8444ceb638 libratbag: remove FIXME for simple key action modifiers
Macros can be used for that instead.
2024-03-05 20:07:36 +03:00
Yaroslav Chvanov
1c4ef242fc sinowealth: use existing libratbag helper for converting macro to raw 2024-03-05 20:02:53 +03:00
koliwbr
cf15a6e65d data: add support for Mad Dog GM905 2024-02-27 19:16:38 +03:00
Yaroslav Chvanov
20962d093d ratbagc: fix new Ruff lints
Broke with Ruff v0.2.

- SIM401 Use `self._devices.get(id, None)` instead of an `if` block
- SIM113 Use `enumerate()` for index variable `i` in `for` loop
- Add type hint for Ratbagd._devices
2024-02-27 19:09:23 +03:00
Yaroslav Chvanov
e31338f081 ci: update linter settings format for ruff
Fixes:
> warning: The top-level linter settings are deprecated in favour of
> their counterparts in the `lint` section`.
2024-02-27 19:08:36 +03:00
Daniel Levi-Minzi
a52ffcdb45 add rog harpe ace wireless 2024-01-18 17:03:17 -05:00
Yaroslav Chvanov
79bb107634 ratbagd: fix typo 2024-01-14 02:58:18 +03:00
Yaroslav Chvanov
21373d8c4a sinowealth: fix lift-off distance reading integer overflow
Add same safety checks for it and angle snapping setting living near it.
Also log if something else is found in those buffers.
2024-01-14 02:58:18 +03:00
Yaroslav Chvanov
6c668d1f48 sinowealth: fix typos and reformat 2024-01-14 02:52:07 +03:00
Yaroslav Chvanov
8591540d03 sinowealth: add report rate cycling key mapping 2024-01-14 02:52:06 +03:00
Yaroslav Chvanov
d62984220b driver-hidpp20: remove unused static function
Fixes warning about unused function hidpp20drv_current_profile.
Also, it looks like it was missing 'rc == 0' check at the end.
2024-01-14 02:52:06 +03:00
Yaroslav Chvanov
fbd50bc241 ratbagd-profile: cap minimum report rate to 125
Fixes the sanity check part of #1563.
2024-01-14 02:52:06 +03:00
Michał Lubas
2d7b4c10d1 Add a delay before dbus sync in ratbagctl.test 2024-01-14 02:49:18 +03:00
Michał Lubas
0204289704 meson.build: Don't pass a file to str.format 2024-01-14 02:48:08 +03:00
Michał Lubas
27b0d4a2d9 Replace removed imp module with importlib 2024-01-14 02:48:08 +03:00
Michał Lubas
34217a752b Update ratbagctl.test 2024-01-14 02:48:02 +03:00
Vladislav Tyulbashev
00f06ba98e data: add Logitech MX Anywhere 3S 2024-01-01 02:18:31 +03:00
BigBoiMan123
8d7ca98c38 data: add ASUS ROG Keris Wireless AimPoint 2023-12-23 16:15:55 +03:00
Yaroslav Chvanov
22ddb717aa test: format receiver IDs as hex numbers
Fixes the receiver test not working basically ever.
Fixes #1558.
2023-11-24 19:14:40 +03:00
Kirk Roybal
bb9ea29c39 data: add Logitech MX Master 3S for Business 2023-11-24 19:06:48 +03:00
Kyoken
dcd15243b9 asus: add rog chakram core 2023-11-23 23:59:11 +03:00
fritteli
6db5cc3743 data: set device type of Logitech G513 to keyboard
The G513 is actually a keyboard, not a mouse (at least mine is ...).
2023-10-07 22:25:16 +03:00
Yaroslav Chvanov
4a00c06351 build: remove Coverity work-around
Coverity hasn't been used in a long while, by their web-site [1], last
analyzing was done in 2019-02 - over 4 years ago.
2023-09-25 22:39:58 +03:00
Yaroslav Chvanov
ec246cd18c build: move rbtree into a subdirectory 2023-09-25 22:37:08 +03:00
Yaroslav Chvanov
0d2ef30e41 steelseries: remove an unneeded import 2023-09-25 22:27:50 +03:00
Yaroslav Chvanov
a458e40e7f sinowealth: add a note about a bit mask 2023-09-25 22:27:50 +03:00
Yaroslav Chvanov
dd573b164f sinowealth: put a number into a const 2023-09-25 22:27:50 +03:00
Yaroslav Chvanov
f08faac63d libratbag-util: add const correctness 2023-09-25 22:27:50 +03:00
Yaroslav Chvanov
8e07821ffe libratbag-data: fix narrowing conversions 2023-09-25 22:27:49 +03:00
Yaroslav Chvanov
8c2570b30b libratbag-hidraw: add const correctness 2023-09-25 22:27:49 +03:00
Yaroslav Chvanov
1f3dea486d libratbag: add a bit of const correctness 2023-09-25 22:27:49 +03:00
Yaroslav Chvanov
6a7eff8aa1 hidpp20: remove an unused variable 2023-09-25 22:25:12 +03:00
Yaroslav Chvanov
125090c524 ratbagd: show version when starting
Fixes #1530.
2023-09-25 20:28:11 +03:00
Stephan Lachnit
abfa43345b data: add support for Logitech G413 keyboard
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2023-09-25 19:21:28 +03:00
Yaroslav Chvanov
d0c34bdbe9 sinowealth: write simple enough macros as key actions 2023-09-25 18:59:35 +03:00
Yaroslav Chvanov
13a7be878b sinowealth: change some default switch cases, comments and code style 2023-09-25 18:58:47 +03:00
Yaroslav Chvanov
4c68f71616 sinowealth: handle errors in sinowealth_button_set_key_action 2023-09-25 18:58:09 +03:00
Yaroslav Chvanov
e5ebce50ff sinowealth: handle errors in sinowealth_update_macro_events_from_action 2023-09-25 18:57:19 +03:00
Yaroslav Chvanov
874f32f212 sinowealth: make report rates list const 2023-09-25 18:56:38 +03:00
Yaroslav Chvanov
2b878fd06a libratbag: drop everything related to simple key action modifiers
Macros can be used for that instead, drivers can adapt them as needed.
Simple key actions will stay here for now, but I plan to completely
replace them with macros eventually.
2023-09-25 18:55:12 +03:00
Yaroslav Chvanov
d155bd27ec libratbag: refactor ratbag_action_macro_num_keys()
Also use a helper for checking modifiers, this will be handy for
drivers.
2023-09-25 18:55:12 +03:00
Yaroslav Chvanov
068a34c1dc doc: don't say that report rate is related to resolutions 2023-09-25 18:55:11 +03:00
Yaroslav Chvanov
e2f3ac8925 doc: remove an outdated section from IsDisabled field of Resolution 2023-09-25 18:55:11 +03:00
Yaroslav Chvanov
df7be31938 doc: remove leftover docs generators for libratbag-enums
Unused since c8c1c63531.
2023-09-25 18:55:11 +03:00
Yaroslav Chvanov
cf87e57aef doc: fix ActionTypes 2023-09-25 18:55:11 +03:00
Kyoken
bad8dd7ba7 asus: warn on unknown key codes 2023-09-19 18:17:46 +03:00
Yaroslav Chvanov
e3cf227019 ratbagctl: ignore a Ruff f-string formatting warning (UP032)
I think we're better off ignoring the warning here (instead of repeating
the same argument like 10 times).

Fixes tests failing because UP032 was extended in Ruff (and this has
happened before). Pinning Ruff is probably a good idea. (Fixes #1515.)
2023-09-19 18:16:49 +03:00
Yaroslav Chvanov
a4eb09ea6d ratbagd.py: sync with Piper
- Convert strings to f-strings
- Listen and notify about RatabgdProfile.Disabled changes
2023-07-17 18:05:06 +03:00
Yaroslav Chvanov
2311a84339 Use f-strings for formatting
Fixes Ruff warnings. Ruff didn't detect these before. Should we pin Ruff
version? 🤔
2023-07-17 00:31:53 +03:00
Ryan Jensen
0b5a95f09e updating documentation: linux/input.h -> linux/input-event-codes.h 2023-07-08 10:26:07 +03:00
Kyoken
f5e2259da5 asus: fix single profile devices 2023-06-04 18:58:18 +03:00
Yaroslav Chvanov
b1cdf6a4c2 steelseries: ignore the check for HID vendor device
Although it does work for some mice and fixes there being several
configurable devices for a single mouse in libratbag, for some mice it
does *not* apply, making them unusable with libratbag.
2023-05-20 11:19:43 +03:00
Yaroslav Chvanov
a121c0227b steelseries: check for settings reading errors 2023-05-20 11:18:20 +03:00
Yaroslav Chvanov
4240e067a9 openinput: return early instead of making an error-prone zero-sized VLA
Fixes a clang-analyze warning.
2023-05-20 11:01:17 +03:00
Yaroslav Chvanov
cf202eeeca driver-hidpp20: zero initialize a struct
This fixes a clang-analyze warning about uninitialized value getting
stored later.
2023-05-20 10:56:55 +03:00
Yaroslav Chvanov
4d6f80de01 liblur: check return value instead of comparing the out_ptr
Fixes a clang-analyze warning for a dead assignment.
2023-05-20 00:15:55 +03:00
Yaroslav Chvanov
b717f946ef sinowealth-nubwo: idiomatically zero initialize a struct 2023-05-20 00:12:46 +03:00
Yaroslav Chvanov
cfab554ea8 sinowealth-nubwo: remove trailing whitespace 2023-05-20 00:12:34 +03:00
Yaroslav Chvanov
b7b9749901 sinowealth-nubwo: correctly use an attribute
This erroneously declared it with name `__packed__` instead of using it
as an attribute.
It doesn't seem like it changes struct's size, but it has no
static_assert on it so we can't be 100% sure.
2023-05-20 00:10:33 +03:00
Yaroslav Chvanov
bb67e9b54e sinowealth-nubwo: fix incorrect firmware version getting error check
If by any chance returned `size` was `0`, it would erroneously return 0,
which would do an uninitialized pointer dereference in
sinowealthnubwo_probe().
This fixes a convoluted warning by clang-analyze.
2023-05-19 23:55:21 +03:00
Yaroslav Chvanov
9383f63c04 steelseries: add missing newlines to logging 2023-05-19 23:18:32 +03:00
Yaroslav Chvanov
8c220cb1a8 steeseries: make an array static const 2023-05-19 22:57:12 +03:00
Yaroslav Chvanov
9b36ff7dd1 steelseries: make most of implicit conversions explicit
Did not fix brightness and LED color, they deserve being changed on
libratbag side.
2023-05-19 22:57:12 +03:00
Yaroslav Chvanov
ab4504d3ed steelseries: fix narrowing conversions 2023-05-19 22:57:12 +03:00
Yaroslav Chvanov
d4a35f341b steelseries: don't define variables on a single line 2023-05-19 22:57:12 +03:00
Yaroslav Chvanov
ea5ca29aa2 steelseries: don't use reserved underscore identifiers 2023-05-19 22:57:12 +03:00
Yaroslav Chvanov
6fcac8a360 steelseries: simplify loop breaking 2023-05-19 22:57:11 +03:00
Yaroslav Chvanov
6e2550ac51 steelseries: add commit error logging 2023-05-19 22:57:11 +03:00
Yaroslav Chvanov
bd65f7f461 steelseries: don't use else after return 2023-05-19 21:50:14 +03:00
Jon
9cc4d71dd0 data: update logitech-g915-tkl.device to DeviceType=keyboard
Diverged accidentally from G915 in
4f36371af3.
2023-04-24 03:54:23 +03:00
Qjammer
7fb3c63e8d marsgaming: implement Mars Gaming MM4 protocol 2023-04-14 14:23:28 +03:00
Kyoken
70f2e96a66 asus: check mouse in probe, fix asus status code 2023-03-31 09:55:19 +03:00
Kyoken
fdf9c3ce7e data: fix asus chakram x 2023-03-31 00:00:15 +03:00
Yaroslav Chvanov
d82821fd62 sinowealth: show a more detailed message for unknown mice
The string may be a bit too long, but I still think it's a good idea to
guide people in the right direction.
2023-03-19 03:07:43 +03:00
Yaroslav Chvanov
dc9d49a240 data: improve description of possible fields for sinowealth driver 2023-03-19 02:51:19 +03:00
Yaroslav Chvanov
87f6e521e6 sinowealth: store firmware version in device files in the group name
It only makes sense, since it's what the section are identified by.
2023-03-19 02:42:47 +03:00
Yaroslav Chvanov
44279ddda3 shared-macro: make startswith() return a const char*
The supplied arguments are const, and as such the return type which is
derived from the arguments must also be const.
2023-03-19 02:39:30 +03:00
Yaroslav Chvanov
876c06237e sinowealth: change device files to match other drivers
..specifically the "ButtonCount" and "ProfileCount" keys.
2023-03-19 02:39:21 +03:00
Yaroslav Chvanov
4b936bf478 test: add test for sinowealth driver sections in device files 2023-03-19 01:51:21 +03:00
Yaroslav Chvanov
2522e4ed20 build: remove redundant build targets for tests
Initially I made them so that you can run them separately to see their
output, however, this can be done with meson out of the box. E.g.,
replace:
`ninja -C builddir python-black-check`
with
`meson test -v -C builddir python-black-check`.
2023-03-19 01:30:10 +03:00
halting
b137c61b9f Revert "g300: use the correct step size"
This reverts commit 20b573668e.
200-2500 DPI range and 50 DPI step don't works as expected on Linux.
2023-03-18 18:03:14 -03:00
Yaroslav Chvanov
cb196e16bb libratbag: don't allow disabling active profile 2023-03-09 18:33:02 +03:00
Yaroslav Chvanov
d259da5d42 test: check that active profile can't be disabled
This is failing right now.
2023-03-09 18:33:02 +03:00
Yaroslav Chvanov
115ee47787 libratbag: don't allow setting disabled profile as active 2023-03-09 18:33:02 +03:00
Yaroslav Chvanov
890d8313fd test: check that disabled profile can't made active
This is failing right now.
2023-03-09 18:31:38 +03:00
Yaroslav Chvanov
6e06fe7245 tools: fix printing of macros with buttons in them
As the fields are not always keys, also don't strip the first four
symbols of the string.
(as it's not always obvious what the stripped string can be, for example
BTN_0 and KEY_0).
2023-03-09 17:07:28 +03:00
Yaroslav Chvanov
1ffbae54a7 ratbagd: change type of a variable to fix stack smashing
sd-bus requires an int variable to be passed to SD_BUS_TYPE_BOOLEAN
calls, see man sd_bus_message_read (3).

We have had an issue of the same sort recently in
77fcaf6d28 which was in some freshly new
code, but this time it's something we have been shipping for a while.
2023-03-08 19:34:28 +03:00
Yaroslav Chvanov
072c1845b2 fixup! sinowealth: read profile count from the device file 2023-03-07 05:38:31 +03:00
Yaroslav Chvanov
2f5a7a5628 data: add SinoWealth driver to the example device file 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
d658dba612 sinowealth: check if ButtonCount field in device file is correct
Fixes such scenario:
Set ButtonCount to -1.
Start libratbag.
Watch sun burn.
2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
17d869d5bf libratbag-data: set fallback value in the same place as the proper value 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
fd6e693e88 sinowealth: don't try to live through errors while committing 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
e712b4f1eb sinowealth: fix logging using wrong member 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
ca7d4f78fc data: enable second profile for T-Dagger Imperial T-TGM310 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
a1e2159a4f sinowealth: allow up to three profiles 2023-03-07 05:35:17 +03:00
Yaroslav Chvanov
b39f2794cb sinowealth: conditionally enable writing profile-switching bindings 2023-03-07 05:35:16 +03:00
Yaroslav Chvanov
a8320f7eb7 sinowealth: use early return 2023-03-07 05:35:16 +03:00
Yaroslav Chvanov
59d85e0bf8 sinowealth: change "profile-up" button binding to cycle
I can't explain this, I'm SURE it wasn't cycling before and was just
getting stuck on the highest profile. What?
2023-03-07 05:35:16 +03:00
Yaroslav Chvanov
26cc246a4c sinowealth: read profile count from the device file 2023-03-07 05:35:16 +03:00
Yaroslav Chvanov
dfd9be05ab sinowealth: add "cycle LED modes" binding to unknown 2023-03-07 03:38:22 +03:00
Yaroslav Chvanov
fd3ce088b0 sinowealth: make an error message less generic 2023-03-07 03:30:45 +03:00
Yaroslav Chvanov
8fdf0de849 sinowealth: rename MAX to the variable with maximum profile count
It can go UP TO this count, it's not necessarily this number.
2023-03-07 03:19:41 +03:00
Yaroslav Chvanov
d2ee857d05 sinowealth: add and use profile count in drv_data 2023-03-07 03:18:53 +03:00
Yaroslav Chvanov
40e1785bcc sinowealth: check for device compatibility as soon as possible 2023-03-07 03:13:23 +03:00
Yaroslav Chvanov
9a0972891a sinowealth: update the comment about profile count 2023-03-07 03:04:53 +03:00
Yaroslav Chvanov
224985e28c sinowealth: add command IDs for the third profile 2023-03-07 02:55:09 +03:00
Yaroslav Chvanov
3b7fc7a662 ratbagctl: show if a profile is dirty 2023-03-07 00:31:10 +03:00
Yaroslav Chvanov
c4ee9d707d ratbagd.py: sync with Piper
- Fix a regression of profile not getting dirty after property changes.
- Add `notify` signals for more things.
- Do some minor refactoring.
2023-03-07 00:23:14 +03:00
Yaroslav Chvanov
52e21d767d libratbag: take constant pointers where possible 2023-03-07 00:12:09 +03:00
Yaroslav Chvanov
364948c32a libratbag: remove fall back for Logitech devices
This should be unreachable because we `Driver` field must be set in
device files, otherwise they are ignored. Our tests also catch this.

Anyway, it's always better to be explicit about this.
2023-03-06 23:44:06 +03:00
Yaroslav Chvanov
e9604305d1 libratbag-data: use the dpi_list_free helper 2023-03-06 23:42:31 +03:00
Yaroslav Chvanov
2734bc17de libratbag-util: make dpi_list_free() be able to take NULL
free() can take NULL without errors, and so should such helper.
2023-03-06 23:41:40 +03:00
Yaroslav Chvanov
2a356736f7 Fix drivers making profiles dirty while probing
Fixes drivers calling public API functions which should only be called
by the consumers of the library. The real problem here is that we don't
have a clear separation between driver API and public API.
This is just a simple search and replace, so there be more such things.
2023-03-05 16:32:03 +03:00
Yaroslav Chvanov
822f37a68c libratbag: check if profile is dirty in sanity check 2023-03-05 16:32:03 +03:00
Yaroslav Chvanov
1df7316195 libratbag: check if driver supports committing
There could be segmentation faults with the openinput driver.
2023-03-05 16:32:03 +03:00
Yaroslav Chvanov
44af3f145d ratbagd.py: use the IsDirty property of the DBus API 2023-03-05 13:39:33 +03:00
Yaroslav Chvanov
f1118b5b64 ratbagd: add IsDirty property to profiles 2023-03-05 13:39:33 +03:00
Yaroslav Chvanov
3e42349daa libratbag: add API for checking if profile is dirty 2023-03-05 13:26:27 +03:00
Yaroslav Chvanov
9f031e58a1 libratbag: fix profile not becoming dirty on active profile switch 2023-03-05 13:25:53 +03:00
Yaroslav Chvanov
2b47f5b942 data: add Sinowealth Generic Mouse (258a:0051) 2023-03-05 05:42:36 +03:00
Yaroslav Chvanov
78f68d2470 data: add links to device issues with raw configuration data 2023-03-05 05:39:40 +03:00
Yaroslav Chvanov
4a0d906092 sinowealth: add support for PMW3212 sensor
Not tested if it needs off-by-one adjustment like some other sensors do.
Although it could've been an ideal opportunity to add support for all of
the possible sensors, I didn't do it for the same reason.
2023-03-05 05:39:40 +03:00
Yaroslav Chvanov
53f09ed8c7 sinowealth: add more debug logging for easier device file creation 2023-03-05 05:39:40 +03:00
Yaroslav Chvanov
f96c5e2499 sinowealth: fix incorrect placement of sensor_type in config data
Oh wow.
2023-03-05 05:39:40 +03:00
Matthias Bach
6a07d0ec9c build: install ratbagd into sbindir
Ratbagd requires to be run by root. It should thus live in the system binary
directory.
2023-03-04 22:00:02 +03:00
Yaroslav Chvanov
84e8e63752 libratbag: don't apply active profile change until committing 2023-03-04 04:07:32 +03:00
Yaroslav Chvanov
a3f0ea9a52 tools: skip linter checks if linters are not installed 2023-03-04 03:37:31 +03:00
Yaroslav Chvanov
4b8ac177d1 tools: print errors to stderr 2023-03-04 03:34:12 +03:00
Yaroslav Chvanov
0e3f909264 ratbagd.py: add back .keys() calls on all GLib.Variant
This causes crashes on Piper side.
2023-03-03 23:37:26 +03:00
Kyoken
3f1e0f09cc ratbagd.py: don't mark a profile as dirty on active profile switch 2023-03-03 15:40:06 +03:00
Yaroslav Chvanov
b0d3f86287 build: add a missing dependency to a test
This fixes tests failing if you run `meson test` without running a
`meson compile` first.
2023-03-02 14:24:57 +03:00
Yaroslav Chvanov
a9545b2b63 test: use a simply assert instead of using a helper 2023-03-02 14:05:37 +03:00
Yaroslav Chvanov
1d24aa71d3 build: use project-local build and source directories
I think it should be possible to embed libratbag as a meson subproject
now (not tested).
2023-03-02 13:58:21 +03:00
Yaroslav Chvanov
a00531fe8b lint: exit early if git ls-files doesn't find anything 2023-03-02 13:48:03 +03:00
Yaroslav Chvanov
265e1cee1a test: fix traceback.print_exception() usage on older Python versions 2023-03-02 05:48:40 +03:00
Yaroslav Chvanov
e7a738086c lint: enable flake8-return 2023-03-02 05:30:31 +03:00
Yaroslav Chvanov
40fb7430db lint: enable flake8-simplify 2023-03-02 05:30:30 +03:00
Yaroslav Chvanov
27d74ae0f0 Use 'a != b' instead of 'not a == b' 2023-03-02 05:30:30 +03:00
Yaroslav Chvanov
80fa7f5b8f Use 'key in dict' instead of 'key in dict.keys()' 2023-03-02 05:30:30 +03:00
Yaroslav Chvanov
78b56d6ea0 tools: make all exceptions types have Error as the sufix 2023-03-02 05:30:30 +03:00
Yaroslav Chvanov
e84a56c424 test: don't return anything from main() 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
04b77a3b9b test: raise ValueError instead of AssertionError manually 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
57323ac978 ratbagctl: remove unnecessary else 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
8455c3ea71 ratbagctl: use standard exception types 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
3252d57b50 ratbagctl: fix an incorrect type hint 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
4b506a4ece lint: enable flake8-pie lints 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
7551bdaeff tools: remove unnecessary pass statements 2023-03-02 04:32:40 +03:00
Yaroslav Chvanov
ef2049643c ratbagctl: use textwrap.indent instead of inventing the wheel ourselves 2023-03-02 04:32:39 +03:00
Yaroslav Chvanov
681153ad4d doc: add angle snapping and debounce time 2023-03-02 03:01:06 +03:00
Yaroslav Chvanov
382df65a5d sinowealth: implement debounce time reading/writing 2023-03-02 03:01:06 +03:00
Kyoken
51edc2967b add angle snapping and debounce 2023-03-02 02:59:42 +03:00
Yaroslav Chvanov
37628da52f Remove flake8 configuration file
We now use black and ruff instead.
2023-03-01 23:52:11 +03:00
Yaroslav Chvanov
1b2259a8cb ratbagctl: rename a member function to prevent incorrect overriding 2023-03-01 23:01:10 +03:00
Yaroslav Chvanov
211551ff5b ratbagctl: don't reuse a variable for different types 2023-03-01 23:01:10 +03:00
Yaroslav Chvanov
6c5a15172b ratbagctl: make an argument non-optional 2023-03-01 23:01:10 +03:00
Yaroslav Chvanov
e43a7a279b ratbagctl: simplify an expression to make mypy understand it 2023-03-01 23:01:10 +03:00
Yaroslav Chvanov
3be064aef0 ratbagctl: add type hints where possible
We use the dynamic nature of Python for parsing command line arguments,
which makes it nearly impossible to type hint everything.
2023-03-01 23:01:10 +03:00
Yaroslav Chvanov
9b45b2ac03 tools: fix "line too long" warnings where possible 2023-03-01 22:18:41 +03:00
Yaroslav Chvanov
2bf349459b tools: ignore a false positive warning 2023-03-01 22:17:32 +03:00
Yaroslav Chvanov
57ac72077f tools: don't use complex types as default function arguments 2023-03-01 22:17:32 +03:00
Yaroslav Chvanov
a192088f13 tools: chain exceptions within exceptions 2023-03-01 22:17:32 +03:00
Yaroslav Chvanov
fa67024110 tools: fix ambiguous variable names
These one-letter variable names really are bad.
A good illustration of this is resolutions being assigned to the
variable where Ratbagd was, both of such variables were always names
just "r".
2023-03-01 22:17:32 +03:00
Yaroslav Chvanov
2ba49ba185 test: fix ambiguous variable names 2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
a66e6d2066 Automatically fix Ruff warnings 2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
3aa82d2b35 build: add Ruff for Python code linting 2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
49146638a6 Format Python code 2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
c723490fc3 build: add Python code formatting with black
NOTE: this will fail tests as of this commit, as the code is not
formatted yet.

We didn't explicitly specify a minimum Python version before that, so I
used v3.7 here, because it's the minimal version Ruff - a Python linter
I will add in the next commit - supports.
2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
bc9fa92667 tools: prevent a syntax error for code editors and linters 2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
41b55a1aff Rename Python files throughout the project to have .py* in the suffix
This just makes it more clear what these files are without opening them.
2023-03-01 22:17:31 +03:00
Yaroslav Chvanov
f6a3cd74bf gskill: add back button type button actions
Regression since 5548da21d3.

However I'm almost 100% sure this displays incorrect mouse buttons.
2023-03-01 20:48:48 +03:00
Yaroslav Chvanov
f9266496b0 ratbagctl: check if there is an active resolution 2023-03-01 03:59:58 +03:00
Yaroslav Chvanov
26cc2c7138 ratbagctl: check if there is an active profile 2023-03-01 03:59:19 +03:00
Yaroslav Chvanov
11f1ba9f37 tools: don't try to return the first resolution on error 2023-03-01 03:58:58 +03:00
Yaroslav Chvanov
fc80221187 tools: don't try to return the first profile on error
This may make an exception.
2023-03-01 03:57:54 +03:00
Yaroslav Chvanov
bc05935322 sinowealth: use the first profile if active profile index is too high
It seems like some devices now do have several profiles support enabled
officially. We failed to probe such mice if they have had non-first
profile as active. This fixes it.
2023-03-01 03:27:02 +03:00
Yaroslav Chvanov
fb5995a731 sinowealth: get rid of profile cache
This just duplicates data between libratbag and the driver.
2023-03-01 03:27:02 +03:00
Yaroslav Chvanov
b92645c373 sinowealth: edit a note about active profile index to be more clear 2023-03-01 03:27:02 +03:00
Yaroslav Chvanov
08d7c6997d sinowealth: move active profile index and debounce time getting to init
They were out of place being directly in the `probe` function.
Also, this will make more sense once we add an API for changing debounce
times.
2023-03-01 03:26:15 +03:00
Yaroslav Chvanov
9ec8c728cd sinowealth: add missing new-line in a log message 2023-03-01 03:25:04 +03:00
Yaroslav Chvanov
085274678f sinowealth: don't change active profile while probing
Official configuration utilities did this while probing if I remember
correctly, but it's not actually necessary.
2023-03-01 03:22:32 +03:00
Yaroslav Chvanov
5ab018df79 libratbag: remove everything related to the deprecated ratbag_led_type 2023-02-25 14:05:03 +03:00
Yaroslav Chvanov
87f1409b7a test: remove usage of the deprecated LED type field 2023-02-25 14:02:37 +03:00
Yaroslav Chvanov
f0f0cc8843 sinowealth-nubwo: remove usage of the deprecated LED type field 2023-02-25 13:59:23 +03:00
Yaroslav Chvanov
cbf09dac75 libratbag-data: don't parse LedTypes from device files 2023-02-25 13:59:23 +03:00
Yaroslav Chvanov
311df4e78e G300: remove usage of the deprecated LED type field 2023-02-25 13:56:50 +03:00
Yaroslav Chvanov
274f19e84b test: don't allow the deprecated LedTypes field 2023-02-25 13:39:47 +03:00
Yaroslav Chvanov
ac999da26c data: remove usage of the deprecated LED type field 2023-02-25 13:39:41 +03:00
Yaroslav Chvanov
a56ed6f1d8 roccat-kone-emp: remove usage of deprecated LED types 2023-02-25 13:36:21 +03:00
Yaroslav Chvanov
741b5f80e0 hidpp20: remove usage of deprecated LED types 2023-02-25 13:33:56 +03:00
Yaroslav Chvanov
ecdcfc1c34 steelseries: remove usage of deprecated LED type 2023-02-25 13:33:23 +03:00
Yaroslav Chvanov
82f0ed2aa1 G600: remove usage of deprecated LED types 2023-02-25 13:32:30 +03:00
Yaroslav Chvanov
22020330fb sinowealth: remove usage of deprecated LED types 2023-02-25 13:32:12 +03:00
Yaroslav Chvanov
2edeefaaa0 asus: remove usage of deprecated LED types 2023-02-25 13:31:38 +03:00
Yaroslav Chvanov
84626322c7 tools: remove helpers for deprecated LED types 2023-02-25 13:30:06 +03:00
Yaroslav Chvanov
11fa70ad5c hidpp20: remove unused LED type mappings 2023-02-25 13:28:52 +03:00
Yaroslav Chvanov
73b9b2da3a hidpp20: remove usage of the deprecated LED type in the driver 2023-02-25 13:27:17 +03:00
Yaroslav Chvanov
0c8beb6b9c libratbag: remove support for the deprecated button type field 2023-02-25 13:27:17 +03:00
Yaroslav Chvanov
6e3011d64f hidpp20: remove unused physical mapping button type
The `name` field does seem useful for debugging, so I left it in place.
2023-02-25 13:27:17 +03:00
Yaroslav Chvanov
1b00f7031a hidpp20: don't set the deprecated button type field in the driver 2023-02-25 13:23:29 +03:00
Yaroslav Chvanov
5548da21d3 gskill: remove support for the deprecated button type field
In this driver it seems like it was used for something. Let's hope it
was something optional.
2023-02-25 13:11:37 +03:00
Yaroslav Chvanov
85cab665b5 tools: remove helpers for the deprecated ratbag_button_type 2023-02-25 13:03:37 +03:00
Yaroslav Chvanov
53d1eefa1c test: remove support for the deprecated button type field 2023-02-25 13:02:46 +03:00
Yaroslav Chvanov
6cadc70caf steelseries: remove support for the deprecated button type field 2023-02-25 13:01:24 +03:00
Yaroslav Chvanov
ae2b0aa80b roccat: remove support for the deprecated button type field 2023-02-25 13:01:16 +03:00
Yaroslav Chvanov
05652e554c roccat-kone-pure: remove support for the deprecated button type field 2023-02-25 13:01:08 +03:00
Yaroslav Chvanov
a364076919 roccat-kone-emp: remove support for the deprecated button type field 2023-02-25 13:00:53 +03:00
Yaroslav Chvanov
d460e48795 G600: remove support for the deprecated button type field 2023-02-25 13:00:15 +03:00
Yaroslav Chvanov
018bd6e43e G300: remove support for the deprecated button type field 2023-02-25 13:00:09 +03:00
Yaroslav Chvanov
64dbfaa14a hidpp10: remove support for the deprecated button type field 2023-02-25 13:00:00 +03:00
Yaroslav Chvanov
515e634e87 gskill: remove support for the deprecated button type field 2023-02-25 12:59:26 +03:00
Yaroslav Chvanov
846a11ad58 etekcity: remove support for the deprecated button type field 2023-02-25 12:58:41 +03:00
Yaroslav Chvanov
54b55df43b roccat: don't enable key-type button actions
Not actually implemented.
2023-02-25 12:51:43 +03:00
Yaroslav Chvanov
40b477c2e3 roccat-kone-pure: don't enable key-type button actions
Not actually implemented.
2023-02-25 12:51:28 +03:00
Yaroslav Chvanov
f3052c5ff1 roccat-kone-emp: don't enable key-type button actions
Not actually implemented.
2023-02-25 12:51:00 +03:00
Yaroslav Chvanov
fbc4296c3b etekcity: don't enable key-type button actions
Trivially implementable, but not supported as-is.
2023-02-25 12:47:54 +03:00
Yaroslav Chvanov
1ea3eafc20 G300: don't enable key-type button actions
Trivially implementable, but not supported as-is.
2023-02-25 12:43:07 +03:00
Yaroslav Chvanov
cbc822bd52 steelseries: don't enable key-type button actions
Trivially implementable, but not supported as-is.
2023-02-25 12:43:04 +03:00
Yaroslav Chvanov
de5436e9a6 G600: don't enable key-type button actions
Trivially implementable, but not supported as-is.
2023-02-25 12:42:50 +03:00
Yaroslav Chvanov
9ec13c2862 tools: write to file directly without using print 2023-02-25 01:03:13 +03:00
Yaroslav Chvanov
3be9f38d2c tools: remove unused variables 2023-02-25 00:57:18 +03:00
Yaroslav Chvanov
e49c18b909 tools: use with-statements to open files
I'll be honest, writing to files with `print` looks weird...
2023-02-25 00:55:53 +03:00
Yaroslav Chvanov
74c2cb686e test: add explanations to empty excepts
And all of them are the same string... This is a bit annoying.
2023-02-25 00:41:23 +03:00
Yaroslav Chvanov
0db55eda25 tools: remove unused arguments 2023-02-25 00:22:07 +03:00
Yaroslav Chvanov
313c34fa98 tools: fix incorrect special method signature
Continuation of 62678baca1.
2023-02-25 00:22:07 +03:00
Yaroslav Chvanov
b275204c87 tools: check snprintf size argument to prevent potential overflow 2023-02-25 00:22:07 +03:00
Yaroslav Chvanov
e9e9d8e3fe libratbag-util: check the return value of scanf 2023-02-25 00:22:07 +03:00
Yaroslav Chvanov
3730e4d48a driver-hidpp10: fix variable shadowing 2023-02-24 23:44:01 +03:00
Yaroslav Chvanov
f872b16ef8 driver-hidpp20: fix variable shadowing 2023-02-24 23:44:01 +03:00
Yaroslav Chvanov
2a866aacde test: fix variable shadowing 2023-02-24 23:44:01 +03:00
Yaroslav Chvanov
33e0c2cacc hidpp10: fix variable shadowing 2023-02-24 23:44:01 +03:00
Yaroslav Chvanov
80ce0dbf21 sinowealth: remove an incorrect enum member 2023-02-24 23:44:01 +03:00
Yaroslav Chvanov
7731a874d1 ratbagd: don't extract sd_bus when it's given as an argument 2023-02-24 23:44:00 +03:00
Yaroslav Chvanov
b0a9f24afb test: remove a duplicate import 2023-02-24 23:44:00 +03:00
Yaroslav Chvanov
200fbe5875 hidpp10: fix a faulty error check which prevent macro parsing 2023-02-24 23:44:00 +03:00
Yaroslav Chvanov
5158d80cfa G600: prevent unused variable usage warning 2023-02-24 23:44:00 +03:00
Yaroslav Chvanov
683b5d752c G300: prevent unused variable usage warning 2023-02-24 23:44:00 +03:00
Yaroslav Chvanov
1eed280b82 tools: remove an unused function that always raises
..unless it's used by some third-party library? Either way, it just
raises an error.
2023-02-24 23:43:33 +03:00
Yaroslav Chvanov
dcdd7be8d8 tools: remove an unnecessary variable definition 2023-02-24 22:46:34 +03:00
Yaroslav Chvanov
62678baca1 tools: fix incorrect special method signature
They worked fine nonetheless as we only called these manually.
2023-02-24 22:43:37 +03:00
Matt Coffin
f20686b296 steelseries: add support for Rival 650 Wireless 2023-02-24 22:01:15 +03:00
José Almeida
ada99fb72e data: add device Logitech G Pro (X) keyboard
Known issues:
- not possible to change LED color of Caps lock indicator, Scroll
lock indicator and Game Mode button.
2023-02-14 16:49:27 +03:00
Yaroslav Chvanov
4b2b5a2038 ratbagctl: capitalize device type instead of having it in upper case 2023-02-14 16:29:21 +03:00
Julian Kandlhofer
d95328e8cc change misnamed function name
Signed-off-by: Julian Kandlhofer <julian.kandlhofer@gmail.com>
2023-02-14 16:29:20 +03:00
Julian Kandlhofer
4f36371af3 implement 'DeviceType' property
Signed-off-by: Julian Kandlhofer <julian.kandlhofer@gmail.com>
2023-02-14 16:29:20 +03:00
Yaroslav Chvanov
931ec44ff2 driver-hidpp10: fix integer overflow when profile count is unset
Blame C for implicit conversions.
2023-01-27 13:45:13 +03:00
Yaroslav Chvanov
fbdb41b073 hidpp10: return EINVAL instead of aborting
While these indicate an obvious error in the caller's code, there is no
need to crash the whole program because of this.
2023-01-27 13:42:32 +03:00
mistepien
6dcd17d340 data: add additional USB id for Logitech G102 (046d:c09d) 2023-01-06 17:45:30 +03:00
Yaroslav Chvanov
f8080865f4 steelseries: save the firmware version in ratbag device 2023-01-03 04:21:41 +03:00
Yaroslav Chvanov
7e91b3a343 sinowealth: save the firmware version in ratbag device 2023-01-03 04:21:07 +03:00
Yaroslav Chvanov
440292fda1 device: add firmware version API 2023-01-03 04:21:07 +03:00
Yaroslav Chvanov
17f8f0516b libratbag-util: make asprintf_safe() return a char* 2023-01-03 04:21:07 +03:00
Yaroslav Chvanov
7a5b9b4367 Fix typos throughout the codebase 2023-01-03 04:17:44 +03:00
Zebreus
e39d91cb2d doc: fix typo in readme 2023-01-02 15:27:46 +01:00
Yaroslav Chvanov
75b9bc9843 doc: fix documentation for disabling resolutions 2022-12-26 23:50:51 +03:00
Yaroslav Chvanov
f595c96495 ratbagctl: fix typo 2022-12-26 23:44:48 +03:00
Yaroslav Chvanov
77fcaf6d28 ratbagd: fix stack smashing
A regression I introduced while modifying the disableable resolutions
patch.
It went unnoticed, because it only crashes with optimizations enabled.
In my defense, this exception in D-Bus API that boolean messages must
give address of an int and not a bool is a weird peculiarity...
2022-12-26 23:44:45 +03:00
Yaroslav Chvanov
fdb4d65aa4 sinowealth: implement disabled resolutions 2022-12-25 22:54:16 +03:00
Stephan Lachnit
a624c681a3 driver-hidpp20: implement disabled resolutions
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2022-12-25 22:54:16 +03:00
Stephan Lachnit
45118b8fa5 Implement disabled resolutions
Implements feature to disable resolutions from a static resolution list.
Updates DBus API and tests accordingly.

Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2022-12-25 22:54:16 +03:00
Stephan Lachnit
c99fd654e3 Make order of resolution properties consistent
Resolution properties should be in the order (active, default).

Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2022-12-25 22:54:16 +03:00
Peter Hutterer
f6bfed4da0 ratbagd: switch Profile.Enabled to Profile.Disabled
When a boolean property is optional, the default None value and the False
value both represent a boolean false. So let's rename the property so that the
boolean values cannot be confused, because None and (Disabled == false) have
the same meaning (profile is enabled).

This is an API break.

Fixes #756

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-12-25 22:54:16 +03:00
Yaroslav Chvanov
e32145ecc7 ratbagd.py: fix changes to IsActive potentially not being notified about 2022-12-23 23:41:30 +03:00
Yaroslav Chvanov
2031e169ab ratbagd.py: make the profile dirty after changing report rate
This fixes the "Apply" button being disabled after changing report rate
in Piper (once this file gets synchronized there).
2022-12-23 23:40:55 +03:00
Yaroslav Chvanov
6e406d5127 ratbagc: add NONE as allowed action type
Fixes button disabling not working with ratbag-command.
2022-12-23 04:27:43 +03:00
Yaroslav Chvanov
d6c5f18362 Revert "tools: convert our enum equivalents to python enums"
This reverts commit 95243307ce.

I don't see any reason it has been there at all, and it also breaks
ratbag-command because of probably mistakenly removed Macro.NONE.
2022-12-23 04:26:40 +03:00
Yaroslav Chvanov
876e0cc642 sinowealth: enable button disabling support 2022-12-23 04:01:54 +03:00
Yaroslav Chvanov
56e0ee9279 ratbagctl: check if disabling buttons is supported 2022-12-23 04:01:29 +03:00
Yaroslav Chvanov
9e12c5874c libratbag: check if disabling buttons is supported 2022-12-23 04:01:09 +03:00
Yaroslav Chvanov
63f8e2c005 ratbagd: fix error handling in ratbagd_button_set_none() 2022-12-23 04:00:13 +03:00
Filipe Laíns
c4cf24308a hidpp20: enable disabling buttons on onboard profiles (0x8100)
Signed-off-by: Filipe Laíns <lains@archlinux.org>
2022-12-23 03:38:19 +03:00
Peter Hutterer
39b8f2bce2 ratbagd: map disabling a button to the existing action type None
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-12-23 03:38:18 +03:00
Peter Hutterer
cdf19a904e libratbag: Fix the action type NONE handling
Add the required hooks which were largely missing, remove a check that was a
copy/paste error and add a test button.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-12-23 03:34:33 +03:00
Peter Hutterer
95243307ce tools: convert our enum equivalents to python enums
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-12-23 03:34:31 +03:00
Yaroslav Chvanov
9c50116646 sinowealth: enable profile cycling mapping with a preprocessor macro
They suck, but we already do have the SINOWEALTH_NUM_PROFILES thing,
let's at least give it all possible capabilities if it is used.
2022-12-23 03:18:13 +03:00
Yaroslav Chvanov
ac86673006 sinowealth: further deduplicate the code of reading config data 2022-12-23 03:18:13 +03:00
Yaroslav Chvanov
5d1b529f4c sinowealth: explain additional profiles and their pit-falls 2022-12-23 03:18:13 +03:00
Yaroslav Chvanov
9bd9446ce2 sinowealth: add support for writing additional profiles 2022-12-23 03:18:11 +03:00
Yaroslav Chvanov
fe73bb34ef sinowealth: add support for button actions in macros 2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
0bdd0e71ba sinowealth: improve error handling
- No more arbitrary error codes, use POSIX error codes.
- Bubble errors up.
- Add strerror() wherever errno is printed.
2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
46711b3624 sinowealth: refactor sinowealth_update_macro_from_action()
Reading it was giving me head-ache. This still doesn't feel perfect but
it's already better.
2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
c48320134e sinowealth: fix a missing new line in logging 2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
0da7cc10b0 sinowealth: add support for reading 2 profiles (if a macro is set)
For what it's worth, all of this may not even belong in libratbag - this
is never going to be shipped to end users, only if someone modifies the
source code. In other words all of this is basically dead code, it's
just me trying to figure out the internal of SinoWealth devices.
2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
4621e1016a sinowealth: deduplicate the code of reading configuration data 2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
da92117973 sinowealth: fix a typo 2022-12-23 02:52:00 +03:00
Yaroslav Chvanov
36af0009bd sinowealth: assert instead of silently ignoring an error 2022-12-23 02:51:59 +03:00
Yaroslav Chvanov
f23f2bfbfb sinowealth: simply return a bool instead of 0 or 1 2022-12-23 02:51:59 +03:00
Yaroslav Chvanov
007fa34c87 sinowealth: make all casts explicit 2022-12-23 02:51:59 +03:00
Yaroslav Chvanov
a018207728 sinowealth: fix some variable types 2022-12-23 02:51:59 +03:00
Yaroslav Chvanov
e18baf6f36 sinowealth: use non-GNU-specific empty array initializer 2022-12-23 02:51:59 +03:00
Yaroslav Chvanov
991cf92594 sinowealth: print a warning if there are too much events in a macro 2022-12-23 02:51:47 +03:00
Yaroslav Chvanov
a493575daa test: add device data tests for the steelseries driver 2022-12-22 03:38:31 +03:00
Yaroslav Chvanov
c7e2e13ee0 test: add device data tests for the asus driver 2022-12-22 03:38:25 +03:00
Yaroslav Chvanov
d6b6b0d12c test: make check_section_driver() a bit more diff-friendly 2022-12-22 03:38:09 +03:00
Yaroslav Chvanov
9450ce18e1 test: increase max DPI in check_dpi_range_str() to 36000
o_O
2022-12-22 03:38:06 +03:00
Yaroslav Chvanov
10f03eaf0e test: fix incorrect character escaping in data-parse-test 2022-12-22 03:04:01 +03:00
Yaroslav Chvanov
8e798c74c9 test: data-parse-test: check all files even if there is an error 2022-12-22 03:03:59 +03:00
Yaroslav Chvanov
c6005b2cb8 test: fix formatting 2022-12-22 02:49:10 +03:00
Yaroslav Chvanov
e2ee8185c2 build: fix data tests not running
This will also help with out-of-tree builds.
2022-12-22 02:22:59 +03:00
Yaroslav Chvanov
be79267f9d test: work-around unsupported Driver section of the sinowealth driver 2022-12-22 02:22:59 +03:00
Yaroslav Chvanov
38d10977b6 test: add wheel to the list of permitted LED types 2022-12-22 02:22:59 +03:00
Yaroslav Chvanov
8a7474b1bd data: fix missing Driver field 2022-12-22 02:22:29 +03:00
Yaroslav Chvanov
1e4c1d73b8 test: add type hints to data-parse-test
This will help us prevent errors like in
41c655090ce9f709db4f7069777741a6b5384d24 in the future.
2022-12-22 02:18:42 +03:00
Yaroslav Chvanov
99bbbfb0b5 test: fix incorrect type of file paths in data-parse-test
Seems like the API of pathlib changed at some point.
2022-12-22 02:18:41 +03:00
Yaroslav Chvanov
0b8f4a25b1 tools: put the list of possible button action types into a const 2022-12-22 00:52:05 +03:00
Yaroslav Chvanov
72c1a29f28 ratbagd: fix formatting 2022-12-22 00:52:05 +03:00
Yaroslav Chvanov
9485ab6c1f ratbagd: use NULL instead of 0 for pointers 2022-12-22 00:52:05 +03:00
Yaroslav Chvanov
3b0ac12cc7 ratbagctl: add an error message if the key supplied to macro is wrong 2022-12-22 00:52:05 +03:00
Kyoken
39b6178d92 fix typo in macro bindings 2022-12-22 00:52:05 +03:00
Kyoken
49b9ad5647 use key name instead of code for binding 2022-12-22 00:52:05 +03:00
Kyoken
434b0537b5 fix ratbag-command key bindings 2022-12-22 00:52:05 +03:00
Kyoken
2eeacc354f implement key bindings feature 2022-12-22 00:51:59 +03:00
Yaroslav Chvanov
8bacfe9ee6 build: bump ratbagd DBus API version 2022-12-22 00:46:03 +03:00
Yaroslav Chvanov
0f39b0f1e9 asus: use ARRAY_FOR_EACH 2022-12-20 04:44:04 +03:00
Yaroslav Chvanov
8c528b2ec0 asus: make pointer variables const wherever possible
Also fixes `ASUS_BUTTON_MAPPING` being duplicated between different
source files if I understand C right.
2022-12-20 04:44:04 +03:00
Yaroslav Chvanov
0656d7896c libratbag-data: fix formatting 2022-12-20 04:44:03 +03:00
Peter Oliver
4319466aed Adjust offered resolutions for SteelSeries Kinzu V3
Fixes #1386.
2022-12-19 20:02:29 +00:00
TCH
d3c62a0d67 data: add Logitech MX Master 3S 2022-12-12 08:40:27 +10:00
Kyoken
67ab803657 asus: pugio button mapping 2022-12-09 10:01:21 +03:00
Kyoken
4187aa4123 asus: allow empty cells in bindings table and fix pugio button bindings 2022-12-07 23:32:03 +03:00
lennie420
919cde2b15 Logitech G303 Shroud Edition device file
Adds basic support for Logitech G303 Shroud Edition
2022-11-26 00:55:05 +03:00
Kyoken
f9286536f8 asus: fix button mapping type 2022-11-26 00:46:37 +03:00
Kyoken
0cf97d40af asus: handle undefined buttons 2022-11-26 00:46:37 +03:00
Kyoken
b93900bd91 asus: rename params 2022-11-26 00:46:37 +03:00
Red_M
6476cd000a Fix spatha x device file. 2022-11-26 00:46:37 +03:00
Kyoken
e628b50abf asus: add spatha x 2022-11-26 00:46:37 +03:00
Kyoken
3e5ac899ae asus: fix building errors 2022-11-26 00:46:37 +03:00
Kyoken
041a8023b8 asus: button mapping reworked 2022-11-26 00:46:32 +03:00
Kyoken
e9470ff6f4 asus: add strix impact 2 2022-11-18 11:52:22 +00:00
Yaroslav Chvanov
e26eac95db sinowealth: remove now unused button_set_key_action_from_macro
I first thought that we could use try to use this instead of
full-fledged macros when possible, but the implementation then is going
to look quite messy, so let's just delete this.
2022-11-18 11:52:07 +00:00
Yaroslav Chvanov
d2586a2344 sinowealth: do an assert instead of graceful internal bug handling 2022-11-18 11:52:07 +00:00
Yaroslav Chvanov
dd609c06a9 sinowealth: fix writing of key button action type
It did not work *ever* as the helper function was only called when
action type was `key` but the function checked if it was a `macro`.
2022-11-18 11:52:07 +00:00
Yaroslav Chvanov
925b2a2a0a libratbag 0.17 2022-11-09 10:43:27 +00:00
Yaroslav Chvanov
df42eeb1ca CI: update runners to use Node 16
Fixes warnings.
2022-11-09 10:43:05 +00:00
Yaroslav Chvanov
aab91b4b11 data: add another SinoWealth Generic Mouse (258a:0029) 2022-11-09 10:42:34 +00:00
Yaroslav Chvanov
c39640d943 asus: fix include order
It caused an `implicit function declaration` warning.
2022-10-12 22:16:19 +03:00
Kyoken
0c3cfe71a0 asus: remove extern 2022-10-12 21:20:30 +03:00
Kyoken
dcba13152f asus driver 2022-10-12 18:11:28 +03:00
Andreas Grosse
61da98ffd4 Add Support for G502 X over USB 2022-10-10 21:39:53 +02:00
PeakKS
98eec0941a Add support for G502 X Wireless 2022-09-11 19:21:27 -04:00
Yaroslav Chvanov
d8301414c7 libratbag-data: add a missing include
To fix `Declaration of X will not be visible outside of this function`
Clang warnings.
2022-08-02 12:12:42 +03:00
Yaroslav Chvanov
a4da425298 sinowealth: move device-specific data out of the driver
This moves device data out of the driver into device files. However, a
_single_ device file contains data for _several mice_ at the same time.
The reason for this is that different mice by SinoWealth may use the
same VID:PID pair. This is unfortunate, as we only allow a single
device file a given VID:PID pair.

Also move `sinowealth_led_format` enum into a header file and rename
its constants to fit in outside of the driver.
2022-08-02 12:12:42 +03:00
Yaroslav Chvanov
ea7b4b6821 sinowealth: null-terminate the buffer with firmware version 2022-08-02 12:12:42 +03:00
Yaroslav Chvanov
833468b292 sinowealth: use a constant instead of a magic number 2022-08-02 12:12:39 +03:00
Yaroslav Chvanov
cc954af7a7 steelseries: ensure that device has a version number set
Otherwise there would be hard to diagnose errors later on.
2022-08-01 07:55:40 +00:00
Yaroslav Chvanov
213ccce0a8 steelseries: add fallback button and LED count
Otherwise if there is a device file without them set, will try to create
UINT_MAX-1 instances of them and obviously fail with an out-of-memory
error.
2022-08-01 07:55:40 +00:00
Linus
bb6ab46a1a Fix presumed typo 2022-08-01 09:27:27 +10:00
listout
05c5815fb9 Use fprintf instead of error
hidpp files were using the error function from error.h header file.
Unfortunately not every libc comes with this particular header file, so
with this patch we won't be requiring to be rely on error function and
use fprintf function.

Thanks to developer Yaroslav Chvanov <staticssleever668> for the
original suggestion

Closes: https://github.com/libratbag/libratbag/issues/1253

Signed-off-by: listout <listout@protonmail.com>
2022-07-29 14:22:05 +00:00
Thomas Weißschuh
0fc6764b47 libratbag-data: fix possible NULL dereferences
This can happen when a device has not properly initialized and this
fields have not been set.
2022-07-21 09:09:04 +00:00
Peter Hutterer
07b40316fb test: add the Bolt receiver C548 to the receiver list
Listed here: https://pwr-solaar.github.io/Solaar/devices.html

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-08 12:23:44 +10:00
Sami Olmari
260e4adffc Add device-file for Logitech MX Anywhere 3B (#1313)
This variant stands for Logitech MX Anywhere 3 for Business.

Bluetooth match only, the receiver is not yet supported by the 
kernel and the device thus has the receiver's USB id

Signed-off-by: Sami Olmari <sami@olmari.fi>
2022-06-07 10:08:16 +10:00
Ilya Guterman
8c3c6598c3 hidpp20: verbose log the get current profile 2022-06-06 17:20:42 +03:00
Yaroslav Chvanov
1140875cd8 sinowealth: fix all devices being detected as generic device 2022-06-06 20:13:19 +10:00
Yaroslav Chvanov
f87bccb370 sinowealth: add data for Marvo Scorpion G961
I did not add the data entry for ratbagd though, as there has been
reported breakage with Ant Esports GM500, which uses the same VID:PID.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
c1955598fe sinowealth: note that debounce time command doesn't work on shorter mice 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
d261458cae sinowealth: limit the resolution to sensor's upper bound 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
ef3822af82 sinowealth: fix crashing on mice with unknown sensors 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
2d8115d2bf sinowealth: detect sensor type automatically 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
4c102358a2 sinowealth: make device detection less imperative
..and rename sensor types along the way:
- Prefix them;
- Fix PMW sensors being named PWM.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
d133d30f62 sinowealth: add numeric IDs to sensor types
These IDs match the ones in SinoWealth's configuration software.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
16a1028e1d sinowealth: add sensor type field to configuration data 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
704d5d2e65 sinowealth: decrease minimal configuration size
Configuration size on 1007 mice is smaller for sure. With these changes
the driver has been reported to successfully work with Marvo Scorpion
G961.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
bef26c1890 sinowealth: make dpi_to_raw return 8 bit number
It would otherwise get converted implicitly anyway.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
85241fdd1b sinowealth: handle RGB_NOT_SUPPORTED explicitly
This should technically be unreachable but this is good for code
quality.
2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
2dea887d2f sinowealth: prefix a function name 2022-06-06 07:54:17 +00:00
Yaroslav Chvanov
2004a3c13e sinowealth: fix a typo 2022-06-06 07:54:17 +00:00
Ilya Guterman
48bccf4c98 hidpp20: fetch active profile index only once
currently the active profile index is fetched for each profile,
this adds unnecessary overhead.

change the behavior to fetch the active profile only once during the driver data initialization.
2022-06-06 15:11:02 +10:00
Andreas Schwab
3ea0d44176 meson.build: use valgrind only if available 2022-05-06 15:33:46 +01:00
Ilya Guterman
3e1bc79aac hidpp20: fix set onboard mode 2022-04-29 01:03:45 +03:00
Yaroslav Chvanov
9715c5c150 libratbag-data: fix a memory leak
In driver data of hidpp10 and steelseries drivers `dpi_list` and
`dpi_range` were allocated with calloc, but never got freed.
2022-04-27 22:16:32 +03:00
Yaroslav Chvanov
07f0eafa57 sinowealth: add support for writing macros 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
72f8708e0e sinowealth: add support for writing key button actions 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
6ac5ba6dbb sinowealth: add support for changing button mappings 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
45a8fd9ec3 sinowealth: add support for reading button bindings 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
e9dff40258 sinowealth: add types for buttons
This button mapping reading and writing support is partially based on a
previous work of @phomes and @enkore. Thank you both very much!
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
94f28df134 sinowealth: set button count from detected device 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
4d646db24f sinowealth: fix rave lighting mode settings being shifted by one byte
Turns out I missed a field a bit lower and made an `unknown` section
bigger to compensate for that.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
e21366e5e5 sinowealth: mark color order on Genesis Xenon 770 as tested 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
21ac98e5f9 sinowealth: fix DPI being off by 100 on PWM3327 sensor
Thanks @hrw for testing.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
567d666b96 sinowealth: use a union instead of doing pointer arithmetic on DPI slots
This makes the code a bit more self-explaining and less error-prone as
we don't have to think about memory addresses when modifying DPI.
Also fixes several `bugprone-implicit-widening-of-multiplication-result`
clang-tidy warnings.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
b62565da56 sinowealth: fix breathing LED mode on 0027 mice 2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
3ff3705dbf sinowealth: add partial support for reading BREATHING7 lighting mode
Only partial as libratbag can only have 1 color in breathing lighting
mode.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
2aa9f012fe sinowealth: fix active resolution slot reading and writing
It turns out the field with active resolution only counts active
resolution slots. This was probably missed before because probably no
one sets for instance slots 1 and 3 but disables slot 2. I already added
a comment explaining this behavior before because I noticed this while
trying to implement this in ratbag-python and be surprised it didn't
work, but I didn't notice that the implementation here was lacking.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
e7cc62a9c8 sinowealth: return an error code instead of doing an assert
While I doubt it will actually ever get hit, there is no reason to crash
the whole daemon because of this.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
0608a0156d sinowealth: don't redundantly unreference a profile
Not needed anymore as a `for_each` macro is now used to get profiles.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
3723c5177f sinowealth: add command ID for putting the device into DFU mode
This is not right now and will never be actually used, I put it here
just for the sake of completeness.
2022-04-21 00:37:44 +03:00
Yaroslav Chvanov
9d59c1992a libratbag: remove now unused deprecated driver methods 2022-04-16 02:24:40 +03:00
Yaroslav Chvanov
ee54001032 roccat-kone-pure: migrate to profile-oriented API 2022-04-16 02:24:40 +03:00
Yaroslav Chvanov
7f0d058b66 roccat: migrate to profile-oriented API 2022-04-16 02:24:40 +03:00
Yaroslav Chvanov
cd2ad37db7 etekcity: only write profile once 2022-04-16 02:24:40 +03:00
Yaroslav Chvanov
d08f1f21b7 etekcity: migrate to profile-oriented API 2022-04-16 02:24:40 +03:00
Yaroslav Chvanov
2d21c0dac1 test: migrate to profile-oriented API 2022-04-16 02:24:40 +03:00
Peter Hutterer
7016b50f1b roccat: remove an unnecessary #include
No obvious reason why we need to include that header and it appears to
be glibc-specific. Let's use stdint.h instead (which is already
included).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-02-15 11:32:17 +10:00
Yaroslav Chvanov
217847adde steelseries: only write report rate if it's dirty 2022-02-11 14:32:14 +10:00
Yaroslav Chvanov
c12edcd4c7 steelseries: fix length of LED cycle output report being incorrect
It probably meant to use the macro directly, not `sizeof` of it (which
made it be 4 instead of 64).
2022-02-11 14:31:37 +10:00
Rafael Silva
ae53f6123b ibratbag-hidraw: add optional filter to hidraw read
Currently, these functions will read and timeout after 1s if
no packets were received. The issue with this is that a lot of times we
may catch unrelated packets, such as mouse or keyboard changes.
To solve this, this patch adds a new optional filter argument, when a filter
is passed the functions now will keep reading packets until a valid packet is found.
The filter argument is user written function that returns true or false.

Co-authored-by: Filipe Laíns <lains@riseup.net>
Signed-off-by: Rafael Silva <perigoso@riseup.net>
2022-02-04 14:27:08 +10:00
Yaroslav Chvanov
6dbaeaf506 steelseries: fix a memory leak
Found by valgrind. I also feel that there is another memory leak of the
same nature a bit higher in `init_data_hidpp10`.

Introduced by me. :^)
2022-02-01 07:30:01 +10:00
Yaroslav Chvanov
75c8cf83c3 sinowealth: fix several misspellings 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
706fe34382 sinowealth: explain how active_dpi works 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
5e57aa07ea sinowealth: add helpers for doing raw HID queries
Removes a lot of duplicated code.
There is one place, however, where these helpers were not used -
`sinowealth_read_raw_config`. It has some custom handling of data
because of unexpected behavior from mice.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1f4bf8fe5f sinowealth: rename a struct member to show that it's bit field 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
dadfb06b98 sinowealth: put command buffer size into a macro 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
d3c37a6836 sinowealth: fix two struct fields having swapped places 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1b04bcffba sinowealth: visually separate config report data specific to long mice 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e5093e1009 sinowealth: prefix some of our data type names 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
132fc21212 sinowealth: sanity check output of all raw data getters
Well, of almost all, config getter's output is not checked as it may
have seemingly incorrect data in some cases.

Potentially some mice may not support some commands but look like they
do. You can see this guard in action if you run
`sinowealth_print_long_lod_and_anglesnapping` after any other command
that sets 6 byte long buffer on non-long mice.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
3793e32ebd sinowealth: put a macro into an enum 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4e931cb712 sinowealth: remove a now unused macro 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e1682171ce sinowealth: improve comments
- Add comments to almost all functions.
- Add comments to some data types and macros.
- Add missing periods where it's needed.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e1334214b8 sinowealth: make the sensor maximum DPI getter return 0 on error 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
fd0954dbdc sinowealth: remove new-lines between data types and their size checks 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
aa1ab47f59 sinowealth: make update_profile_from_config a void function
It only ever returned `0`.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7585d73ff5 sinowealth: rename macros with config size to make more sense 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
81ca281f2c sinowealth: don't mark inactive profile as active 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
48d654827e sinowealth: cache current profile index in driver data 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
6c9306b199 sinowealth: store config report in an array 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
a9c0060029 sinowealth: add a macro for profile count 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
a289612d85 sinowealth: initialize all variables
While none of them were actually used before being initialized, I got
tired of constantly seeing `uninitialized variable` warnings in my
editor.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f7b7007897 sinowealth: declare a variable right before it's initialization
It's not in the beginning of the function anyway, so why not make it a
bit more concise.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
16333068b7 sinowealth: use for_each instead of manually getting profiles 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
eace92870a sinowealth: set the command before writing config
This will help if the config report has a different command in it for
some reason. This has happened to me when I tried using the second
profile.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c176825051 sinowealth: use uint8_t instead of char for report IDs
Also move one of them up, this may make the function a bit more readable
if we ever decide to support the second mouse profile.

Fixes a clang-tidy warning.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
ba3547457c sinowealth: split commit into raw data update and raw write helpers
This will get handy if we decide to add multiple profile support.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
3f936eff68 data: add another name to Glorious Model O - O- 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c25864c18a data: add SinoWealth Generic Mouse (258a:0027) 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
cf64aac5f1 sinowealth: set the RGB effect to unsupported if LED type is not defined 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
0a39552a65 sinowealth: add default sensor type and LED type 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
03d2d71f82 sinowealth: don't enable LED support if LED type is not defined 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1edb6df25b sinowealth: define set_active_profile method in the driver 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
9c7494c5c0 sinowealth: select first profile before getting any data from the mouse 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7f29c0423f sinowealth: add active profile setter 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
07307b85d3 sinowealth: add commands IDs for the second profile 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
219218118d sinowealth: print LOD and angle snapping value 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1e2489c9e7 sinowealth: add LOD and angle snapping value getter
LOD - lift-off distance.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
479c4352af sinowealth: print debounce time 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
763655516c sinowealth: add debounce time getter 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
944c4f0af5 sinowealth: print profile index 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
268ccab111 sinowealth: add profile index getter
Thank you so much, @araghon007!
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
603b0ca1fc sinowealth: use RGB or RBG colors depending on device 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4e50c506de sinowealth: format code 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4351eb3d72 sinowealth: support different sensors 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
9f4a1ba405 sinowealth: print device model based on firmware version
sinowealth: detect Glorious Model O with old firmware
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
451894b1b4 sinowealth: make the firmware version printing helper return it instead 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c6051cb9ea sinowealth: handle new RGB effects 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
34fafbc0f8 sinowealth: use enum types in config report directly
Although I'm not sure this if this would work on every compiler, having
a bit of extra type safety is always nice.
It does work with GCC and Clang at the very least.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
75d075cc67 sinowealth: make some utility functions take unsigned integers
To avoid implicit conversions.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
2f330b6466 sinowealth: use a struct to store lighting mode 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c7adc9b9f6 sinowealth: print config data size 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
16a7b6ed18 sinowealth: use NULL instead of 0 for pointers 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7ff73c8515 sinowealth: rename a config entry to make more sense 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f11e31d671 sinowealth: add some hidden lighting types
These are not available in Glorious software.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f69457c280 sinowealth: add breathing_mode to config report 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
756fee1202 sinowealth: sort values in an enum 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
d4126463e4 sinowealth: don't say that amount of breathing colors is constant
Based on information in gloryctl's documentation, it's not. I guess it
was marked as such because Glorious software doesn't allow to change it.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
00832cb9f0 sinowealth: add a lift off distance value to config report 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
866d4e6433 sinowealth: put some macros into enums 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
cbba00f997 sinowealth: use a map to convert report rates 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
d2e4fcc23e sinowealth: put report rate conversion comparison in order
And also not use some random number in the comparison.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f0c66d0e1f sinowealth: separate config to real config and report_rate nibbles 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
b2fb91e261 sinowealth: use correct bits for report rate
Turns out it takes the whole nibble, not just three bits.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1a64d2b85d Add a TODO to make ratbag_button_action_match support macro actions 2022-02-01 07:11:43 +10:00
Yaroslav Chvanov
8f5fdf8590 Fix ratbag_button_action_match not matching on type NONE 2022-02-01 07:11:43 +10:00
Yaroslav Chvanov
baad36060d util: fix a string of text being printed out of nowhere 2022-02-01 07:06:38 +10:00
Yaroslav Chvanov
7ecabea70d sinowealth: remove a redundant comment 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
c0c8d6c544 sinowealth: increase log level of printed firmware version 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
37587bb99c sinowealth: fix a memory leak
We were getting profiles, but never unreferenced them afterwards.
2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
cc2fff9c06 sinowealth: rename some functions to be more clear
So that they would match button data reading later on.
2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
b80d3ac0a3 sinowealth: use the detected LED count
I put this in a separate commit as 99% of this is just a change of
indentation levels, which doesn't look nice in git.
2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
a757180d60 sinowealth: detect LED count at run-time 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
8c0124d654 sinowealth: move raw data reading from init function to probe function 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
b5d41e3657 sinowealth: put reading of raw configuration data into a helper 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
bfd2fc9969 sinowealth: print firmware version on profile init, not on reading 2022-01-28 10:31:09 +10:00
Yaroslav Chvanov
566d160de3 sinowealth: make init_profile return error codes 2022-01-28 10:31:09 +10:00
Kyoken
e0dc0a3a5b fix ratbag-command led setting 2022-01-24 12:55:12 +10:00
Peter Hutterer
5b7af0ec14 CI: actually test with the various meson args
Different variable names and no-one noticed.

This means we need to add a few dependencies that weren't needed before.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-01-22 12:09:34 +10:00
Peter Hutterer
44a9959344 roccat: name two fields correctly
In hindsight, these should've been obvious.
2022-01-20 19:32:14 +00:00
Peter Hutterer
755dbddfb3 meson.build: fix spelling of receiver 2022-01-20 15:47:11 +10:00
Peter Hutterer
1e3a85433a CI: add a github pages job to the CI
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-15 14:40:56 +10:00
Peter Hutterer
b3b3e3f838 Drop CircleCI
Right now, CircleCI fails with ssh errors because for some reason it
wants to clone the repo over ssh, not https. This is probably fixable
but CircleCI now limits how many runs we can do per month anyway so it's
borderline useless if we do actual developement.

Having to re-learn the Circle CI syntax to fix the current issue is not
an efficient use of our time, so let's just drop this completely, git
will keep the history of what we used to do in the CI for us.

02f3487f52 added a github workflow which
is comparatively incomplete but could be extended to do the previous
test runs. That's a more future-proof path anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-15 14:40:56 +10:00
Peter Hutterer
f05b671dc1 Install all data files as subdir
This removes the need of listing every device in meson.build which is a
common enough mistake for new contributors.

And move the validation tests over to test/ so we don't have to list
them in the exclude_files of the install_subdir() command.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-13 10:39:42 +10:00
Peter Hutterer
bfadfc3c91 Change the data validation tests to take the directory instead of files
Instead of passing a million files, let's pass the directory and do a
pathlib glob instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-13 10:39:42 +10:00
Peter Hutterer
96d93ae387 meson.build: require meson 0.50.0
Released March 2019 we've already relied on some of its features anyway,
let's get rid of the warnings.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-13 10:38:59 +10:00
Peter Hutterer
03891189da hidpp20: add missing #define to the feature report strings (#1237)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-06 08:46:40 +10:00
Peter Hutterer
02f3487f52 Add a GitHub Workflow as CI run (#1238)
CircleCI is limiting how many runs we can do, which results in pipelines
randomly failing when we've used up the credits for this month.

Let's add a github workflow instead. Unfortunately github workflows are
a bit of a toy api, no support for YAML anchors or extending other jobs,
so there's a lot of duplication needed to get a job to do something.

The actions added in this patch help a bit to make the jobs easier to
understand (copied from libwacom).

This only runs on Ubuntu right now.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-12-06 08:43:14 +10:00
Ilya guterman
d2f1ff0ca2 tests: test for additonal lightspeed receviers pids
PR #1225
2021-11-06 16:53:01 +00:00
Rafael Silva
d5a7ad3730 device: g635: Set buttons as 0 2021-11-06 03:27:32 +02:00
Carlos Mogas da Silva
e98f86fa2a Add Logitech G635 Headset 2021-11-06 03:27:32 +02:00
Rafael Silva
fb14cb576b README: add uninstall instruction 2021-11-04 09:35:30 +00:00
Ilya Guterman
2c83f9c3ef add static assert 2021-11-04 03:36:41 +02:00
Ilya Guterman
b71f439ed6 fix ci failures 2021-11-04 03:36:41 +02:00
Ilya Guterman
dff102be43 steelseries: prefix hidraw writes with 0 2021-11-04 03:36:41 +02:00
mtayllan
6bb92dc313 Set buttons as 0 for logitech g733 2021-11-01 08:25:03 +02:00
mtayllan
92c5923255 Add support to Logitech G733 2021-11-01 08:25:03 +02:00
staticssleever668
6c8a2d36fe sinowealth: use proper config size when writing 2021-10-26 11:57:53 +03:00
staticssleever668
875aae6985 sinowealth: add support for mice with longer configuration data 2021-10-26 11:57:53 +03:00
Ilya Guterman
a55297e0fa fix button count and default report rate always zero 2021-10-20 11:29:55 +03:00
staticssleever668
fa95abbc33 hidpp20: give some structures names
Fixes SWIG's 503 warnings.
2021-10-16 22:43:37 +03:00
staticssleever668
48d1b21036 driver-hidpp20: cast an internal log priority enumeration to the general one
Fixes an 'enum-conversion' warning by clang.
2021-10-16 22:43:37 +03:00
staticssleever668
904aedc555 driver-hidpp10: cast an internal log priority enumeration to the general one
Fixes an 'enum-conversion' warning by clang.
2021-10-16 22:43:37 +03:00
staticssleever668
4fa8663cfb driver-hidpp10: remove a redundant character array null check
It is never null. Fixes a 'pointer-bool-conversion' warning by clang.
2021-10-16 22:43:37 +03:00
staticssleever668
58086882a3 ratbagd: initialize a variable
Fixes a 'sometimes-uninitialized' warning by clang.
2021-10-16 22:43:37 +03:00
Tayllan
aef92645b7 hidpp20: allow setting a default buttons count
PR #1212
2021-10-16 20:08:44 +01:00
staticssleever668
514ce5419f data: add SteelSeries Rival 100/105 2021-10-16 19:31:11 +01:00
staticssleever668
2a0a3cf203 steelseries: add support for changing LEDs on Rival 100 2021-10-16 19:31:11 +01:00
staticssleever668
f96ba13f07 libratbag-data: add 'Rival100' quirk to SteelSeries driver 2021-10-16 19:31:11 +01:00
staticssleever668
724d31c8fe steelseries: make settings unique to SteelSeries Sensei RAW a quirk 2021-10-16 19:31:11 +01:00
staticssleever668
66e44d76b9 steelseries: add 'Quirk' setting 2021-10-16 19:31:11 +01:00
Filipe Laíns
e908871e82 hidpp20: allow setting a default report rate (#969)
In case we can't get the report rate value from the device, allow
setting in the device file.

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2021-10-11 02:14:02 +03:00
Kristian Klausen
9732aa009e steelseries: only use the HID vendor device
Rival mice are composite devices with multiple HID devices and only the
HID vendor device can be used to configure the device.

Tested with a SteelSeries Rival 300 (1038:1710).

Fix #888
2021-10-10 21:10:20 +01:00
Ilya guterman
92299d4673 data: support steelseries rival variations
PR #1209
2021-10-10 18:51:35 +01:00
LittleWhite-tb
5c3df3b218 Support for Roccat Kone EMP (#1131) 2021-10-07 16:00:36 +10:00
Filipe Laíns
62f26e797e Revert "data: Add (old) Logitech Performance Mouse MX"
This reverts commit d47f2ed946.

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-07-24 22:25:38 +01:00
Filipe Laíns
d460743bd7 Revert "data: add additional identifier for MX Anywhere 2"
This reverts commit 2ce254e51b.

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-07-24 22:25:25 +01:00
strangemax
d47f2ed946 data: Add (old) Logitech Performance Mouse MX
PR #1146
2021-07-24 22:19:17 +01:00
João Ferreira
2ce254e51b data: add additional identifier for MX Anywhere 2
PR #1155
2021-07-24 22:18:19 +01:00
staticssleever668
c7c9c908e1 ratbagd-profile: allow report rates up to 8000 2021-07-24 22:17:19 +01:00
staticssleever668
b339370b6a ratbagd-profile: do not align report rates to 100 2021-07-24 22:17:19 +01:00
staticssleever668
37ae638a7c steelseries: improve v1 LED breathing duration configuration
SteelSeries mice using V1 driver don't support changing LED breathing
duration precisely, so it was always locked on 5 seconds. Now we try to
match desired duration with factory preset values: 3, 5 and 7 seconds.
2021-07-24 22:05:49 +01:00
staticssleever668
6a071dc1ee sinowealth: expose all eight resolution slots
It was limited to six because Glorious' software exposes only so many of
them, but SinoWealth mice firmware allows up to eight.
2021-07-24 22:05:16 +01:00
staticssleever668
7c9a75da9e sinowealth: add support for changing report rate 2021-07-24 22:04:55 +01:00
staticssleever668
dd1c72a1d0 sinowealth: add support for reading current report rate 2021-07-24 22:04:55 +01:00
staticssleever668
8d7cbcba4f steelseries: fix report rate changing for version 1 devices
Judging by rivalcfg's data for Sensei Raw, Rival 100, Rival (300) and Kinzu v2 (all are version 1 devices in our data), it should have been like that from the beginning.
Confirmed on Rival 100.
2021-07-24 22:04:14 +01:00
staticssleever668
4075227eb7 sinowealth: add support for changing active resolution number 2021-07-24 22:03:44 +01:00
Stephan Lachnit
abcec1d349 Register Roccat Kone Pure driver
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2021-07-24 21:25:56 +01:00
Stephen Kitt
206bc5996d man: add both variants in ratbagctl.1 synopsis
PR #1188
2021-06-30 19:23:30 +01:00
Stephen Kitt
366f19abdd openinput: fix "Unknown" typo
PR #1187
2021-06-30 19:21:47 +01:00
Filipe Laíns
952bd9dc07 libratbag 0.16
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-06-24 15:11:34 +01:00
staticssleever668
6b97d94a2f sinowealth: print out firmware version when probing 2021-06-23 15:40:38 +00:00
Thomas Weißschuh
ccaa8d1b6c ratbagd: register task to run as soon as possible
Previously the scheduled task would only have been executed after some
other event woke up the mainloop.
If no such event happens, the task will be delayed significantly.

Fixes #1121
2021-06-21 22:47:42 +01:00
Elián Hanisch
abe451df33 sinowealth-nubwo: fix implicit declaration of function ‘vasprintf’
driver-sinowealth-nubwo.c was missing to include "config.h" so
_GNU_SOURCE wasn't defined soon enough.

Co-authored-by: Elián Hanisch <elian.hanisch@ing.unlp.edu.ar>
2021-04-29 01:38:03 +01:00
Sethox
a3fa876c3d data: add SEL variant to Roccat Kone Pure
The last part added is for a variant called "Roccat Kone Pure SEL".

PR #1152
2021-04-21 03:45:25 +01:00
Filipe Laíns
230647c7f3 openinput: fail probe if we can't enumerate
These functions are mandatory[1], fail to probe if they fail.

[1] https://github.com/openinput-fw/openinput-protocol/tree/master/specification/device-protocol#mandatory-functions

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-04-04 15:08:21 +01:00
Filipe Laíns
3f99446a1b ci: temporarily disable arch
See my description of the problem in [1].
Essentially, docker is mishandling the failuire when a syscall is not
available, returning EPERM instead of ENOSYS, and making code misbehave.
The current issue with arch is glibc, which explodes on EPERM, causing
pacman to misbehave.

Once the fix hits CircleCI, we will re-enable.

[1] https://github.com/fwupd/fwupd/issues/2894

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-03-01 10:34:10 +10:00
Filip Laurentiu
a766f8e909 data: add new identifier for DeviceMatch to match MX Anywhere2 mouse
PR #1137
2021-02-28 19:02:52 +00:00
Pavel Kovar
9ae975f9a9 data: add support for Logitech M500s mouse 2021-02-17 17:53:27 +00:00
Filipe Laíns
780934b1a1 data: add openinput device
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
337fb935c4 openinput: refactor function discovery
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
c9cf5fe90c openinput: add function discovery
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
18af0f97d2 openinput: print device protocol name
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
286f13c654 openinput: read firmware information
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
c6b9cc0c2a openinput: add error support
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
7d82bb51a6 openinput: save protocol version
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
8976033da7 openinput: add openinput_send_report
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
Filipe Laíns
c9c6a1675f openinput: add barebones driver
This is the minimal code required to have a working driver, now we just
need a .device file.

Note the hardcoding of `profile->is_active = true` in
openinput_read_profile, this works because we just have one profile.

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-02-16 00:15:59 +00:00
the Weld
f1e2a4ccff data: add extra USB device ID for MX Vertical
Fixes #1132, for my own model of MX Vertical at the least.
2021-02-15 20:00:34 +00:00
Filipe Laíns
104543fdf1 data: add G Pro X Wireless Superlight
Support for this receiver, and for the device using the powerplay
receiver, still needs to be added to the kernel driver. For now, you can
used the wired connection to configure the device.

You should also not try to use with the powerplay receiver as the kernel
driver does not support the connection and won't forward any input
events to userspace.

Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-01-30 10:59:37 +00:00
Matt
b3275e10d7 data: add Logitech M545 2020-12-30 17:43:52 +00:00
Filipe Laíns
120908bda8 data: add G915 TKL
Closes #1008

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2020-10-22 20:20:04 +01:00
Filipe Laíns
32d6443553 data: add an ID to the MX Anywhere 2
Fixes #1078

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2020-10-17 18:22:54 +01:00
Calvin Walton
ae943eaee7 data: Add configuration for SteelSeries Kinzu V2 Pro Edition
Appears to be basically the same as the V2 - the differences were
mostly in hardware (upgraded switches & image sensor). I've verified
that the list of DPI settings is correct and matches the Windows
software. Adjusting DPI config in both profiles works correctly.
2020-10-15 01:50:44 +01:00
Calvin Walton
4a9503f2da data: add device IDs for Logitech MX Anywhere 3 2020-10-14 21:57:19 +01:00
Filipe Laíns
e268100d31 libratbag-data: log message if the device is a Logitech receiver
We have been receiving countless issues and PRs reporting or "fixing"
the device IDs because they think it's wrong. Hopefully this will give
them an hint that is intended behavior. If they look closely at the log,
on a recent enough kernel, they should see their device show up with the
internal ID.

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2020-10-09 17:37:44 +01:00
Filipe Laíns
8ec0e8bbc5 Revert "meson: bump required meson version"
This reverts commit e753db72f9.

The new version is too recent for lgtm.com.
See https://lgtm.com/projects/g/libratbag/libratbag/logs/rev/pr-c8dd47f8b4d0c40fc0a27b13e031bbb8e6c76987/lang:cpp/stage:Build%20merge_7b2f50275451a899db1bf70b6eaae9d88ecc56d0

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2020-10-08 01:46:03 +01:00
bluemner
e6a9fba498 Update add support for G-Shift keys on g600 2020-10-05 00:44:27 +01:00
Thomas H.P. Andersen
e753db72f9 meson: bump required meson version
Bump the required meson version to match the features that we make
use of.

We now also make use of the 'copy:' keyword in configure_file that
is available in version 0.47.
2020-10-05 00:39:43 +01:00
Thomas H.P. Andersen
e1f4fac9a2 ratbagd-json: fix compilation with clang
Compilation on clang failed as we would try to jump to
the 'out' label and then jump over the initialization
of a variable with __attribute__((cleanup)).

We move the initaliztion up to make sure it happens before
the goto.
2020-09-29 02:11:09 +01:00
Thomas H.P. Andersen
8f981c8b87 circleci: bump to fedora 32
Bump to fedora 32 to updated meson version
2020-09-29 02:08:17 +01:00
Thomas H.P. Andersen
01d2cf8477 sinowealth: silence warning 2020-09-29 01:07:12 +02:00
225 changed files with 12952 additions and 4600 deletions

View File

@@ -1,269 +0,0 @@
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 diffutils
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
ARCH_DEP_BUILD: meson swig glib2 libevdev libudev.so libunistring json-glib python python-evdev python-gobject
ARCH_DEP_TEST: check valgrind python-lxml
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
save_date: &save_date
run:
name: Save date
command: date +%F > /tmp/date
fedora_save_cache: &fedora_save_cache
save_cache:
key: fedora-cache-v1-{{ checksum "/tmp/date" }}
paths:
- /var/cache/dnf
fedora_fetch_cache: &fedora_fetch_cache
restore_cache:
keys:
- fedora-cache-v1
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:
- *save_date
- *fedora_fetch_cache
- *fedora_install
- checkout
- *start_dbus
- *build_and_test
- *install
- *check_install
- *check_uninstall
- *build_buildtype_plain
- *build_buildtype_release
- *export_logs
- *fedora_save_cache
environment:
*build_dependencies
arch_save_cache: &arch_save_cache
save_cache:
key: arch-cache-v1-{{ checksum "/tmp/date" }}
paths:
- /var/cache/pacman/pkg
arch_fetch_cache: &arch_fetch_cache
restore_cache:
keys:
- arch-cache-v1
arch_settings: &arch_settings
<<: *default_settings
steps:
- *save_date
- *arch_fetch_cache
- run:
name: Install prerequisites
command: pacman -Syu --noconfirm --noprogressbar --needed base-devel git tree ${ARCH_DEP_BUILD} ${ARCH_DEP_TEST}
- *start_dbus
- checkout
- *build_and_test
- *install
- *check_install
- *check_uninstall
- *export_logs
- *arch_save_cache
environment:
*build_dependencies
ubuntu_settings: &ubuntu_settings
<<: *default_settings
steps:
- run:
name: Install prerequisites
command: |
export DEBIAN_FRONTEND=noninteractive
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_31:
<<: *fedora_settings
docker:
- image: fedora:31
arch:
<<: *arch_settings
docker:
- image: archlinux
ubuntu_20_04:
<<: *ubuntu_settings
docker:
- image: ubuntu:20.04
doc_build:
<<: *doc_build
docker:
- image: fedora:31
doc_deploy:
<<: *docs_deploy
docker:
- image: fedora:31
workflows:
version: 2
compile_and_test:
jobs:
- ubuntu_20_04
- arch
- fedora_31
- doc_build
- doc_deploy:
requires:
- doc_build
filters:
branches:
only: master

View File

@@ -1,3 +0,0 @@
[flake8]
ignore = E402,E501
exclude = .git,__pycache__,build,data,piper/piper.py

39
.github/actions/meson/action.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
# A Github Action to build a repository with meson
name: "Setup and run meson"
description: "Setup and run meson"
inputs:
builddir:
description: "The build directory"
default: "builddir"
srcdir:
description: "The source directory"
default: "."
meson_args:
description: "Arguments passed to meson setup"
default: ""
meson_skip_test:
description: "Set to a nonempty string to skip meson test"
default: ""
meson_test_args:
description: "Arguments passed to meson test"
default: ""
meson_precmd:
description: "Set to 'sudo' to run with sudo"
default: ""
ninja_args:
description: "Arguments passed to ninja"
default: ""
ninja_precmd:
description: "Set to 'sudo' to run with sudo"
default: ""
runs:
using: "composite"
steps:
- run: |
${{inputs.meson_precmd}} meson setup ${{inputs.builddir}} ${{inputs.srcdir}} ${{inputs.meson_args}}
${{inputs.meson_precmd}} meson configure ${{inputs.builddir}}
${{inputs.ninja_precmd}} ninja -C ${{inputs.builddir}} ${{inputs.ninja_args}}
if [[ -z "${{inputs.meson_skip_test}}" ]]; then
${{inputs.meson_precmd}} meson test -C ${{inputs.builddir}} --print-errorlogs ${{inputs.meson_test_args}};
fi
shell: bash

17
.github/actions/pkginstall/action.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: "Install packages"
description: "Install a set of packages from sources"
inputs:
apt:
description: "The package list to install with apt"
pip:
description: "The package list to install with pip"
pip_precmd:
description: "Set to the string 'sudo' to run through sudo"
default: ""
runs:
using: "composite"
steps:
- run: sudo ${{ github.action_path }}/install-apt.sh ${{ inputs.apt }}
shell: bash
- run: ${{inputs.pip_precmd}} ${{ github.action_path }}/install-pip.sh ${{ inputs.pip }}
shell: bash

14
.github/actions/pkginstall/install-apt.sh vendored Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash -x
# If called without arguments, just skip the rest
if [[ -z "$@" ]]; then
exit
fi
# Don't care about these bits
echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft
echo 'path-exclude=/usr/share/locale/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft
echo 'path-exclude=/usr/share/man/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft
apt-get update
apt-get install -yq --no-install-suggests --no-install-recommends $@

9
.github/actions/pkginstall/install-pip.sh vendored Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash -x
# If called without arguments, just skip the rest
if [[ -z "$@" ]]; then
exit
fi
python -m pip install --upgrade pip
python -m pip install --upgrade "$@"

50
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,50 @@
name: linux
on: [ push, pull_request ]
env:
UBUNTU_DEP_BUILD: |
gcc g++ pkg-config systemd libevdev-dev libglib2.0-dev
libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev
python3-dev python3-evdev swig python3-sphinx
UBUNTU_DEP_TEST: check python3-gi python3-lxml valgrind
PIP_PACKAGES: meson ninja libevdev pyudev pytest sphinx_rtd_theme black ruff
jobs:
build-and-dist:
runs-on: ubuntu-20.04
strategy:
matrix:
meson_args:
- ''
- '-Dbuildtype=plain'
- '-Dbuildtype=release'
- '-Ddocumentation=true'
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/pkginstall
with:
apt: $UBUNTU_DEP_BUILD $UBUNTU_DEP_TEST
pip: $PIP_PACKAGES
- name: meson test ${{matrix.meson_args}}
uses: ./.github/actions/meson
with:
meson_args: --prefix=$PWD/_instdir ${{matrix.meson_args}}
ninja_args: install
- name: check installation of data files
run: diff -u <(cd data/devices; ls *.device) <(cd _instdir/share/libratbag; ls *.device)
- name: ninja uninstall
uses: ./.github/actions/meson
with:
meson_args: --prefix=$PWD/_instdir
ninja_args: uninstall
- name: check if any files are left after uninstall
run: (test -d _instdir && tree _instdir && exit 1) || exit 0
# Capture all the meson logs, even if we failed
- uses: actions/upload-artifact@v3
if: ${{ always() }} # even if we fail
with:
name: meson test logs
path: |
builddir/meson-logs/testlog*.txt
builddir/meson-logs/meson-log.txt

31
.github/workflows/pages.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: pages
on:
push:
branches:
- master
env:
UBUNTU_DEP_BUILD: gcc g++ pkg-config systemd libevdev-dev libglib2.0-dev libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev python3-dev python3-evdev python3-pip swig python3-sphinx python3-sphinx-rtd-theme
PIP_PACKAGES: meson ninja
jobs:
deploy:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/pkginstall
with:
apt: $UBUNTU_DEP_BUILD
pip: $PIP_PACKAGES
- name: Build docs
uses: ./.github/actions/meson
with:
meson_args: -Ddocumentation=true -Dtests=false
meson_skip_test: yes
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./builddir/doc/html/
allow_empty_commit: true

View File

@@ -45,6 +45,10 @@ And to build or re-build after code-changes, run:
ninja -C builddir
sudo ninja -C builddir install
To remove/uninstall simply run:
sudo ninja -C builddir uninstall
Note: `builddir` is the build output directory and can be changed to any
other directory name. To set configure-time options, use e.g.
@@ -169,5 +173,3 @@ libratbag is licensed under the MIT license.
> Software is furnished to do so, subject to the following conditions: [...]
See the COPYING file for the full license information.
[![Build Status](https://circleci.com/gh/libratbag/libratbag.svg?style=shield&circle-token=d7c782e10d2d934b176da754f11b5105ea074f4a)](https://circleci.com/gh/libratbag/libratbag)

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUS ROG GX860 Buzzard Mouse
DeviceMatch=usb:0b05:1816
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=10
Leds=0
Dpis=2
DpiRange=100:8200@100

View File

@@ -0,0 +1,14 @@
# ASUS ROG Chakram, but corded
[Device]
Name=ASUS ROG Chakram Core
DeviceMatch=usb:0b05:1958
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=5
Leds=3
Dpis=4
DpiRange=100:16000@100
Quirks=DOUBLE_DPI;STRIX_PROFILE

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS ROG Chakram X
DeviceMatch=usb:0b05:1a18
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=5
Leds=3
Dpis=4
Wireless=1
DpiRange=100:36000@100
Quirks=DOUBLE_DPI

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS ROG Chakram
DeviceMatch=usb:0b05:18e3;usb:0b05:18e5
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=5
Leds=3
Dpis=4
Wireless=1
DpiRange=100:16000@100
Quirks=DOUBLE_DPI;STRIX_PROFILE

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Gladius II Origin PNK LTD
DeviceMatch=usb:0b05:18cd
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=3
Dpis=2
DpiRange=100:12000@100
Quirks=DOUBLE_DPI

View File

@@ -0,0 +1,14 @@
# "ASUS ROG Gladius II" without "DPI target button"
[Device]
Name=ASUS ROG Gladius II Origin
DeviceMatch=usb:0b05:1877
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=3
Dpis=2
DpiRange=100:12000@100
Quirks=DOUBLE_DPI

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Gladius II
DeviceMatch=usb:0b05:1845
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=9
Leds=3
Dpis=2
DpiRange=100:12000@100
ButtonMapping=f0;f1;f2;e4;e5;e6;e7;e8;e9

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Harpe Wireless
DeviceMatch=usb:0b05:1a92
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=5
Buttons=5
Leds=1
Dpis=4
Wireless=1
DpiRange=100:36000@50

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Keris Wireless AimPoint
DeviceMatch=usb:0b05:1a68
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=5
Buttons=7
Leds=1
Dpis=4
Wireless=1
DpiRange=100:36000@50

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS ROG Keris Wireless
DeviceMatch=usb:0b05:195e;usb:0b05:1960
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=2
Dpis=4
Wireless=1
DpiRange=100:16000@100
Quirks=DOUBLE_DPI

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Pugio
DeviceMatch=usb:0b05:1846
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=10
Leds=3
Dpis=2
DpiRange=100:7200@100
ButtonMapping=f0;f1;f2;e4;e5;e6;0;e8;e9;e1;e2

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS ROG Spatha X
DeviceMatch=usb:0b05:1979;usb:0b05:1977
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=5
Buttons=14
Leds=3
Dpis=4
Wireless=1
DpiRange=100:19000@50
ButtonMapping=f0;f1;f2;e4;e5;e6;e8;e9;ea;eb;ec;ed;ee;ef

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS ROG Strix Carry
DeviceMatch=usb:0b05:18b4
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=0
Dpis=2
Wireless=1
DpiRange=100:7200@100
Quirks=STRIX_PROFILE

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUS ROG Strix Impact
DeviceMatch=usb:0b05:1847
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=1
Buttons=6
Leds=1
Dpis=2
DpiRange=100:5000@100

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Strix Impact II Wireless
DeviceMatch=usb:0b05:1947;usb:0b05:1949
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=3
Dpis=4
Wireless=1
DpiRange=100:16000@100

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUS ROG Strix Impact II
DeviceMatch=usb:0b05:18e1
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=3
Dpis=4
DpiRange=200:6200@100

View File

@@ -1,227 +0,0 @@
#!/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', 'Leds', '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)

View File

@@ -15,10 +15,8 @@ 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
# The type of this Device: either 'mouse', 'keyboard' or 'other'
DeviceType=mouse
# 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
@@ -52,3 +50,60 @@ Leds=1
# The HID++ 2.0 device index
# Should be unset unless required
# DeviceIndex=1
[Driver/asus]
# Number of profiles
Profiles=3
# Number of buttons
Buttons=8
# Number of LEDs
Leds=3
# Number of DPI presets
Dpis=2
# Set if device is wireless
# Wireless=1
# DPI range in format min:max@step
DpiRange=100:16000@100
# Button mapping
# ButtonMapping=f0;f1;f2;e4;e5;e6;e8;e9
# Device quirks
# Quirk=DOUBLE_DPI;STRIX_PROFILE
# Replace `FEED` in the group name with firmware version of the device.
# To find the right value, see the output of ratbagd and search a message like:
# "ratbag error: Device with firmware version FEED is not supported"
# Official software utility configuration file key: `PSD` (converted from
# ASCII codes).
[Driver/sinowealth/devices/FEED]
# Number of buttons.
# Official software utility configuration file key: `KM` (divided by 2).
# Default: 0.
Buttons=6
# Device name.
DeviceName=CoolVendor CoolMouse
# The order of LED pins on the mouse.
# Change this to `RBG` if LED colors are weird.
# Use `None` if there are no LEDs on the mouse.
# Permitted values: ("RGB", "RBG", "None").
LedType=RGB
# Number of profiles, called "modes" in official software utilities.
# If you are unsure what the "mode" thing is about, don't set this field.
# Official software utility configuration file key: `MDNUM` (divided by 3).
# Default: 1.
Profiles=1
# Sensor type.
# This field is unused, only used for book-keeping purposes.
# Official software utility configuration file key: `Sensor`.
SensorType=PMW3289

View File

@@ -2,3 +2,4 @@
Name=Etekcity Scroll Alpha
DeviceMatch=usb:1ea7:4011
Driver=etekcity
DeviceType=mouse

View File

@@ -1,5 +1,11 @@
[Device]
Name=Glorious Model D
DeviceMatch=usb:258a:0033
DeviceType=mouse
Driver=sinowealth
[Driver/sinowealth/devices/V102]
Buttons=6
DeviceName=Glorious Model D
LedType=RBG
SensorType=PMW3360

View File

@@ -1,5 +1,11 @@
[Device]
Name=Glorious Model O
Name=Glorious Model O/O-
DeviceMatch=usb:258a:0036
DeviceType=mouse
Driver=sinowealth
[Driver/sinowealth/devices/V103]
Buttons=6
DeviceName=Glorious Model O/O- (updated firmware)
LedType=RBG
SensorType=PMW3360

View File

@@ -3,3 +3,4 @@
Name=G.Skill MX-780
DeviceMatch=usb:28da:3101
Driver=gskill
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech M325
DeviceMatch=usb:046d:400a
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,6 @@
# Logitech M500s
[Device]
Name=Logitech M500s
DeviceMatch=usb:046d:c093
DeviceType=mouse
Driver=hidpp20

View File

@@ -0,0 +1,6 @@
# Logitech M545
[Device]
Name=Logitech M545
DeviceMatch=usb:046d:4052
DeviceType=mouse
Driver=hidpp20

View File

@@ -3,3 +3,4 @@
Name=Logitech M570
DeviceMatch=usb:046d:1028
Driver=hidpp10
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech M585/M590
DeviceMatch=usb:046d:406b;bluetooth:046d:b01b
Driver=hidpp20
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech M705
DeviceMatch=usb:046d:101b
Driver=hidpp10
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech M720
DeviceMatch=usb:046d:405e;bluetooth:046d:b015
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,6 @@
# Logitech MX Anywhere 3
[Device]
Name=Logitech MX Anywhere 3
DeviceMatch=bluetooth:046d:b025;usb:046d:4090
DeviceType=mouse
Driver=hidpp20

View File

@@ -0,0 +1,6 @@
# Logitech MX Anywhere 3S
[Device]
Name=Logitech MX Anywhere 3S
DeviceMatch=bluetooth:046d:b037
DeviceType=mouse
Driver=hidpp20

View File

@@ -1,4 +1,5 @@
[Device]
Name=Logitech MX Anywhere 2
DeviceMatch=usb:046d:404a;bluetooth:046d:b013;bluetooth:046d:b018;bluetooth:046d:b01f
DeviceMatch=usb:046d:404a;usb:046d:4072;usb:046d:4063;bluetooth:046d:b013;bluetooth:046d:b018;bluetooth:046d:b01f
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech MX Anywhere 2S
DeviceMatch=bluetooth:046d:b01a;usb:046d:406a
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,6 @@
# Logitech MX Anywhere 3B
[Device]
Driver=hidpp20
Name=Logitech MX Anywhere 3B
DeviceType=mouse
DeviceMatch=bluetooth:046d:b02d

View File

@@ -3,3 +3,4 @@
Name=Logitech MX Ergo
DeviceMatch=bluetooth:046d:b01d;usb:046d:406f
Driver=hidpp20
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech MX Master 2S
DeviceMatch=bluetooth:046d:b019;usb:046d:4069
Driver=hidpp20
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech MX Master 3
DeviceMatch=bluetooth:046d:b023;usb:046d:4082
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,5 @@
[Device]
DeviceMatch=bluetooth:046d:b035
DeviceType=mouse
Driver=hidpp20
Name=Logitech MX Master 3S for Business

View File

@@ -0,0 +1,5 @@
[Device]
DeviceMatch=bluetooth:046d:b034
DeviceType=mouse
Driver=hidpp20
Name=Logitech MX Master 3S

View File

@@ -3,3 +3,4 @@
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
DeviceType=mouse

View File

@@ -1,4 +1,5 @@
[Device]
Name=Logitech MX Vertical
DeviceMatch=bluetooth:046d:b020;usb:046d:407b
DeviceMatch=bluetooth:046d:b020;usb:046d:407b;usb:046d:c08a
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=MX518
DeviceMatch=usb:046d:c08e
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech Marathon M705
DeviceMatch=usb:046d:406d
Driver=hidpp20
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech T650
DeviceMatch=usb:046d:4101
Driver=hidpp20
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech Wireless Touchpad
DeviceMatch=usb:046d:4011
Driver=hidpp20
DeviceType=mouse

View File

@@ -1,8 +1,8 @@
[Device]
Name=Logitech G Powerplay
DeviceMatch=usb:046d:405f
LedTypes=logo
Driver=hidpp20
DeviceType=other
[Driver/hidpp20]
DeviceIndex=7

View File

@@ -0,0 +1,5 @@
[Device]
DeviceMatch=usb:046d:c339
DeviceType=keyboard
Driver=hidpp20
Name=Logitech G PRO Keyboard

View File

@@ -1,8 +1,8 @@
[Device]
Name=Logitech G Pro Wireless
DeviceMatch=usb:046d:4079;usb:046d:c088
LedTypes=logo;battery;dpi;
Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
DeviceIndex=1

View File

@@ -0,0 +1,5 @@
[Device]
Name=Logitech G Pro X Wireless Superlight
DeviceMatch=usb:046d:4093;usb:046d:c094
DeviceType=mouse
Driver=hidpp20

View File

@@ -2,4 +2,4 @@
Name=Logitech Gaming Mouse G Pro
DeviceMatch=usb:046d:c085;usb:046d:c08c
Driver=hidpp20
LedTypes=logo;side
DeviceType=mouse

View File

@@ -1,6 +1,6 @@
# G102, G103 and G203 (USB)
[Device]
Name=Logitech Gaming Mouse G102/G103/G203
DeviceMatch=usb:046d:c084;usb:046d:c092
DeviceMatch=usb:046d:c084;usb:046d:c092;usb:046d:c09d
Driver=hidpp20
LedTypes=logo;side;
DeviceType=mouse

View File

@@ -3,3 +3,4 @@
Name=Logitech G300
DeviceMatch=usb:046d:c246
Driver=logitech_g300
DeviceType=mouse

View File

@@ -3,4 +3,4 @@
Name=Logitech Gaming Mouse G302
DeviceMatch=usb:046d:c07f
Driver=hidpp20
LedTypes=logo;side;
DeviceType=mouse

View File

@@ -0,0 +1,5 @@
[Device]
Name=Logitech G303 Shroud Edition
DeviceMatch=usb:046d:c097
DeviceType=mouse
Driver=hidpp20

View File

@@ -3,4 +3,4 @@
Name=Logitech Gaming Mouse G303
DeviceMatch=usb:046d:c080
Driver=hidpp20
LedTypes=logo;side;
DeviceType=mouse

View File

@@ -2,6 +2,7 @@
Name=Logitech Gaming Mouse G305
DeviceMatch=usb:046d:4074
Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Leds=0

View File

@@ -2,5 +2,5 @@
[Device]
Name=Logitech G402 Gaming Mouse
DeviceMatch=usb:046d:c07e
LedTypes=logo
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G403 Hero
DeviceMatch=usb:046d:c08f
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G403 Wireless
DeviceMatch=usb:046d:405d;usb:046d:c082
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G403
DeviceMatch=usb:046d:c083
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,5 @@
[Device]
DeviceMatch=usb:046d:c33a
DeviceType=keyboard
Driver=hidpp20
Name=Logitech G413

View File

@@ -3,6 +3,7 @@
Name=Logitech G5
DeviceMatch=usb:046d:c049
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiList=400;800;1600;2000

View File

@@ -2,6 +2,7 @@
Name=G5
DeviceMatch=usb:046d:c041
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiList=400;800;1600;2000

View File

@@ -2,6 +2,7 @@
Name=Logitech G500
DeviceMatch=usb:046d:c068
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiRange=0:5700@23.53

View File

@@ -2,6 +2,7 @@
Name=Logitech G500s
DeviceMatch=usb:046d:c24e
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiRange=0:8200@50

View File

@@ -2,3 +2,4 @@
Name=Logitech G502 Hero Wireless
DeviceMatch=usb:046d:407f;usb:046d:c08d
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G502 Hero
DeviceMatch=usb:046d:c08b
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G502 Proteus Core
DeviceMatch=usb:046d:c07d
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G502 Proteus Spectrum
DeviceMatch=usb:046d:c332
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,5 @@
[Device]
Name=Logitech G502 X Wireless
DeviceMatch=usb:046d:c098
DeviceType=mouse
Driver=hidpp20

View File

@@ -0,0 +1,5 @@
[Device]
Name=Logitech G502 X
DeviceMatch=usb:046d:c099
DeviceType=mouse
Driver=hidpp20

View File

@@ -1,5 +1,5 @@
[Device]
Name=Logitech G513
DeviceMatch=usb:046d:c33c
LedTypes=switches
Driver=hidpp20
DeviceType=keyboard

View File

@@ -3,3 +3,4 @@
Name=Logitech G600
DeviceMatch=usb:046d:c24a
Driver=logitech_g600
DeviceType=mouse

View File

@@ -3,6 +3,7 @@
Name=Logitech G602
DeviceMatch=usb:046d:402c
Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
DeviceIndex=1

View File

@@ -3,3 +3,4 @@
Name=Logitech G603
DeviceMatch=usb:046d:406c;bluetooth:046d:b01c
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G604
DeviceMatch=usb:046d:4085;bluetooth:046d:b024
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,8 @@
[Device]
Name=Logitech G635
DeviceMatch=usb:046d:0a89
DeviceType=mouse
Driver=hidpp20
[Driver/hidpp20]
Buttons=0

View File

@@ -4,6 +4,7 @@
Name=Logitech G7
DeviceMatch=usb:046d:c51a
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
Profiles=1

View File

@@ -4,6 +4,7 @@
Name=Logitech G700
DeviceMatch=usb:046d:c531
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiRange=0:5700@23.53

View File

@@ -4,6 +4,7 @@
Name=Logitech G700
DeviceMatch=usb:046d:c06b
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiRange=0:5700@23.53

View File

@@ -4,6 +4,7 @@
Name=Logitech G700s
DeviceMatch=usb:046d:c07c
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiRange=0:8200@50

View File

@@ -2,4 +2,4 @@
Name=Logitech G703 Hero
DeviceMatch=usb:046d:4086;usb:046d:c090
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,4 +2,4 @@
Name=Logitech G703
DeviceMatch=usb:046d:c087;usb:046d:4070
Driver=hidpp20
DeviceType=mouse

View File

@@ -0,0 +1,8 @@
[Device]
Name=Logitech G733 Gaming Headset
DeviceMatch=usb:046d:0ab5;usb:046d:0afe
DeviceType=mouse
Driver=hidpp20
[Driver/hidpp20]
Buttons=0

View File

@@ -1,5 +1,5 @@
[Device]
Name=Logitech G815
DeviceMatch=usb:046d:c33f
LedTypes=logo;switches
Driver=hidpp20
DeviceType=keyboard

View File

@@ -3,8 +3,8 @@
[Device]
Name=Logitech G9
DeviceMatch=usb:046d:c048
LedTypes=dpi
Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10]
DpiList=200;400;600;800;1000;1200;1400;1600;1800;2000;2200;2400;2600;2800;3000;3200

View File

@@ -3,3 +3,4 @@
Name=Logitech G900
DeviceMatch=usb:046d:c081;usb:046d:4053
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G903 Hero
DeviceMatch=usb:046d:c091;usb:046d:4087
Driver=hidpp20
DeviceType=mouse

View File

@@ -2,3 +2,4 @@
Name=Logitech G903
DeviceMatch=usb:046d:c086;usb:046d:4067
Driver=hidpp20
DeviceType=mouse

View File

@@ -1,8 +1,8 @@
[Device]
Name=Logitech G910
DeviceMatch=usb:046d:c335
LedTypes=logo;switches
Driver=hidpp20
DeviceType=keyboard
[Driver/hidpp20]
DeviceIndex=ff

View File

@@ -0,0 +1,8 @@
[Device]
Name=Logitech G915 TKL
DeviceMatch=usb:046d:c343;bluetooth:046d:b35f
DeviceType=keyboard
Driver=hidpp20
[Driver/hidpp20]
DeviceIndex=1

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