We have some news to share for the request index beta feature. We’ve added more options to sort your requests, counters to the individual filters and documentation for the search functionality. Checkout the blog post for more details.

File inputplumber.spec of Package inputplumber

#
# spec file for package inputplumber
#
# Copyright (c) 2026 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#

Name:           inputplumber
Version:        0.72.0
Release:        0%{?dist}
Summary:        Input router and remapper daemon for Linux
License:        GPL-3.0
URL:            https://github.com/ShadowBlip/InputPlumber
Source0:        InputPlumber-%{version}.tar.xz
Source1:        vendor.tar.zst
Patch0:         polkit-rules.patch
Patch1:         polkit-unused-actions.patch
BuildRequires:  rust
BuildRequires:	cargo
BuildRequires:  cargo-packaging
BuildRequires:  libevdev-devel
BuildRequires:  pkgconfig(libiio)
BuildRequires:  pkgconfig(libudev)
BuildRequires:  llvm-devel
BuildRequires:  clang-devel
BuildRequires:  pkgconfig(systemd)
Requires:       polkit
Provides:       InputPlumber
Conflicts:      python3-hhd

%description
InputPlumber is a input routing and control daemon for Linux.
It can be used to combine any number of input devices (like gamepads,
mice, and keyboards) and translate their input to a variety of
virtual device formats.

%prep
%autosetup -p1 -a1 -n InputPlumber-%{version}

%build
make build

%install
make install PREFIX=%{buildroot}%{_prefix} NO_RELOAD=true

%check
make test

%pre
%systemd_pre inputplumber-suspend.service inputplumber.service

%post
%systemd_post inputplumber-suspend.service inputplumber.service

%preun
%systemd_preun inputplumber-suspend.service inputplumber.service

%postun
%systemd_postun inputplumber-suspend.service inputplumber.service

%files
%{_bindir}/inputplumber
%dir %{_datadir}/inputplumber
%dir %{_datadir}/inputplumber/devices
%{_datadir}/inputplumber/devices/10-ignore_unsupported.yaml
%{_datadir}/inputplumber/devices/50-anbernic_win600.yaml
%{_datadir}/inputplumber/devices/50-aokzoe_a1.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_2.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_2021.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_2s.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_3.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_air.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_air_1s.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_air_plus.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_air_plus_mendo.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_flip.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_flip_1s.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_kun.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_next.yaml
%{_datadir}/inputplumber/devices/50-ayaneo_slide.yaml
%{_datadir}/inputplumber/devices/50-ayn_loki_max.yaml
%{_datadir}/inputplumber/devices/50-ayn_loki_mini_pro.yaml
%{_datadir}/inputplumber/devices/50-ayn_loki_zero.yaml
%{_datadir}/inputplumber/devices/50-gpd_win3.yaml
%{_datadir}/inputplumber/devices/50-gpd_win4.yaml
%{_datadir}/inputplumber/devices/50-gpd_win5.yaml
%{_datadir}/inputplumber/devices/50-gpd_winmax2.yaml
%{_datadir}/inputplumber/devices/50-gpd_winmini.yaml
%{_datadir}/inputplumber/devices/50-legion_go.yaml
%{_datadir}/inputplumber/devices/50-legion_go_2.yaml
%{_datadir}/inputplumber/devices/50-legion_go_s.yaml
%{_datadir}/inputplumber/devices/50-msi_claw7_a2vm.yaml
%{_datadir}/inputplumber/devices/50-msi_claw8_a2vm.yaml
%{_datadir}/inputplumber/devices/50-msi_claw_a1m.yaml
%{_datadir}/inputplumber/devices/50-msi_claw_a8_bz2e.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_2.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_amd.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_g1.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_intel.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_mini_a07.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_mini_pro.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_onexfly.yaml
%{_datadir}/inputplumber/devices/50-onexplayer_x1.yaml
%{_datadir}/inputplumber/devices/50-orangepi_neo.yaml
%{_datadir}/inputplumber/devices/50-rog_ally.yaml
%{_datadir}/inputplumber/devices/50-rog_ally_x.yaml
%{_datadir}/inputplumber/devices/50-rog_flow_z13.yaml
%{_datadir}/inputplumber/devices/50-steam_deck.yaml
%{_datadir}/inputplumber/devices/50-zotac-zone.yaml
%{_datadir}/inputplumber/devices/60-8bit_do_pro_2.yaml
%{_datadir}/inputplumber/devices/60-LogitechDualAction.yaml
%{_datadir}/inputplumber/devices/60-flydigi_vader_4_pro.yaml
%{_datadir}/inputplumber/devices/60-horipad_steam.yaml
%{_datadir}/inputplumber/devices/60-ps4_gamepad.yaml
%{_datadir}/inputplumber/devices/60-ps5_ds-edge_gamepad.yaml
%{_datadir}/inputplumber/devices/60-ps5_ds_gamepad.yaml
%{_datadir}/inputplumber/devices/60-switch_pro.yaml
%{_datadir}/inputplumber/devices/60-xbox_360_gamepad.yaml
%{_datadir}/inputplumber/devices/60-xbox_gamepad.yaml
%{_datadir}/inputplumber/devices/60-xbox_one_bt_gamepad.yaml
%{_datadir}/inputplumber/devices/60-xbox_one_elite_gamepad.yaml
%{_datadir}/inputplumber/devices/60-xbox_one_gamepad.yaml
%{_datadir}/inputplumber/devices/65-generic_gamepad.yaml
%{_datadir}/inputplumber/devices/69-ignore_generic.yaml

%dir %{_datadir}/inputplumber/capability_maps
%{_datadir}/inputplumber/capability_maps/ally_type1.yaml
%{_datadir}/inputplumber/capability_maps/ally_type2.yaml
%{_datadir}/inputplumber/capability_maps/anbernic_type1.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type1.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type2.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type3.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type4.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type5.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type6.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type7.yaml
%{_datadir}/inputplumber/capability_maps/ayaneo_type8.yaml
%{_datadir}/inputplumber/capability_maps/ayn_type1.yaml
%{_datadir}/inputplumber/capability_maps/dinput_generic.yaml
%{_datadir}/inputplumber/capability_maps/flow_type1.yaml
%{_datadir}/inputplumber/capability_maps/flydigi_vader_4_pro.yaml
%{_datadir}/inputplumber/capability_maps/gpd_menu.yaml
%{_datadir}/inputplumber/capability_maps/gpd_type1.yaml
%{_datadir}/inputplumber/capability_maps/gpd_type2.yaml
%{_datadir}/inputplumber/capability_maps/gpd_type3.yaml
%{_datadir}/inputplumber/capability_maps/gpd_type4.yaml
%{_datadir}/inputplumber/capability_maps/imu_generic.yaml
%{_datadir}/inputplumber/capability_maps/logitech_dualaction.yaml
%{_datadir}/inputplumber/capability_maps/msiclaw_type1.yaml
%{_datadir}/inputplumber/capability_maps/msiclaw_type1_dinput.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type1.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type2.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type3.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type4.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type5.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type6.yaml
%{_datadir}/inputplumber/capability_maps/onexplayer_type7.yaml
%{_datadir}/inputplumber/capability_maps/orangepi_type1.yaml
%{_datadir}/inputplumber/capability_maps/swap_west_north.yaml
%{_datadir}/inputplumber/capability_maps/zone_type1.yaml

%dir %{_datadir}/inputplumber/profiles
%{_datadir}/inputplumber/profiles/debug.yaml
%{_datadir}/inputplumber/profiles/default.yaml
%{_datadir}/inputplumber/profiles/mouse_keyboard_wasd.yaml
%{_datadir}/inputplumber/profiles/test.yaml

%dir %{_datadir}/inputplumber/schema
%{_datadir}/inputplumber/schema/capability_map_v1.json
%{_datadir}/inputplumber/schema/capability_map_v2.json
%{_datadir}/inputplumber/schema/composite_device_v1.json
%{_datadir}/inputplumber/schema/device_profile_v1.json

%{_datadir}/dbus-1/system.d/org.shadowblip.InputPlumber.conf

%{_datadir}/polkit-1/actions/org.shadowblip.InputPlumber.policy
%{_datadir}/polkit-1/rules.d/org.shadowblip.InputPlumber.rules

%dir %{_prefix}/lib/udev/hwdb.d
%{_prefix}/lib/udev/hwdb.d/59-inputplumber.hwdb
%{_prefix}/lib/udev/hwdb.d/60-inputplumber-autostart.hwdb

%{_prefix}/lib/udev/rules.d/90-inputplumber-autostart.rules
%{_prefix}/lib/udev/rules.d/99-inputplumber-device-setup.rules

%{_unitdir}/inputplumber.service
%{_unitdir}/inputplumber-suspend.service
%changelog
openSUSE Build Service is sponsored by