首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ubuntu22.04 (Wayland)的新安装上禁用触摸屏

如何在Ubuntu22.04 (Wayland)的新安装上禁用触摸屏
EN

Ask Ubuntu用户
提问于 2022-05-30 01:48:50
回答 2查看 3.1K关注 0票数 1

我有一台5岁的笔记本电脑,我认为触屏开始变小了,因为我的光标有时会闪烁,窗户会突然移动等等,就像我的笔记本电脑被附了一样。它是在Ubuntu20.04中开始的,就在我重新安装Ubuntu22.04之前,问题一直存在,所以我不认为操作系统是罪魁祸首;我非常肯定触摸屏。

我试过了

代码语言:javascript
运行
复制
xinput disable 5

但我得到

代码语言:javascript
运行
复制
WARNING: running xinput against an Xwayland server. See the xinput man page for details.

而且它也不禁用触摸屏。

我试过:

代码语言:javascript
运行
复制
modprobe -r hid_multitouch

但这只禁用了部分触摸屏(而不是触摸屏)功能。

那么,在Ubuntu22.04 (Wayland)的新安装上禁用触摸屏的正确方法是什么呢?谢谢。

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2022-06-04 10:35:05

我遵循这条线并创建了一些脚本,这些脚本可以重新安装ubuntu22.04。

我不知道如何使awk的匹配函数工作,所以我只使用@meuh和@JinnKo中的代码来创建一个非awk版本,该版本可以禁用/切换给定一个关键字的多个设备。

首先,确保安装了evtest:

代码语言:javascript
运行
复制
sudo apt install evtest

我有两个文件,一个是打开和关闭触摸屏,另一个是在启动时总是禁用它。

触摸屏:

代码语言:javascript
运行
复制
#!/bin/bash
# This toggles my touchscreen
#search for "Touchscreen" or something like that in /proc/bus/input/devices to make sure you're disabling what you want to disable.

path_for_temp_files="/ANY_PATH_YOU_WANT_TO_STORE_SOME_PID_FILES/"
regex='event([0-9]+)'
DEVICE="Touchscreen"

if [ -r "${path_for_temp_files}touchscreen-evtest0.pid" ]; then
    kill_these_files=("${path_for_temp_files}"touchscreen-evtest*)

    for i in "${kill_these_files[@]}"; do
        echo "kill" $(cat "${i}")
        sudo kill $(cat "${i}")
        sudo rm "${i}"
    done  

else
    filename='/proc/bus/input/devices'
    inside=0
    events=()
    while read line; do
        if [[ $line =~ $DEVICE ]]; then 
            inside=1
        fi

        if [[ $line =~ $regex ]]; then
            if [[ "$inside" -eq 1 ]]; then
                events+=("${BASH_REMATCH[1]}")
            fi
            inside=0
        fi
    done < $filename
    
    numevents=${#events[@]}
    
    for (( i=0; i<${numevents}; i++ )); do
        sudo evtest --grab "/dev/input/event${events[$i]}" > /dev/null &
        pid=$!
        echo $pid > "${path_for_temp_files}touchscreen-evtest${i}.pid"
        echo "/dev/input/event${events[$i]} running on pid ${pid}"
    done
fi

禁用在引导时运行的触摸屏:

代码语言:javascript
运行
复制
#!/bin/bash
# This disables my touchscreen
#search for "Touchscreen" or something like that in /proc/bus/input/devices to make sure you're disabling what you want to disable.

path_for_temp_files="/ANY_PATH_YOU_WANT_TO_STORE_SOME_PID_FILES/"
regex='event([0-9]+)'
DEVICE="Touchscreen"

if [ -r "${path_for_temp_files}touchscreen-evtest0.pid" ]; then
    kill_these_files=("${path_for_temp_files}"touchscreen-evtest*)

    for i in "${kill_these_files[@]}"; do
        echo "kill" $(cat "${i}")
        sudo kill $(cat "${i}")
        sudo rm "${i}"
    done  

fi

filename='/proc/bus/input/devices'
inside=0
events=()
while read line; do
    if [[ $line =~ $DEVICE ]]; then 
        inside=1
    fi

    if [[ $line =~ $regex ]]; then
        if [[ "$inside" -eq 1 ]]; then
            events+=("${BASH_REMATCH[1]}")
        fi
        inside=0
    fi
done < $filename

numevents=${#events[@]}

for (( i=0; i<${numevents}; i++ )); do
    sudo evtest --grab "/dev/input/event${events[$i]}" > /dev/null &
    pid=$!
    echo $pid > "${path_for_temp_files}touchscreen-evtest${i}.pid"
    echo "/dev/input/event${events[$i]} running on pid ${pid}"
done

然后,我跟随这个答案在启动时作为root运行。

票数 2
EN

Ask Ubuntu用户

发布于 2023-03-27 03:40:53

我发现上面的任何一个都没有用(没有触摸屏设备)。因此,我从Wayland转到X11,然后运行xinput disable 11,其中11是一个指点设备(xinput ):

id=11⎜2AF2 2514:0004F3:2AF2

id=13⎜SYNA32A0:0006CB:⎜14小鼠

id=14⎜SYNA32A0:0006CB:⎜14 Touchpad⎜

ELAN和SYNAptics是两种指针芯片类型。我猜伊兰是触摸屏。

要切换到X11,当您输入登录名时,登录页面右下角会出现一个设备。单击它并选择X11。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1411307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档