Starting and Stopping a Recording
All recording controls are wired to the same underlying service, so you can mix and match surfaces — start with a hotkey, pause via the control bar, stop with another hotkey.
Starting
| Surface | Action |
|---|---|
| Global hotkey | Ctrl+Shift+R |
| Main toolbar | Click the Recording button |
Either action runs ToggleRecordingCommand. If nothing is recording, it starts a fullscreen recording with your current settings. If something is already recording, it stops.
Stopping
| Surface | Action |
|---|---|
| Global hotkey | Ctrl+Shift+E |
| Control bar | Click Stop |
| Main toolbar | Click the Recording button again |
All three finalise the MP4 and close the control bar.
Pausing and Resuming
The control bar has a Pause / Resume toggle. Pausing freezes the elapsed timer and stops appending frames; resuming picks up where you left off in the same output file. There is no separate hotkey for pause — use the control bar.
State Pipeline
The recording service moves through a strict state machine:
Idle → Starting → Recording ⇄ Paused → Stopping → Finalizing → Idle
| State | Meaning |
|---|---|
| Idle | Nothing is recording |
| Starting | Encoder is initialising |
| Recording | Frames are being written |
| Paused | Frame writing is suspended; encoder stays warm |
| Stopping | Stop has been requested; last frames flushing |
| Finalizing | MP4 muxer is closing the file |
State transitions are atomic (guarded by Interlocked.CompareExchange). That means you can spam Ctrl+Shift+R or click buttons as fast as you like without corrupting the state — the service will either accept the transition or silently ignore it.
Tip — If a recording appears stuck in Finalizing for more than a few seconds, the encoder is still writing trailing frames and the MP4 header. Wait for it; killing Tex during finalisation can leave an unreadable file.
After Stopping
Once the state returns to Idle:
- The MP4 is closed and flushed to
Recording.SaveFolder(defaults to%USERPROFILE%\Videos\Tex\). - The control bar closes.
- A status message confirms the save path.
- If
UI.ShowNotificationsis on, a tray balloon is shown.
The file is immediately playable in any media player.