Digimend 平板电脑,物理绘图区域比例太小

Digimend 平板电脑,物理绘图区域比例太小

有关的:全高清液晶显示器读取为 1024x768 CRT,分辨率错误问题

我的 yiynova mvp22u 数字化仪上的 DVI 电缆出现问题,它不再传输 EDID 数据,我碰巧没有显示器的 EDID 数据副本,因此为了获得正确的显示器分辨率,我使用了来自不同的显示器,这解决了屏幕分辨率错误的问题,但又产生了一个新问题。

指针的区域正确地限制在我的另一个屏幕下方的屏幕上

xinput set-prop 8 "Evdev Axis Calibration" 0 2040 -2000 2020

我的平板电脑显示器低于另一台 1080p 液晶显示器。

然而,出现的问题是屏幕上的活动绘图区域与驱动程序中的活动绘图区域完全不成比例。或者更简单地说,

现在,如果我用手写笔在平板电脑上绘图,屏幕左上角的一个小区域会将我的指针拖过整个屏幕,我们大致说的是 1x1 英寸的区域正在转换为整个 22 英寸的屏幕区域。如果我将触控笔移出该 1x1 区域,指针将进入屏幕的角落。

我正在使用 digimend 和 evdev,这些是我必须使用的参数。

xinput list-props 8
Device 'UC-LOGIC 21.5" Tablet Monitor Pen':
    Device Enabled (152):   1
    Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (278): 0
    Device Accel Constant Deceleration (279):   1.000000
    Device Accel Adaptive Deceleration (280):   1.000000
    Device Accel Velocity Scaling (281):    10.000000
    Device Product ID (271):    21827, 77
    Device Node (272):  "/dev/input/event9"
    Evdev Axis Inversion (282): 0, 0
    Evdev Axis Calibration (283):   0, 2040, -2000, 2020
    Evdev Axes Swap (284):  0
    Axis Labels (285):  "Abs X" (275), "Abs Y" (276), "Abs Pressure" (277)
    Button Labels (286):    "Button Unknown" (274), "Button Unknown" (274), "Button Unknown" (274), "Button Wheel Up" (158), "Button Wheel Down" (159), "Button Horiz Wheel Left" (160), "Button Horiz Wheel Right" (161)
    Evdev Scrolling Distance (287): 0, 0, 0
    Evdev Middle Button Emulation (288):    0
    Evdev Middle Button Timeout (289):  50
    Evdev Middle Button Button (290):   2
    Evdev Third Button Emulation (291): 0
    Evdev Third Button Emulation Timeout (292): 1000
    Evdev Third Button Emulation Button (293):  3
    Evdev Third Button Emulation Threshold (294):   20
    Evdev Wheel Emulation (295):    0
    Evdev Wheel Emulation Axes (296):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (297):    10
    Evdev Wheel Emulation Timeout (298):    200
    Evdev Wheel Emulation Button (299): 4
    Evdev Drag Lock Buttons (300):  0

最有可能解决我的问题的是“坐标变换矩阵”,但我完全不知道它是如何工作的,我在网上阅读了很多有关它的内容,但它对我来说根本没有任何意义。

我希望我可以更换电缆并以这种方式获取正确的 EDID,但这不是一个选项,因为电缆嵌入在屏幕中。

任何帮助将不胜感激。

答案1

我解决了它,它比我想象的要简单,我使用 Nvidia 的 Windows 驱动程序为屏幕创建自定义分辨率,然后我将创建的 EDID 保存到一个文件中(这基本上只是一个 EDID,除了屏幕之外什么也没说支持 1920x1080 分辨率,理论上任何具有该分辨率的 EDID 都应该可以工作)我使用提取它nirsoft 监控信息查看器并将其保存到二进制文件中。

之后,为了让屏幕在 nvidia 下的 X11 中以正确的分辨率运行,我必须在 xorg.conf.d/10-monitor.conf 中设置一个选项来告诉 X 在屏幕上使用此 EDID(看起来像是像这样:)

Section "Screen"
    Identifier             "Screen0" 
    Device                 "Device0" 
    Monitor                "Monitor0"
    DefaultDepth           24
    Option                 "CustomEDID" "DVI-I-0:/path/to/edidfilename.bin"
    SubSection             "Display"
        Depth              24
    EndSubSection
EndSection

其中 DVI-I-0 是 xrandr 所说的我的平板电脑已插入的 DVI 端口。

^这是我写原始问题时所处的位置。然而,直到现在我才意识到,digimend 驱动程序显然是从内核/kms 中提取分辨率信息数据,而不是 X11。 (有点像韦兰)

因此,为了解决此问题,我必须将自定义 EDID 文件移至:

/usr/lib/firmware/edid/edidfilename.bin

然后为了最终解决它并让 KMS 读取此显示的 edid,我必须将此行添加到内核命令行(如果您使用 grub,您将能够在 /etc/default/grub 中设置它,您必须运行 grub-mkconfig 并重新启动以使设置生效)

drm_kms_helper.edid_firmware=DVI-I-0:edid/edidfilename.bin

(请注意,您也可以跳过 DVI-I-0 部分,只写 '...=edid/edidfilename.bin' )

这解决了我面临的问题,现在可以通过 xinput 或 xorg.conf 文件成功配置其余部分,方法是设置平板电脑的 evdev 轴校准,将其恢复到以前的功能。我希望这对某人有帮助,您不必拥有相同的平板电脑(任何 digimend 支持的显示器平板电脑都可能发生同样的情况)

看来我终于可以停止在 Windows 上绘图了 :D

相关内容