改成监听红外一个按键按一次切换一个主屏或者副屏的脚本
时间: 2024-02-09 14:09:21 浏览: 71
好的,我来提供一个 shell 脚本实现的通过红外遥控器按键切换主副屏的示例,并加上注释以便理解。
```sh
#!/bin/sh
# 定义 adb 命令
get_display_state_cmd="dumpsys display | grep mDisplayId"
control_main_display_cmd="service call window 27 i32 0"
control_sub_display_cmd="service call window 27 i32 1"
# 定义红外遥控器按键与操作的对应关系
KEY_MAIN_DISPLAY="0x45"
KEY_SUB_DISPLAY="0x46"
KEY_ACTION_MAP="$KEY_MAIN_DISPLAY:main $KEY_SUB_DISPLAY:sub"
# 定义变量,记录当前显示状态和需要切换到的显示状态
current_display="main"
target_display="sub"
# 循环监听红外遥控器事件
while true; do
event=$(getevent -l /dev/input/event0 | grep -o "value.*")
if [ "$event" ]; then
# 解析红外遥控器事件,执行相应的操作
key=$(echo "$event" | awk '{print $2}')
action=$(echo "$KEY_ACTION_MAP" | grep "^$key:" | awk -F: '{print $2}')
if [ "$action" ]; then
if [ "$action" = "main" ]; then
target_display="main"
else
target_display="sub"
fi
# 判断当前显示状态和目标显示状态是否一致,如果不一致,则执行切换操作
if [ "$current_display" != "$target_display" ]; then
if [ "$target_display" = "main" ]; then
adb shell "$control_main_display_cmd" && echo "Switch to main-display."
else
adb shell "$control_sub_display_cmd" && echo "Switch to sub-display."
fi
current_display="$target_display"
fi
fi
fi
done
```
说明:
1. 该示例使用 shell 脚本编写,并通过 adb 命令和 getevent 命令实现了通过红外遥控器按键切换主副屏的功能。
2. 该示例定义了三个 adb 命令:一个用于获取当前显示状态,另外两个用于控制主屏和副屏的切换。
3. 该示例定义了红外遥控器按键与操作的对应关系,使用空格分隔不同的按键与操作,使用冒号分隔按键和操作。
4. 该示例使用 while 循环来不断监听红外遥控器事件,并解析按键并执行相应的操作。
5. 该示例使用变量记录当前显示状态和需要切换到的显示状态,并判断当前显示状态和目标显示状态是否一致,如果不一致,则执行切换操作。
6. 该示例可以保存为 shell 脚本文件,然后通过终端来执行。在执行前,请确保已经连接了 Android 设备,并且已经启用了 USB 调试模式,同时确保红外遥控器已经连接到 Android 设备并且已经产生了事件。
阅读全文