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.
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