Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Shyamalp16/CloudGaming/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The host.input section controls how keyboard and mouse input from the remote client is injected into the target application, including injection policies, transport mechanisms, and thread priority settings.

Injection Policy

input.injectionPolicy
string
default:"REQUIRE_FOREGROUND"
Policy for when input injection is allowed.Default: REQUIRE_FOREGROUNDOptions:
  • REQUIRE_FOREGROUND - Only inject when target window is foreground
  • ALWAYS - Always inject regardless of focus
  • DISABLED - Disable input injection
Using ALWAYS may cause input to be injected into unintended applications.
input.allowFocusSteal
boolean
default:"false"
Allow stealing focus from other windows.Default: falseWhen enabled, automatically brings target window to foreground when input is received.
input.releaseAllOnDisconnect
boolean
default:"true"
Release all pressed keys/buttons when client disconnects.Default: truePrevents stuck keys when client disconnects unexpectedly.
Always keep this enabled to avoid stuck key issues.

Mouse Configuration

input.mousePolicy
string
default:"DPI_AWARE"
Mouse coordinate scaling policy.Default: DPI_AWAREOptions:
  • DPI_AWARE - Scale coordinates based on system DPI
  • ABSOLUTE - Use absolute coordinates without scaling
  • RELATIVE - Use relative mouse movements
DPI_AWARE is recommended for accurate cursor positioning across different display configurations.
input.clipCursorToTarget
boolean
default:"false"
Confine cursor to target window boundaries.Default: falseWhen enabled, prevents cursor from leaving the target window.
input.coalesceMouseMoves
boolean
default:"true"
Combine multiple mouse move events into single injection.Default: trueReduces CPU usage by batching rapid mouse movements.
input.maxMouseMovesPerFrame
integer
default:"100"
Maximum mouse move events to process per frame.Default: 100Limits processing overhead from rapid mouse movement.
input.enableMouseSequencing
boolean
default:"false"
Enable strict ordering of mouse events.Default: falseMay add latency but ensures exact event ordering.

Keyboard Configuration

input.blockWinKeys
boolean
default:"true"
Block Windows key presses on the host.Default: truePrevents accidentally opening Start menu or triggering Windows shortcuts during streaming.
Keep enabled to avoid interruptions during gaming sessions.
input.blockSystemKeys
boolean
default:"false"
Block all system key combinations (Alt+Tab, Ctrl+Alt+Del, etc.).Default: false
Only enable in controlled environments. Makes it difficult to exit the application.
input.repeatPolicy
string
default:"THROTTLED"
Key repeat handling policy.Default: THROTTLEDOptions:
  • THROTTLED - Limit repeat rate to maxKeyRepeatHz
  • PASSTHROUGH - Forward all repeats from client
  • DISABLED - Ignore all key repeats
Throttled mode prevents network flooding from held keys.
input.maxKeyRepeatHz
integer
default:"30"
Maximum key repeat frequency in Hz when throttled.Default: 30 HzStandard keyboard repeat rate is ~30 Hz.
input.keyRepeatDelayMs
integer
default:"250"
Initial delay before key repeat starts.Default: 250 msMatches standard OS keyboard repeat delay.

Transport Configuration

input.usePionDataChannels
boolean
default:"true"
Use WebRTC DataChannels for input transport.Default: trueDataChannels provide lower latency than WebSocket. Only disable for compatibility.
Always use DataChannels for best performance.
input.enableLegacyWebSocket
boolean
default:"false"
Enable fallback WebSocket transport.Default: falseOnly needed for clients that don’t support DataChannels.
input.maxPendingMessages
integer
default:"100"
Maximum queued input messages before dropping.Default: 100Prevents memory buildup when injection falls behind.

Injection Rate Limiting

input.maxInjectHz
integer
default:"10000"
Maximum input injection rate in Hz.Default: 10000 Hz (10 kHz)Absolute maximum rate for all input events combined.
input.inputQueueTimeoutMs
integer
default:"10"
Timeout for input queue processing.Default: 10 ms

Error Handling and Recovery

input.enableStuckKeyRecovery
boolean
default:"true"
Automatically detect and release stuck keys.Default: trueMonitors for keys that remain pressed longer than timeout.
input.stuckKeyTimeoutMs
integer
default:"2000"
Time in milliseconds before a key is considered stuck.Default: 2000 ms (2 seconds)
input.enableSequenceRecovery
boolean
default:"true"
Recover from input sequence errors.Default: trueAttempts to resynchronize input state after errors.
input.maxRecoveryAttempts
integer
default:"3"
Maximum recovery attempts before giving up.Default: 3
input.strictErrorHandling
boolean
default:"false"
Stop processing on first injection error.Default: falseWhen false, continues processing despite occasional errors.
input.logInjectionErrors
boolean
default:"true"
Log input injection errors.Default: true
input.maxConsecutiveErrors
integer
default:"10"
Maximum consecutive errors before stopping injection.Default: 10

Logging

input.enablePerEventLogging
boolean
default:"false"
Log every individual input event.Default: false
Generates massive log output. Only enable for debugging specific issues.
input.enableAggregatedLogging
boolean
default:"true"
Log aggregated input statistics.Default: truePeriodically logs summary statistics (events/sec, errors, etc.).
input.logIntervalMs
integer
default:"60000"
Interval for aggregated logging in milliseconds.Default: 60000 ms (1 minute)

Thread Priority (MMCSS)

Multimedia Class Scheduler Service (MMCSS) settings for input thread priority.
input.threadPriority.enableMMCSS
boolean
default:"true"
Enable MMCSS thread priority boosting.Default: trueMMCSS gives real-time priority to reduce input latency.
Keep enabled for lowest input latency in gaming scenarios.
input.threadPriority.mmcssClass
string
default:"Games"
MMCSS task class name.Default: GamesOptions: Games, Audio, Capture, Distribution, Playback, Pro Audio, Window ManagerGames class provides optimal priority for gaming input.
input.threadPriority.enableTimeCritical
boolean
default:"true"
Use time-critical priority level.Default: trueMaximum priority short of real-time kernel threads.
input.threadPriority.threadPriority
integer
default:"15"
Win32 thread priority level.Default: 15 (TIME_CRITICAL)Range: -15 (IDLE) to 15 (TIME_CRITICAL)
input.threadPriority.taskName
string
default:"InputInjection"
MMCSS task name for tracking.Default: InputInjection
input.threadPriority.fallbackToWin32Priority
boolean
default:"true"
Fall back to Win32 priority if MMCSS fails.Default: trueEnsures elevated priority even if MMCSS is unavailable.
input.threadPriority.showDiagnosticsOnFailure
boolean
default:"true"
Show diagnostics if priority elevation fails.Default: true
input.threadPriority.retryMMCSSOnFailure
boolean
default:"false"
Retry MMCSS registration on failure.Default: false
input.threadPriority.mmcssRetryDelayMs
integer
default:"1000"
Delay between MMCSS retry attempts.Default: 1000 ms

Adaptive Quality Control

Adaptive input dropping based on network conditions.
input.adaptiveQualityControl.enableAdaptiveDropping
boolean
default:"true"
Enable adaptive input event dropping during congestion.Default: trueDrops low-priority input events when network quality degrades.
input.adaptiveQualityControl.rttExcellentThreshold
float
default:"10.0"
RTT threshold for excellent network quality (ms).Default: 10.0 ms
input.adaptiveQualityControl.rttGoodThreshold
float
default:"50.0"
RTT threshold for good network quality (ms).Default: 50.0 ms
input.adaptiveQualityControl.rttFairThreshold
float
default:"100.0"
RTT threshold for fair network quality (ms).Default: 100.0 ms
input.adaptiveQualityControl.rttPoorThreshold
float
default:"200.0"
RTT threshold for poor network quality (ms).Default: 200.0 ms
input.adaptiveQualityControl.lossExcellentThreshold
float
default:"0.01"
Packet loss threshold for excellent quality.Default: 0.01 (1%)
input.adaptiveQualityControl.lossGoodThreshold
float
default:"0.05"
Packet loss threshold for good quality.Default: 0.05 (5%)
input.adaptiveQualityControl.lossFairThreshold
float
default:"0.10"
Packet loss threshold for fair quality.Default: 0.10 (10%)
input.adaptiveQualityControl.lossPoorThreshold
float
default:"0.20"
Packet loss threshold for poor quality.Default: 0.20 (20%)
input.adaptiveQualityControl.queueExcellentThreshold
integer
default:"1"
Input queue depth for excellent quality.Default: 1
input.adaptiveQualityControl.queueGoodThreshold
integer
default:"3"
Input queue depth for good quality.Default: 3
input.adaptiveQualityControl.queueFairThreshold
integer
default:"6"
Input queue depth for fair quality.Default: 6
input.adaptiveQualityControl.queuePoorThreshold
integer
default:"12"
Input queue depth for poor quality.Default: 12
input.adaptiveQualityControl.excellentDropRatio
float
default:"0.0"
Input drop ratio for excellent quality (0.0-1.0).Default: 0.0 (no dropping)
input.adaptiveQualityControl.goodDropRatio
float
default:"0.0"
Input drop ratio for good quality (0.0-1.0).Default: 0.0 (no dropping)
input.adaptiveQualityControl.fairDropRatio
float
default:"0.0"
Input drop ratio for fair quality (0.0-1.0).Default: 0.0 (no dropping)
input.adaptiveQualityControl.poorDropRatio
float
default:"0.0"
Input drop ratio for poor quality (0.0-1.0).Default: 0.0 (no dropping)
input.adaptiveQualityControl.criticalDropRatio
float
default:"0.0"
Input drop ratio for critical quality (0.0-1.0).Default: 0.0 (no dropping)
input.adaptiveQualityControl.minFrameIntervalMs
integer
default:"0"
Minimum interval between input frames (ms).Default: 0 (no throttling)
input.adaptiveQualityControl.statsUpdateIntervalMs
integer
default:"100"
Network statistics update interval (ms).Default: 100 ms

Example Configurations

Competitive Gaming (Ultra-Low Latency)

{
  "input": {
    "blockWinKeys": true,
    "injectionPolicy": "REQUIRE_FOREGROUND",
    "mousePolicy": "DPI_AWARE",
    "coalesceMouseMoves": false,
    "usePionDataChannels": true,
    "threadPriority": {
      "enableMMCSS": true,
      "mmcssClass": "Games",
      "enableTimeCritical": true
    },
    "adaptiveQualityControl": {
      "enableAdaptiveDropping": false
    }
  }
}

Casual Gaming (Balanced)

{
  "input": {
    "blockWinKeys": true,
    "injectionPolicy": "REQUIRE_FOREGROUND",
    "mousePolicy": "DPI_AWARE",
    "coalesceMouseMoves": true,
    "repeatPolicy": "THROTTLED",
    "maxKeyRepeatHz": 30,
    "usePionDataChannels": true
  }
}

High Latency Network

{
  "input": {
    "coalesceMouseMoves": true,
    "maxMouseMovesPerFrame": 50,
    "repeatPolicy": "THROTTLED",
    "maxKeyRepeatHz": 20,
    "adaptiveQualityControl": {
      "enableAdaptiveDropping": true,
      "fairDropRatio": 0.2,
      "poorDropRatio": 0.5
    }
  }
}

Build docs developers (and LLMs) love