V2-202509
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
#!/bin/bash
|
||||
|
||||
get_touchdevice()
|
||||
{
|
||||
# echo -n "" > $touchlist
|
||||
for touch_id in $(xinput | grep -i -E 'touch|ILITEK|TSD' | cut -d '=' -f 2 | cut -f 1)
|
||||
do
|
||||
input_dev=$(xinput list-props $touch_id | grep "Device Node" | awk -F : '{print $2}' | awk -F \" '{print $2}' | awk '{print $1}')
|
||||
touch_screen=$(udevadm info $input_dev | grep "ID_INPUT_TOUCHSCREEN")
|
||||
|
||||
# dev=$(udevadm info $input_dev | grep "ID_SERIAL=" | cut -d "=" -f 2)
|
||||
dev=$(xinput list-props $touch_id | grep "Device '" | cut -d "'" -f 2)
|
||||
vid_t=$(udevadm info $input_dev | grep "ID_VENDOR_ID=" | cut -d "=" -f 2)
|
||||
pid_t=$(udevadm info $input_dev | grep "ID_MODEL_ID=" | cut -d "=" -f 2)
|
||||
path_t=$(udevadm info $input_dev | grep "ID_PATH=" | cut -d "=" -f 2)
|
||||
# echo "$vid_t,$pid_t,$path_t,$dev,$touch_id"
|
||||
echo "$dev"
|
||||
echo " 输入设备id:$touch_id, 硬件id:$vid_t:$pid_t, 设备路径:$path_t"
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
|
||||
get_screeninfo()
|
||||
{
|
||||
xrandr | grep connected | grep -v disconnected | while read -r screen ; do
|
||||
# 提取显示器名称
|
||||
name=$(echo $screen | awk '{print $1}')
|
||||
|
||||
# 检查是否是主屏幕
|
||||
if echo $screen | grep -q "primary"; then
|
||||
primary="true"
|
||||
# 主屏幕的信息在第4个字段
|
||||
resolution=$(echo $screen | awk '{print $4}')
|
||||
else
|
||||
primary="false"
|
||||
# 非主屏幕的信息在第3个字段
|
||||
resolution=$(echo $screen | awk '{print $3}')
|
||||
fi
|
||||
|
||||
# 分离分辨率和坐标
|
||||
screen_resolution=$(echo $resolution | cut -d'+' -f1)
|
||||
screen_x=$(echo $resolution | cut -d'+' -f2)
|
||||
screen_y=$(echo $resolution | cut -d'+' -f3)
|
||||
|
||||
# 输出结果
|
||||
echo "显示器名称: $name"
|
||||
echo "分辨率: $screen_resolution"
|
||||
echo "X坐标: $screen_x"
|
||||
echo "Y坐标: $screen_y"
|
||||
echo "主屏幕: $primary"
|
||||
echo "---"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
show_help(){
|
||||
echo ktouch debug。输入字母可以执行对应的功能
|
||||
echo " h help,帮助"
|
||||
echo " q 退出debug程序"
|
||||
echo " dev [id] 查看触摸设备详细信息,比如 t 10 查看id=10的触摸设备详细信息"
|
||||
echo " map [屏幕] [id] 手动将对应id的设备校准到指定屏幕上,可能与系统设置冲突,需要重启才能恢复正常。"
|
||||
echo " log 收集本工具的日志,生成到【主目录/家目录/个人文件夹】中"
|
||||
echo " setting 开始进行一次触摸屏校准设置,并在终端打印出详细日志,但是不会保存。"
|
||||
echo " automap 执行一次自动校准,并在终端打印出详细日志"
|
||||
echo " service stop/start 停止或启动监控服务,包括其自启动也受影响"
|
||||
echo " fix 修复程序,已经配置的信息会被删除"
|
||||
echo " "
|
||||
}
|
||||
|
||||
map_to_output(){
|
||||
xinput map-to-output $2 $1
|
||||
}
|
||||
|
||||
show_dev_info(){
|
||||
xinput list-props $1
|
||||
}
|
||||
|
||||
service_control(){
|
||||
|
||||
if [ "$1" = "stop" ];then
|
||||
sudo systemctl stop ktouch_daemon.service
|
||||
sudo systemctl disable ktouch_daemon.service
|
||||
elif [ "$1" = "start" ];then
|
||||
sudo systemctl start ktouch_daemon.service
|
||||
sudo systemctl enable ktouch_daemon.service
|
||||
else
|
||||
echo 参数不支持!
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
echo " ktouch 调试信息 "
|
||||
echo ============================
|
||||
echo "系统触摸屏、签字笔及其输入节点包括:"
|
||||
get_touchdevice
|
||||
|
||||
echo
|
||||
echo
|
||||
|
||||
echo 系统显示器有:
|
||||
get_screeninfo
|
||||
echo
|
||||
echo
|
||||
|
||||
|
||||
echo 当前的触摸屏映射配置为:
|
||||
cat /opt/ktouch/config
|
||||
echo
|
||||
echo
|
||||
|
||||
show_help
|
||||
while [[ 1 ]]
|
||||
do
|
||||
|
||||
echo -n "请输入命令: "
|
||||
|
||||
read CMD
|
||||
|
||||
if [ "$CMD" = "h" ];then
|
||||
show_help
|
||||
|
||||
elif [ "$CMD" = "q" ];then
|
||||
echo -n 0 > /tmp/ktouch/setflag
|
||||
exit 0
|
||||
|
||||
elif [ "$(echo $CMD | cut -d' ' -f1)" = "dev" ];then
|
||||
show_dev_info $(echo $CMD | cut -d' ' -f2)
|
||||
|
||||
elif [ "$(echo $CMD | cut -d' ' -f1)" = "map" ];then
|
||||
#进行一次映射,则需要停掉触摸监控,在程序结束后再打开
|
||||
echo -n 1 > /tmp/ktouch/setflag
|
||||
map_to_output $(echo $CMD | cut -d' ' -f2) $(echo $CMD | cut -d' ' -f3)
|
||||
|
||||
elif [ "$CMD" = "log" ];then
|
||||
kscreen-log
|
||||
|
||||
elif [ "$CMD" = "setting" ];then
|
||||
/opt/ktouch/screen_binder
|
||||
|
||||
elif [ "$CMD" = "automap" ];then
|
||||
kscreen-remap -s
|
||||
|
||||
elif [ "$(echo $CMD | cut -d' ' -f1)" = "service" ];then
|
||||
echo "请注意输入sudo密码"
|
||||
service_control $(echo $CMD | cut -d' ' -f2)
|
||||
echo 完成,执行结果为 $?
|
||||
|
||||
elif [ "$CMD" = "fix" ];then
|
||||
# 修复程序,流程为关闭程序监控,删除tmp,删除config,reconfigure一下,开启自启动
|
||||
echo "请注意输入sudo密码"
|
||||
service_control stop
|
||||
rm -rf /tmp/ktouch
|
||||
rm -f /opt/ktouch/config
|
||||
sudo dpkg-reconfigure ktouch >/dev/null 2>&1
|
||||
service_control start
|
||||
echo 完成,执行结果为 $?
|
||||
|
||||
|
||||
else
|
||||
echo "命令有误,请输入 h 查看支持的命令。"
|
||||
fi
|
||||
echo
|
||||
|
||||
|
||||
|
||||
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user