kushidoutouch多触屏修复软件

2021-10-19
update 2021-10-19

kushidoutouch是我个人编写的基于bash脚本的多显示器多触摸屏映射软件,本文将会详细介绍它的使用方法和相关信息。

下载地址:https://www.small09.top/d/kushidouTouch-1.1.4_all.deb

关于KushidouTouch | About

这是什么? | What?

kushidoutouch是一款基于bash脚本的,触摸屏+多显示器的修复软件。当你有触摸屏设备且显示器不止一块,或者不知道如何进行触摸映射时,就可以使用这个软件。仅需要一个鼠标,你就可以配置好你的触摸位置。

为什么要做这个? | Why?

Linux原生对多触摸屏支持不是很好,默认是将一个触摸设备映射到全部的屏幕上。我习惯于使用xinput指令+自启动脚本进行屏幕映射,但是我的同事们都没有接触过Linux,在进行信创项目开发时,他们总是要为了触摸屏的问题来问我,我一遍遍不厌其烦的为他们指导、演示,而过了几天他们又来问我相同的问题。

它是怎么实现的? | How?

本质上讲还是xinput工具,我封装了一个对话框,可以自动筛选出显示器和触摸设备,用户通过点选设备按钮可以形成绑定关系并生成一个配置文件,之后通过手动或自动运行的方式进行映射。

使用方法 | Manual

安装 | Install

kushidoutouch依赖xinputzenitypython3,由于无法使用apt包管理器,您需要手动安装这些依赖软件。此外为了实现触摸屏usb插拔后自动恢复映射,您可以额外安装python3-pyudev,或者使用pip3安装pyudev

以上依赖都安装完成后,即可使用dpkg -i *.deb安装本软件。部分操作系统使用双击方式安装时,会因为没有前面而安装失败。

配置 | Config

双击桌面上的“配置触摸屏”图标(如果桌面上没有,可以在开始菜单或者所有程序中寻找,也可以执行kscreen-config指令),在弹出的第一个对话框中选择显示器,第二层对话框中选择触摸设备。选择完成后触摸映射即时生效,并返回第一级菜单。请用手指点击屏幕或者与窗口交互,判断关系是否正确。正确的话可以配置下一个设备,如果不正确,请重复上述步骤尝试其他触摸设备。

所有设备都配置完成后,再点击退出。切勿提前退出。切勿反复打开配置程序后仅配置一两条就退出。现在配置文件采取的是覆盖策略,仅最后一次配置的会生效。

image-20211019135033612

使用 | Use

软件有三种开启映射的方式,除了配置时的即时映射外,有开机自启动、触摸设备插拔自动映射、手动映射。

软件无法检测显示器的更改,如果显示器经历了插拔,请双击桌面快捷方式进行映射(也可以在开始菜单或所有程序中找到;也可以执行kscreen-remap 3指令)。

插拔自动映射需要pyudev的支持,参考前文进行安装。

如果更换过设备、更换过USB口、显示器更换过接口,请重新进行配置。软件无法处理这些更改。

技术细节 | Details

实现原理 | Principle

本程序除了一个从银河麒麟操作系统中模仿出来的python脚本外,其他都基于bash脚本进行开发。使用grep、cut指令相结合分析出使用的屏幕和常见触摸输入设备,使用zenity创建对话框与用户交互。所有配置文件都写在config文件中,对于触摸屏,因为遇到过屏幕名称、VID:PID等识别符号都完全一致的情况,所以额外加了设备逻辑接口地址来进行研判,只有四个项目都对上,条目才起效。

已知问题 | BUGs

  1. 由于加入了USB接口地址判断,对于任何电脑,只要更换了USB位置,触摸配置就失效了
  2. 目前逻辑下打开配置程序就会删除原有配置,必须从头配置到结束
  3. 无法识别到屏幕变化

后续计划 | TODO

  1. 收集全部触摸信息后综合判断记录信息的量,比如完全不同的设备仅记录名称,名称相同额外记录VID:PID,都相同再记录USB接口信息,避免所有设备都使用庞大的config文件。
  2. 打开配置软件时不删除配置文件,用户启动时选择覆盖模式、管理模式或者增量模式。仅覆盖模式、完成配置后再删除替换。
  3. 添加配置文件条目管理功能,可以删除指定行。实现方式是复制配置文件,对复制后的进行修改,用户点击保存后整理临时文件内容,再覆盖原有文件。
  4. 增加屏幕变化识别功能。该功能将置于python脚本中,实现方法待定。
  5. 将python3移除必要依赖,写入建议安装。
  6. 1-3、5条计划1.2中更新,4暂无实现时间计划。
Avatar
Kushidou 什么都学,却什么都不精通的一个小白:)