From 06e250e52e5bd66109908d8b5fe2d4bea5a93403 Mon Sep 17 00:00:00 2001 From: tang1219 Date: Tue, 16 Jun 2026 15:13:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0Readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- README.md | 134 ++++++++++++++++++++++++++++++++++++++++++++++++--- build_deb.sh | 6 +-- 3 files changed, 134 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 3a3e42c..b038e63 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,6 @@ usb_ds check_save .codewhale -.mimocode \ No newline at end of file +.mimocode + +*.deb \ No newline at end of file diff --git a/README.md b/README.md index 0347097..d387561 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,129 @@ -# ktouchV2 +# ktouch V2 -<<<<<<< HEAD -适配UOS和银河麒麟的触摸屏设置工具。 -======= -适配UOS和麒麟的触摸屏校准设置工具。 ->>>>>>> 07cb496a46dea18227a9ad14f0f91254054d9285 +适配 UOS 和麒麟 V10 的触摸屏映射校准工具。支持多屏环境下自动检测触摸屏与显示器对应关系,计算校准矩阵并写入系统,解决触摸紊乱问题。 + +## 功能 + +- **图形化配置** — 全屏窗口引导用户依次点击各显示器,自动建立触摸屏与显示器的映射 +- **后台守护** — systemd 服务持续监控屏幕/触摸屏/USB 变化,自动触发重新校准 +- **显示器管理** — 内置显示器设置工具(kdisplay),支持分辨率、旋转方向调整 +- **旋转适配** — 校准矩阵自动适配屏幕旋转(横屏/竖屏/倒置) +- **签字笔支持** — 传统方式配置签字笔设备 +- **现场诊断** — kscreen-debug 脚本快速排错,kscreen-log 采集日志 + +## 架构 + +``` +opt/ktouch/ +├── kscreen-remap-daemon # ← 主控进程(Python),systemd 服务入口 +├── kscreen-setup # 配置脚本:拉起 screen_binder → 解析结果 → 写入 config +├── kscreen-remap # 单次校准:读取 config → 计算矩阵 → 写入 libinput +│ +├── screen_binder # GUI:全屏窗口 + 触摸检测,输出显示器-触摸屏对应表 +├── screen_ds # 显示器监控:检测分辨率/坐标变化,写入 screen.txt +├── screen_ds_once # 单次更新显示器信息(screen_ds 阉割版) +├── touch_ds # 触摸屏监控:检测矩阵变化,写入 touchmap.txt +├── touch_set # 校准计算:根据配置计算变换矩阵,写入 libinput +├── usb_ds # USB 监控:检测触摸屏插拔,写入 usbadd.txt +├── check_save # 二次确认窗口:允许用户放弃本次校准 +│ +├── kdisplay # 显示器设置 GUI 工具 +├── display_monitor.py # 分辨率变化监控脚本 +│ +├── kscreen-debug # 现场排错脚本 +├── kscreen-log # 日志采集脚本 +├── kscreen-fix-daemon # 服务修复脚本 +│ +├── desktops/ # 桌面快捷方式 +├── forest-light/ # 主题文件 +└── config # 触摸屏配置文件 +``` + +**运行流程:** + +1. `kscreen-remap-daemon` 作为 systemd 服务启动,拉起各监控进程 +2. 高频轮询 `screen.txt`(显示器变化)、`usbadd.txt`(USB 插拔) +3. 低频轮询 `touch_ds` 检测触摸矩阵变化 +4. 任一条件触发 → `kscreen-remap` 执行校准 +5. 用户可通过快捷方式手动触发 `kscreen-setup` 重新配置映射 + +## 显示器设置(UOS 专属) + +UOS 环境下可通过 `kdisplay` 调用系统显示服务(`com.deepin.daemon.Display`)调整显示器参数,与触摸校准联动。 + +``` +kdisplay ───DBus──► com.deepin.daemon.Display + │ │ + │ GUI 操作 ├── 分辨率 / 旋转 / 主屏切换 + │ · 刷新检测 ├── SwitchMode 合并显示模式 + │ · 设置分辨率 └── Save 持久化 + │ · 旋转方向 + │ · 指定主显示器 display_monitor.py + │ · 自定义分辨率 后台持续检测分辨率变化 + │ 通知 kscreen-remap-daemon 重新校准 + └── 应用并保存 → 重启显示服务 +``` + +**主要功能:** + +| 功能 | 说明 | +|------|------| +| 分辨率设置 | 列出当前显示器支持的 60Hz 模式,支持自定义分辨率 | +| 旋转方向 | 支持正常 / 左转90° / 右转90° / 翻转 | +| 主显示器 | 可指定任意已启用的显示器为主显示器 | +| 自定义分辨率 | 非标分辨率写入 `display_config/` 目录,重启后保持 | +| 排列示意图 | 右侧画布实时展示多屏几何排列 | + +自定义分辨率配置文件存放在 `opt/ktouch/display_config/`,格式为 `<显示器名>`。 + +**用法:** +```bash +# GUI 方式 +/opt/ktouch/kdisplay + +# 命令行快捷方式 +kdisplay +``` + +> 仅在 UOS 环境下可用(依赖 D-Bus 服务 `com.deepin.daemon.Display`)。 +> 麒麟 V10 不支持此功能。 + +## 编译 + +```bash +# 依赖 +sudo apt install libinput-tools python3-evdev python3-pyudev +sudo apt install libevdev-dev libinput-dev libmtdev-dev libudev-dev libwacom-dev + +# 编译 +cd src +make # 仅编译到 src/ +make install # 编译并安装到 ../opt/ktouch/ +make clean +``` + +## 打包 + +```bash +# 先确保二进制已编译安装 +cd src && make install + +# 打包为 .deb +chmod +x build_deb.sh +./build_deb.sh # 输出到当前目录 +./build_deb.sh ~/dist/ # 输出到指定目录 +``` + +脚本自动从 `DEBIAN/control` 读取包名、版本、架构,生成 `ktouch_<版本>_<架构>.deb`。 + +## 安装 + +```bash +sudo dpkg -i ktouch_*.deb +# postinst 会自动配置 systemd 服务、快捷方式、用户组权限 +# 安装完成后需重启以使 input 组生效 +``` + +## License + +MIT diff --git a/build_deb.sh b/build_deb.sh index b0067c8..56760fd 100644 --- a/build_deb.sh +++ b/build_deb.sh @@ -78,9 +78,9 @@ done # display_monitor.py # ) -for exe in "${EXE_LIST[@]}"; do - [ -f "$BUILD_DIR/opt/ktouch/$exe" ] && chmod 755 "$BUILD_DIR/opt/ktouch/$exe" -done +# for exe in "${EXE_LIST[@]}"; do +# [ -f "$BUILD_DIR/opt/ktouch/$exe" ] && chmod 755 "$BUILD_DIR/opt/ktouch/$exe" +# done # usr 下文档 644,目录 755 find "$BUILD_DIR/usr" -type d -exec chmod 755 {} \;