Skip to content

Add Xbox Series X controller support and shell navigation - #1

Open
CyberoniOntoni wants to merge 2 commits into
fix/build-and-subtitle-playbackfrom
feature/xbox-controller
Open

Add Xbox Series X controller support and shell navigation#1
CyberoniOntoni wants to merge 2 commits into
fix/build-and-subtitle-playbackfrom
feature/xbox-controller

Conversation

@CyberoniOntoni

Copy link
Copy Markdown
Owner

Summary

Adds Xbox Series X/S controller support and shell-level navigation. Builds on dfederm#88.

Controller and shell navigation

  • Centralize gamepad virtual-key handling in GamepadInput
  • Route shell navigation (menu toggle, left-edge open, B/Escape back) through NavigationManager at the CoreWindow level so it works on every content page
  • Map video controls: A play/pause, X mute, D-pad/stick volume and seek, LB/RB skip
  • Login and server selection accept Gamepad A to submit
  • WebVideo supports B to go back

Merge order

This PR stacks on dfederm#88 (fix/build-and-subtitle-playback). Please merge dfederm#88 first, then this one.

Part of splitting the former dfederm#89 into bite-sized reviews. Follow-up: shell search PR stacks on this branch.

Test plan

  • App launches on Xbox Series X (dev mode)
  • B/View navigates back from shell pages
  • Menu button toggles navigation pane
  • Left on content edge opens navigation menu
  • Video playback responds to A/X/sticks/D-pad/LB/RB

Build/restore: pin Directory.Packages.props path for Visual Studio CPM discovery; pin Microsoft.Kiota.* to 1.22.0 (fixes NU1903); harden SetAppxManifestVersion with explicit manifest path and BuildVersion fallback.

Playback: prefer direct play without subtitle index when client-side rendering is supported; load only the selected external subtitle; download external subtitles with Jellyfin auth via CreateFromStream; cache bitrate test per session; reduce subtitle presentation churn.
Centralize gamepad virtual-key handling in GamepadInput and route shell navigation (menu toggle, left-edge open, B/Escape back) through NavigationManager at the CoreWindow level so it works on every content page, not only when MainPage has focus.

Video playback now maps A to play/pause, X to mute, and D-pad/stick directions to volume and seeking. Login and server selection accept Gamepad A to submit. WebVideo supports B to go back.
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.

1 participant