通过 HDMI + 重新映射外部显示器的触摸屏强制刷新率?

通过 HDMI + 重新映射外部显示器的触摸屏强制刷新率?

我希望有人能够帮助我,因为我正在失去神经。我正在开发 F37 Silverblue + Wayland / X11。系统有 nVidia Optimus,带有专有的 nVidia 驱动程序(不是 Nouveau)。

最近购买了外部触摸屏显示器来帮助我进行设置。该显示器名义上通过 HDMI 或 USB-C 支持高达 1080p 的分辨率(但我没有支持 USB-C 的视频输出,所以我必须使用 HDMI)。触摸屏输出通过 USB 电缆发送,并通过同一电缆接收电力。

====== 通过 HDMI 强制特定 (60Hz) 刷新率 ======

我注意到这款显示器最持久的问题是,它拒绝将自己设置为 59 或 60 Hz 之外的任何刷新率(尽管它报告说它支持高达 120 Hz - 我可以在 Gnome 设置中选择此设置,但要徒劳无功)。

这对我来说没问题,除非当我尝试镜子笔记本电脑显示屏(也是 1080p)时,显示器关闭并显示未找到输入设备。现在,同样的问题发生在延伸如果我尝试将其设置为 120 / 100 / 50 / 30 / 29 / 等赫兹。

我认为问题在于,当我尝试镜像显示器时,Fedora / Gnome / 任何人都试图将显示器恢复到 120 Hz(因为理论上这就是它最大支持的信号)。这使得它拒绝输入信号并拒绝显示任何内容。或者,Gnome 可能会尝试克隆我的集成笔记本电脑显示器的刷新率,奇怪的是,它设置为 60.02 Hz,因此它高于 60 Hz,因此它也会被拒绝。

不幸的是,在镜像时,我无法设置(60Hz)刷新率——Gnome 设置中没有这样的选项。只有当我使用外接显示器来扩展显示时,我才能做到这一点。

我注意到的另一个奇怪的事情是,如果我降低外部触摸屏显示器的分辨率(例如 1440 x 900),我现在可以克隆显示器并将其用作触摸屏 - 但当然,图像看起来很糟糕。

我该如何诊断这个问题,特别是强制/限制 HDMI 仅以 60 Hz 输出,无论显示器支持什么信号?

====== 触摸屏输出的持久重新映射 ======

我的第二个问题是触摸屏。它始终有效(即使显示器本身没有显示任何内容,也会发出触摸输出),检测多个手指等。问题是它总是以某种方式映射到我的笔记本电脑屏幕。因此,我可以盲目地触摸和拖动出现在笔记本电脑主显示屏上的窗口等,但我在外部触摸屏显示器上看不到它们。并且出现在外部触摸屏显示器上的窗口不受触摸影响(即因为它映射在主显示器上)。

无论我将外部触摸屏显示器放在 Gnome 设置中的哪个位置(笔记本电脑屏幕的左侧、右侧、上方、下方),或者选择它作为主显示器还是辅助显示器,触摸屏输出都会持续映射到笔记本电脑显示器。只有当我关闭笔记本电脑显示器时,图像才会仅显示在外部触摸屏显示器上,然后我才能将其用作触摸设备 - 但随后我有一个显示器未用于任何用途。

当然,如果我降低分辨率,我可以克隆显示器,然后触摸输出对应于屏幕上显示的内容 - 但它看起来很糟糕。

我在某个地方发现 Fedora / Wayland 使用 mutter 发送触摸输入 - 但我找不到任何地方如何像 xinput 那样配置 mutter。

我想问题是:如何一致地将触摸屏重新映射到适当的显示器?

====== X11 ======

如果我在 Xorg 下登录,我无法将任何内容输出到外部触摸屏。没有任何效果,也没有降低分辨率,降低/设置刷新率,没有任何效果。只有触摸屏手指输出有效,可能是因为它是某种单独的设备。

这是以下的输出xrandr

[username]@fedora37 ~]$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
   1920x1080     60.02*+  60.01    59.97    59.96    59.93  
   1680x1050     59.95    59.88  
   1400x1050     59.98  
   1600x900      59.99    59.94    59.95    59.82  
   1280x1024     60.02  
   1400x900      59.96    59.88  
   1280x960      60.00  
   1440x810      60.00    59.97  
   1368x768      59.88    59.85  
   1280x800      59.99    59.97    59.81    59.91  
   1280x720      60.00    59.99    59.86    59.74  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   1024x576      59.95    59.96    59.90    59.82  
   960x600       59.93    60.00  
   960x540       59.96    59.99    59.63    59.82  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   864x486       59.92    59.57  
   700x525       59.98  
   800x450       59.95    59.82  
   640x512       60.02  
   700x450       59.96    59.88  
   640x480       60.00    59.94  
   720x405       59.51    58.99  
   684x384       59.88    59.85  
   640x400       59.88    59.98  
   640x360       59.86    59.83    59.84    59.32  
   512x384       60.00  
   512x288       60.00    59.92  
   480x270       59.63    59.82  
   400x300       60.32    56.34  
   432x243       59.92    59.57  
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
DP-1-0 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   1920x1080     60.00 + 120.00*  100.00    60.00    59.94    50.00    29.97    25.00    23.98  
   1440x900      59.89  
   1400x1050     59.98  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    72.81    59.94  
  1280x1024 (0x50) 108.000MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock  63.98KHz
        v: height 1024 start 1025 end 1028 total 1066           clock  60.02Hz
  1280x960 (0x53) 108.000MHz +HSync +VSync
        h: width  1280 start 1376 end 1488 total 1800 skew    0 clock  60.00KHz
        v: height  960 start  961 end  964 total 1000           clock  60.00Hz
  1024x768 (0x61) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x70) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  800x600 (0x71) 36.000MHz +HSync +VSync
        h: width   800 start  824 end  896 total 1024 skew    0 clock  35.16KHz
        v: height  600 start  601 end  603 total  625           clock  56.25Hz
  640x480 (0x7d) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz

我更喜欢通过 Wayland 来解决这些问题,但 X11 是第二好的选择。有没有 GUI 工具可以解决此类问题?我还是个新手。

答案1

想象一下,但我设法解决了它。不幸的是,这只能通过 X11 来解决。

X11下的解决方案:

1. 将nVidia设为主显卡,以避免切换和黑屏/外屏无输入信息:

首先,您需要切换到X11。注销并在登录屏幕中,单击您的用户名后,右下角应该会出现一个小齿轮。单击它并选择GNOME on Xorg

然后你需要编辑你的nvidia.conf文件。在 Silverblue 上执行此操作有点困难,因为 root 被锁定。但是您可以通过进入终端并输入 来编辑根文件系统sudo rpm-ostree admin unlock --hotfix。该--hotfix标签会“永久”保留您对根文件系统所做的更改,即 rpm-ostree 不会恢复到旧快照,并且不会恢复到 nvidia.conf 的未修改版本。

不要让编辑根文件系统成为一种习惯。避免它,就像你的生命依赖它一样。不可变发行版锁定它是有充分理由的。

然后将 nvidia.conf 从 /usr 复制到 /etc:sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf

找到新复制的文件并进行编辑sudo nano nvidia.conf。它应该看起来像这样:

#This file is provided by xorg-x11-drv-nvidia
#Do not edit

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "SLI" "Auto"
    Option "BaseMosaic" "on"
EndSection

Section "ServerLayout"
    Identifier "layout"
    Option "AllowNVIDIAGPUScreens"
EndSection

将其添加到每个部分:Option "PrimaryGPU" "yes"

所以:

#This file is provided by xorg-x11-drv-nvidia
#Do not edit

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "SLI" "Auto"
    Option "BaseMosaic" "on"
    Option "PrimaryGPU" "yes"
EndSection

Section "ServerLayout"
    Identifier "layout"
    Option "AllowNVIDIAGPUScreens"
    Option "PrimaryGPU" "yes"
EndSection

保存,退出,然后重新启动。这将迫使X11使用nVidia作为主显卡。您可以通过在终端中输入:来检查这一点glxinfo | egrep "OpenGL vendor|OpenGL renderer"。如果在 OpenGL 供应商和渲染器下都显示 nVidia,那么您就可以开始了。

2. 强制外部显示器刷新率:

现在您已经强制使用 nVidia 驱动程序,使用外部显示器应该会容易得多。它甚至可能按预期显示和工作。

但如果没有,可能可以通过修复xrandr。输入(或者首先在工具箱/终端/发行版/使用 dnf / 使用 apt / 使用 rpm-ostree / 等等安装),xrandr你应该得到你的主计算机/笔记本电脑屏幕以及连接到 HDMI 的外部屏幕。就我而言,它显示为HDMI-0

要强制分辨率和刷新率,您可以使用 xrandr,如下所示:xrandr --output HDMI-0 --mode 1920x1080 --rate 60--mode处理分辨率,--rate处理刷新率。请注意,您的屏幕可能支持 59.94 或其他一些奇怪的刷新率。当键入不带任何参数的 xrandr 时,会显示支持的(理论上)。

如果成功,您的外部屏幕现在应该显示桌面并且工作正常。剩下的问题是触摸屏,因为我的触摸屏继续映射到我的笔记本电脑屏幕而不是它本身。

3. 将触摸屏输入重新映射到外部屏幕:

要重新映射触摸屏,我们需要另一个名为 的 X11 实用程序xinput。输入xinput终端(或先安装它),您应该会得到一个输入设备列表。其中应该有您的触摸屏设备。类似 ELAN 触摸屏或 Wacom 触摸屏或类似设备。记住右侧的 ID 号。

现在,我们还可以使用xinput它来重新映射输入。我们通过输入: 来做到这一点xinput map-to-output 10 HDMI-010是我的触摸屏的 ID 号,可能会有所不同。HDMI-0是之前提供的外部屏幕的名称xrandr

4.韦兰?

不幸的是,这在 Gnome(Fedora 或其他)上的 Wayland 下是不可撤销的。原因是 Gnome 使用嘀咕(一个 Wayland 合成器),而 mutter 太有限了。它没有用于重新映射的工具,它尝试自行完成所有操作并失败,用户几乎根本无法维修。当有更好的选择(例如 sway、sddm 等)时,我无法选择 mutter。

所以,如果你想在 GNOME 下实现这一点,请坚持使用 X11。

答案2

您的外接触摸屏显示器似乎面临两个问题:第一个问题是显示器拒绝将自身设置为 59 或 60 Hz 之外的任何刷新率,第二个问题是触摸屏输出始终映射到您的显示器。笔记本电脑屏幕。

关于第一个问题,Fedora/Gnome 可能会尝试将显示恢复到 120 Hz,因为这是显示器发出的最大支持频率。您可以尝试通过将以下行添加到文件中来强制 HDMI 仅以 60 Hz 输出/etc/X11/xorg.conf

Section "Monitor"
    Identifier "HDMI-1-0"
    Option "PreferredMode" "1920x1080_60.00"
EndSection

这会强制 HDMI 以 60 Hz 而不是 120 Hz 的频率输出。

关于第二个问题,您可以尝试使用命令将触摸屏重新映射到适当的显示器xinput。您可以使用该xinput list命令获取输入设备及其 ID 的列表,然后使用该xinput map-to-output命令将触摸屏重新映射到适当的显示器。例如,触摸屏设备ID为12,显示器名称为HDMI-1-0,则可以执行以下命令:

xinput map-to-output 12 HDMI-1-0

这应该将触摸屏重新映射到 HDMI-1-0 显示器。您可能需要调整设备 ID 和显示器名称以匹配您的系统配置。

如果您使用 Wayland,您可以尝试使用该wlr-touch实用程序将触摸屏重新映射到适当的显示器。您可以使用以下命令安装它:

sudo dnf install wlr-touch

安装后,您可以运行以下命令将触摸屏重新映射到适当的显示器:

wlr-touch output HDMI-1-0

同样,您可能需要调整显示器名称以匹配您的系统配置。

相关内容