
関連している:FullHD LCD モニターが 1024x768 CRT として読み取られ、解像度が間違っている問題
yiynova mvp22u デジタイザの DVI ケーブルに問題があり、EDID データが送信されなくなりました。モニターの EDID データのコピーがなかったので、モニターの解像度を正しくするために別のモニターの EDID を使用しました。これで画面解像度が間違っているという問題は解決しましたが、新しい問題が発生しました。
ポインターの領域は、他の画面の下にある画面に正しく制限されています。
xinput set-prop 8 "Evdev Axis Calibration" 0 2040 -2000 2020
私のタブレット モニターは別の 1080p LCD モニターの下にあります。
しかし、画面上のアクティブな描画領域がドライバーのアクティブな描画領域と完全に不釣り合いであるという問題が発生しました。もっと簡単に言えば、
現在、タブレット上でスタイラスを使って描画すると、画面の左上隅の小さな領域がポインターを画面全体にドラッグします。つまり、およそ 1 x 1 インチの領域が 22 インチの画面領域全体に変換されるということです。スタイラスをこの 1 x 1 領域の外側に移動すると、ポインターは画面の隅に移動します。
私は 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をファイルに保存しました(これは基本的に、画面が1920x1080の解像度をサポートしているというだけのEDIDでしたが、理論的にはその解像度のEDIDであればどれでも機能するはずです)。nirsoft モニター情報ビューバイナリファイルに保存しました。
その後、nvidia の X11 で画面を正しい解像度で実行するために、xorg.conf.d/10-monitor.conf でオプションを設定して、画面にこの EDID を使用するように X に指示する必要がありました (次のようになります)。
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 ドライバーは解像度情報データを X11 ではなくカーネル/kms から取得しているようです。(Wayland に似ています)
したがって、この問題を解決するには、カスタム 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' と記述することもできます)
これで、私が直面していた問題が解決しました。残りは、タブレットの evdev 軸キャリブレーションを設定して以前の機能を復元することで、xinput または xorg.conf ファイルを介して正常に構成できるようになりました。これが誰かの役に立つことを願っています。同じタブレットを持っている必要はありません (おそらく、digimend がサポートするモニター タブレットであればどれでも同じことが起こる可能性があります)。
ようやく Windows で絵を描くのをやめられそうです :D