AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1242241
Accepted
Edwin Fellows
Edwin Fellows
Asked: 2020-05-22 10:41:50 +0800 CST2020-05-22 10:41:50 +0800 CST 2020-05-22 10:41:50 +0800 CST

我必须使用什么“坐标变换矩阵”才能让我的触摸屏正常工作?

  • 772

有人可以帮助我吗,我在这里拉头发。我已经尝试了好几天来解决这个问题。

Ubuntu 18.04.4 显示设置:右触摸框:IRTOUCH 系统

如果我在终端中使用以下命令尝试校准我的触摸,我会得到以下结果

xinput set-prop "USB Touchscreen 6615:0001"  --type=float "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1

我的左/右是正确的,但我的上/下是不正确的

如果我使用

xinput set-prop "USB Touchscreen 6615:0001"  --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1

我的左/右不正确,但我的上/下是正确的

我试图弄清楚使用什么组合来正确配置我的触摸。我尝试安装从制造商处下载的驱动程序,但也无法正常工作。有谁知道我必须使用什么“坐标变换矩阵”来让我的左/右和上/下正常工作。

touchscreen xinput
  • 2 2 个回答
  • 5040 Views

2 个回答

  • Voted
  1. Best Answer
    Edwin Fellows
    2020-05-24T01:10:10+08:002020-05-24T01:10:10+08:00

    我设法弄清楚了这一点。此特定触摸框有 2 种不同的坐标变换矩阵组合。这取决于屏幕旋转以及触摸面板是否正确或错误地“倒置”安装

    左屏幕旋转 - 正确安装触摸屏 xinput set-prop "USB Touchscreen 6615:0001" --type=float "坐标变换矩阵" 0 -1 1 -1 0 1 0 0 1

    左屏幕旋转 - 触摸面板安装不正确 xinput set-prop "USB Touchscreen 6615:0001" --type=float "坐标变换矩阵" 0 1 0 1 0 0 0 0 1

    右屏幕旋转 - 正确安装触摸面板 xinput set-prop "USB Touchscreen 6615:0001" --type=float "坐标变换矩阵" 0 1 0 1 0 0 0 0 1

    右屏幕旋转 - 触摸面板安装不正确

    xinput set-prop "USB Touchscreen 6615:0001" --type=float "坐标变换矩阵" 0 -1 1 -1 0 1 0 0 1

    希望这对将来的人有所帮助

    • 2
  2. Simon L
    2022-02-18T04:53:39+08:002022-02-18T04:53:39+08:00

    以防万一其他人偶然发现该线程正在寻找一种使用特定旋转配置指向显示器的指针的方法,我将在此处链接我的脚本:https ://github.com/SimonLammer/dotfiles/blob/0b98315b06b9393df6235457007b84831f1646f5/data /scripts/xinput-配置指针

    #!/bin/sh
    # Limits a pointer to a display with an orientation.
    # This can be used to limit a rotated graphics tablet to one display.
    
    set -e
    
    ZENITY='zenity --width 500 --height 500'
    
    # Select pointer
    pointers=`xinput | grep pointer | tail -n +2 | sed -E 's/[^a-zA-Z0-9]*((\S+ ?)+[a-zA-Z0-9\(\)]+)\s*id=([0-9]+)\s*(.*)/"\3" "\1" "\4"/'`
    #echo $pointers
    pointer=`echo $pointers | xargs $ZENITY --list --text "Choose a pointer" --column Id --column Name --column Info`
    #echo $pointer
    
    # Select display
    displays=`xrandr | grep \ con | sed -E 's/(\S+)[^0-9]*(.*)/"\1" "\2"/'`
    #echo $displays
    display=`echo $displays | xargs $ZENITY --list --text "Choose a display" --column Id --column Info`
    #echo $display
    
    # Map pointer to display to get initial coordinate transformation matrix
    xinput map-to-output "$pointer" "$display"
    mat0=`xinput list-props $pointer | grep "Coordinate Transformation Matrix" | cut -d ':' -f 2`
    
    # Select orientation
    o1="0°C"
    o2="90°C"
    o3="180°C"
    o4="270°C"
    orientation=`$ZENITY --list --text "Choose an orientation" --column Orientation --column Name "$o1" "Normal" "$o2" "Rotate left" "$o3" "Invert" "$o4" "Rotate right"`
    # https://wiki.ubuntu.com/X/InputCoordinateTransformation
    if [ "$orientation" = "$o1" ]; then
      mat1="1 0 0 0 1 0 0 0 1"
    elif [ "$orientation" = "$o2" ]; then
      mat1="0 -1 1 1 0 0 0 0 1"
    elif [ "$orientation" = "$o3" ]; then
      mat1="-1 0 1 0 -1 1 0 0 1"
    else
      mat1="0 1 0 -1 0 1 0 0 1"
    fi
    
    # Multiply matrices (mat2 = mat0 * mat1)
    # https://www.mymathtables.com/calculator/matrix/3-cross-3-matrix-multiplication.html
    perl_expr="@a=split(/,? /,'$mat0');@b=split(/ /,'$mat1');print \"\"\
      .(\$a[0]*\$b[0]+\$a[1]*\$b[3]+\$a[2]*\$b[6]).\" \".(\$a[0]*\$b[1]+\$a[1]*\$b[4]+\$a[2]*\$b[7]).\" \".(\$a[0]*\$b[2]+\$a[1]*\$b[5]+\$a[2]*\$b[8]).\" \"\
      .(\$a[3]*\$b[0]+\$a[4]*\$b[3]+\$a[5]*\$b[6]).\" \".(\$a[3]*\$b[1]+\$a[4]*\$b[4]+\$a[5]*\$b[7]).\" \".(\$a[3]*\$b[2]+\$a[4]*\$b[5]+\$a[5]*\$b[8]).\" \"\
      .(\$a[6]*\$b[0]+\$a[7]*\$b[3]+\$a[8]*\$b[6]).\" \".(\$a[6]*\$b[1]+\$a[7]*\$b[4]+\$a[8]*\$b[7]).\" \".(\$a[6]*\$b[2]+\$a[7]*\$b[5]+\$a[8]*\$b[8]).\" \"\
      .\"\\n\""
    #echo $perl_expr
    mat2=`perl -E "$perl_expr"`
    
    xinput set-prop "$pointer" --type=float "Coordinate Transformation Matrix" $mat2
    
    • 0

相关问题

  • 平板电脑上的触摸屏和鼠标无法正常工作[关闭]

  • 设置 3M 串行触摸屏

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve