commit d67f05da782eeacace85998ede4eaa79edfbc0e0
Author: Simone Caronni <negativo17(a)gmail.com>
Date: Sat Aug 13 14:58:18 2016 +0200
Make Steam Controller usable as a gamepad (#4062).
Update UDev rule for keyboards detected as joysticks.
Update README.Fedora file with notes about the Steam Controller, its update process
and update the list of devices with UDev rules.
51-these-are-not-joysticks-rm.rules | 82 ++++++++++++++++++++++----------
README.Fedora | 43 +++++++++++++++--
steam-controller-gamepad-emulation.patch | 12 +++++
steam.spec | 13 ++++-
4 files changed, 118 insertions(+), 32 deletions(-)
---
diff --git a/51-these-are-not-joysticks-rm.rules b/51-these-are-not-joysticks-rm.rules
index dcd2c62..32f5140 100644
--- a/51-these-are-not-joysticks-rm.rules
+++ b/51-these-are-not-joysticks-rm.rules
@@ -3,53 +3,83 @@
# This file is auto-generated. For more information:
#
https://github.com/denilsonsa/udev-joystick-blacklist
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="009d", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="009d", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="009d", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b0", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b0", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b0", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b4", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b4", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="00b4", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0730", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0730", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0730", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0745", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0745", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0745", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0748", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0748", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0748", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0750", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0750", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0750", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0768", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0768", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0768", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0773", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0773", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0773", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07a5", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07a5", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07a5", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07b2", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07b2", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="07b2", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0800", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0800", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="045e",
ATTRS{idProduct}=="0800", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0016", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0010", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0010", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0011", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0011", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0012", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0012", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0013", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0013", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0014", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0014", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0015", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0015", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0016", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0016", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="00d1", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0017", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0017", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0016", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0016", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0017", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0017", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0018", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0018", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0019", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="0019", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="00d1", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="056a",
ATTRS{idProduct}=="00d1", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="054f", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="054f", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="054f", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="31b5", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="31b5", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="31b5", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="3997", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="3997", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="3997", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="51f4", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="3f8b", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="3f8b", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="51f4", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="51f4", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="5589", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="5589", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="5589", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7b22", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7b22", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7b22", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7f2d", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7f2d", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="7f2d", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="8090", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="8090", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="8090", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9090", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9090", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9066", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9066", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9066", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
-SUBSYSTEM=="input", ATTRS{idVendor}=="2516",
ATTRS{idProduct}=="001f", ENV{ID_INPUT_JOYSTICK}=="?*",
RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9090", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="9090", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="90c0", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="90c0", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="f32a", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="f32a", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="f613", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da",
ATTRS{idProduct}=="f613", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="2516",
ATTRS{idProduct}=="001f", ENV{ID_INPUT_JOYSTICK}=="?*",
ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="2516",
ATTRS{idProduct}=="001f", KERNEL=="js[0-9]*", RUN+="/bin/rm
%E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
diff --git a/README.Fedora b/README.Fedora
index 4e86d10..84d4f2d 100644
--- a/README.Fedora
+++ b/README.Fedora
@@ -62,12 +62,12 @@ Steam clients.
Joysticks, keyboards and game pads
==================================
-The package contains the following UDEV rules:
+The package contains the UDEV rules for the following devices:
- Steam Controller with USB adapter
- HTC Vive HID Sensor with USB adapter
- Support for the devices, rules originall shipped with Steam.
+ Support for the devices, rules originally shipped with Steam.
- Nvidia Shield Controller (workaround for Mouse detection)
@@ -95,20 +95,53 @@ The package contains the following UDEV rules:
- Microsoft® Nano Transceiver v1.0
- Microsoft Wireless Keyboard 800
- Microsoft® Nano Transceiver v2.0
-- WACOM CTE-640-U V4.0-3
-- Wacom Co., Ltd Graphire 4 6x8
+- Wacom ET-0405 Graphire
+- Wacom ET-0405A Graphire2 (4x5)
+- Wacom ET-0507A Graphire2 (5x7)
+- Wacom CTE-430 Graphire3 (4x5)
+- Wacom CTE-630 Graphire3 (6x8)
+- Wacom CTE-440 Graphire4 (4x5)
+- Wacom CTE-640 Graphire4 (6x8)
+- Wacom CTE-450 Bamboo Fun (4x5)
+- Wacom CTE-640 Graphire 4 6x8
+- Wacom CTE-450 Bamboo Fun 4x5
+- Wacom CTE-650 Bamboo Fun 6x8
+- Wacom CTE-631 Bamboo One
- Wacom Bamboo Pen and Touch CTH-460
- A4 Tech Co., G7 750 mouse
- A4 Tech Co., Ltd Bloody TL80 Terminator Laser Gaming Mouse
- A4 Tech Co., Ltd Bloody RT7 Terminator Wireless
+- A4 Tech Co., Ltd Bloody V8 mouse
- Modecom MC-5006 Keyboard
- A4 Tech Co., Ltd Terminator TL9 Laser Gaming Mouse
- A4 Tech Co., Ltd Bloody V5
- A4 Tech Co., Ltd Bloody R3 mouse
- A4 Tech Co., Ltd X-718BK Oscar Optical Gaming Mouse
-- A4 Tech Co., Ltd XL-750BK Laser Mouse
- A4 Tech Co., Sharkoon Fireglider Optical
+- A4 Tech Co., Ltd XL-730K / XL-750BK / XL-755BK Laser Mouse
+- A4 Tech Co., Ltd X7 G800V keyboard
+- A4 Tech Co., Ltd Bloody B540 keyboard
+- A4 Tech Co., Ltd Bloody V2 mouse
- Cooler Master Storm Mizar Mouse
Workaround to have them properly detected as mouse/keyboards and not
joysticks. This prevents the "ghost" keypresses in Steam Big Picture mode.
+
+Steam Controller
+================
+
+To use the Steam Controller as a normal gamepad you require the Steam client to
+be running and the user requiring Gamepad emulation needs to be in the 'input'
+group.
+
+Regular firmware updates will go through regular USB hid reports and can be
+performed wired or wirelessly. Valve will also sometimes be releasing infrequent
+bootloader firmware updates; these updates are different and can only work when
+wired.
+
+When Steam asks you to plug in the controller to start the update, the
+controller will change from a HID device to a mass storage device with an
+identifier of 'CRP DISABLED'. Steam will then wait for that device to become
+mounted somewhere so that it can copy the firmware file into the controller.
+If you don't auto-mount mass storage devices by default, you need to mount it
+manually when the Steam client is waiting for the volume to get mounted.
diff --git a/steam-controller-gamepad-emulation.patch
b/steam-controller-gamepad-emulation.patch
new file mode 100644
index 0000000..5ea3cf5
--- /dev/null
+++ b/steam-controller-gamepad-emulation.patch
@@ -0,0 +1,12 @@
+diff -Naur steam.old/lib/udev/rules.d/99-steam-controller-perms.rules
steam/lib/udev/rules.d/99-steam-controller-perms.rules
+--- steam.old/lib/udev/rules.d/99-steam-controller-perms.rules 2016-08-13
14:13:05.108219818 +0200
++++ steam/lib/udev/rules.d/99-steam-controller-perms.rules 2016-08-13 14:24:42.230701531
+0200
+@@ -2,5 +2,6 @@
+ SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
+ # Steam Controller udev write access
+ KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
+-# HTC Vive HID Sensor naming and permissioning
+-
++# This rule is necessary for gamepad emulation; make sure each user requiring
++# it is part of the input group.
++KERNEL=="uinput", MODE="0660", GROUP="input",
OPTIONS+="static_node=uinput"
diff --git a/steam.spec b/steam.spec
index 1980b39..bf9355c 100644
--- a/steam.spec
+++ b/steam.spec
@@ -6,7 +6,7 @@
Name: steam
Version: 1.0.0.52
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Installer for the Steam software distribution service
# Redistribution and repackaging for Linux is allowed, see license file
License: Steam License Agreement
@@ -35,6 +35,10 @@ Patch0: %{name}-3570.patch
#
https://github.com/ValveSoftware/steam-for-linux/issues/3273
Patch1: %{name}-3273.patch
+# Make Steam Controller usable as a GamePad:
+#
https://steamcommunity.com/app/353370/discussions/0/490123197956024380/
+Patch2: %{name}-controller-gamepad-emulation.patch
+
BuildRequires: desktop-file-utils
BuildRequires: systemd
@@ -93,6 +97,7 @@ savegame and screenshot functionality, and many social features.
%setup -q -n %{name}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
sed -i 's/\r$//' %{name}.desktop
sed -i 's/\r$//' steam_install_agreement.txt
@@ -146,6 +151,12 @@ fi
%{_udevrulesdir}/*
%changelog
+* Sat Aug 13 2016 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.52-2
+- Make Steam Controller usable as a gamepad (#4062).
+- Update UDev rule for keyboards detected as joysticks.
+- Update README.Fedora file with notes about the Steam Controller, its update
+ process and update the list of devices with UDev rules.
+
* Fri Apr 01 2016 Simone Caronni <negativo17(a)gmail.com> - 1.0.0.52-1
- Update to 1.0.0.52, adds HTC Vive udev rules.
- Update patches.