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
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