An unofficial, open-source macOS app for the AULA F75 Max keyboard. AULA doesn't make software for Mac, so this app fills the gap. It's built natively with SwiftUI, IOKit and CoreBluetooth: no Electron, no web views, no kernel drivers.
Website: aula.uxatom.com
⚠️ Independent project. It isn't made, endorsed or supported by AULA or Epomaker. See the disclaimer.
- Lighting: all 20 built-in effects, color, brightness, speed and direction, with a live preview.
- Screen: upload pictures and animated GIFs (up to 255 frames) to the 128×128 display.
- Clock: syncs automatically when you plug in, with optional 12-hour display.
- Keyboard settings: key response time, sleep timer, Windows/Alt+F4/Alt+Tab locks, Fn switch.
- Battery: live level over Bluetooth, with the last reading remembered.
- Live preview: an on-screen F75 Max that mirrors your key presses and knob turns, plus a Key Tester.
- Menu bar companion and a ⌘K command palette.
Changes are made over the USB-C cable, and the keyboard keeps them when you switch back to Bluetooth.
Get the latest .dmg from Releases. The app isn't notarized by Apple yet, so the first time you open it, go to System Settings → Privacy & Security → Open Anyway.
AULA Studio has no network access: no analytics, no telemetry, no accounts. Key presses are only used to animate the on-screen keyboard and are never recorded or stored. See SECURITY.md.
Needs macOS 15+ and Swift 6 (Xcode or Command Line Tools).
make run # fast dev loop (unbundled)
make app # build/AULA Studio.app (release, ad-hoc signed)
make open # package and launch
make test # unit tests (swift-testing)
make endpoints # list the keyboard's HID interfaces
make keys # stream live key and knob events (needs Input Monitoring)Hardware CLI (USB-C):
.build/debug/aulactl clock # sync the keyboard clock
.build/debug/aulactl rgb 7 '#00FF00' 5 3 # effect, color, brightness, speed
.build/debug/aulactl settings --response 2 --sleep 2
.build/debug/aulactl upload picture.gif fill # add --trace to any command to see packetsNo keyboard? Run AULA_DEMO=1 make run, or turn on Settings → Developer → Demo keyboard.
The Makefile handles two Command Line Tools quirks automatically: it builds against the macOS 26 SDK (the 27 SDK's @State macro plugin ships only with Xcode), and it passes the swift-testing plugin path.
| USB-C | 2.4G | Bluetooth | |
|---|---|---|---|
| Live key preview | ✅ | ✅ | ✅ |
| Lighting, screen upload, clock, settings | ✅ | coming soon | ❌ not supported by the keyboard (AULA's driver says the same) |
| Battery level | — | — | ✅ |
Over Bluetooth the F75 Max exposes no configuration channel (verified). Details: Docs/Hardware-Protocol-Notes.md.
Sources/
├── AulaKit/ Hardware and domain. No UI. Unit-tested.
│ ├── HID/ IOKit discovery, key events, USB-C driver (lighting, settings, clock, screen)
│ ├── Bluetooth/ Battery and firmware over Bluetooth
│ ├── Protocol/ Packet builders with golden-byte tests
│ ├── Display/ Image and GIF encoder for the 128×128 screen
│ ├── Keymap/ HID usages, layout model, F75 Max layout
│ └── RGB/ LEDColor, firmware lighting modes, preview engine
├── AulaDesignSystem/ Tokens (spacing, radius, type, palette, motion) and components
├── AULAStudio/ The app (MVVM, feature-first)
│ ├── App/ @main, composition root (DI)
│ ├── Services/ KeyboardStore, KeyboardControl (USB-C writes), demo sources
│ ├── Navigation/ Sections, router, sidebar, ⌘K palette
│ ├── Components/Keyboard/ KeyboardStage, LEDLightView, DisplayScreenPreview
│ └── Features/ Dashboard, Lighting, Display, Settings, MenuBar
└── aulactl/ Developer CLI for HID diagnostics
Tests/
├── AulaKitTests/ Layout geometry, colors, lighting engine, endpoint classification
└── AulaDesignSystemTests/ Token invariants, toast queue
Docs/ Phase docs, protocol notes, roadmap
Dependency rule: AULAStudio → AulaKit, AulaDesignSystem. AulaKit and AulaDesignSystem never import each other.
Data flow: IOKit callbacks (main run loop) → DeviceDiscovering / KeyEventSource protocols → KeyboardStore (@Observable, @MainActor) → views. Hardware sources are injected, so demo mode and tests can swap them out.
KeyboardStage stacks four layers so that each one redraws only when needed:
- LED light:
LEDLightView. ACADisplayLinkpaints each key as a flat block in a 96×38 bitmap (6 px per key unit), and Core Animation upscales it; bilinear filtering gives the bloom. It stops for static effects and skips frames while the window is occluded. - Keycaps: a
Canvasredrawn on press, hover or selection. - Legends: text, redrawn on press or legend-mode change.
- Hit testing and accessibility: hover, click, ⌘-click, drag-paint selection, arrow-key navigation, and 81 VoiceOver elements.
Contributions are welcome, especially testing on other AULA keyboards. Please read CONTRIBUTING.md first; it includes the legal ground rules (no vendor files and no decompiled code). Report security issues privately as described in SECURITY.md.
Built by mohin7.
- GitHub: github.com/mohin7
- LinkedIn: linkedin.com/in/mohin7
Early protocol notes built on the MIT-licensed community project VitalyArt/Aula-F75-Max-Driver. No code was copied. Every command AULA Studio uses has been verified on real hardware.
MIT © 2026 mohin7
- Unofficial. AULA Studio isn't affiliated with, endorsed by or supported by AULA, Epomaker or their partners. "AULA", "F75 Max" and "Epomaker" are trademarks of their respective owners and are used here only to describe which hardware this app works with.
- Built for interoperability. The app talks to the keyboard using protocol behavior observed on hardware the author owns, so that Mac users can use features that otherwise need Windows. It contains no vendor code, firmware or assets.
- Use at your own risk. The software is provided "as is", without warranty of any kind (see LICENSE). It never flashes firmware, but changing keyboard settings is your responsibility. Tested only on an F75 Max with its 2024 firmware.