363 Commits

Author SHA1 Message Date
villamorrd
8235b5bb60 data: add ASUS TUF Gaming M3 Gen II
Signed-off-by: villamorrd <git@villamor.ph>
2026-09-17 20:56:39 +08:00
haytham
b8d4d3ca1f data: add ASUS ROG Strix Impact III Wireless
The device enumerates as usb 0b05:1ad7 behind the Omni receiver
(0b05:1ace). The signature prefix 20, OmniSignature=20, resolves to this
file during probe. Verified on hardware: 5 profiles, 8 buttons, 1 LED,
DPI presets 400/800/1600/3200, report rate 1000 Hz, debounce 12 ms, LED
brightness 127 (50%).
2026-08-18 20:11:11 +03:00
haytham
e07d72e2a7 data: add ASUS ROG Strix Impact III
Wired model with its own usb id. The values follow the official specs
and the wireless model's protocol, but are not tested on hardware:
Leds=2 (wheel and logo) and DpiRange=100:12000@50 are inferred.
2026-08-18 20:11:11 +03:00
haytham
d93a8bc474 asus: add support for the Omni receiver and new data layouts
Mice behind an ASUS Omni receiver all enumerate with the same usb id
(0b05:1ace), so the regular bus:vid:pid DeviceMatch cannot tell models
apart. Identify the model during probe instead:

- asus-rog-omni-receiver.device is a minimal bootstrap file that only
  declares Quirks=OMNI_RECEIVER, so the asus driver gets probed on the
  receiver's hidraw nodes
- the probe queries the serial number signature (03 12 12 02) and
  matches its prefix against the OmniSignature field of the .device
  files, then re-resolves the device data for the identified usb id
- an unknown signature fails the probe with -ENODEV, which also drops
  the receiver's keyboard and media control nodes

The Strix Impact III family answers with data two bytes earlier than the
original protocol (code plus params echo instead of code plus pad), so
two quirks cover the new layouts:

- LED_V2: per-zone LED responses with data at offset 4, brightness in
  0-100
- SETTINGS_V2: settings and DPI responses with data at offset 4,
  rate/debounce/snapping as single bytes

Also write DPI values with two bytes so presets above 12850 dpi work.

Verified on a ROG Strix Impact III Wireless: identification on hidraw4,
all 5 profiles with 8 buttons, 1 LED and DPI presets 400/800/1600/3200,
report rate 1000 Hz, debounce 12 ms, LED brightness 127 (50%). Writes
round-trip and survive a ratbagd restart.
2026-08-18 20:11:11 +03:00
Ayoze Torres
1f4efda955 swig: use the Python 3 C API instead of the removed PyInt_* aliases (#1878)
src/libratbag.i calls PyInt_Check(), PyInt_AsLong() and PyInt_FromLong().
Those are Python 2 functions; they only ever worked because SWIG emitted
compatibility macros mapping them onto their PyLong_* counterparts in the
generated wrapper. SWIG 4.5.0 dropped those macros, so the generated
libratbag.c no longer compiles:

  libratbag.c: In function '_wrap_ratbag_device_get_vendor_id':
  libratbag.c:4583:17: error: implicit declaration of function
    'PyInt_FromLong'; did you mean 'PyLong_FromLong'?
  libratbag.c:4583:15: error: assignment to 'PyObject *' from 'int' makes
    pointer from integer without a cast [-Wint-conversion]

Call the PyLong_* functions directly. The bindings are generated with
swig -py3, so there is no Python 2 build to keep working, and the macros
they replace expanded to exactly these functions.

Built and verified on Arch Linux with swig 4.5.0, Python 3.14, meson 1.12.0, gcc 15: `_libratbag.so` and `_hidpp.so` link cleanly with the change and fail without it.

Co-authored-by: Jitka Plesnikova <jplesnik@redhat.com>
Signed-off-by: Stephen Kitt <skitt@debian.org>
2026-08-12 18:07:56 +00:00
John Schoenick
03afbe49f3 data: enable INDEX_OFFSET on G502 X and G502 X Wireless
f9d1574 enabled this for the G502 X PLUS, which is the RGB variant.
I can confirm the normal G502 X Wireless has this quirk.  I do not
have a base model G502 X, but comments on issue #1606 as well as logic
suggest it very likely does unless proven otherwise.
2026-07-19 16:31:01 +03:00
perfectra1n
f9d1574841 data: enable INDEX_OFFSET on the G502 X PLUS
The G502 X PLUS reports a 1-indexed active profile, so without
INDEX_OFFSET libratbag targets the wrong profile and DPI/button changes
never reach the device (the mouse boots on its first profile, reported
as index 1). It also needs the existing G502X_PLUS LED quirk, so list
both now that hidpp20 supports multiple quirks.

Verified on hardware (usb:046d:4099 via the Lightspeed receiver, Linux
7.x): the device reports active profile index 1, INDEX_OFFSET maps it to
0, and the LED still reads correctly via the G502X_PLUS slot.
2026-07-15 20:41:56 +03:00
perfectra1n
b0f2779270 hidpp20: support multiple quirks per device
The hidpp20 quirk was a single enum value, so a device could carry only
one quirk. Some devices need several at once. For example the G502 X
PLUS needs G502X_PLUS (LED in the 2nd slot) and INDEX_OFFSET (1-indexed
active profile) together, which a single field cannot express. #1799
noted this was worth adding.

Make the quirk enum combinable bit flags stored as a bitmask. The
"Quirk" key now takes a ;-separated list (like the asus driver's
"Quirks"); existing single-value device files parse the same as before.
2026-07-15 20:41:56 +03:00
thejobbitt
43f76eee67 data: add Logitech G502 X Wireless through LS dongle (046d:409f)
Add USB ID 046d:409f, the ID when connected through the LS dongle. USB ID 046d:c098 is the ID when wired.
2026-07-10 16:57:22 +00:00
Tyler
54edb7e0a2 fix: clear stale modifiers when binding keys (#1843)
Device: Logitech G502 X PLUS

Encountered an issue where re-binding keys which previously had modifiers assigned (e.g. ALT+KEY_LEFT), resulted in the modifier being retained. This small change clears modifiers before assigning new keys or macros. Keys are still able to be assigned modifiers, as assignment hasn't changed.

I didn't see a PR template, so I'm just doing my best here...

- Assigned the back button the default setting
  - Changed back button to send comma key
    - before: sent `ALT+,`
    - after: sent `,` ✔️ 
- Assigned back button to send `ALT+LEFT_ARROW`
  - Changed back button to send comma key
    - before: sent `ALT+,`
    - after: sent `,` ✔️ 
- Assigned back button to send comma key
  - Changed back button to send `ALT+,`
    - before: sent `ALT+,`
    - after: sent `ALT+,` ✔️

Closes https://github.com/libratbag/libratbag/issues/1853
Closes https://github.com/libratbag/piper/issues/835
2026-07-10 16:52:10 +00:00
winter
2fb9a701e8 data: add Glorious Model O Eternal (usb:3794:a000)
Co-authored-by: Merikei <73759842+Merikei@users.noreply.github.com>
Co-authored-by: winter <96156057+wintervoid@users.noreply.github.com>
2026-05-31 19:00:25 +03:00
rc-05
805e7fb77f feature: Add support for ASUS TUF GAMING M4 AIR
This commit adds support for the TUF GAMING M4 AIR mouse manufactured by ASUS/ASUSTek.
2026-04-25 21:27:34 +03:00
Kyoken
1e20248b6d data: add ASUS TUF Mini WL 2026-04-25 21:26:44 +03:00
Yaroslav Chvanov
d7bbed2eb1 ci: pin black and ruff versions
Avoid CI breaking on their updates.
2026-04-25 21:20:52 +03:00
Patrick Klose
874c01732a hidpp20: add quirk to fix active profile index on some devices (#1799)
* Added Quirk for G502 offset to resolve incorrect active profile being applied. Testing on G502- Hero Wireless. May be worth adding handling for multiple quirks.

* Added quirk in device files to correct offset for G502 Hero, G502-Proteus Spectrum, and G604.

* Refactored G502 Offset Quirk naming to be more broadly applicable as index offset.

* Correct typo in g502-proteus spectrum quirk value.

---------

Co-authored-by: Patrick Klose <pjklose@outlook.com>
2026-01-11 16:51:40 +00:00
Denis
c5214d2633 data: add G502 X Plus in wireless mode (usb:046d:4099) (#1728) 2025-12-14 07:10:47 +00:00
Adam Spiers
b61da30205 data: add Logitech MX Master 4 2025-11-19 22:23:19 +03:00
Kritphong Mongkhonvanit
e4184c2227 data: add ASUS ROG Keris (Wired) 2025-11-19 22:10:26 +03:00
lat9nq
78d1124c3e data: add Logitech G705 Mouse
Based on https://github.com/Nadeflore work. Thank you!
2025-05-11 12:50:04 +03:00
Sewer.
65d07ae4d1 hidpp20: add G502X Plus (Wired) Support (#1693)
* Recognize the Logitech G502X PLUS (Wired)

* Fixed: LED write functionality for G502X PLUS

Inspired by 94bd172a19

* Changed: Number of LEDs is implied by quirk set.

* Added: Extra note about single LED
2025-05-10 10:59:41 +00:00
bliepp
ca94a8a111 Additional ID for ASUS ROG Keris Wireless AimPoint (#1679) 2025-05-10 10:41:05 +00:00
Kyoken
7bdca904f5 asus: new quirks for Chakram X and other mice 2025-05-10 13:38:06 +03:00
Yaroslav Chvanov
ad6540e39b ci: upgrade Ubuntu 20 -> 24
Fixes https://github.com/libratbag/libratbag/issues/1701
2025-05-08 09:52:30 +03:00
AFCMS
df3c73e958 Bump CI Actions 2024-10-28 23:36:03 +01:00
Sebastian Fleer
dcc5def3d6 data: add an additional USB ID for Logitech MX Vertical (#1652) 2024-10-16 19:24:00 +00:00
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
225 changed files with 8195 additions and 4114 deletions

View File

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

View File

@@ -8,20 +8,24 @@ env:
libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev
python3-dev python3-evdev swig python3-sphinx python3-dev python3-evdev swig python3-sphinx
UBUNTU_DEP_TEST: check python3-gi python3-lxml valgrind UBUNTU_DEP_TEST: check python3-gi python3-lxml valgrind
PIP_PACKAGES: meson ninja libevdev pyudev pytest sphinx_rtd_theme PIP_PACKAGES: meson ninja libevdev pyudev pytest sphinx_rtd_theme black==25.12.0 ruff==0.15.12
jobs: jobs:
build-and-dist: build-and-dist:
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
strategy: strategy:
matrix: matrix:
meson_args: include:
- '' - name: default
- '-Dbuildtype=plain' meson_args: ''
- '-Dbuildtype=release' - name: plain
- '-Ddocumentation=true' meson_args: '-Dbuildtype=plain'
- name: release
meson_args: '-Dbuildtype=release'
- name: documentation
meson_args: '-Ddocumentation=true'
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: ./.github/actions/pkginstall - uses: ./.github/actions/pkginstall
with: with:
apt: $UBUNTU_DEP_BUILD $UBUNTU_DEP_TEST apt: $UBUNTU_DEP_BUILD $UBUNTU_DEP_TEST
@@ -41,10 +45,10 @@ jobs:
- name: check if any files are left after uninstall - name: check if any files are left after uninstall
run: (test -d _instdir && tree _instdir && exit 1) || exit 0 run: (test -d _instdir && tree _instdir && exit 1) || exit 0
# Capture all the meson logs, even if we failed # Capture all the meson logs, even if we failed
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v4
if: ${{ always() }} # even if we fail if: ${{ always() }} # even if we fail
with: with:
name: meson test logs name: 'meson test logs ${{ matrix.name }}'
path: | path: |
builddir/meson-logs/testlog*.txt builddir/meson-logs/testlog*.txt
builddir/meson-logs/meson-log.txt builddir/meson-logs/meson-log.txt

View File

@@ -11,7 +11,7 @@ env:
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/pkginstall - uses: ./.github/actions/pkginstall

View File

@@ -46,7 +46,7 @@ And to build or re-build after code-changes, run:
ninja -C builddir ninja -C builddir
sudo ninja -C builddir install sudo ninja -C builddir install
To remove/uninstal simply run: To remove/uninstall simply run:
sudo ninja -C builddir uninstall sudo ninja -C builddir uninstall

View File

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG GX860 Buzzard Mouse Name=ASUS ROG GX860 Buzzard Mouse
DeviceMatch=usb:0b05:1816 DeviceMatch=usb:0b05:1816
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]

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,16 @@
[Device]
Name=ASUS ROG Chakram X
DeviceMatch=usb:0b05:1a18;usb:0b05:1a1a
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=5
Buttons=14
Leds=3
Dpis=4
Wireless=1
DpiRange=100:36000@100
Quirks=DOUBLE_DPI;RAW_BRIGHTNESS;SEPARATE_XY_DPI;SEPARATE_LEDS;BUTTONS_SECONDARY
ButtonMapping=f0;f1;f2;0;0;e6;e8;e9;d0;d1;d2;d3
ButtonMappingSecondary=0;0;ea;eb;ec;ed

View File

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG Chakram Name=ASUS ROG Chakram
DeviceMatch=usb:0b05:18e3;usb:0b05:18e5 DeviceMatch=usb:0b05:18e3;usb:0b05:18e5
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]

View File

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

View File

@@ -2,6 +2,7 @@
[Device] [Device]
Name=ASUS ROG Gladius II Origin Name=ASUS ROG Gladius II Origin
DeviceMatch=usb:0b05:1877 DeviceMatch=usb:0b05:1877
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]
@@ -10,5 +11,4 @@ Buttons=8
Leds=3 Leds=3
Dpis=2 Dpis=2
DpiRange=100:12000@100 DpiRange=100:12000@100
ButtonMapping=0;1;2;7;8;5;3;4
Quirks=DOUBLE_DPI Quirks=DOUBLE_DPI

View File

@@ -1,12 +1,13 @@
[Device] [Device]
Name=ASUS ROG Gladius II Name=ASUS ROG Gladius II
DeviceMatch=usb:0b05:1845 DeviceMatch=usb:0b05:1845
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]
Profiles=3 Profiles=3
Buttons=8 Buttons=9
Leds=3 Leds=3
Dpis=2 Dpis=2
DpiRange=100:12000@100 DpiRange=100:12000@100
ButtonMapping=0;1;2;7;8;5;3;4 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:1a66;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

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG Keris Wireless Name=ASUS ROG Keris Wireless
DeviceMatch=usb:0b05:195e;usb:0b05:1960 DeviceMatch=usb:0b05:195e;usb:0b05:1960
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]

View File

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

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUS ROG Omni Receiver
DeviceMatch=usb:0b05:1ace
DeviceType=mouse
Driver=asus
# The Omni receiver is a shared USB device for multiple mice (all of them
# enumerate with the same usb id), so the actual model is identified during
# probe and resolved to the model-specific .device data. This file only
# exists to get the asus driver probed on the receiver's hidraw nodes.
[Driver/asus]
Quirks=OMNI_RECEIVER

View File

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG Pugio Name=ASUS ROG Pugio
DeviceMatch=usb:0b05:1846 DeviceMatch=usb:0b05:1846
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]
@@ -9,6 +10,5 @@ Buttons=10
Leds=3 Leds=3
Dpis=2 Dpis=2
DpiRange=100:7200@100 DpiRange=100:7200@100
ButtonMapping=f0;f1;f2;e4;e5;e6;0;e8;e9;e1;e2
# Mappings the same as the Gladius II but with an extra 2 buttons LedModes=ON;BREATHING;ON;CYCLE
ButtonMapping=0;1;2;7;8;5;3;4;9;10

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

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG Strix Carry Name=ASUS ROG Strix Carry
DeviceMatch=usb:0b05:18b4 DeviceMatch=usb:0b05:18b4
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]

View File

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

View File

@@ -1,6 +1,7 @@
[Device] [Device]
Name=ASUS ROG Strix Impact II Wireless Name=ASUS ROG Strix Impact II Wireless
DeviceMatch=usb:0b05:1947;usb:0b05:1949 DeviceMatch=usb:0b05:1947;usb:0b05:1949
DeviceType=mouse
Driver=asus Driver=asus
[Driver/asus] [Driver/asus]

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

@@ -0,0 +1,19 @@
[Device]
Name=ASUS ROG Strix Impact III Wireless
DeviceMatch=usb:0b05:1ad7
DeviceType=mouse
Driver=asus
# This device enumerates as usb 0b05:1ad7 behind the ASUS Omni receiver
# (0b05:1ace). The usb id is resolved during probe: the receiver is
# identified first (asus-rog-omni-receiver.device) and the serial number
# signature prefix (OmniSignature) is matched against this file.
[Driver/asus]
Profiles=5
Buttons=8
Leds=1
Dpis=4
Wireless=1
DpiRange=100:36000@50
Quirks=OMNI_RECEIVER;SEPARATE_XY_DPI;LED_V2;SETTINGS_V2
OmniSignature=20

View File

@@ -0,0 +1,13 @@
[Device]
Name=ASUS ROG Strix Impact III
DeviceMatch=usb:0b05:1a88
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=2
Dpis=4
DpiRange=100:12000@50
Quirks=LED_V2;SETTINGS_V2

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUSTeK TUF GAMING M3 GEN II
DeviceMatch=usb:0b05:1a9b
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=8
Leds=1
Dpis=4
DpiRange=100:8000@100

View File

@@ -0,0 +1,12 @@
[Device]
Name=ASUS TUF GAMING M4 AIR
DeviceMatch=usb:0b05:1a03
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=3
Buttons=6
Leds=0
Dpis=4
DpiRange=100:16000@100

View File

@@ -0,0 +1,14 @@
[Device]
Name=ASUS TUF GAMING MINI WL MOUSE MIKU
DeviceMatch=usb:0b05:1c56;usb:0b05:1c57
DeviceType=mouse
Driver=asus
[Driver/asus]
Profiles=5
Buttons=8
Leds=1
Dpis=4
Wireless=1
DpiRange=100:12000@100
Quirks=SEPARATE_XY_DPI;RAW_BRIGHTNESS

View File

@@ -15,10 +15,8 @@ DeviceMatch=usb:12ab:00f2
# The libratbag driver backend # The libratbag driver backend
Driver=hidpp10 Driver=hidpp10
# The types of the LEDs, in the indexed order they appear in, separated by a # The type of this Device: either 'mouse', 'keyboard' or 'other'
# semicolon. DeviceType=mouse
# Allowed values: logo, side, battery, dpi
LedTypes=logo;side
# Only one group of driver-specific properties is permitted and it must be # 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 # [Driver/<drivername>]. It is a bug do have any other [Driver/foo] group in
@@ -73,8 +71,39 @@ Dpis=2
# DPI range in format min:max@step # DPI range in format min:max@step
DpiRange=100:16000@100 DpiRange=100:16000@100
# Button index mapping # Button mapping
# ButtonMapping=0;1;2;6;7;5;3;4 # ButtonMapping=f0;f1;f2;e4;e5;e6;e8;e9
# Device quirks # Device quirks
# Quirk=DOUBLE_DPI;STRIX_PROFILE # 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 Name=Etekcity Scroll Alpha
DeviceMatch=usb:1ea7:4011 DeviceMatch=usb:1ea7:4011
Driver=etekcity Driver=etekcity
DeviceType=mouse

View File

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

View File

@@ -0,0 +1,11 @@
[Device]
Name=Glorious Model O Eternal
DeviceMatch=usb:3794:a000
Driver=sinowealth
DeviceType=mouse
[Driver/sinowealth/devices/1009]
Buttons=6
LedType=RBG
DeviceName=Glorious Model O Eternal
SensorType=PMW3360

View File

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

View File

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

View File

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

View File

@@ -2,4 +2,5 @@
[Device] [Device]
Name=Logitech M500s Name=Logitech M500s
DeviceMatch=usb:046d:c093 DeviceMatch=usb:046d:c093
DeviceType=mouse
Driver=hidpp20 Driver=hidpp20

View File

@@ -2,4 +2,5 @@
[Device] [Device]
Name=Logitech M545 Name=Logitech M545
DeviceMatch=usb:046d:4052 DeviceMatch=usb:046d:4052
DeviceType=mouse
Driver=hidpp20 Driver=hidpp20

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,4 +2,5 @@
[Device] [Device]
Name=Logitech MX Anywhere 3 Name=Logitech MX Anywhere 3
DeviceMatch=bluetooth:046d:b025;usb:046d:4090 DeviceMatch=bluetooth:046d:b025;usb:046d:4090
DeviceType=mouse
Driver=hidpp20 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

@@ -2,3 +2,4 @@
Name=Logitech MX Anywhere 2 Name=Logitech MX Anywhere 2
DeviceMatch=usb:046d:404a;usb:046d:4072;usb:046d:4063;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 Driver=hidpp20
DeviceType=mouse

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,3 +3,4 @@
Name=Logitech MX Master 3 Name=Logitech MX Master 3
DeviceMatch=bluetooth:046d:b023;usb:046d:4082 DeviceMatch=bluetooth:046d:b023;usb:046d:4082
Driver=hidpp20 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

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

View File

@@ -3,3 +3,4 @@
Name=Logitech MX Master Name=Logitech MX Master
DeviceMatch=usb:046d:4041;bluetooth:046d:b012;usb:046d:4060;bluetooth:046d:b017;bluetooth:046d:b01e;usb:046d:4071 DeviceMatch=usb:046d:4041;bluetooth:046d:b012;usb:046d:4060;bluetooth:046d:b017;bluetooth:046d:b01e;usb:046d:4071
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,8 @@
[Device] [Device]
Name=Logitech G Powerplay Name=Logitech G Powerplay
DeviceMatch=usb:046d:405f DeviceMatch=usb:046d:405f
LedTypes=logo
Driver=hidpp20 Driver=hidpp20
DeviceType=other
[Driver/hidpp20] [Driver/hidpp20]
DeviceIndex=7 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] [Device]
Name=Logitech G Pro Wireless Name=Logitech G Pro Wireless
DeviceMatch=usb:046d:4079;usb:046d:c088 DeviceMatch=usb:046d:4079;usb:046d:c088
LedTypes=logo;battery;dpi;
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20] [Driver/hidpp20]
DeviceIndex=1 DeviceIndex=1

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
# G102, G103 and G203 (USB) # G102, G103 and G203 (USB)
[Device] [Device]
Name=Logitech Gaming Mouse G102/G103/G203 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 Driver=hidpp20
LedTypes=logo;side; DeviceType=mouse

View File

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

View File

@@ -3,4 +3,4 @@
Name=Logitech Gaming Mouse G302 Name=Logitech Gaming Mouse G302
DeviceMatch=usb:046d:c07f DeviceMatch=usb:046d:c07f
Driver=hidpp20 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 Name=Logitech Gaming Mouse G303
DeviceMatch=usb:046d:c080 DeviceMatch=usb:046d:c080
Driver=hidpp20 Driver=hidpp20
LedTypes=logo;side; DeviceType=mouse

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,3 +2,4 @@
Name=Logitech G403 Name=Logitech G403
DeviceMatch=usb:046d:c083 DeviceMatch=usb:046d:c083
Driver=hidpp20 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 Name=Logitech G5
DeviceMatch=usb:046d:c049 DeviceMatch=usb:046d:c049
Driver=hidpp10 Driver=hidpp10
DeviceType=mouse
[Driver/hidpp10] [Driver/hidpp10]
DpiList=400;800;1600;2000 DpiList=400;800;1600;2000

View File

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

View File

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

View File

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

View File

@@ -2,3 +2,7 @@
Name=Logitech G502 Hero Wireless Name=Logitech G502 Hero Wireless
DeviceMatch=usb:046d:407f;usb:046d:c08d DeviceMatch=usb:046d:407f;usb:046d:c08d
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

@@ -2,3 +2,7 @@
Name=Logitech G502 Hero Name=Logitech G502 Hero
DeviceMatch=usb:046d:c08b DeviceMatch=usb:046d:c08b
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

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

View File

@@ -2,3 +2,7 @@
Name=Logitech G502 Proteus Spectrum Name=Logitech G502 Proteus Spectrum
DeviceMatch=usb:046d:c332 DeviceMatch=usb:046d:c332
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

@@ -0,0 +1,9 @@
[Device]
Name=Logitech G502 X PLUS
DeviceMatch=usb:046d:4099;usb:046d:c095
DeviceType=mouse
Driver=hidpp20
[Driver/hidpp20]
# G502X_PLUS: LED is in the 2nd slot. INDEX_OFFSET: profile index is 1-indexed.
Quirk=G502X_PLUS;INDEX_OFFSET

View File

@@ -1,4 +1,8 @@
[Device] [Device]
Name=Logitech G502 X Wireless Name=Logitech G502 X Wireless
DeviceMatch=usb:046d:c098 DeviceMatch=usb:046d:c098;usb:046d:409f
DeviceType=mouse
Driver=hidpp20 Driver=hidpp20
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

@@ -1,4 +1,8 @@
[Device] [Device]
Name=Logitech G502 X Name=Logitech G502 X
DeviceMatch=usb:046d:c099 DeviceMatch=usb:046d:c099
DeviceType=mouse
Driver=hidpp20 Driver=hidpp20
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,3 +2,7 @@
Name=Logitech G604 Name=Logitech G604
DeviceMatch=usb:046d:4085;bluetooth:046d:b024 DeviceMatch=usb:046d:4085;bluetooth:046d:b024
Driver=hidpp20 Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Quirk=INDEX_OFFSET

View File

@@ -1,7 +1,7 @@
[Device] [Device]
Name=Logitech G635 Name=Logitech G635
DeviceMatch=usb:046d:0a89 DeviceMatch=usb:046d:0a89
LedTypes=logo;side DeviceType=mouse
Driver=hidpp20 Driver=hidpp20
[Driver/hidpp20] [Driver/hidpp20]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
[Device]
Name=Logitech G705
DeviceMatch=usb:046d:c096;usb:046d:409d;bluetooth:046d:b02e
Driver=hidpp20
DeviceType=mouse
[Driver/hidpp20]
Quirk=G502X_PLUS

View File

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

View File

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

View File

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

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