A tela sensível ao toque está sendo reconhecida como um mouse

3

Eu pluguei uma tela sensível ao toque da 3M ao meu PC com Linux. Aparece como ele reconhece como um mouse. Aqui está minha xinput output:

xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=13   [slave  pointer  (2)]
⎜   ↳ 3M 3M USB Touchscreen - 36955             id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=10   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=11   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=14   [slave  keyboard (3)

Após o dispositivo de toque # modprobe -r usbtouchscreen parar de funcionar.

No Windows 7, ele funciona depois de instalar o driver de este site então eu também tentei instalar o driver Linux a partir daqui (Linux, Single Touch, 64 bits). Eu acho que o processo de instalação falha, pois ele é interrompido imediatamente após eu aceitar a licença (com 0 código de saída).

Eu testo minha touchscreen com o exemplo do Qt FingerPaint (também funciona no Windows , não funciona no Ubuntu). A depuração mostra que a entrada multitouch gera eventos de mouse.

Eu uso o Ubuntu 16.04 com o kernel 4.10.0-35-generic e experimentei os ambientes Unity e Cinnamon. Eu preciso disso trabalhando para fins de programação.

EDITAR:

Algumas saídas de ferramentas de diagnóstico:

# lsinput
...some other devices...
/dev/input/event12
bustype : BUS_USB
vendor  : 0x596
product : 0x1
version : 1088
name    : "3M 3M USB Touchscreen - 36955"
phys    : "usb-0000:00:14.0-3/input0"
bits ev : EV_SYN EV_KEY EV_ABS


# mtdev-test /dev/input/event12
015ee1f66c7c 00 1 014a 1
015ee1f66c7c 00 3 0000 12183
015ee1f66c7c 00 3 0001 7962
015ee1f66c7c 00 0 0000 0
015ee1f66c80 00 3 0000 12193
... etc ...

EDITAR:

$ xinput list-props 12
Device '3M 3M USB Touchscreen - 36955':
    Device Enabled (143):   1
    Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (268): 0
    Device Accel Constant Deceleration (269):   1.000000
    Device Accel Adaptive Deceleration (270):   1.000000
    Device Accel Velocity Scaling (271):    10.000000
    Device Product ID (262):    1430, 1
    Device Node (263):  "/dev/input/event12"
    Evdev Axis Inversion (272): 0, 0
    Evdev Axis Calibration (273):   <no items>
    Evdev Axes Swap (274):  0
    Axis Labels (275):  "Abs X" (266), "Abs Y" (267)
    Button Labels (276):    "Button Unknown" (265), "Button Unknown" (265), "Button Unknown" (265), "Button Wheel Up" (149), "Button Wheel Down" (150)
    Evdev Scrolling Distance (277): 0, 0, 0
    Evdev Middle Button Emulation (278):    0
    Evdev Middle Button Timeout (279):  50
    Evdev Third Button Emulation (280): 0
    Evdev Third Button Emulation Timeout (281): 1000
    Evdev Third Button Emulation Button (282):  3
    Evdev Third Button Emulation Threshold (283):   20
    Evdev Wheel Emulation (284):    0
    Evdev Wheel Emulation Axes (285):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (286):    10
    Evdev Wheel Emulation Timeout (287):    200
    Evdev Wheel Emulation Button (288): 4
    Evdev Drag Lock Buttons (289):  0

E evtest:

sudo evtest /dev/input/event12
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x596 product 0x1 version 0x440
Input device name: "3M 3M USB Touchscreen - 36955"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   6684
      Min        0
      Max    16384
    Event code 1 (ABS_Y)
      Value   6185
      Min        0
      Max    16384
Properties:
Testing ... (interrupt to exit)
Event: time 1507280785.112401, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1507280785.112401, type 3 (EV_ABS), code 0 (ABS_X), value 5971
Event: time 1507280785.112401, type 3 (EV_ABS), code 1 (ABS_Y), value 6240
Event: time 1507280785.112401, -------------- SYN_REPORT ------------
Event: time 1507280785.116364, type 3 (EV_ABS), code 0 (ABS_X), value 5953
Event: time 1507280785.116364, -------------- SYN_REPORT ------------
Event: time 1507280785.118359, type 3 (EV_ABS), code 0 (ABS_X), value 5968
Event: time 1507280785.118359, -------------- SYN_REPORT ------------
# ...........
Event: time 1507280785.156333, -------------- SYN_REPORT ------------
Event: time 1507280785.158356, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1507280785.158356, -------------- SYN_REPORT ------------
    
por jaskmar 02.10.2017 / 15:38

1 resposta

1

Você precisará instalar um novo kernel para verificar se o novo possui um firmware para ele. Primeiro de tudo, verifique qual é o kernel atual em seu sistema usando o comando

uname -a

Você pode instalar manualmente o kernel 4.13 como o atual estável.

Passo 1: Vá para kernel ubuntu 4.13

Passo 2: Com base no seu uname -a output, certifique-se de qual é o seu sistema / os arch, se ele é um X86_64, então é um 64 bit, se for X86, então é um 32 bits.

Passo 3: Faça uma pasta em algum lugar do seu sistema nomeando 4.13, você também pode usar o comando

mkdir 4.13

Passo 4: Entre no diretório 4.13, agora selecione os arquivos baseados no seu arco

lista de 64 bits

Se seus 64 bits escolherem esses, por exemplo, X86_64:

link

link

link

lista de 32 bits

Se os seus 32 bits, também conhecidos como X86, escolherem isto:

link

link

link

Você pode salvar a lista em um arquivo de texto, por exemplo "kernel_files.list". Agora no terminal use wget para baixar esses arquivos.

wget -i kernel_files.list

Isso fará o download da lista inteira usando o wget.

Etapa 5: prossiga com a instalação deles

sudo dpkg -i *.deb

Isto irá instalar todos os 3 componentes do kernel juntos, finalmente você verá que todos os kernels foram compilados.

Passo 6: Reinicie o seu sistema para usar o novo kernel

reboot

Passo 7: verifique a instalação do novo kernel emitindo o comando

uname -a

Agora verifique se a tela de toque funciona corretamente ou não.

Verifique se o sistema está obtendo entradas através dele usando

dmesg

Se ainda falhar, instale

make,gcc,g++,build-utils 

emitindo o comando

sudo apt install make gcc g++ build-utils

e, em seguida, instale os drivers da tela de toque novamente.

Nota # 1: Se você não está confiante em instalar o novo kernel manualmente, então você pode usar o ukuu,

Para instalar o ukuu

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu

Em seguida, execute o ukuu e instale o kernel 4.13 usando o painel do ukuu.

Nota # 2: Você pode sempre voltar ao seu kernel anterior, emitindo C durante o boot de sua máquina baseada no Ubuntu.

Nota # 3. Mantenha a tela sensível ao toque e a tela sem poeira e não deve ter umidade, óleo, sujeira etc.

Nota # 4: use uma caneta de toque, pois seria mais preciso do que o seu dedo.

Nota # 5: o kernel 4.14 está sendo testado, então não instale isso

    
por SIDDHARTH 11.10.2017 / 19:45