MCPcopy Index your code
hub / github.com/Alia5/SISR

github.com/Alia5/SISR @v0.6.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.6.0 ↗ · + Follow
929 symbols 2,329 edges 177 files 294 documented · 32%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Build Status License: GPL-3.0 Release Issues PRs Welcome Downloads Discord

SISR ✂️

Steam Input System Redirector

SISR (pronounced "scissor") redirects Steam Input configurations to the system level (localhost or network).

SISR takes controllers it receives from Steam (via Steam Input) and forwards them as emulated but more compatible controllers (indistinguishable from real hardware) to the OS.

This approach makes SISR unique for controller rebinding tools as it uses the established Steam Input system and gives access to it's full feature set, supports every controller Steam supports, and provides access to thousands of community configurations (web-browsable on SteamInputDB).

It can be used to circumvent issues with games and applications that do not support Steam Input or otherwise pose challenges, like (but not limited to):

  • Games with aggressive anti-cheat systems
  • Emulators
  • Windows Store games/apps
  • Games with broken Steam Input support

All while still providing you the full feature set of SteamInput!

SISR can also be used to "tunnel"/forward Steam Input configurations over the network to other machines, including Keyboard/Mouse.
This makes it possible to use devices like a Steam Deck as a dedicated controller without the need to stream the entire game.

The emulated controllers (and Keyboard/Mouse) are indistinguishable from real hardware and show up at system level.
SISR achieves this by utilizing VIIPER (requires USBIP).
Unlike its predecessor GlosSI, it does not use the unmaintained ViGEm driver.

[!WARNING] Highly experimental work in progress. Everything is subject to change and may or may not work.
Expect bugs, crashes, and missing features.

[!IMPORTANT] You do get the full functionality of SteamInput, without having to launch your games from Steam
For this Steam must still be running in the background, though.
Please read the introduction post before you get started.

✨🛣️ Features / Roadmap

  • Full SteamInput featureset while emulating compatible controllers (indistinguishable from real hardware)
  • Xbox360 or
  • DualShock 4
    • Gyro Passthrough
  • *Non Steam Mode
  • Multi-platform support (Windows, Linux) Multiple operation modes
    • Standalone background service (To be improved)
    • Steam overlay window mode
  • Networked operation across computers
    • Use devices like a SteamDeck as dedicated controller without streaming the whole game/display
  • 🚧 Xbox One controller emulation
  • 🚧 Bundling multiple devices into a single controller
  • 🚧 Automatic HidHide integration

Documentation / FAQ / Help

Read the documentation!

📝 Contributing

PRs welcome! See GitHub Issues for open tasks.

📄 License

SISR - Steam Input System Redirector

Copyright (C) 2025-2026 Peter Repukat

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Extension points exported contracts — how you extend this code

Event (Interface)
Event is the common interface for all wrapped SDL events. [39 implementers]
sdl/event.go
Renderer (Interface)
Renderer is a 2D rendering context. [1 implementers]
sdl/renderer.go
Handler (Interface)
(no doc) [3 implementers]
event/handler/handler.go
WindowHitTestFunc (FuncType)
WindowHitTestFunc is the callback type used by SetWindowHitTest.
sdl/window.go
WebView (Interface)
(no doc) [2 implementers]
webview/webview.go
Checker (Interface)
(no doc) [1 implementers]
update/checker.go
DeviceStore (Interface)
(no doc) [1 implementers]
input/device_store.go
ViiperBridge (Interface)
(no doc) [1 implementers]
input/viiperbridge.go

Core symbols most depended-on inside this repo

Error
called by 128
sdl/error.go
GetButton
called by 70
sdl/gamepad.go
Lock
called by 55
input/device.go
Unlock
called by 55
input/device.go
wrapCommon
called by 39
sdl/event.go
GetError
called by 39
sdl/error.go
Info
called by 39
input/viiperbridge.go
GetAxis
called by 24
sdl/gamepad.go

Shape

Function 417
Method 320
Struct 117
Interface 35
TypeAlias 24
Class 13
FuncType 3

Languages

Go88%
TypeScript8%
C3%
C++1%

Modules by API surface

sdl/event.go127 symbols
sdl/gamepad.go85 symbols
sdl/joystick.go68 symbols
sdl/window.go38 symbols
cefpayloads/src/index.d.ts25 symbols
input/viiperbridge.go23 symbols
windows/hooks/hooks_windows.go19 symbols
update/checker.go17 symbols
logging/logging.go17 symbols
input/device_store.go17 symbols
sdl/extras/cursor_hittest_linux.c14 symbols
docs/javascript/downloads.js13 symbols

For agents

$ claude mcp add SISR \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page