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