Skip to content

Conversation

@Th0rgal
Copy link
Member

@Th0rgal Th0rgal commented Jan 2, 2026

Summary

Adds comprehensive keyboard shortcuts and quality-of-life improvements to the video player:

  • Speed control: [ and ] to cycle through playback speeds (0.5× to 2×)
  • Subtitle cycling: S to toggle through subtitles or turn off
  • Audio track cycling: A to switch between audio tracks
  • Picture-in-Picture: I to toggle PiP mode
  • Mark watched: M to toggle watched status during playback
  • Volume feedback: Visual overlay showing volume level when adjusting with arrow keys
  • Mouse movement: Auto-hide timer resets when mouse moves over player
  • Double-click fullscreen: Double-clicking the video toggles fullscreen mode

Testing

Verified with Peekaboo automation testing:

  • ✅ Space bar for play/pause works
  • ✅ Volume control with visual overlay appears
  • ✅ Speed shortcuts cycle correctly (1× → 2× → 1×)
  • ✅ Fullscreen toggle with F key works
  • ✅ Mouse movement detection functional

Remaining features need manual testing with videos containing subtitles/multiple audio tracks.


Note

Enhances the video player with richer input controls, on-screen feedback, and better interaction handling.

  • Adds keyboard shortcuts: [/] to change speed, s to cycle subtitles, a to cycle audio tracks, i to toggle PiP, m to toggle watched; keeps arrows for seek/volume and space for play/pause
  • Introduces a transient volume HUD overlay that animates on volume changes
  • Resets auto-hide controls timer on mouse movement via MouseTrackingPlayerView and onMouseMoved callback
  • Supports double-click to toggle fullscreen; single-click toggles controls
  • Extends PlayerController with speed stepping, subtitle/audio cycling, and selection state syncing
  • Updates VideoPlayerRepresentable to use a custom AVPlayerView subclass for mouse tracking

Written by Cursor Bugbot for commit 3c743d2. This will update automatically on new commits. Configure here.

- Add speed control shortcuts ([ and ] to cycle through 0.5× to 2×)
- Add subtitle cycling shortcut (S) with off/on toggle
- Add audio track cycling shortcut (A)
- Add Picture-in-Picture toggle shortcut (I)
- Add mark watched/unwatched shortcut (M) during playback
- Add volume control overlay with visual feedback
- Add mouse movement detection to reset auto-hide timer
- Add double-click to toggle fullscreen gesture
- Improve keyboard event handling for character keys
- Use exclusively(before:) for tap gesture coordination to prevent
  double-tap from triggering single-tap controls
- Sync currentSubtitleIndex and currentAudioIndex when tracks are
  selected via menu to prevent keyboard cycling desync
- Fix stale video state in toggleWatchedStatus by fetching current
  video from library instead of using local struct
- Only show volume indicator when player exists to prevent
  displaying overlay when adjustments don't actually occur
@Th0rgal Th0rgal merged commit 2b540b3 into master Jan 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants