当前位置: 首页 > article >正文

[x86 ubuntu22.04]双触摸屏的触摸事件都响应在同一个触摸屏上

1 问题描述

        CPU:G6900E

        OS:ubuntu22.04

        Kernel:6.8.0-49-generic

        系统下有两个一样的 edp 触摸屏,两个触摸屏的触摸事件都响应在同一个 edp 屏幕上。

2 解决过程

        使用“xinput”命令查看输入设备,可以看到只有一个 touch,而且还有一个警告。表示正在使用 Xwayland 服务器,而不是直接在 X11 环境中使用 xinput。xinput 是一个用于配置和管理 X11 输入设备的工具,而 Xwayland 是一个让 X11 应用程序在 Wayland 环境下运行的兼容层。

jw@jw-Windows-cpmpact-G6900E:~$ xinput 
WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ xwayland-pointer:17                       id=6    [slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:17              id=7    [slave  pointer  (2)]
⎜   ↳ xwayland-pointer-gestures:17              id=8    [slave  pointer  (2)]
⎜   ↳ xwayland-touch:17                         id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ xwayland-keyboard:17                      id=9    [slave  keyboard (3)]
jw@jw-Windows-cpmpact-G6900E:~$ 

        将 wayland 关闭,修改“/etc/gdm3/custom.conf”配置文件,配置文件如下所示,将“#WaylandEnable=false”改为“WaylandEnable=false”,重启系统,即可关闭 wayland 。

# GDM configuration storage
#
# See /usr/share/gdm/gdm.schemas for a list of available options.

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=jw

# Uncomment the line below to force the login screen to use Xorg
#WaylandEnable=false

# Enabling automatic login

# Enabling timed login
#  TimedLoginEnable = true
#  TimedLogin = user1
#  TimedLoginDelay = 10

[security]

[xdmcp]

[chooser]

[debug]
# Uncomment the line below to turn on debugging
# More verbose logs
# Additionally lets the X server dump core if it crashes
#Enable=true

        再使用“xinput”命令查看输入设备,可以看到有四个“Elo Touch”,分别对应不同 id,分别是 14、15、16、和 17。

jw@jw-Windows-cpmpact-G6900E:~$ xinput 
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB OPTICAL MOUSE                         id=10   [slave  pointer  (2)]
⎜   ↳ SIGMACHIP USB Keyboard Consumer Control   id=12   [slave  pointer  (2)]
⎜   ↳ Elo Touch                     ET1504LS pCAP USB HID       id=14   [slave  pointer  (2)]
⎜   ↳ Elo Touch                     ET1504LS pCAP USB HID    Mouse      id=15   [slave  pointer  (2)]
⎜   ↳ Elo Touch                     ET1504L pCAP USB HID        id=16   [slave  pointer  (2)]
⎜   ↳ Elo Touch                     ET1504L pCAP USB HID     Mouse      id=17   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ SIGMACHIP USB Keyboard                    id=11   [slave  keyboard (3)]
    ↳ SIGMACHIP USB Keyboard System Control     id=13   [slave  keyboard (3)]
    ↳ Intel HID events                          id=18   [slave  keyboard (3)]
    ↳ SIGMACHIP USB Keyboard Consumer Control   id=19   [slave  keyboard (3)]

        需要确定哪个 id 对应哪个触摸屏,使用“xinput test [id]”命令确定,如执行“xinput test 14”命令,点击触摸屏,有输出 log 就表示当前触摸屏幕对应的 id 号是 14。

jw@jw-Windows-cpmpact-G6900E:~$ xinput test 14
motion a[0]=12855 a[1]=27919 
button press   1 a[0]=12855 a[1]=27919 
motion a[0]=13535 a[1]=38575 

        使用“xrandr”命令可以查看屏幕的名称,最终知道“eDP-1”触摸屏对应的触摸 id 是 14,“DP-1”对应的触摸 id 是 16,使用以下命令成功解决了 bug。

xinput map-to-output 14 eDP-1
xinput map-to-output 16 DP-1


http://www.kler.cn/a/452845.html

相关文章:

  • 论文阅读 - 《Large Language Models Are Zero-Shot Time Series Forecasters》
  • 如何使用MySQL WorkBench操作MySQL数据库
  • 5.近实时数仓数据更新和ID 管理上的优化方案
  • cad学习 day7-9
  • 虚幻引擎是什么?
  • 【Java基础-26.1】Java中的方法重载与方法重写:区别与使用场景
  • 问题:Flask应用中的用户会话(Session)管理失效
  • 飞牛 fnos 使用docker部署 Watchtower 自动更新 Docker 容器
  • 深度学习在计算机视觉中的应用:对象检测
  • 【论文阅读】DynamicControl :一种新的controlnet多条件控制方法
  • 面试真题:Integer(128)引发的思考
  • 用Unity做没有热更需求的单机游戏是否有必要使用AssetBundle?
  • windows C#-对象和集合初始值设定项(上)
  • 永磁同步电机负载估计算法--自适应扩张状态观测器
  • Windows内置的服务器IIS(Internet Information Services)托管网站
  • Java全栈项目 - 智能考勤管理系统
  • Apriori关联规则算法 HNUST【数据分析技术】(2025)
  • PetaLinux 内核输出信息的获取方式
  • 一文详解“二叉树中的深搜“在算法中的应用
  • 《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
  • 【Java集合面试题001】Java中有哪些集合类?请简单介绍
  • axios 常见的content-type、responseType有哪些?
  • 3090. 每个字符最多出现两次的最长子字符串
  • sentinel限流+其他
  • 基于ISO 21434的汽车网络安全实践
  • LRU 缓存