You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配名称含特殊字符(含回车)的Xinput触摸设备并切换其方向?

如何匹配名称含特殊字符(含回车)的Xinput触摸设备并切换其方向?

这种带换行的设备名确实挺闹心的,我之前处理过类似的情况,给你分享几个实用的解决思路,完美避开那个奇葩的设备名:

方法一:用固定硬件属性动态获取设备ID

设备的Xinput ID会变,但硬件的Product ID、Vendor ID这些属性是天生固定的,我们可以靠这个精准定位:

  1. 先运行 xinput list --long,找到你的触摸设备,记下它的Product ID(格式一般是1234:5678这种)
  2. 用下面的命令自动获取当前设备ID,然后直接设置变换矩阵:
    # 把这里的PRODUCT_ID换成你设备的实际值
    PRODUCT_ID="1234:5678"
    TOUCH_ID=$(xinput list --id-only | xargs -I {} xinput list-props {} | grep -B10 -A10 "$PRODUCT_ID" | grep -E "^[0-9]+" | head -n1)
    xinput set-prop $TOUCH_ID --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
    
    这个命令会遍历所有输入设备,找到匹配Product ID的那个,自动提取它的当前ID,完全不用管奇葩的设备名。

方法二:直接匹配设备名片段(忽略换行)

如果不想记硬件ID,也可以用命令工具的特殊选项处理换行符:
设备名里的回车本质是换行符\n,我们可以用-z选项让工具把整个带换行的设备名当成一个完整字符串处理:

xinput list --name-only -z | grep -z "Touch Touch Device.*MF40WH00U-CT-A1-6P" | xargs -0 -I {} xinput set-prop "{}" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1

简单解释下各部分的作用:

  • xinput list --name-only -z:用空字符分隔每个设备名,确保带换行的名字不会被拆成两段
  • grep -z "Touch Touch Device.*MF40WH00U-CT-A1-6P":匹配同时包含前后两段文本的设备名,.*会自动匹配中间的换行
  • xargs -0:同样用空字符分隔输入,保证完整的设备名能传递给xinput

方法三:给设备设固定别名(一劳永逸)

如果每次开机都要跑命令嫌麻烦,还可以用udev规则给设备起个固定别名,以后直接用别名操作:

  1. 先找到设备的Vendor ID和Product ID,运行:
    udevadm info --name=/dev/input/eventX --attribute-walk | grep -E "idVendor|idProduct"
    
    (把eventX换成你触摸设备对应的节点,从xinput list --long的输出里能找到)
  2. 在/etc/udev/rules.d/目录下新建一个规则文件,比如99-custom-touchscreen.rules,写入:
    SUBSYSTEM=="input", ATTRS{idVendor}=="你的Vendor ID", ATTRS{idProduct}=="你的Product ID", SYMLINK+="input/my_touchscreen"
    
  3. 重新加载udev规则并生效:
    udevadm control --reload-rules && udevadm trigger
    
  4. 之后就可以直接用别名设置变换矩阵了:
    xinput set-prop "my_touchscreen" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
    

备注:内容来源于stack exchange,提问作者Moder New

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:49:38