V2-202509

This commit is contained in:
tang1219
2026-06-12 16:54:32 +08:00
commit a821392ee4
121 changed files with 11161 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
#!/bin/bash
workpath=/opt/ktouch
tmppath=/tmp/ktouch
INPUT_FILE="$workpath/touch_dis_table.txt"
OUTPUT_FILE="$workpath/config"
LOG_FILE="$workpath/touchscreen.log"
# 日志函数
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') kscreen-setup : $1" | tee -a "$LOG_FILE"
}
mkdir -p /tmp/ktouch
cd $workpath
# 首先往setflag写入1停止监控
echo -n "1" > $tmppath/setflag
# 消灭监控进程
log_message "关闭监控进程"
sleep 2
# 环境变量
export DISPLAY=:0
# 备份config文件
echo -n "" > $workpath/config.bk
cp $workpath/config $workpath/config.bk
# 启动检测
log_message "启动GUI化配置程序"
$workpath/screen_binder
log_message "配置过程结束"
# ==============解析文件===============
# 检查输入文件是否存在
if [[ ! -f "$INPUT_FILE" ]]; then
log_message "错误: 输入文件 $INPUT_FILE 不存在"
exit 1
fi
echo -n "" > $workpath/config
log_message "开始处理触摸屏设备信息"
# 逐行读取输入文件
while IFS='|' read -r display_name touchscreen_name touchscreen_id event_path; do
# 去除可能的空白字符
display_name=$(echo "$display_name" | xargs)
touchscreen_name=$(echo "$touchscreen_name" | xargs)
event_path=$(echo "$event_path" | xargs)
log_message "处理设备: $touchscreen_name, 事件路径: $event_path"
# 检查事件路径是否为空
if [[ -z "$event_path" ]]; then
log_message "警告: 事件路径为空,跳过此行"
continue
fi
# 检查设备是否存在
if [[ ! -e "$event_path" ]]; then
log_message "警告: 设备路径 $event_path 不存在,跳过"
continue
fi
# 使用udevadm查询设备信息
vid=""
pid=""
usb_path=""
# 获取设备信息
device_info=$(udevadm info --query=property --path="$(udevadm info --query=path --name="$event_path" 2>/dev/null)" 2>/dev/null)
if [[ -n "$device_info" ]]; then
# 提取VID和PID
vid=$(echo "$device_info" | grep -i "ID_VENDOR_ID" | cut -d= -f2 | head -n1)
pid=$(echo "$device_info" | grep -i "ID_MODEL_ID" | cut -d= -f2 | head -n1)
# 提取USB路径
usb_path=$(echo "$device_info" | grep -i "ID_PATH" | grep -i "usb" | cut -d= -f2 | head -n1)
# # 如果没找到USB路径,尝试其他方式
# if [[ -z "$usb_path" ]]; then
# usb_path=$(echo "$device_info" | grep -i "DEVPATH" | cut -d= -f2 | head -n1)
# fi
fi
log_message "获取到信息: VID=$vid, PID=$pid, USB路径=$usb_path"
# 组合新格式并写入输出文件
new_line="${display_name}|${touchscreen_name}|${vid}|${pid}|${usb_path}"
echo "$new_line" >> "$OUTPUT_FILE"
log_message "写入: $new_line"
done < "$INPUT_FILE"
# 清空UOS的触摸屏设置信息
if [ -f /usr/bin/gsettings ];then
gsettings set com.deepin.dde.display map-output ''> /dev/null 2>&1
if [ "$?" == "0" ];then
log_message "成功清除UOS系统设置中的触摸屏设置信息"
fi
fi
# 配置文件更新完成,进行一次试用
log_message "开始进行触摸效果测试,并进行二次确认。"
$workpath/screen_ds_once $tmppath/screen.txt
$workpath/touch_set
sleep 0.5
# 试用后询问用户是否保存
$workpath/check_save
if [ ! "$?" = "0" ];then
# 用户点击了取消,恢复之前的设置
log_message 用户点击了取消,恢复之前的设置.
rm $workpath/config
mv $workpath/config.bk $workpath/config
# 最后写入0重新开启监控
echo -n "0" > $tmppath/setflag
notify-send -u low --icon=view-fullscreen -t 15000 "取消保存,已恢复之前的配置。"
else
log_message 用户点击了确认,新的config将会保存
# 最后写入0重新开启监控
echo -n "0" > $tmppath/setflag
log_message "处理完成,结果已保存到 $OUTPUT_FILE"
notify-send -u low --icon=view-fullscreen -t 15000 "触摸屏映射工具 ktouch" "设置完成,请稍等15秒查看效果。"
fi
if [ -f $workpath/config.bk ];then
rm $workpath/config.bk
fi