vlc --help
除其他内容外,还列出了以下命令行选项:
Hot keys
--global-key-toggle-fullscreen <string>
Fullscreen
--key-toggle-fullscreen <string>
Fullscreen
--global-key-leave-fullscreen <string>
Leave fullscreen
--key-leave-fullscreen <string>
Leave fullscreen
--global-key-play-pause <string>
Play/Pause
--key-play-pause <string> Play/Pause
当我尝试使用它们时,它们根本不起作用。我不明白为什么它们<string>
也必须接受参数。
我的情况是这样的:
- 我使用 UI 或无头模式运行 VLC
- 我执行例如
vlc --key-next foo
(用于触发“下一步”),foo
作为一个虚拟参数 - VLC 不会抱怨(与不传递字符串时不同),但命令没有效果
命令行触发的 VLC 热键的工作示例是什么?
答案1
通过使用,vlc --key-next foo
您已将“Next”分配给名为“Foo”的键,但您可能没有该键。;)
由修饰键组成<string>
(Alt、Shift、Ctrl、Meta、Command) 由破折号 ( -
) 分隔,并由键终止 (*a...z、+、=、-、','、+、<、>、`、/、;、'、\、[、]、、左、右、上、下、空格、Enter、F1...F12、Home、End、Menu、Esc、Page Up、Page Down、Tab、Backspace、鼠标滚轮向上和鼠标滚轮向下)。
因此vlc --key-next alt-n
将设置Alt+n转到下一个加载的媒体文件。
或者vlc --key-next "Page Down"
将设置Page Down。
更多信息这里。
答案2
您所要求的几乎肯定是不可能的。命令行参数在启动时传递给程序。加载后,任何更改的设置都将生效,但您不能再传递任何参数。
当你运行时,vlc --whatever
它会尝试启动另一个实例,vlc
该实例将使用设置的选项加载--whatever
。如果你在首选项中设置了“仅允许一个实例” vlc
,这将不起作用,并且看起来像“vlc 没有抱怨”。你可能能够从视频局域网服务器但我从未使用过它,也不知道。您不会从任何未在某种服务器或侦听模式下运行的“正常”程序中获得此信息。
更好的问题是为什么您需要这种行为吗?如果您正常显示vlc
输出,只要 vlc 窗口具有鼠标焦点,您就可以正常使用热键。即使您没有,例如,在终端中观看 vlc通过 ssh 连接到使用 ASCII art 输出模式的无头服务器,只要终端具有ssh
焦点,热键就会起作用。您是否试图以某种方式编写此行为的脚本?这可能是XY问题?
答案3
terdon 的评论是正确的,但有一处小改动。正如发布的那样,由于大小写问题,这些命令在我的系统 (macOS) 上不起作用。如果您在 pgrep 命令中添加 -i 标志以忽略大小写,或者将 VLC 参数大写,则这些命令具有规定的效果。
如果您想要的只是暂停/取消暂停单个 vlc 实例,您可以执行kill -STOP $(pgrep -i vlc)
暂停和kill -CONT $(pgrep VLC)
取消暂停操作。