将CEC事件映射到任意键绑定,以便通过电视遥控器控制您的Raspberrypi桌面。
项目描述
将CEC事件映射到任意键绑定,以便通过电视遥控器控制您的Raspberrypi桌面。
安装
您可以将 cecmap 以用户或root身份安装
作为用户
pip3 install --user cecmap
同时,确保将 ~/.local/bin 添加到您的PATH中。
作为root
sudo pip3 install cecmap
为了在切换模式时看到通知,还需要安装通知守护进程。我推荐 xfce4-notifyd
sudo apt install xfce4-notifyd
我还推荐安装一个屏幕键盘,例如。
sudo apt install matchbox-keyboard
使用方法
启动
cecmap # or: python -m cecmap
作为服务运行
启用启动时运行
systemctl --user enable cecmap
作为服务启动
systemctl --user start cecmap
默认键绑定
cecmap 默认配置了 键盘 和 鼠标 模式以供您开始(见 cecmap/config/default.cfg)。您可以使用配置格式自由更改这些键绑定,并添加或覆盖模式,请参阅 配置。默认键绑定如下
键 |
鼠标 模式 |
键盘 模式 |
---|---|---|
🔵 F1蓝色 |
切换模式 |
切换模式 |
🔴 F2红色 |
启动 matchbox-keyboard |
<Win> |
🟢 F3 绿色 |
鼠标滚轮向上 |
启动 kodi |
🟡 F4 黄色 |
鼠标滚轮向下 |
启动 chromium-browser |
🡅 向上 |
移动光标向上 |
<up> |
🡇 向下 |
移动光标向下 |
<down> |
🡄 向左 |
移动光标向左 |
<left> |
🡆 向右 |
移动光标向右 |
<right> |
🆗 选择 |
左键点击 |
<enter> |
▶ 播放 |
中间键点击 |
<media_play_pause> |
⏸ 暂停 |
右键点击 |
<media_play_pause> |
⮨ 退出 |
<esc> |
<esc> |
配置
cecmap 使用简单的配置格式来设置键码和键绑定。要使用的配置可以在命令行中使用 -c FILE.cfg 选项指定。格式如下
[keycode]
KEY = <NUMBER>
...
[mode.NAME]
KEY = <command> [<args>...]
...
例如:
[keycode]
left = 123
yellow = 321
...
[mode.Keyboard]
left = key left
yellow = launch kodi
...
对于更实际的示例,请参阅 cecmap/config/default.cfg。
如果有多个 模式 被定义,请确保定义一个执行 switch 命令的键绑定。这最容易在特殊部分 [mode.*] 中完成,该部分可以用于定义全局应用于所有模式的回退绑定。 cecmap 将在最高声明的模式中启动,并按照其出现的顺序循环遍历模式。
可以传递多个配置文件。在这种情况下,配置将按顺序合并,后一个文件覆盖先前的文件。这可以用于例如从不同的文件加载键码和键绑定。
cecmap \ -c keycodes.cfg \ -c mousemode.cfg \ -c keymode.cfg
如果在命令行上未传递 -c CONFIG 选项,cecmap 将检查用户和系统,或默认配置,并使用第一个存在的配置。
$XDG_CONFIG_HOME/cecmap.cfg(默认为 ~/.config/cecmap.cfg)
/etc/cecmap.cfg
命令
目前,以下命令作为键绑定的右侧受支持
launch <command> [<args>...] |
启动给定的程序。您可以使用类似于shell的引号来传递包含空格的参数。 |
toggle <command> [<args>...] |
使用命令行选项启动给定的程序。如果我们之前已启动程序,则终止它。对于如 matchbox-keyboard 之类的命令非常有用。 |
key <name>|<keycode>|@<letter> |
输入指定的键。有关键名称列表,请参阅 Key。 |
button left|middle|right|<number> |
使用指定的按钮执行鼠标点击。更多按钮名称可用,请参阅 Button。 |
scroll up|down|left|right [<ticks>] |
在指定方向上滚动鼠标滚轮指定数量的滚动刻度(默认 = 1)。 |
motion up|down|left|right |
在按住键的同时,在给定方向上执行鼠标光标移动。 |
switch [<mode>] |
切换到指定的 <mode>,或者如果省略此可选参数,则按照配置文件中出现的顺序循环遍历模式。 |
键码
如果默认键码按预期不起作用,您可以配置特定于您设置的键码。为了确定哪个键对应哪个键码,请打开终端并执行
cec-client
按按钮时,请监视输出,并记录配置文件中的键码。
重新加载
cecmap 可以通过发送 SIGUSR1 来指示重新加载配置,例如
pkill -USR1 cecmap
或者,如果作为服务启动
systemctl --user reload cecmap
变更
v1.0.0
日期:2021年11月28日
重命名为 cecmap
切换 F1(蓝色)和 F4(黄色)的默认快捷键
添加所有由 CEC 定义的用户控制码的键码
v0.0.5
日期:2021年11月27日
修复:如果在使用 picec 之前已经按下了动作绑定的键然后释放,将修复 KeyError
将/减少通知超时时间到 3 秒
将代码移动到 picec.cli 子模块
移除加载 .py 配置文件的能力
添加加载 .cfg 配置文件的能力
添加使用 SIGUSR1 在线重新加载配置的能力
添加合并多个 .cfg 文件配置的能力
记录配置格式
v0.0.4
日期:2021年11月26日
修复:TypeError: __init__() 缺少 1 个必需的位置参数:'app_name'
修复:AttributeError: 'dict' 对象没有属性 'setup'
修复:AttributeError: 模块 'os' 没有属性 'setpgrgp'
v0.0.3
日期:2021年11月25日
在新进程组中启动子进程(以避免我们在停止时与它们一起卸载)
通过 .service 文件中的 bash -l 执行以确保可用的 PATH 自定义设置。这可能会修复在自动启动服务时出现的错误,并且对于本地安装的应用程序的启动将很有用。
将代码移动到包结构
使用入口点创建可执行文件
将可执行文件重命名为 picec
添加命令行选项以更改配置(迄今为止尚未记录,API 将会更改!)
如果存在,则从 ~/.config/picec/config.py 加载配置
简化配置
将 matchbox-keyboard 绑定到鼠标模式的红色按钮
添加使用 notify2 关于模式更改的通知
v0.0.2
日期:2021年11月22日
用 pynput 替换 xdotool
使 .service 在失败时重启
v0.0.1
日期:2021年11月22日
初始原型
硬编码快捷键
适用于带有魔法遥控器的 LG 电视
“鼠标”和“键盘”模式,用于控制鼠标或光标键
基于 xdotool
包括示例 .service 文件
项目详情
下载文件
下载适合您的平台文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。