diff --git a/README.md b/README.md
index 54ac041..3c8a101 100644
--- a/README.md
+++ b/README.md
@@ -3,308 +3,52 @@
This repository contains my own personal set of tools to help running Windows on Steam Deck.
**This software is provided on best-effort basis and can break your SteamDeck.**
-To learn more go to [Risks](#4-risks).
-### If you found it useful buy me [Ko-fi](https://ko-fi.com/ayufan).
+## Help this project
-
+**This project is provided free of charge, but development of it is not free**:
-## 1. Steam Deck Fan Control
+- Consider donating to keep this project alive.
+- Donating also helps to fund features that you might request.
-This is a very early and highly experimental fan controller for Windows build based
-on `linux/jupiter-fan-control.py` available on SteamOS.
+
+
+
-
+## Applications
-### 1.1. Usage
+This project provides the following application:
-You can download latest precompiled build from Releases tab. Currently the application requires
-administrative privileges in order to read various temperature sensors.
+- [Fan Control](docs/fan-control.md) - control Fan on Windows
+- [Performance Overlay](docs/performance-overlay.md) - see FPS and other stats
+- [Power Control](docs/power-control.md) - change TDP or refresh rate
+- [Steam Controller](docs/steam-controller.md) - use Steam Deck with Game Pass
-It provides 3 modes of operation:
+## Additional informations
-1. **Default** - use EC to control fan (as done today)
-1. **SteamOS** - use reimplemented `jupiter-fan-control.py` (as in SteamOS when Fan Control is enabled)
-1. **Max** - blow at full speed.
+- [Controller Shortcuts](docs/shortcuts.md) - default shortcuts when using [Steam Controller](docs/steam-controller.md)
+- [Development](docs/development.md) - how to compile this project
+- [Risks](docs/risks.md) - this project users kernel manipulation and might result in unstable system
-### 1.2. How it works?
+## Screenshots
-See [Risks](#4-risks).
+
-### 1.3. Limitations
+## Requirements
-As of Today (Nov, 2022) the GPU temperature is missing on Windows. Which makes it a little incomplete.
-However, it should be expected that GPU temperature is "kind of similar" to CPU due to GPU being in the same
-silicon. But! The device might overheat and break due to this missing temperature. **So, use at your own risk.**
+This project requires those dependencies to be installed in order to function properly:
-### 1.4. Supported devices
+- [Microsoft Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe)
+- [Rivatuner Statistics Server](https://www.guru3d.com/files-details/rtss-rivatuner-statistics-server-download.html)
+- [ViGEmBus](https://github.com/ViGEm/ViGEmBus/releases)
-The application tries it best to not harm device (just in case). So, it validates bios version.
-Those are currently supported:
+It is strongly advised that following software is uninstalled or disabled:
-- F7A0107 (PD ver: 0xB030)
-- F7A0110 (PD ver: 0xB030)
+- [SWICD](https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver)
+- [GlosSI](https://github.com/Alia5/GlosSI)
+- [HidHide](https://github.com/ViGEm/HidHide)
-## 2. Performance Overlay
-
-This is a very simple application that requires [Rivatuner Statistics Server Download](https://www.guru3d.com/files-details/rtss-rivatuner-statistics-server-download.html))
-and provides asthetics of SteamOS Performance Overlay.
-
-Uninstall MSI Afterburner and any other OSD software.
-
-It currently registers two global hotkeys:
-
-- **Shift+F11** - enable performance overlay
-- **Alt+Shift+F11** - cycle to next performance overlay (and enable it)
-
-There are 5 modes of presentation:
-
-### 2.1. FPS
-
-
-
-### 2.2. FPS with Battery
-
-
-
-### 2.3. Minimal
-
-
-
-### 2.4. Detail
-
-
-
-### 2.5. Full
-
-
-
-## 3. Power Control
-
-This is a very simple application that requires [Rivatuner Statistics Server Download](https://www.guru3d.com/files-details/rtss-rivatuner-statistics-server-download.html)
-and provides an easily accessible controls.
-
-Uninstall MSI Afterburner and any other OSD software.
-
-There are currently configurable settings:
-
-- Volume
-- Brightness
-- Refresh Rate
-- Resolution (requires enabling `EnableExperimentalFeatures` in `appconfig`)
-- FPS Limit (requires: RTSS > Setup > Enable Framelimit)
-- TDP
-- SMT (Each core of AMD has 2 threads, this allows to enable/disable second threads)
-- OSD / OSDMode (requires PerformanceOverlay running)
-- Fan (requires FanControl running)
-
-
-
-### 3.1. Use it
-
-It will only work in OSD mode when rendering graphics.
-The notification setting is always available.
-
-- SteamDeck Controller: press and hold Quick Access (3 dots), and then DPad Left, Rigth, Up, Down.
-- Keyboard: `Ctrl+Win+Numpad2` (Down), `Ctrl+Win+Numpad4` (Left), `Ctrl+Win+Numpad6` (Right), `Ctrl+Win+Numpad8` (Up)
-
-Additional shortcuts:
-
-- Control Volume: use Volume Up and Down
-- Control Brightness: press and hold Quick Access (3 dots), and then Volume Up and Down
-- Press `3 dots + L4 + R4 + L5 + R5` to reset (TDP, Refresh Rate, FPS limit) to default
-
-### 3.2. SWICD configuration
-
-- Set 3 dots to **NONE** in button mapping
-
-
-
-## 4. Steam Controller
-
-This is highly experimental "opinionated" implementation of Steam Controller that is meant
-to replace [SWICD](https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver/)
-and [Glossi](https://github.com/Alia5/GlosSI). This is hard piece and it is rather
-unsupported (by me), so if it works it works.
-
-It offers 3 main modes of operation:
-
-- **Desktop**
-- **X360 emulation** (optionally with Rumble) - activated automatically when entering Playnite Fullscreen
-- **Steam** - active automatically when running Steam Gamepad UI, Steam Big Screen UI or running Steam Game
-
-You can easily switch between Desktop and X360 by holding Options button (3 horizontal lines,
-on top of the right joystick). When profile is switched you will hear a beep.
-
-It is strongly advised that you uninstall (unless you know what are you doing):
-
-1. SWICD
-1. Glossi
-1. HidHide
-
-Requirements:
-
-1. Ensure that you have SWICD, Glossi and HidHide disabled, stopped or uninstalled!
-1. Ensure that HidHide is disabled, or ensure that `Steam Controller.exe` can see `Neptune Valve Controller`.
-1. Install latest version of [https://github.com/ViGEm/ViGEmBus/releases](https://github.com/ViGEm/ViGEmBus/releases).
-
-### 4.1. Possible setups
-
-The are various ways how `Steam Controller` can work with Steam.
-If you do not use Steam this is simple, just run it and enjoy.
-Since when there's no Steam, there's no problem at all.
-
-#### 4.1.1. Most compatible - Use X360 Controller with Steam
-
-This pretty much work always. It hides the `Valve Software Steam Controller` from Steam.
-
-It is out of box experience. In this mode you would use either Desktop or X360 controls,
-and all Steam games would use X360.
-
-The Back Panel buttons can be assigned to some user-defined keys.
-
-#### 4.1.2. Works, but sometimes finicky - Use Steam Input with Steam
-
-It is **required** to configure Steam as described in [Configure Steam](#43-configure-steam).
-
-This is setup that allows you to enable `Steam Input` and use community provided profiles
-on Steam. However, this requires special configuration and in some cases is finicky.
-
-The `SteamController.exe` automatically detects Steam running game and disable itself
-for the duration of game play switch to specially currated `Steam profile` (non selectable, and hidden).
-
-The are two primary ways how to use it. The best experience is achieved when
-**STEAM IS NOT RUNNING IN BACKGROUND**. Use Playnite Fullscreen to start game on the Steam
-and close it after session (there's an option in Playnite settings). Keep Steam closed
-otherwise at all times.
-
-Alternative if Steam is running in background it should be pretty stable when
-[configured desktop mode buttons](#43-configure-steam). There will be sometimes finicky behavior
-when using STEAM button shortcuts. However, this is mostly stable otherwise.
-
-> Getting controllers support is hard especially with Steam not making it easy to disable it.
-> I'm doing this to solve my usage pattern. So, I might have limited will to fix all quirks
-> of handling Steam running in background alongside `Steam Controller`. This will never
-> be supported mode of operation.
-
-#### 4.1.3. If you know what you do - Ignore Steam
-
-This makes `Steam Controller` to disable Steam detection. Now, you would have to do everything
-you were doing before: like HidHide, additional controllers, etc.
-
-It is **not needed** to configure Steam as described in [Configure Steam](#43-configure-steam).
-
-In this mode you would use either Desktop or X360 controls, and all Steam games would use X360.
-When running in this mode you would have to switch between Desktop and X360 mode with `Options` button
-or with `PowerControl`.
-
-Of course you will have access to all described shortcuts.
-
-### 4.2. Mappings
-
-| Button | Desktop | X360 (with Rumble) | Steam | Steam With Shortcuts |
-|----------------------------|------------------------|------------------------|------------------------|------------------------|
-| X360 Controller | Not connected | Connected | Not connected | Not connected |
-| Options (hold for 1s) | Switch to next profile | Switch to next profile | Switch to next profile | Switch to next profile |
-| Options (hold for 2s) | Toggle desktop mode | Toggle desktop mode | | |
-| STEAM + 3 dots | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE |
-| STEAM + Menu | WIN + TAB | WIN + TAB | WIN + TAB | WIN + TAB |
-| STEAM + Options | F11 | F11 | F11 | F11 |
-| STEAM + A | RETURN | RETURN | | RETURN |
-| STEAM + B (hold for 1s) | ALT + F4 | ALT + F4 | | ALT + F4 |
-| STEAM + B (hold for 3s) | Kill active process | Kill active process | | Kill active process |
-| STEAM + X | Toggle Keyboard | Toggle Keyboard | | Toggle Keyboard |
-| STEAM + L1 | Toggle Magnify | Toggle Magnify | | Toggle Magnify |
-| STEAM + R1 | Screenshot | Screenshot | | Screenshot |
-| STEAM + Left Joystick Up | Increase Brightness | Increase Brightness | | Increase Brightness |
-| STEAM + Left Joystick Down | Decrease Brightness | Decrease Brightness | | Decrease Brightness |
-| STEAM + DPad Right | RETURN | RETURN | | RETURN |
-| STEAM + DPad Down | TAB | TAB | | TAB |
-| STEAM + DPad Left | ESCAPE | ESCAPE | | ESCAPE |
-| STEAM + DPad Up | CTRL + ALT + U | CTRL + ALT + U | | CTRL + ALT + U |
-| STEAM + Left Pad | Mouse Scroll | Mouse Scroll | | Mouse Scroll |
-| STEAM + Left Joystick | Mouse Scroll | Mouse Scroll | | Mouse Scroll |
-| STEAM + Right Joystick | Mouse Trackpad | Mouse Trackpad | | Mouse Trackpad |
-| STEAM + Right Pad | Mouse Move | Mouse Move | | Mouse Move |
-| STEAM + L2 | Mouse Right Click | Mouse Right Click | | Mouse Right Click |
-| STEAM + R2 | Mouse Left Click | Mouse Left Click | | Mouse Left Click |
-| STEAM + Left Pad Press | Mouse Right Click | Mouse Right Click | | Mouse Right Click |
-| STEAM + Right Pad Press | Mouse Left Click | Mouse Left Click | | Mouse Left Click |
-| Left Pad | Mouse Scroll | | | |
-| Left Joystick | Mouse Scroll | | | |
-| Right Joystick | Mouse Trackpad | | | |
-| Right Pad | Mouse Move | | | |
-| DPad Arrows | Keyboard Arrows | | | |
-| A | RETURN | | | |
-| B | BACKSPACE | | | |
-
-### 4.3. Configure Steam
-
-If Steam is running in background it is essential to remove Desktop mode configuration
-to make `SteamController.exe` the one mapping those.
-
-#### 4.3.1. Disable Desktop mode in Steam Gamepad UI (preferred)
-
-1. Run `steam.exe` with `-gamepadui`.
-1. Click `Steam` button, go to `Settings` > `Controller`.
-1. Scroll down to find `Desktop Layout`, click `Edit` and `Edit Layout`.
-1. Go to `Action Sets` > `Add Action Set`.
-1. In `Add Action Set` type `Empty` and `Continue`.
-1. Now click on `Default`, `Remove Set` and `Confirm`.
-1. You can now exit with `B` (Back).
-
-#### 4.3.2. Disable Desktop mode in Steam Desktop (slightly buggy on Steam Deck)
-
-1. Run Steam.
-1. Go to `Steam` > `Settings` > `Controller` > `Desktop Configuration`.
-1. Click `Add Action Set`.
-1. In new window type `Empty` and click `OK`.
-1. At top select `Default`.
-1. Now click `Menu` button (the button on top of left joystick with two squares)
- on Steam Deck (or `Manage Action Set` button).
-1. In a new window click `DELETE`.
-1. Now click `B` or `DONE`.
-
-### 4.4. Fullscreen Scaling Hotkey (Steam + Up Pad Press)
-
-Many games in Windows will crash when attempting to start in fullscreen. To have a fullscreen experience on the Steam Deck, you can use this keybind in any fullscreen scaling application to provide a shortcut capable of toggling the scaling.
-
-Example of Scaling software: https://store.steampowered.com/app/993090/Lossless_Scaling/
-
-To configure the hotkey in Lossless Scaling:
-1. Launch Lossless Scaling
-1. Open "Settings"
-1. Select the "Scale hotkey"
-1. Press "STEAM + DPad Up"
-1. Verify that the hotkey was set to "CTRL + ALT + U"
-1. Close the settings dialog
-
-## 5. Risks
-
-**This software is provided on best-effort basis and can break your SteamDeck.** It does a direct manipulation
-of kernel memory to control usage the EC (Embedded Controller) and setting desired fan RPM via VLV0100
-
-The Tools are written trying to check if you are truly using SteamDeck and compatible system.
-The applications try it's best to start only on **validated configurations** to avoid breaking your system.
-
-It was build based on knowledge gained in Steam Deck kernel patch and DSDT presented by bios.
-The memory addresses used are hardcoded and can be changed any moment by the Bios update.
-
-Fortunately quite amount of people are using it with a success and no problems observed.
-However, you should be aware of the consequences.
-
-### 5.1. Risk of CPU and GPU frequency change
-
-The APU manipulation of CPU and GPU frequency uses a ported implementation from Linux kernel.
-It is more unstable than Fan Control (since the Fan Control is controller managing EC on Windows).
-The change of the CPU and GPU frequency switch might sometimes crash system.
-The AMD Display Driver periodically requests GPU metrics and in some rare circumstances the change request
-might lock the GPU driver. If something like this happens it is advised to
-power shutdown the device. Disconnect from charging, and hold power button for a few seconds.
-Power device normally afterwards. This is rather unlikely to break the device if done right
-after when such event occurs.
-
-## 6. Anti-Cheat and Antivirus software
+## Anti-Cheat and Antivirus software
Since this project uses direct manipulation of kernel memory via `inpoutx64.dll`
it might trigger Antivirus and Anti-Cheat software.
@@ -313,12 +57,6 @@ If you use at least version `0.5.x` you can disable kernel drivers usage that sh
avoid trippping Anti-Cheat detection. Set FAN to `Default` and disable `OSD Kernel Drivers`.
Of course you will miss some metrics due to that.
-## 7. Development
-
-It should be enough to run `scripts/build.bat` to see binaries in `build-release/`.
-
-You might also run `scripts/test_debug.bat` which will build and run built version.
-
## Author
Kamil TrzciĆski, 2022
diff --git a/docs/development.md b/docs/development.md
new file mode 100644
index 0000000..cc17ca2
--- /dev/null
+++ b/docs/development.md
@@ -0,0 +1,5 @@
+# Development
+
+It should be enough to run `scripts/build.bat` to see binaries in `build-release/`.
+
+You might also run `scripts/test_debug.bat` which will build and run built version.
diff --git a/docs/fan-control.md b/docs/fan-control.md
new file mode 100644
index 0000000..5bc4972
--- /dev/null
+++ b/docs/fan-control.md
@@ -0,0 +1,35 @@
+# Fan Control
+
+This is a very early and highly experimental fan controller for Windows build based
+on `linux/jupiter-fan-control.py` available on SteamOS.
+
+
+
+## 1. Usage
+
+You can download latest precompiled build from Releases tab. Currently the application requires
+administrative privileges in order to read various temperature sensors.
+
+It provides 3 modes of operation:
+
+1. **Default** - use EC to control fan (as done today)
+1. **SteamOS** - use reimplemented `jupiter-fan-control.py` (as in SteamOS when Fan Control is enabled)
+1. **Max** - blow at full speed.
+
+## 2. How it works?
+
+See [Risks](#4-risks).
+
+## 3. Limitations
+
+As of Today (Nov, 2022) the GPU temperature is missing on Windows. Which makes it a little incomplete.
+However, it should be expected that GPU temperature is "kind of similar" to CPU due to GPU being in the same
+silicon. But! The device might overheat and break due to this missing temperature. **So, use at your own risk.**
+
+## 4. Supported devices
+
+The application tries it best to not harm device (just in case). So, it validates bios version.
+Those are currently supported:
+
+- F7A0107 (PD ver: 0xB030)
+- F7A0110 (PD ver: 0xB030)
diff --git a/images/fan_control.png b/docs/images/fan_control.png
similarity index 100%
rename from images/fan_control.png
rename to docs/images/fan_control.png
diff --git a/images/perf_overlay_detail.png b/docs/images/perf_overlay_detail.png
similarity index 100%
rename from images/perf_overlay_detail.png
rename to docs/images/perf_overlay_detail.png
diff --git a/images/perf_overlay_fps.png b/docs/images/perf_overlay_fps.png
similarity index 100%
rename from images/perf_overlay_fps.png
rename to docs/images/perf_overlay_fps.png
diff --git a/images/perf_overlay_fpsbat.png b/docs/images/perf_overlay_fpsbat.png
similarity index 100%
rename from images/perf_overlay_fpsbat.png
rename to docs/images/perf_overlay_fpsbat.png
diff --git a/images/perf_overlay_full.png b/docs/images/perf_overlay_full.png
similarity index 100%
rename from images/perf_overlay_full.png
rename to docs/images/perf_overlay_full.png
diff --git a/images/perf_overlay_min.png b/docs/images/perf_overlay_min.png
similarity index 100%
rename from images/perf_overlay_min.png
rename to docs/images/perf_overlay_min.png
diff --git a/images/power_control.png b/docs/images/power_control.png
similarity index 100%
rename from images/power_control.png
rename to docs/images/power_control.png
diff --git a/images/power_control_swicd_1.png b/docs/images/power_control_swicd_1.png
similarity index 100%
rename from images/power_control_swicd_1.png
rename to docs/images/power_control_swicd_1.png
diff --git a/images/power_control_swicd_2.png b/docs/images/power_control_swicd_2.png
similarity index 100%
rename from images/power_control_swicd_2.png
rename to docs/images/power_control_swicd_2.png
diff --git a/images/power_control_swicd_3.png b/docs/images/power_control_swicd_3.png
similarity index 100%
rename from images/power_control_swicd_3.png
rename to docs/images/power_control_swicd_3.png
diff --git a/docs/performance-overlay.md b/docs/performance-overlay.md
new file mode 100644
index 0000000..94f69bc
--- /dev/null
+++ b/docs/performance-overlay.md
@@ -0,0 +1,33 @@
+# Performance Overlay
+
+This is a very simple application that requires [Rivatuner Statistics Server Download](https://www.guru3d.com/files-details/rtss-rivatuner-statistics-server-download.html)
+and provides asthetics of SteamOS Performance Overlay.
+
+Uninstall MSI Afterburner and any other OSD software.
+
+It currently registers two global hotkeys:
+
+- **Shift+F11** - enable performance overlay
+- **Alt+Shift+F11** - cycle to next performance overlay (and enable it)
+
+There are 5 modes of presentation:
+
+## 1. FPS
+
+
+
+## 2. FPS with Battery
+
+
+
+## 3. Minimal
+
+
+
+## 4. Detail
+
+
+
+## 5. Full
+
+
diff --git a/docs/power-control.md b/docs/power-control.md
new file mode 100644
index 0000000..09f2792
--- /dev/null
+++ b/docs/power-control.md
@@ -0,0 +1,42 @@
+# Power Control
+
+This is a very simple application that requires [Rivatuner Statistics Server Download](https://www.guru3d.com/files-details/rtss-rivatuner-statistics-server-download.html)
+and provides an easily accessible controls.
+
+Uninstall MSI Afterburner and any other OSD software.
+
+There are currently configurable settings:
+
+- Volume
+- Brightness
+- Refresh Rate
+- Resolution (requires enabling `EnableExperimentalFeatures` in `appconfig`)
+- FPS Limit (requires: RTSS > Setup > Enable Framelimit)
+- TDP
+- SMT (Each core of AMD has 2 threads, this allows to enable/disable second threads)
+- OSD / OSDMode (requires PerformanceOverlay running)
+- Fan (requires FanControl running)
+
+
+
+## 1. Use it
+
+It will only work in OSD mode when rendering graphics.
+The notification setting is always available.
+
+- SteamDeck Controller: press and hold Quick Access (3 dots), and then DPad Left, Rigth, Up, Down.
+- Keyboard: `Ctrl+Win+Numpad2` (Down), `Ctrl+Win+Numpad4` (Left), `Ctrl+Win+Numpad6` (Right), `Ctrl+Win+Numpad8` (Up)
+
+Additional shortcuts:
+
+- Control Volume: use Volume Up and Down
+- Control Brightness: press and hold Quick Access (3 dots), and then Volume Up and Down
+- Press `3 dots + L4 + R4 + L5 + R5` to reset (TDP, Refresh Rate, FPS limit) to default
+
+## 2. SWICD configuration
+
+> This work seemlessly with [Steam Controller](steam-controller.md).
+
+- Set 3 dots to **NONE** in button mapping
+
+
diff --git a/docs/risks.md b/docs/risks.md
new file mode 100644
index 0000000..8b65905
--- /dev/null
+++ b/docs/risks.md
@@ -0,0 +1,24 @@
+# Risks
+
+**This software is provided on best-effort basis and can break your SteamDeck.** It does a direct manipulation
+of kernel memory to control usage the EC (Embedded Controller) and setting desired fan RPM via VLV0100
+
+The Tools are written trying to check if you are truly using SteamDeck and compatible system.
+The applications try it's best to start only on **validated configurations** to avoid breaking your system.
+
+It was build based on knowledge gained in Steam Deck kernel patch and DSDT presented by bios.
+The memory addresses used are hardcoded and can be changed any moment by the Bios update.
+
+Fortunately quite amount of people are using it with a success and no problems observed.
+However, you should be aware of the consequences.
+
+## Risk of CPU and GPU frequency change
+
+The APU manipulation of CPU and GPU frequency uses a ported implementation from Linux kernel.
+It is more unstable than Fan Control (since the Fan Control is controller managing EC on Windows).
+The change of the CPU and GPU frequency switch might sometimes crash system.
+The AMD Display Driver periodically requests GPU metrics and in some rare circumstances the change request
+might lock the GPU driver. If something like this happens it is advised to
+power shutdown the device. Disconnect from charging, and hold power button for a few seconds.
+Power device normally afterwards. This is rather unlikely to break the device if done right
+after when such event occurs.
diff --git a/docs/shortcuts.md b/docs/shortcuts.md
new file mode 100644
index 0000000..12f7675
--- /dev/null
+++ b/docs/shortcuts.md
@@ -0,0 +1,37 @@
+# Steam Controller - Shortcuts
+
+| Button | Desktop | X360 (with Rumble) | Steam | Steam With Shortcuts |
+|----------------------------|------------------------|------------------------|------------------------|------------------------|
+| X360 Controller | Not connected | Connected | Not connected | Not connected |
+| Options (hold for 1s) | Switch to next profile | Switch to next profile | Switch to next profile | Switch to next profile |
+| Options (hold for 2s) | Toggle desktop mode | Toggle desktop mode | | |
+| STEAM + 3 dots | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE | CTRL + SHIFT + ESCAPE |
+| STEAM + Menu | WIN + TAB | WIN + TAB | WIN + TAB | WIN + TAB |
+| STEAM + Options | F11 | F11 | F11 | F11 |
+| STEAM + A | RETURN | RETURN | | RETURN |
+| STEAM + B (hold for 1s) | ALT + F4 | ALT + F4 | | ALT + F4 |
+| STEAM + B (hold for 3s) | Kill active process | Kill active process | | Kill active process |
+| STEAM + X | Toggle Keyboard | Toggle Keyboard | | Toggle Keyboard |
+| STEAM + L1 | Toggle Magnify | Toggle Magnify | | Toggle Magnify |
+| STEAM + R1 | Screenshot | Screenshot | | Screenshot |
+| STEAM + Left Joystick Up | Increase Brightness | Increase Brightness | | Increase Brightness |
+| STEAM + Left Joystick Down | Decrease Brightness | Decrease Brightness | | Decrease Brightness |
+| STEAM + DPad Right | RETURN | RETURN | | RETURN |
+| STEAM + DPad Down | TAB | TAB | | TAB |
+| STEAM + DPad Left | ESCAPE | ESCAPE | | ESCAPE |
+| STEAM + DPad Up | CTRL + ALT + U | CTRL + ALT + U | | CTRL + ALT + U |
+| STEAM + Left Pad | Mouse Scroll | Mouse Scroll | | Mouse Scroll |
+| STEAM + Left Joystick | Mouse Scroll | Mouse Scroll | | Mouse Scroll |
+| STEAM + Right Joystick | Mouse Trackpad | Mouse Trackpad | | Mouse Trackpad |
+| STEAM + Right Pad | Mouse Move | Mouse Move | | Mouse Move |
+| STEAM + L2 | Mouse Right Click | Mouse Right Click | | Mouse Right Click |
+| STEAM + R2 | Mouse Left Click | Mouse Left Click | | Mouse Left Click |
+| STEAM + Left Pad Press | Mouse Right Click | Mouse Right Click | | Mouse Right Click |
+| STEAM + Right Pad Press | Mouse Left Click | Mouse Left Click | | Mouse Left Click |
+| Left Pad | Mouse Scroll | | | |
+| Left Joystick | Mouse Scroll | | | |
+| Right Joystick | Mouse Trackpad | | | |
+| Right Pad | Mouse Move | | | |
+| DPad Arrows | Keyboard Arrows | | | |
+| A | RETURN | | | |
+| B | BACKSPACE | | | |
diff --git a/docs/steam-controller.md b/docs/steam-controller.md
new file mode 100644
index 0000000..c484387
--- /dev/null
+++ b/docs/steam-controller.md
@@ -0,0 +1,125 @@
+# Steam Controller
+
+This is highly experimental "opinionated" implementation of Steam Controller that is meant
+to replace [SWICD](https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver/)
+and [Glossi](https://github.com/Alia5/GlosSI). This is hard piece and it is rather
+unsupported (by me), so if it works it works.
+
+It offers 3 main modes of operation:
+
+- **Desktop**
+- **X360 emulation** (with Haptics) - activated automatically when entering Playnite Fullscreen
+- **Steam** - active automatically when running Steam Gamepad UI, Steam Big Screen UI or running Steam Game
+
+You can easily switch between Desktop and X360 by holding Options button (3 horizontal lines,
+on top of the right joystick). When profile is switched you will hear a beep.
+
+It is strongly advised that you uninstall (unless you know what are you doing):
+
+1. SWICD
+1. Glossi
+1. HidHide
+
+Requirements:
+
+1. Ensure that you have SWICD, Glossi and HidHide disabled, stopped or uninstalled!
+1. Ensure that HidHide is disabled, or ensure that `Steam Controller.exe` can see `Neptune Valve Controller`.
+1. Install latest version of [https://github.com/ViGEm/ViGEmBus/releases](https://github.com/ViGEm/ViGEmBus/releases).
+
+## 1. Possible setups
+
+The are various ways how `Steam Controller` can work with Steam.
+If you do not use Steam this is simple, just run it and enjoy.
+Since when there's no Steam, there's no problem at all.
+
+### 1.1. Most compatible - Use X360 Controller with Steam
+
+This pretty much work always. It hides the `Valve Software Steam Controller` from Steam.
+
+It is out of box experience. In this mode you would use either Desktop or X360 controls,
+and all Steam games would use X360.
+
+The Back Panel buttons can be assigned to some user-defined keys.
+
+### 1.2. Works, but sometimes finicky - Use Steam Input with Steam
+
+It is **required** to configure Steam as described in [Configure Steam](#3-configure-steam).
+
+This is setup that allows you to enable `Steam Input` and use community provided profiles
+on Steam. However, this requires special configuration and in some cases is finicky.
+
+The `SteamController.exe` automatically detects Steam running game and disable itself
+for the duration of game play switch to specially currated `Steam profile` (non selectable, and hidden).
+
+The are two primary ways how to use it. The best experience is achieved when
+**STEAM IS NOT RUNNING IN BACKGROUND**. Use Playnite Fullscreen to start game on the Steam
+and close it after session (there's an option in Playnite settings). Keep Steam closed
+otherwise at all times.
+
+Alternative if Steam is running in background it should be pretty stable when
+[configured desktop mode buttons](#3-configure-steam). There will be sometimes finicky behavior
+when using STEAM button shortcuts. However, this is mostly stable otherwise.
+
+> Getting controllers support is hard especially with Steam not making it easy to disable it.
+> I'm doing this to solve my usage pattern. So, I might have limited will to fix all quirks
+> of handling Steam running in background alongside `Steam Controller`. This will never
+> be supported mode of operation.
+
+### 1.3. If you know what you do - Ignore Steam
+
+This makes `Steam Controller` to disable Steam detection. Now, you would have to do everything
+you were doing before: like HidHide, additional controllers, etc.
+
+It is **not needed** to configure Steam as described in [Configure Steam](#3-configure-steam).
+
+In this mode you would use either Desktop or X360 controls, and all Steam games would use X360.
+When running in this mode you would have to switch between Desktop and X360 mode with `Options` button
+or with `PowerControl`.
+
+Of course you will have access to all described shortcuts.
+
+## 2. Shortcuts
+
+[See it here](shortcuts.md)
+
+## 3. Configure Steam
+
+If Steam is running in background it is essential to remove Desktop mode configuration
+to make `SteamController.exe` the one mapping those.
+
+### 3.1. Disable Desktop mode in Steam Gamepad UI (preferred)
+
+1. Run `steam.exe` with `-gamepadui`.
+1. Click `Steam` button, go to `Settings` > `Controller`.
+1. Scroll down to find `Desktop Layout`, click `Edit` and `Edit Layout`.
+1. Go to `Action Sets` > `Add Action Set`.
+1. In `Add Action Set` type `Empty` and `Continue`.
+1. Now click on `Default`, `Remove Set` and `Confirm`.
+1. You can now exit with `B` (Back).
+
+### 3.2. Disable Desktop mode in Steam Desktop (slightly buggy on Steam Deck)
+
+1. Run Steam.
+1. Go to `Steam` > `Settings` > `Controller` > `Desktop Configuration`.
+1. Click `Add Action Set`.
+1. In new window type `Empty` and click `OK`.
+1. At top select `Default`.
+1. Now click `Menu` button (the button on top of left joystick with two squares)
+ on Steam Deck (or `Manage Action Set` button).
+1. In a new window click `DELETE`.
+1. Now click `B` or `DONE`.
+
+## 4. Fullscreen Scaling Hotkey (Steam + Up Pad Press)
+
+Many games in Windows will crash when attempting to start in fullscreen. To have a fullscreen experience on the Steam Deck, you can use this keybind in any fullscreen scaling application to provide a shortcut capable of toggling the scaling.
+
+Example of Scaling software: https://store.steampowered.com/app/993090/Lossless_Scaling/
+
+To configure the hotkey in Lossless Scaling:
+
+1. Launch Lossless Scaling
+1. Open "Settings"
+1. Select the "Scale hotkey"
+1. Press "STEAM + DPad Up"
+1. Verify that the hotkey was set to "CTRL + ALT + U"
+1. Close the settings dialog