Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Keymoan

A mechanical keyboard sound simulator written in Rust that provides real-time audio feedback for keystrokes. Built for performance and simplicity with configurable sound packs.

Features

  • 🎵 Real-time keyboard sound simulation
  • 🦀 Written in Rust for memory safety and performance
  • 📦 Sound pack support with automatic download and extraction
  • 🔧 Simple CLI interface with debug mode
  • 💾 JSON-based sound buffer caching
  • 🎯 Cross-platform audio support via Rodio
  • 📁 Automatic configuration directory management

Installation

From Source

Requires Rust toolchain (1.70.0 or newer):

git clone https://github.com/agastya18/keymoan
cd keymoan
cargo build --release

Usage

Start the keyboard sound simulator:

keymoan start

Enable debug output:

keymoan start --debug

How It Works

Keymoan uses several key components:

  1. Sound Management: The SoundData struct handles audio buffer storage
  2. File Operations: utils.rs provides sound pack downloading, extraction, and JSON serialization
  3. Configuration: Automatic setup of ~/.pulse directory for storing configs and sound files
  4. Audio Playback: Rodio-based audio streaming for low-latency sound playback

Key Functions

System Requirements

  • Modern operating system (Windows, macOS, Linux)
  • Audio output device
  • Internet connection (for downloading sound packs)
  • ~50MB storage for sound files

Configuration

Keymoan creates a .pulse directory in your home folder containing:

  • config.yaml: Configuration settings
  • Downloaded sound packs
  • Cached audio buffers

Dependencies

  • rodio: Cross-platform audio playback
  • clap: Command-line argument parsing
  • serde_json: JSON serialization
  • zip: Archive extraction
  • ureq: HTTP client for downloads
  • indicatif: Progress bar display

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages