Skip to content

Zagrios/JoyCTRL

Repository files navigation

Warning

Under development. Not ready for use.

JoyCTRL

Transform your game controller into a PC remote control. JoyCTRL lets you create custom button mappings and automate everything on your computer using any compatible gamepad.

Early preview (Will change)

omg

🎮 Features

Comprehensive Controller Support

  • Wide Compatibility: Support for most standard game controllers
  • Visual Interface: Interactive controller diagrams with real-time feedback
  • Auto-Detection: Automatic recognition and configuration of connected controllers

Advanced Action System

  • 🖱️ Mouse Control: Precise cursor movement both in absolute or relative mode and clicking (left, middle, right buttons)
  • ⌨️ Keyboard Control: Record and replay complex key combinations
  • 📜 Scrolling: Directional scrolling with stick or button control
  • 🎯 Precision Control: Dynamic mouse sensitivity adjustment
  • 🎵 Media Controls: Playback controls (play/pause, stop, previous/next track)
  • 🚀 System Actions: Open files, launch websites, Volume control (mute, up, down)
  • ⏸️ App Control: Pause/resume JoyCTRL mappings, update settings
  • Probably more to come...

Smart Conditional Logic

  • Button Combinations: Create actions that trigger only when specific button combinations are held
  • Boolean Logic: Support for AND/OR conditions between button states

Flexible Mapping Types

  • Button Press: Instant actions triggered by button presses
  • Axis Triggers: Actions based on trigger pressure thresholds
  • Stick Controls: Analog stick movements mapped to mouse movement

🛠️ Technology Stack

🚀 Getting Started

Prerequisites

  • Node.js 22.16.0 or later (Highly recommended to use Volta to synchronize your node version with the project)
  • Rust toolchain
  • Compatible game controller (Xbox, DualShock, DualSense, etc.)

Installation & Development

# Clone the repository
git clone https://github.com/your-username/JoyCTRL.git
cd JoyCTRL

# Install dependencies
npm install

# Start the project
npm start

# Generate TypeScript bindings (should only be needed if you've made changes to the backend)
npm run build-ts

Bundle the project

# Bundle the project
npm run tauri build

# The built application will be available in the `src-tauri/target/release/bundle/` folder

🤝 Contributing

This project is under active development. Contributions, bug reports, and feature requests are welcome!

Current TODOs

  • Default mappings on first start
  • Triggers mapping
  • Sticks mapping
  • Gyroscope mapping
  • Virtual keyboard window
  • Translations

About

Turn your game controller into a fully customizable remote for your computer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages