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

news/2024/12/25 8:19:42/

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.ppmy.cn/news/1557941.html

相关文章

重温设计模式--适配器模式

文章目录 适配器模式(Adapter Pattern)概述适配器模式UML图适配器模式的结构目标接口(Target):适配器(Adapter):被适配者(Adaptee): 作用&#xf…

Linux自动挂载与卸载USB设备

一、实现udev规则 SUBSYSTEMS"block",ACTION"add",RUN{program}"/bin/mkdir /mnt/%k",RUN{program}"/usr/bin/systemd-mount --no-block --collect /dev/%k /mnt/%k" SUBSYSTEMS"block",ACTION"remove", RUN{pr…

asp.net core webapi项目中 在生产环境中 进不去swagger

builder.WebHost.UseUrls 是 ASP.NET Core 中配置应用程序监听 URL 或端口的方法。通过使用这个方法,你可以指定应用程序应该在哪些 URL 上运行,以便接收 HTTP 请求。 1.在appsetting.json中 添加 "LaunchUrl": "http://*:327"2.在…

【深度学习】嘿马深度学习笔记第10篇:卷积神经网络,学习目标【附代码文档】

本教程的知识点为:深度学习介绍 1.1 深度学习与机器学习的区别 TensorFlow介绍 2.4 张量 2.4.1 张量(Tensor) 2.4.1.1 张量的类型 TensorFlow介绍 1.2 神经网络基础 1.2.1 Logistic回归 1.2.1.1 Logistic回归 TensorFlow介绍 总结 每日作业 神经网络与tf.keras 1.3 …

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中,轮播图是一种常见的用户界面元素,用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现,详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先,在home.js文件中&a…

android 登录界面编写

1、登录页面实现内容 1.实现使用两个EditText输入框输入用户名和密码。 2.使用CheckBox控件记住密码功能。 3.登录时候,验证用户名和密码是否为空。 4.当前CheckBox控件记住密码勾上时,使用SharedPreferences存储用户名和密码。 5.登录时候使用Prog…

日本IT行业|分享实用的开发语言及框架

在日本IT行业中,开发语言与框架的选择非常多样化,但也有一些特定的技术和框架更为流行。以下是对日本IT行业在用的开发语言与框架的详细分享: 开发语言 Java:Java在日本是一门非常稳定且受欢迎的编程语言,很多日本公…

android sqlite 数据库简单封装示例(java)

sqlite 数据库简单封装示例,使用记事本数据库表进行示例。 首先继承SQLiteOpenHelper 使用sql语句进行创建一张表。 public class noteDBHelper extends SQLiteOpenHelper {public noteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory fact…