PadRelay

Getting Started

  • Installation
    • System Requirements
      • Client Requirements
      • Server Requirements
    • Installation Methods
      • Method 1: Install from PyPI (Recommended)
      • Method 2: Install from Source
      • Method 3: Install Dependencies Manually
    • Installing ViGEmBus (Windows Server Only)
    • Optional Dependencies
      • TLS/SSL Support
    • Verifying Installation
      • Client Verification
      • Server Verification (Windows)
      • Key Mapper Verification
      • Testing Gamepad Detection
    • Upgrading
    • Uninstallation
    • Troubleshooting Installation
      • Permission Errors
      • vgamepad Installation Fails
      • pygame Installation Issues
    • Next Steps
  • Quick Start Guide
    • Prerequisites
    • Basic Setup
      • Step 1: Create Configuration Files
      • Step 2: Start the Server
      • Step 3: Start the Client
      • Step 4: Test the Connection
    • Using Command-Line Arguments
    • Using UDP for Lower Latency
    • Environment Variables
      • Pre-Hashed Passwords
    • Mapping Custom Controllers
    • Running from Source
    • Common Issues
      • “Failed to initialize gamepad”
      • “Connection refused”
      • “Authentication failed”
      • “TLS handshake failed”
    • Next Steps
  • Configuration Reference
    • Configuration Files
      • Configuration Priority
    • Client Configuration
      • Network Settings
      • Joystick Settings
      • Client Settings
      • Client Command-Line Flags
    • Server Configuration
      • Server Settings
      • Virtual Gamepad Settings
      • Button Mapping
      • Axis Mapping
      • Axis Options
      • Server Command-Line Flags
    • Environment Variables
    • TLS/SSL Configuration
      • Certificate Management
      • Custom Certificates
      • Disabling TLS
    • Password Security
      • Password Hashing
      • Pre-Hashing Passwords
      • Password Strength
    • Example Configuration Files
      • Minimal TCP Setup
      • UDP Low-Latency Setup
      • Custom Controller Mapping
    • See Also

User Guide

  • Client Guide
    • Overview
    • Basic Usage
      • Starting the Client
      • Stopping the Client
    • Configuration
      • Configuration File
      • Command-Line Options
      • Environment Variables
    • Gamepad Detection
      • Listing Available Gamepads
      • Selecting a Gamepad
      • Multiple Gamepads
    • Update Rate
      • Choosing an Update Rate
      • Bandwidth Usage
    • Protocol Selection
      • TCP vs UDP
      • When to Use TCP
      • When to Use UDP
      • Switching Protocols
    • TLS Configuration
      • Enable TLS
      • Disable TLS
    • Automatic Reconnection
      • Reconnection Scenarios
      • Manual Reconnection
    • Logging
      • Log Location
      • Log Levels
      • Enable Debug Logging
    • Troubleshooting
      • Gamepad Not Detected
      • Connection Refused
      • Authentication Failed
      • TLS Handshake Failed
      • High Latency
      • Input Not Working
    • Advanced Usage
      • Running from Python
      • Custom Input Processing
      • Running as a Service
    • See Also
  • Server Guide
    • Overview
    • Requirements
    • Basic Usage
      • Starting the Server
      • Stopping the Server
    • Configuration
      • Basic Configuration
    • Virtual Gamepad Types
      • Xbox 360 Controller
      • DualShock 4 Controller
      • Verifying Virtual Gamepad
    • Network Configuration
      • Binding Address
      • Port Selection
    • Firewall Configuration
      • Windows Firewall
      • Third-Party Firewalls
    • Rate Limiting
      • UDP Rate Limits
      • Adjusting Rate Limits
    • Button and Axis Mapping
      • Custom Button Mappings
      • Custom Axis Mappings
      • Axis Options
    • Password Management
      • Automatic Hashing
      • Pre-Hashing Passwords
      • Environment Variables
    • TLS/SSL Configuration
      • Using Auto-Generated Certificates
      • Using Custom Certificates
    • Multiple Clients
    • Logging
      • Debug Logging
      • Log Rotation
    • Troubleshooting
      • Virtual Gamepad Not Appearing
      • Port Already in Use
      • Authentication Failures
      • Performance Issues
    • Running as Windows Service
    • See Also
  • Key Mapper Guide
    • Overview
    • When to Use
    • Running the Key Mapper
      • Basic Usage
      • Interactive Session
      • Options
    • Mapping Process
      • Button Mapping
      • Axis Mapping
      • Skipping Mappings
    • Using Generated Configuration
      • Server Configuration
      • Client Configuration
    • Configuration File Format
      • Example Output
    • Manual Editing
      • Swapping Buttons
      • Inverting Axes
      • Adjusting Dead Zones
    • Common Controller Mappings
    • Troubleshooting
      • Controller Not Detected
      • Incorrect Button Detection
      • D-Pad Not Working
      • Axis Values Inverted
    • Sharing Configurations
    • Advanced Usage
      • Mapping Multiple Controllers
      • Macro Support
    • Examples
      • Example 1: PS4 Controller
      • Example 2: Custom Flight Stick
    • See Also
  • TLS/SSL Setup Guide
    • Overview
    • Quick Start
      • Using Auto-Generated Certificates
    • Certificate Locations
      • Auto-Generated Certificates
      • Certificate Properties
      • Viewing Certificate Details
    • Using Custom Certificates
      • Generating with OpenSSL
      • Using Let’s Encrypt
      • Configuring Custom Certificates
    • TLS Configuration
      • TLS Version
      • Cipher Suites
    • Disabling TLS
      • When to Disable
      • How to Disable
    • Certificate Management
      • Certificate Expiration
      • Renewing Certificates
      • Certificate Rotation
    • Troubleshooting TLS
      • TLS Handshake Failed
      • Certificate Validation Failed
      • Permission Denied
      • Certificate Not Found
      • Debug TLS Issues
    • Security Considerations
      • Self-Signed Certificates
      • CA-Signed Certificates
      • Network Security
      • VPN vs TLS
    • Testing TLS Connection
      • Verify TLS is Working
      • Using OpenSSL Client
    • Best Practices
    • See Also
  • Troubleshooting Guide
    • General Troubleshooting Steps
    • Connection Issues
      • Connection Refused
      • Connection Timeout
      • Connection Drops
    • Authentication Issues
      • Authentication Failed
      • Invalid Token (UDP)
    • Gamepad Issues
      • Gamepad Not Detected
      • Buttons Not Working
      • Axes Inverted or Wrong
    • Virtual Gamepad Issues
      • Virtual Gamepad Not Appearing
      • Gamepad Input Lag
    • TLS/SSL Issues
      • TLS Handshake Failed
      • Certificate Errors
    • Performance Issues
      • High CPU Usage
      • High Bandwidth Usage
    • Rate Limiting Issues
      • Rate Limit Exceeded
    • Protocol Issues
      • Protocol Version Mismatch
      • UDP Packet Loss
    • Installation Issues
      • vgamepad Installation Fails
      • pygame Installation Issues
    • Debug Mode
      • Enabling Debug Logging
      • What Debug Mode Shows
      • Reading Debug Logs
    • Common Log Messages
      • Understanding Warnings
      • Understanding Errors
    • Getting Help
      • Before Asking for Help
      • Reporting Issues
      • Where to Get Help
    • See Also

Technical Documentation

  • Architecture
    • System Overview
    • Architecture Diagram
    • Component Architecture
      • Client Components
      • Server Components
      • Shared Components
    • Communication Flow
      • TCP Connection Flow
      • UDP Connection Flow
    • Message Format
      • Input Message
      • Authentication Messages
    • Security Architecture
      • Authentication
      • Password Hashing
      • TLS/SSL
      • Rate Limiting
    • Data Flow
      • Input Capture to Virtual Output
    • Threading Model
      • Client
      • Server
    • Configuration System
    • Extension Points
      • Custom Button Mappings
      • Custom Axis Transformations
    • Performance Considerations
      • Latency Sources
      • Optimization Strategies
      • Memory Usage
    • Design Principles
    • See Also
  • Security
    • Security Model
    • Threat Model
      • Assumptions
      • Threats Addressed
      • Threats Not Addressed
    • Authentication
      • Password-Based Authentication
        • Password Hashing
      • TCP Challenge-Response
      • UDP Token Authentication
    • Encryption
      • TLS/SSL Support
      • Certificate Management
        • Self-Signed Certificates
        • Custom Certificates
        • Certificate Expiration
      • Disabling TLS
    • Rate Limiting
      • Purpose
      • Configuration
      • Algorithm
      • Bypass
    • Input Validation
      • Button Validation
      • Axis Validation
      • Message Validation
    • Secure Coding Practices
      • Log Sanitization
      • File Permissions
      • Secrets Management
    • Best Practices
      • Network Security
      • Password Security
      • Certificate Security
      • Operational Security
      • Debug Logging
    • Reporting Security Issues
    • See Also
  • Protocol Specification
    • Protocol Overview
      • Protocol Version
    • Transport Layers
      • TCP Transport
      • UDP Transport
    • Message Format
      • Base Message Structure
    • Message Types
      • Input Message
      • Authentication Messages
        • Challenge Message
        • Response Message
        • Success Message
        • Failed Message
        • Parameters Request
        • Parameters Response
      • Heartbeat Messages
        • Heartbeat
        • Heartbeat Acknowledgment
      • Error Message
    • Connection Flows
      • TCP Connection Flow
      • UDP Connection Flow
    • Authentication Details
      • TCP Challenge-Response
      • UDP Token Authentication
    • Rate Limiting
    • Error Handling
      • Protocol Errors
      • Connection Errors
    • Compatibility
      • Version Negotiation
      • Extensibility
    • Constants
      • Message Size Limits
    • Performance Considerations
      • Bandwidth Usage
      • Latency
    • See Also
  • API Reference
    • Client Module
      • Client Application
        • UDPClientProtocol
        • VirtualGamepadClient
      • Input Handling
        • GamepadInput
      • Client Constants
    • Server Module
      • Server Application
        • VirtualGamepadServer
      • Input Processor
        • GamepadHandler
      • Virtual Gamepad
        • VirtualGamepad
      • Server Constants
    • Protocol Module
      • TCP Protocol
        • TCPProtocolHandler
      • UDP Protocol
        • UDPProtocolHandler
        • UDPServerProtocol
      • Messages
        • BaseMessage
        • InputMessage
        • HeartbeatMessage
        • HeartbeatAckMessage
        • AuthChallengeMessage
        • AuthResponseMessage
        • AuthSuccessMessage
        • AuthFailedMessage
        • AuthParamsRequestMessage
        • AuthParamsMessage
        • ErrorMessage
        • validate_input_message()
      • Protocol Constants
    • Security Module
      • Authentication
        • Authenticator
      • Rate Limiting
        • ConnectionTracker
      • TLS Utilities
        • get_default_cert_paths()
        • ensure_cert_dir_exists()
        • generate_self_signed_cert()
        • create_server_ssl_context()
        • create_client_ssl_context()
        • check_cert_expiration()
        • warn_if_cert_expiring_soon()
      • Password Strength
        • check_password_strength()
        • warn_weak_password()
        • generate_password_suggestion()
    • Core Module
      • Configuration
        • load_config()
        • parse_client_args()
        • parse_server_args()
        • validate_server_config()
      • Exceptions
        • GamepadBridgeError
        • ProtocolError
        • AuthenticationError
        • ConnectionError
        • ConfigurationError
        • InputError
      • Logging Utilities
        • get_logger()
        • sanitize_for_logging()
    • Scripts Module
      • Server Entry Point
        • async_main()
        • main()
      • Client Entry Point
        • async_main()
        • main()
      • Key Mapper
        • ControllerMapper
        • main()
    • Usage Examples
      • Creating a Client Programmatically
      • Creating a Server Programmatically
      • Using the Authenticator
      • Custom Message Creation
      • Rate Limiting Example
      • TLS Certificate Generation
    • See Also

Development

  • Development Guide
    • Development Setup
      • Prerequisites
      • Clone Repository
      • Create Virtual Environment
      • Install Dependencies
    • Project Structure
      • Directory Layout
      • Code Organization
    • Running Tests
      • Run All Tests
      • Run Specific Test File
      • Run with Coverage
      • Run Specific Test
      • Test Organization
    • Coding Standards
      • Style Guide
      • Type Hints
      • Docstrings
      • Code Formatting
      • Linting
    • Common Development Tasks
      • Adding a New Message Type
      • Adding a New Configuration Option
      • Adding Authentication Method
    • Debugging
      • Using Debug Mode
      • Using Python Debugger
      • Logging
    • Performance Profiling
      • Using cProfile
      • Memory Profiling
    • Building Documentation
      • Install Sphinx
      • Build HTML Documentation
      • Build PDF Documentation
    • Release Process
      • Version Numbering
      • Creating a Release
      • Manual PyPI Upload
    • Contributing
    • Architecture Documentation
    • Security Considerations
    • Useful Resources
    • See Also
  • Contributing Guide
    • Ways to Contribute
    • Getting Started
      • 1. Fork the Repository
      • 2. Clone Your Fork
      • 3. Set Up Development Environment
      • 4. Create a Branch
    • Contribution Workflow
      • 1. Make Changes
      • 2. Test Your Changes
      • 3. Commit Your Changes
      • 4. Push to Your Fork
      • 5. Create Pull Request
    • Pull Request Guidelines
      • PR Template
      • PR Review Process
    • Code Style
      • Python Style
      • Documentation Style
    • Testing Guidelines
      • Write Tests
      • Test Coverage
    • Bug Reports
      • Reporting Bugs
      • Example Bug Report
    • Feature Requests
      • Proposing Features
      • Example Feature Request
    • Documentation Contributions
      • Types of Documentation
      • Documentation Standards
      • Building Documentation
    • Controller Mapping Contributions
      • Share Your Mappings
    • Code Review Guidelines
      • For Reviewers
      • For Contributors
    • Security Contributions
      • Reporting Security Issues
      • Security Contributions
    • License
    • Code of Conduct
    • Questions?
    • Thank You!
    • See Also
  • Changelog
    • 1.1.0 - 2025-11-06
      • Added
      • Changed
    • 1.0.4 - 2025-06-15
      • Added
    • 1.0.3 - 2025-06-14
      • Fixed
    • 1.0.2 - 2025-06-14
      • Fixed
    • 1.0.1 - 2025-06-14
      • Added
    • 1.0.0 - 2025-06-14
PadRelay
  • Overview: module code

All modules for which code is available

  • padrelay.client.client_app
  • padrelay.client.input
  • padrelay.core.config
  • padrelay.core.exceptions
  • padrelay.core.logging_utils
  • padrelay.protocol.messages
  • padrelay.protocol.tcp
  • padrelay.protocol.udp
  • padrelay.scripts.client
  • padrelay.scripts.key_mapper
  • padrelay.scripts.server
  • padrelay.security.auth
  • padrelay.security.password_strength
  • padrelay.security.rate_limiting
  • padrelay.security.tls_utils
  • padrelay.server.input_processor
  • padrelay.server.server_app
  • padrelay.server.virtual_gamepad

© Copyright 2025, ssh-den.

Built with Sphinx using a theme provided by Read the Docs.