Surface Go初代在WattOS(Debian 12 LXDE)左旋转屏幕后手写笔坐标变换矩阵设置失效求助
Surface Go初代在WattOS(Debian 12 LXDE)左旋转屏幕后手写笔坐标变换矩阵设置失效求助
我太懂这种折腾手写笔适配的糟心感了!之前帮朋友调过Surface设备在Debian系系统下的旋转适配,给你几个实际可行的方向试试:
先确认设备的准确属性
有时候设备名或者对应的变换属性可能和你想的不一样,先跑这两个命令摸清楚底细:
# 列出所有输入设备,找到手写笔的ID(比如可能是12之类的数字) xinput list # 查看该设备的所有属性,重点找和坐标变换、旋转相关的项 xinput list-props <手写笔ID>
有些触控设备会用libinput Calibration Matrix代替通用的Coordinate Transformation Matrix,先确认对的属性名再调。
用正确的左旋转矩阵试试
你之前用的单位矩阵肯定起不到旋转作用,针对屏幕左旋转(逆时针90度),结合你1200x1800的分辨率,正确的变换矩阵应该是这样的:
xinput set-prop 'ELAN9038:00 04F3:261A Stylus stylus' --type=float 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
简单解释下这个矩阵的逻辑:把原x轴映射到旋转后的y轴,原y轴反向映射到旋转后的x轴,同时调整偏移量让坐标完全对齐屏幕。
试试让输入设备绑定到屏幕自动适配
LXDE虽然轻量,但可以尝试用xrandr指定屏幕旋转,再把手写笔绑定到屏幕,让系统自动处理坐标:
# 先找到你的内置屏幕名,比如一般是eDP-1,用xrandr命令可以看到 xrandr --output eDP-1 --rotate left # 把手写笔绑定到这个屏幕,替换<手写笔ID>为实际ID xinput map-to-output <手写笔ID> eDP-1
这样操作后,系统可能会自动帮你适配旋转后的坐标,不用手动算矩阵。
写个持久化的配置文件(一劳永逸)
如果每次重启都要输命令太麻烦,可以在/etc/X11/xorg.conf.d/目录下新建一个配置文件,比如99-libinput-surface-stylus.conf,内容如下:
Section "InputClass" Identifier "Surface Go Stylus" MatchProduct "ELAN9038:00 04F3:261A Stylus stylus" Driver "libinput" # 左旋转对应的校准矩阵 Option "CalibrationMatrix" "0 -1 1 1 0 0 0 0 1" # 直接指定旋转方向 Option "Rotation" "left" EndSection
保存后重启X或者系统,下次开机就自动生效了。
如果还是不行,建议用evtest工具看看手写笔的原始输入坐标,确认是不是硬件识别的问题:
# 先安装evtest sudo apt install evtest # 运行后选择手写笔对应的设备,移动手写笔看输出的坐标值,判断原始输入是否正常 evtest
备注:内容来源于stack exchange,提问作者Mark Harris
相关产品推荐
相关产品推荐

