多X-Screens环境下触摸屏输入分配问题求助
解决X-Screens多屏触摸输入分配问题
我之前也碰到过一模一样的问题!当用独立X-Screens(不是Xinerama扩展桌面)时,xinput默认只会和当前活动的Screen交互,所以要搞定这个得给xinput指定目标Screen的Display参数才行。
步骤1:确认每个Screen对应的Display和设备
先列出所有Screen的触摸设备,分别执行:
xinput --list --display :0.0 xinput --list --display :0.1这样你就能看到Screen 0(
:0.0)下的设备列表,找到你的触摸控制器(id 10)是不是在里面——之前看不到就是因为没指定对应Screen的Display。再确认DP-1属于哪个Screen,用
xrandr --listmonitors,输出里会显示每个显示器对应的Screen编号(比如0: +*DP-1 1920/531x1080/299+0+0里的0就是Screen编号,对应Display:0.0)。
步骤2:将触摸设备映射到目标显示器
找到DP-1对应的Display(比如:0.0)后,执行以下命令:
xinput --display :0.0 map-to-output 10 DP-1
这条命令会直接把id为10的触摸控制器绑定到Screen 0的DP-1显示器上,马上就能生效。
步骤3:让设置永久生效
如果重启后失效,可以把这个命令加到你的桌面启动脚本里:
- 比如GNOME可以添加到「启动应用程序」里,KDE可以加到「自动启动」项;
- 或者编辑
~/.xinitrc(如果用startx启动),在启动桌面环境前加上这条命令。
额外排查:如果设备没出现在目标Screen的列表里
如果执行xinput --list --display :0.0还是看不到触摸设备,可能需要修改Xorg配置文件,把触摸设备强制关联到目标Screen:
- 编辑
/etc/X11/xorg.conf或者新建/etc/X11/xorg.conf.d/90-touchscreen.conf; - 在对应的
Screen段里添加InputDevice配置,示例如下:Section "Screen" Identifier "Screen0" Device "Card0" Monitor "DP-1" InputDevice "Touchscreen" "CorePointer" EndSection Section "InputDevice" Identifier "Touchscreen" Driver "libinput" # 或者你的触摸设备对应的驱动,比如evdev Option "Device" "/dev/input/eventX" # 替换成你的触摸设备的event路径,用`ls /dev/input/`查找 EndSection - 重启Xorg或者系统后,设备应该就会出现在Screen 0的设备列表里了。
内容的提问来源于stack exchange,提问作者user794763
相关产品推荐
相关产品推荐

