本文为《PVE安装Kodi》系列文章的一部分。
说明
kodi-send命令是Kodi自带命令行工具,可以安全的操控Kodi,除了下文使用的Quit指令,还有很多指令可以使用,方便想要自动化操作的人来使用,具体可用的指令见:Action_IDs 及 List_of_built-in_functions 。
安装
请先按照 PVE 直接安装最新版 Kodi 教程添加好deb-multimedia软件源。
kodi-send命令需要安装kodi-eventclients-common(如果未启用deb-multimedia源,则需要安装debian官方源中的kodi-eventclients-kodi-send):
| 1
 | apt install kodi-eventclients-common
 | 
 
如果是从backports源中安装的Kodi,那么也要从backports源中安装kodi-eventclients-common(假如是PVE 7,对应debian的bullseys版本):
| 1
 | apt install -t bullseye-backports kodi-eventclients-common
 | 
 
设置
如需要使用kodi-send命令,需要在“Kodi设置->服务->控制”处勾选“允许通过本机应用远程控制”。

使用
输入kodi-send --help即可查看。
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 | Usage
        kodi-send [OPTION] --action=ACTION
        kodi-send [OPTION] --button=BUTTON
Example
        kodi-send --host=192.168.0.1 --port=9777 --action="Quit"
Options
        -?, --help                      Will bring up this message
        --host=HOST                     Choose what HOST to connect to (default=localhost)
        --port=PORT                     Choose what PORT to connect to (default=9777)
        --keymap=KEYMAP                 Choose which KEYMAP to use for key presses (default=KB)
        --button=BUTTON                 Sends a key press event to Kodi, this option can be added multiple times to create a macro
        -a ACTION, --action=ACTION      Sends an action to XBMC, this option can be added multiple times to create a macro
        -d T, --delay=T                 Waits for T ms, this option can be added multiple times to create a macro
 | 
 
如需对本机安装的Kodi执行退出,如果Kodi是默认的状态,直接输入以下命令即可(-a/--action二者都可以,带不带=都行):
| 1
2
 | kodi-send -a "Quit"
kodi-send --action="Quit"
 | 
 
或者只是调出退出菜单,而不是直接退出(如果遥控器的电源键没有被evsieve劫持的话,电源键在Kodi中倒是原本就是调出退出菜单,不过被evsieve劫持之后就得就这种方式曲线还原了):
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 | # 直接调出退出菜单,只能调出,无法切出
kodi-send -a "ActivateWindow(shutdownmenu)"
# 用命令模拟按下sleep/power按键,以下两个命令作用同上,只能调出,无法切出
kodi-send --button="sleep"
kodi-send --button="power"
# 用命令模拟按下键盘的s键,键盘的s键作用也是调出退出菜单
# 相比上面的几个命令,当退出菜单已经调出时再次运行本命令可以切出退出菜单
# 而若是Kodi正处于输入文字的界面时,此命令只会真的打出“s”,调不出退出菜单
kodi-send --button="s"
 | 
 
注:以上命令均在Kodi的keymaps未作任何调整的情况下运行的。其他指令请见:Action_IDs 及 List_of_built-in_functions,全部按键见:Keyboard_controls 。
其他应用场景
针对《PVE 直接安装最新版 Kodi》中的/etc/systemd/system/kodi.service服务,可以修改ExecStop这一行为:
| 1
 | ExecStop = /usr/bin/kodi-send --action="Quit"
 | 
 
针对《像使用盒子/LibreELEC一样使用PVE直装的Kodi,实现遥控器启停》一文中的/usr/local/bin/kodi-power.sh脚本,可以修改systemctl stop kodi.service(就是原本的关闭Kodi的指令)这一行为下面任何一句命令,这样也算是在电源键被evsieve劫持之后曲线还原了。
| 1
2
3
4
5
6
7
8
9
 | # 直接退出
kodi-send --action="Quit"
# 或者只是调出退出菜单,而不是直接退出(根据上一节的说明选其一即可)
kodi-send -a "ActivateWindow(shutdownmenu)"
kodi-send --action="ActivateWindow(shutdownmenu)"
kodi-send --button="sleep"
kodi-send --button="power"
kodi-send --button="s"
 |