web-dev-qa-db-fra.com

Comment détecter les appareils à écran tactile à partir d'un script?

Je recherche un moyen fiable de détecter si un ordinateur portable dispose d'un périphérique à écran tactile à partir d'un script. Je sais que je peux analyser la sortie de:

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Toshiba Web Camera - HD                   id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Toshiba input device                      id=13   [slave  keyboard (3)]

Mais idéalement, je préférerais ne pas avoir à compter sur un nom de produit. En fait, je recherche un drapeau indiquant clairement qu'un tel dispositif existe sur mon système de test.

4
Sylvain Pineau

udev classe déjà les périphériques d'entrée (voir https://wiki.kubuntu.org/X/InputConfiguration ), la prise en charge les drapeaux sont:

  • ID_INPUT

    Tous les périphériques d'entrée ont ce drapeau.

  • ID_INPUT_MOUSE

    Les écrans tactiles et les tableaux ont également cet indicateur, car, en fonction du type d’événement qu’ils peuvent produire, ils agissent comme une souris.

  • ID_INPUT_TABLET

  • ID_INPUT_TOUCHSCREEN

  • ID_INPUT_JOYSTICK

  • ID_INPUT_KEY

    Les claviers ont ceci, mais aussi des choses comme les commutateurs de couvercle qui ont seulement quelques boutons

  • ID_INPUT_KEYBOARD

Ainsi, un moyen facile de vérifier le système testé avec un périphérique à écran tactile consiste à analyser la sortie de udevadm info --export-db pour la section suivante:

P: /devices/pci0000:00/0000:00:14.0/usb2/2-7/2-7:1.0/input/input14
E: ABS=273800000000003
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-7/2-7:1.0/input/input14
E: EV=10000b
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_MODEL=Touchscreen
E: ID_MODEL_ENC=Touchscreen
E: ID_MODEL_ID=0100
E: ID_PATH=pci-0000:00:14.0-usb-0:7:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_7_1_0
E: ID_REVISION=1110
E: ID_SERIAL=ELAN_Touchscreen
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=ELAN
E: ID_VENDOR_ENC=ELAN
E: ID_VENDOR_ID=04f3
E: KEY=400 0 0 0 0 0
E: MODALIAS=input:b0003v04F3p0100e0110-e0,1,3,14,k14A,ra0,1,2F,30,31,34,35,36,39,mlsfw
E: NAME="ELAN Touchscreen"
E: PHYS="usb-0000:00:14.0-7/input0"
E: PRODUCT=3/4f3/100/110
E: PROP=2
E: SUBSYSTEM=input
E: UDEV_LOG=3
E: UNIQ=""
E: USEC_INITIALIZED=815199186

La commande à utiliser est finalement:

udevadm info --export-db | grep ID_INPUT_TOUCHSCREEN=1
5
Sylvain Pineau