Kubuntu 20.04 带扩展显示屏。笔记本电脑屏幕没有触摸屏。外接屏幕是触摸屏。当触摸外接屏幕的中心时,鼠标指向两个屏幕之间的边界。触摸屏的宽度计算为两个屏幕的宽度总和。
我怎样才能让触摸屏只适合外接屏幕?另外,这是一个便携式屏幕。所以我想让断开连接之间的更改永久生效。
sza@sza-Lenovo-ThinkBook-15-IIL:~$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech M705 id=12 [slave pointer (2)]
⎜ ↳ Logitech K750 id=13 [slave pointer (2)]
⎜ ↳ G2Touch Multi-Touch by G2TSP id=9 [slave pointer (2)]
⎜ ↳ Elan Touchpad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Integrated Camera: Integrated C id=11 [slave keyboard (3)]
↳ Ideapad extra buttons id=15 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]
↳ Logitech K750 id=17 [slave keyboard (3)]
sza@sza-Lenovo-ThinkBook-15-IIL:~$ xinput list-props 9
Device 'G2Touch Multi-Touch by G2TSP':
Device Enabled (172): 1
Coordinate Transformation Matrix (174): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (312): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (313): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Modes Available (295): 1, 0
libinput Send Events Mode Enabled (296): 0, 0
libinput Send Events Mode Enabled Default (297): 0, 0
Device Node (298): "/dev/input/event4"
Device Product ID (299): 10900, 22093
sza@sza-Lenovo-ThinkBook-15-IIL:~$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
1920x1080 60.06*+ 60.01 59.97 59.96 59.93
...
DP-1 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 344mm x 195mm
1920x1080 60.00*+ 50.00 59.94 30.00 29.97
...
HDMI-1 disconnected (normal left inverted right x axis y axis)
答案1
您可能会发现以下内容xinput
感兴趣的选项:
--map-to-output device crtc
Restricts the movements of the absolute device to the RandR
crtc. The output name must match a currently connected output
(see xrandr(1)). If the NVIDIA binary driver is detected or
RandR 1.2 or later is not available, a Xinerama output may be
specified as "HEAD-N", with N being the Xinerama screen number.
This option has no effect on relative devices.
根据您提供的信息,以下命令可能会执行您需要的操作:
xinput --map-to-output "G2Touch Multi-Touch by G2TSP" DP-1
如果此命令满足您的要求,您可以将udev
其设置为在触摸屏连接时运行。但是,xinput
直接调用时不起作用,因为udev
它是在 X 之外运行的系统服务。需要在 X 内部创建一个可以通知的监视程序脚本udev
。
安装
inotify-tools
。创建观察器脚本。将其设置为在用户登录 X 后运行。这可以通过显示管理器或桌面环境完成,具体取决于您希望脚本为所有用户运行还是为选定用户运行。
#!/usr/bin/env bash inotifywait -m /tmp | while read path action file; do if [[ "$file" =~ touchscreen-attach ]] ; then [[ "$action" = "OPEN" ]] && sleep 1 && xinput --map-to-output "G2Touch Multi-Touch by G2TSP" DP-1 fi done
用于
lsusb
获取触摸屏的设备 ID。其格式为 idVendor:idProduct(例如 2a94:564d)。创建文件
/etc/udev/rules.d/10-touchscreen.rules
:ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="2a94", ATTRS{idProduct}=="564d", RUN+="touch /tmp/touchscreen-attach"
也可以看看:
杰克丹尼指出KDE 具有与图形输入板相关的输入设置。它们适用于我的 Wacom 平板电脑,但不适用于我的笔记本电脑触摸屏。如果这适用于您的外接触摸屏,则设置起来会比我上面描述的容易得多。
答案2
我做了同样的事情,但笔记本电脑是触摸的。也使用 kubuntu。如果您进入系统设置 > 输入设备 > 图形输入板。在那里,您选择名为“触摸”的选项卡,然后选择名为“将触摸区域映射到屏幕”的选项。单击“切换屏幕”以选择您希望触摸聚焦的屏幕。默认情况下,两个屏幕上都选中它。
您还可以检查此网站来创建一个脚本,该脚本将允许您在启动时自动选择监视器。
https://networks.guru/2018/11/23/using-dual-monitor-dual-touch-screens-on-ubuntu/
PS 该脚本仅在启动系统时有效。如果断开屏幕或更改为单屏,触摸可能会恢复为共享。仍在尝试弄清楚如何使更改永久生效或修改脚本以包括屏幕更改和连接/断开连接。