From 16e04bf1c6264c23a2d2cb7c5727cb1faa72e82e Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sun, 19 Jan 2025 13:55:59 -0500 Subject: [PATCH] Add key bindings for numbered keys in the player. --- Resources/en.lproj/Localizable.strings | 10 +++ .../Player/PlayerViewController.swift | 90 ++++++++++++++++++- 2 files changed, 99 insertions(+), 1 deletion(-) diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 0bd5cc461..8ba5981cf 100644 --- a/Resources/en.lproj/Localizable.strings +++ b/Resources/en.lproj/Localizable.strings @@ -676,6 +676,16 @@ "KEY_INCREASE_PLAYBACK_SPEED" = "Increase playback speed"; "KEY_DECREASE_PLAYBACK_SPEED" = "Decrease playback speed"; "KEY_RESET_PLAYBACK_SPEED" = "Reset playback speed"; +"KEY_SEEK_TO_10_PERCENT" = "Seek to 10% of duration"; +"KEY_SEEK_TO_20_PERCENT" = "Seek to 20% of duration"; +"KEY_SEEK_TO_30_PERCENT" = "Seek to 30% of duration"; +"KEY_SEEK_TO_40_PERCENT" = "Seek to 40% of duration"; +"KEY_SEEK_TO_50_PERCENT" = "Seek to 50% of duration"; +"KEY_SEEK_TO_60_PERCENT" = "Seek to 60% of duration"; +"KEY_SEEK_TO_70_PERCENT" = "Seek to 70% of duration"; +"KEY_SEEK_TO_80_PERCENT" = "Seek to 80% of duration"; +"KEY_SEEK_TO_90_PERCENT" = "Seek to 90% of duration"; +"KEY_SEEK_TO_START" = "Seek to beginning of video"; // MARK: - TitleSelection diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index 29c7523ea..2cc2cc5a1 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -1283,6 +1283,53 @@ extension PlayerViewController { playbackService.playbackRate = 1.0 } + @objc func keyNumber(_ n: Int) { + guard playbackService.isSeekable else { return } + + // n=6 --> seek to 60% + playbackService.playbackPosition = (Float(n) / 10.0) + } + + @objc func keyNumber1() { + keyNumber(1) + } + + @objc func keyNumber2() { + keyNumber(2) + } + + @objc func keyNumber3() { + keyNumber(3) + } + + @objc func keyNumber4() { + keyNumber(4) + } + + @objc func keyNumber5() { + keyNumber(5) + } + + @objc func keyNumber6() { + keyNumber(6) + } + + @objc func keyNumber7() { + keyNumber(7) + } + + @objc func keyNumber8() { + keyNumber(8) + } + + @objc func keyNumber9() { + keyNumber(9) + } + + @objc func keyNumber0() { + keyNumber(0) + } + override var keyCommands: [UIKeyCommand]? { var commands: [UIKeyCommand] = [ UIKeyCommand(input: " ", @@ -1308,7 +1355,48 @@ extension PlayerViewController { UIKeyCommand(input: "]", modifierFlags: [], action: #selector(keyLeftBracket), - discoverabilityTitle: NSLocalizedString("KEY_DECREASE_PLAYBACK_SPEED", comment: "")) + discoverabilityTitle: NSLocalizedString("KEY_DECREASE_PLAYBACK_SPEED", comment: "")), + UIKeyCommand(input: "1", + modifierFlags: [], + action: #selector(keyNumber1), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_10_PERCENT", comment: "")), + UIKeyCommand(input: "2", + modifierFlags: [], + action: #selector(keyNumber2), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_20_PERCENT", comment: "")), + UIKeyCommand(input: "3", + modifierFlags: [], + action: #selector(keyNumber3), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_30_PERCENT", comment: "")), + UIKeyCommand(input: "4", + modifierFlags: [], + action: #selector(keyNumber4), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_40_PERCENT", comment: "")), + UIKeyCommand(input: "5", + modifierFlags: [], + action: #selector(keyNumber5), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_50_PERCENT", comment: "")), + UIKeyCommand(input: "6", + modifierFlags: [], + action: #selector(keyNumber6), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_60_PERCENT", comment: "")), + UIKeyCommand(input: "7", + modifierFlags: [], + action: #selector(keyNumber7), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_70_PERCENT", comment: "")), + UIKeyCommand(input: "8", + modifierFlags: [], + action: #selector(keyNumber8), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_80_PERCENT", comment: "")), + UIKeyCommand(input: "9", + modifierFlags: [], + action: #selector(keyNumber9), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_90_PERCENT", comment: "")), + UIKeyCommand(input: "0", + modifierFlags: [], + action: #selector(keyNumber0), + discoverabilityTitle: NSLocalizedString("KEY_SEEK_TO_START", comment: "")) + ] if abs(playbackService.playbackRate - 1.0) > .ulpOfOne { -- GitLab