Tablet Digimend, proporções da área de desenho físico muito pequenas

Tablet Digimend, proporções da área de desenho físico muito pequenas

Relacionado:Monitor LCD FullHD lido como 1024x768 CRT, problema de resolução errada

Tive problemas com meu cabo DVI no meu digitalizador yiynova mvp22u, ele não está mais transmitindo dados EDID, por acaso não tinha uma cópia dos dados EDID do monitor, então para obter a resolução correta do monitor usei o EDID de um monitor diferente, isso resolveu o problema de resolução de tela incorreta, mas criou um novo problema.

A área do ponteiro está corretamente confinada à tela que está abaixo da minha outra tela por meio de

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

O monitor do meu tablet está abaixo de outro monitor LCD 1080p.

No entanto, o problema que surgiu é que a área de desenho ativa na tela está completamente desproporcional em relação à área de desenho ativa nos drivers. Ou, para simplificar,

No momento, se eu desenhar com minha caneta no tablet, uma pequena área no canto superior esquerdo da tela arrastará meu ponteiro por toda a tela, estamos falando aproximadamente de uma área de 1x1 polegada sendo traduzida para toda a tela de 22 polegadas área. Se eu mover a caneta para fora desta área 1x1, o ponteiro irá para os cantos da tela.

Estou usando digimend e evdev, esses são os parâmetros com os quais tenho que trabalhar.

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

O mais provável de resolver meu problema seria "Matriz de Transformação de Coordenadas", mas não tenho absolutamente nenhuma ideia de como funciona, li muito sobre isso on-line, mas não faz nenhum sentido para mim.

Eu gostaria de poder trocar meu cabo e obter o EDID correto dessa forma, mas isso não é uma opção, pois o cabo está embutido na tela.

Qualquer ajuda seria muito apreciada.

Responder1

Eu resolvi, foi mais simples do que eu pensava, usei o driver windows da Nvidia para criar uma resolução personalizada para a tela, depois salvei o EDID que isso criou em um arquivo (esse era basicamente apenas um EDID que não dizia nada além de que a tela suporta resolução 1920x1080, em teoria qualquer EDID com essa resolução deveria ter funcionado) eu extraí usandonirsoft MonitorInfoViewe salvei-o em um arquivo binário.

Depois disso, para que a tela rodasse na resolução correta no X11 na nvidia, tive que definir uma opção em xorg.conf.d/10-monitor.conf para dizer ao X para usar este EDID para a tela (parecia algo assim:)

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

Onde DVI-I-0 é a porta DVI à qual xrandr disse que meu tablet estava conectado.

^ era aqui que eu estava quando escrevi a pergunta original. No entanto, o que eu não percebi até agora é que os drivers Digimend aparentemente extraem os dados de informações de resolução do kernel/kms, não do X11. (mais ou menos como Wayland)

Portanto, para resolver esse problema, tive que mover meu arquivo EDID personalizado para:

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

e então para finalmente resolvê-lo e fazer o KMS ler o edit para esta exibição eu tive que adicionar esta linha à linha de comando do kernel (se você usar o grub você poderá definir isso em /etc/default/grub, você tem que execute grub-mkconfig e reinicie para que as configurações tenham efeito)

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

(observe que você também pode pular a parte DVI-I-0 e apenas escrever '...=edid/edidfilename.bin' )

Isso resolve o problema que eu estava enfrentando, o restante agora pode ser configurado com êxito por meio dos arquivos xinput ou xorg.conf, definindo a calibração do eixo evdev para o tablet para restaurá-lo à funcionalidade anterior. Espero que isso ajude alguém, você não precisa ter o mesmo tablet (o mesmo provavelmente pode acontecer com qualquer tablet monitor compatível com Digimend)

Parece que finalmente posso parar de desenhar no Windows :D

informação relacionada