A modern Windows desktop application that captures local keyboard and mouse input and transmits it wirelessly over Bluetooth to connected client devices. The Windows machine appears as a standard Bluetooth Human Interface Device (HID) using Bluetooth Low Energy (BLE) with HID over GATT Profile (HOGP).
- Zero-client software requirement: Works with any device supporting Bluetooth HID
- Low-latency input transmission: Optimized for gaming and professional use
- Multi-device support: Connect multiple client devices simultaneously
- Security-first design: Encrypted connections with proper authentication
- Modern UI/UX: Intuitive WPF interface with real-time status monitoring
- Framework: .NET 8
- UI: WPF with ModernWPF styling
- Architecture: Clean Architecture with MVVM pattern
- Input Capture: GameInput API (with Raw Input fallback)
- Bluetooth: WinRT Bluetooth LE APIs
- Configuration: Microsoft.Extensions.Configuration with appsettings.json
- Logging: Serilog with structured logging
- Testing: xUnit, Moq, FluentAssertions
Omnitooth/
├── src/
│ ├── Omnitooth.Core/ # Domain models & interfaces
│ ├── Omnitooth.Infrastructure/ # Bluetooth, Input, HID implementation
│ ├── Omnitooth.Application/ # Services, Commands, Handlers
│ └── Omnitooth.Presentation/ # WPF UI
├── tests/
│ ├── Omnitooth.Core.Tests/
│ ├── Omnitooth.Infrastructure.Tests/
│ └── Omnitooth.Application.Tests/
├── docs/
└── plan.md # Development plan
- Windows 11 22H2+ (for modern Windows APIs and GameInput support)
- Bluetooth 4.0+ (required for BLE functionality)
- .NET 8 Runtime
- Administrator Rights (for system-level input capture)
- Solution structure and directories
- .NET 8 projects (Core, Infrastructure, Application, Presentation)
- Central package management (Directory.Packages.props)
- Development tools (EditorConfig, Global.json)
- Dependency injection and configuration infrastructure
- Test projects structure
- GameInput API integration
- Raw Input fallback implementation
- Input processing pipeline
- Performance optimizations
- HID Report descriptors
- Report builder system
- Multi-device support
- GATT service provider
- HID service characteristics
- Connection management
- Basic WPF application structure
- Main window with placeholder functionality
- MVVM implementation with ViewModels
- Settings and configuration UI
- Unit tests
- Integration tests
- End-to-end tests
dotnet restore
dotnet builddotnet run --project src/Omnitooth.PresentationConfiguration is managed through appsettings.json and appsettings.Development.json files. Key configuration sections include:
- Bluetooth: Device name, service UUID, connection settings
- Input: GameInput preferences, sensitivity, rate limiting
- HID: Report rates, batching, compression
- Security: Authentication, encryption, device filtering
- Performance: Threading, memory management
- UI: Theme, startup behavior, notifications
Copyright © 2024 Omnitooth
This project follows clean architecture principles and modern .NET development practices. Please ensure all code follows the established patterns and includes appropriate tests.