Linux下多显示器触屏调试与暂行解决方案
多显示器触屏调试与暂行解决方案
2020-03-22更新部分内容
2021-04-28再次更新内容
问题来源
最近客户要求使用信创平台,即国产CPU+国产操作系统平台。现在这方面主要使用的操作系统为麒麟和通信uos。这两个的本质都是debian系的,所以很多地方的调试与使用都可以按乌班图的经验来操作。一款产品要使用三块显示器,其中两块是触屏。屏幕通过R5 420显卡,都转换成VGA连接。
接入设备后,发现触摸屏默认是映射到全屏幕,在任何显示器上操作都会按排列顺序在对应的区域触发。所以需要给每个显示器分别映射触摸。映射的基本指令为
xinput map-to-output $触屏设备id $显示屏名称
2021-04-28更新
xinput map-to-output
指令支持触摸屏名称作为参数,比如我通过xinput
指令看到有一个触摸屏的设备名称为ILITEK XXXX
,那么我映射的时候直接输入
xinput map-to-output "ILITEK XXX" HDMI-1
尝试解决
- 首先使用xinput查看触摸设备及其序号*$id*。这里可以看到多个设备,可以通过单独插拔的方式找到每个设备。记录这些设备的名称
- 然后
xinput list-props $id
查看设备的VID,这个在后续自动化处理有用。 xrandr
查看$显示器名称
自动化处理
# 2021-04-28更新:
# 本部分后面的都可以不看了!
xinput map-to-output "DEVICE_NAME" DISPLAY
# 把这一段写入可以自动执行的脚本里面,比如/etc/rc.local, ~/.bashrc, /etc/profile
# 以及制作成service等。有几个触摸屏就写几行指令,比下面的简洁了太多~
仅作归档!下面这些方法过于繁琐!
利用VID和显示器名称作为参数,运行下面的脚本,或者直接手动执行重映射,即可解决触屏作用范围问题。bash this.sh VID1 VID2 ScreenID
#!/bin/bash
# 这段适合触屏硬件id不同的情况,如果遇到id不同需要其他方法。
# 2021-03-22更新:在前几天的实操中,发现字符串比较部分出现了问题,这个方案的可行性有待进一步探索。现在采用另一种方案。
MYID_FIRST=$1
MYID_SECOND=$2
OUT_PUT=$3for I in $(xinput list --id-only)
do
#[1]CUR_FIRST=$(xinput list-props $I|grep "Device Product ID"|awk -F : '{print $2}'|awk -F , '{print $1}'|awk '{print $1}')CUR_SECOND=$(xinput list-props $I|grep "Device Product ID"|awk -F : '{print $2}'|awk -F , '{print $2}'|awk '{print $1}')if [ "$MYID_FIRST" == "$CUR_FIRST" ] && [ "$MYID_SECOND" == "$CUR_SECOND" ];thenMY_INDEX=$Ibreak;fi
donexinput map-to-output $MY_INDEX $OUT_PUT#./this.sh VID VID HDMI2
#./this.sh VID VID HDMI1
#!/bin/bash
# 2021-03-22更新:这种方案只要四行就能实现一块的映射,需要时只要复制这个代码块即可,修改DEVICE_NAME 和 SCREEN_NAME 。如果名称中带有重复的部分,可以再加一个grep -v xxxx来排除关键词。但是如果遇到屏幕完全重名的情况,就不可解了。
TOUCH_ID=$(xinput | grep -iw DEVICE_NAME)
TOUCH_ID=$(echo ${TOUCH_ID#*id=})
TOUCH_ID=$(echo ${TOUCH_ID%% *})
xinput map-to-output $TOUCH_ID SCREEN_NAME
此方法可以在直到触屏VID后,(一般多显示器使用的是不同的型号),使用自启动rc.local开机执行重映射指令,保证每次开机都能准确找到屏幕,且适用于系列产品不用单独找id。
经测试rc.local由于只在开机执行,如果分辨率在开机的时候改变了(比如用了转接头分辨率会重新调整),映射关系还是会出错。我决定用一个取巧的办法,把执行脚本的命令放在~/.bashrc
中,这样只需要打开一次终端,就可以实现屏幕重新映射。
后续问题
- 当屏幕参数改变,如调整分辨率、调整顺序、插拔屏幕、换屏幕等,都会引发映射的失效,需要再次执行脚本。
- 当屏幕发生改变,需要调整脚本中固化的参数,或调整执行脚本的输入参数
- 如果屏幕使用了相同的驱动ic,会看到同样的VID,这样子会难以区分。这时候把[1]处的判断条件改成按名称或者其他不同的参数,也能够自动适配。但两块完全一样的屏幕,现阶段还没想到解决方法,只能自己手动映射试试了。
触屏校准(如果需要)
网上说的利用校准来区分多触摸屏的方法是完全错误的,仅适用于他们的产品而不是通用解决方案,很多人就是抄来抄去而已。但是如果遇到触摸偏移,还是有需要进行校准的,校准方法为(最后一步需要甄别,有些系统没有这个目录)
sudo apt install xinput-calibrator
,需要更新源sudo xinput_calibrator
- 将校准信息保存到``/usr/share/X11/xorg.conf.d/10-evdev.conf`的"Driver evdev”下面一行,重启生效。
参考:
[1]https://blog.csdn.net/yuan_da_xian/article/details/72864008
[2]https://blog.csdn.net/qq_33406883/article/details/106649087
[3]https://segmentfault.com/a/1190000020334077
Linux下多显示器触屏调试与暂行解决方案相关推荐
- linux下使用 xset 设置屏保
linux下使用 xset 设置屏保 把从网上找到的资料整理到这里 Linux下的屏保设置 xset s 与 xset dpms http://bbs.chinaunix.net/archiver/? ...
- linux下使用VS CODE + CMAKE 调试C++程序
Linux下使用VS Code + CMake 调试c++程序 - 灰信网(软件开发博客聚合)
- linux下如何产生core,调试core
linux下如何产生core,调试core 摘自:http://blog.163.com/redhumor@126/blog/static/19554784201131791239753/ 在程序不寻 ...
- 服务器装w7系统屏幕闪屏,CRT显示器总是闪屏怎么办?Win7系统下CRT显示器闪屏解决方法...
众所周知,CRT显示器是比较老款的显示器了,但是不少设计师考虑到色彩还原度问题,优先会选择CRT显示器,如果系统屏幕刷新频率设置不当就会导致CRT显示器闪屏的问题.那么CRT显示器总是闪屏怎么办?下面 ...
- Linux下安装Nginx完整教程及常见错误解决方案
Linux下安装Nginx完整教程及常见错误解决方案 参考文章: (1)Linux下安装Nginx完整教程及常见错误解决方案 (2)https://www.cnblogs.com/chenxiaoch ...
- Linux下DIY DLAN投屏方案
我用 Python + FFmpeg + DLNA 完成了一个在 Linux 下的投屏方案.这个方案的不足是延迟有点大. 一般来说,安卓设备和 Windows 设备投屏使用的是 miracast 协议 ...
- lg分屏软件支持linux吗,LG显示器分屏软件-OnScreen Control(快速分屏)下载v2.95-领航下载站...
OnScreen Control是LG为其显示器用户提供的一款功能非常强大的显示器分屏软件,OnScreen Control可以快速的帮助用户分割屏幕显示区域,领航小编觉得这个功能对于那些经常需要运行 ...
- Linux下gcc/g++编译器gdb调试器和makefile的使用
文章目录 一.gcc的使用 gcc选项 二.gdb的使用 三.Linux项目自动化构建工具-make/Makefile 3.1 概念 3.2 使用 3.3 原理 一.gcc的使用 首先我们知道一个C/ ...
- linux修图,最合适触屏方法 指划修图Snapseed
最合适触屏方法 指划修图Snapseed 运用起来愈加简易,这款修图程序比拟我所见过的修图程序来说.需不要特定的笔墨说明,而是看着图片凭感受在屏幕上挪动就能够,操纵以至比iPhoto如许理性的修图程序 ...
最新文章
- GPU上创建目标检测Pipeline管道
- oracle终止用户会话
- FZU-2218 Simple String Problem(状态压缩DP)
- 在Outlook 2010中使用对话视图
- gbdt 算法比随机森林容易_随机森林与GBDT
- dtft变换的性质_[2018年最新整理]DTFT变换.ppt
- Shopify 英文(多国语言)国际网店 注册指南
- loadClass 使用
- 雨滴桌面显示html,如何用雨滴桌面设置美观的桌面天气插件
- 语音信号处理1 ----- 基础知识
- Windows NT 下载
- 10bit、8bit色彩深度,究竟差多少?
- vue 图片剪裁插件
- 码云提交不显示贡献度问题
- Tribonnbsp;Draftingnbsp;consol…
- java tapestry_Tapestry简介- 转载 (转自java-cn)
- 使用openlayers加载地图行政区域(结合百度云地图)
- 连续8年 远见领跑|山石网科入选Gartner 2021网络防火墙魔力象限
- POI实际应用之POI简介
- sqlserver:发送电子邮件(使用网易邮箱服务)