Skip to content

Latest commit

History

287 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

PsychOS

A feature-rich firmware for custom mechanical keyboards, built on ESP32-S3.

Supported Matrix Hardware Setups

DeviceStatusNotes
Prototype 0alt textActively tweaked
2x2 Matrixalt textTemporarily halted

Core Features

FeatureStatusNotes
Matrix Key ScanningSupportedHigh-performance scanning with debounce
USB HID CommunicationSupportedFull keyboard and consumer input
Bluetooth Module SupportSupportedWireless numpad module connectivity
Display InterfaceSupportedILI9341-based UI with custom screens
Rotary EncoderSupportedVolume control with press detection
RGB UnderglowSupportedCustomizable effects and colors
WPM CounterSupportedReal-time typing speed monitoring
Multi-taskingSupportedFreeRTOS-based task management
Settings SystemSupportedOn-device configuration menus
Audio FeedbackSupportedProgrammable buzzer tones
ClockSupportedReal-time clock with sync
Layer SystemWIPMultiple keymap layer support
Macro SupportPlannedCustom macro programming
Screen Pixel FlushingSupportedClean up stuck or burned pixels in under 1 minute!

Technical Features

  • Task Management: FreeRTOS-based multitasking system
  • Communication:
    • USB HID for keyboard and consumer controls
    • Bluetooth LE for wireless module support
    • Serial interface for configuration and debugging
  • Input Processing:
    • Advanced matrix scanning with hardware multiplexing
    • Rotary encoder with acceleration and button detection
    • Real-time WPM calculation
  • Output Systems:
    • TFT display with custom UI components
    • RGB LED control with multiple effects
    • Buzzer feedback system
  • Configuration:
    • Non-volatile settings storage (not functional at the moment)
    • Real-time clock synchronization
    • On-device settings menu

Serial Commands

The firmware supports the following commands:

  • connectionStatus [0/1/?] - Get/set connection state
  • caps [0/1/?] - Get/set caps lock status
  • time.hours [0-23] - Set hours
  • time.minutes [0-59] - Set minutes
  • time.seconds [0-59] - Set seconds

Installation

Hardware Requirements

  • ESP32-S3 microcontroller
  • Key matrix setup (compatible with standard mechanical switches)
  • ILI9341 display (optional)
  • Rotary encoder (optional)
  • RGB LEDs (optional)
  • Buzzer (optional)

Flashing Instructions

  1. Download the latest firmware.bin from the releases page
  2. Install esptool: pip install esptool
  3. Put your ESP32-S3 into bootloader mode
  4. Flash using esptool

Development

Adding Translations

Translations are managed through two main files:

  • source/include/translations.h: Declares all translatable strings
  • source/src/translations.cpp: Implements the translations

To add a new language:

  1. Define a new language identifier (e.g., USE_FR_FR for French)
  2. Add translations in translations.cpp under the new language condition
  3. Keep the string declarations in translations.h unchanged

Example:

#ifdef USE_FR_FR
// System messagesconstchar *task_clock_started = "Tâche d'horloge démarrée.";
// ... more translations ...
#endif

Contributions for new languages are welcome! Please maintain the existing structure when adding translations.

Versioning

Following Semantic Versioning 2.0.0:

  • Format: MAJOR.MINOR.PATCH-PRERELEASE+BUILD
  • Pre-release stages: alpha < beta < rc
  • Build metadata: Date (YYYYMMDD) and CI run number

Project Activity

Alt

License

Licensed under LGPL-2.1 unless otherwise noted. Third-party components (e.g., FreeRTOS) maintain their respective licenses.

Commercial Use

This firmware is provided "AS IS" without commercial support. You may:

  • Distribute links to this firmware
  • Ship hardware with this firmware pre-installed

Please link to this repository rather than redistributing the files to ensure users always get the latest version.

About

Lightweight, modular keyboard firmware for ESP32 devices

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages