
有關的:全高清液晶顯示器讀取為 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