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

1

Relacionados: Monitor LCD fullHD lido como 1024x768 CRT, problema de resolução errado

Eu tive problemas com meu cabo DVI em meu digitalizador yiynova mvp22u, ele não está mais transmitindo dados EDID, por acaso eu não tinha uma cópia dos dados EDID para o monitor, para obter a resolução do monitor correta. EDID de um monitor diferente, isso resolveu a questão de ter uma resolução de tela errada, 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

Meu monitor de tablet está abaixo de outro monitor de lcd de 1080p.

No entanto, o problema que surgiu foi que a área de desenho ativa na tela está completamente fora de proporção com a área de desenho ativa nos drivers. Ou, para simplificar,

Neste momento, se eu desenhar com a caneta no tablet, uma pequena área no canto superior esquerdo da tela arrastará meu ponteiro pela tela inteira, estamos falando que uma área de 1x1 polegadas está sendo traduzida para o toda a área da tela de 22 polegadas. Se eu mover a caneta para fora dessa á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 ser capaz de corrigir o meu problema seria "Matriz de Transformação de Coordenadas", mas eu não tenho absolutamente nenhuma idéia de como funciona, eu li um monte sobre isso online, mas não faz nenhum sentido para mim em tudo.

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

Qualquer ajuda seria muito apreciada.

    
por Cestarian 20.05.2017 / 16:59

1 resposta

0

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

Depois disso, para que a tela seja executada na resolução correta no X11 sob nvidia, eu tive que definir uma opção no 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, xrandr disse que meu tablet estava conectado.

^ é onde 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 das informações de resolução do kernel / kms, não do X11. (Meio como Wayland)

Então, para resolver esse problema, tive que mover meu arquivo EDID personalizado para:

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

e, finalmente, para resolvê-lo e fazer o KMS ler esse edid para esta exibição eu tive que adicionar esta linha à linha de comando do kernel (se você usar o grub você poderá configurar isto em / etc / default / grub, você tem que rodar o grub-mkconfig e reiniciar para que as configurações entrem em vigor)

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

(note 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 resto agora pode ser configurado com sucesso através de arquivos xinput ou xorg.conf, definindo a calibração do eixo evdev para o tablet para restaurá-lo à sua funcionalidade anterior. Espero que isso ajude alguém, você não tem que ter o mesmo comprimido (o mesmo pode acontecer com qualquer monitor tablet digimend suportado)

Parece que posso finalmente parar de desenhar no Windows: D

    
por 15.07.2017 / 23:53

Tags