ラップトップにスクリプトからタッチスクリーンデバイスがあるかどうかを検出する信頼できる方法を探しています。次の出力を解析できることを知っています。
$ 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)]
しかし理想的には、製品名に依存する必要はありません。実際、テストシステムにそのようなデバイスが存在することを明確に示すフラグを探しています。
udevは既に入力デバイスを分類しています( https://wiki.kubuntu.org/X/InputConfiguration を参照)、サポートされているフラグは次のとおりです。
ID_INPUT
すべての入力デバイスにはこのフラグがあります。
ID_INPUT_MOUSE
タッチスクリーンとテーブルにもこのフラグがあります。イベントの種類によって、マウスとして機能するためです。
ID_INPUT_TABLET
ID_INPUT_TOUCHSCREEN
ID_INPUT_JOYSTICK
ID_INPUT_KEY
キーボードにはこれがありますが、ほんの数個のボタンがあるふたスイッチのようなものもあります
ID_INPUT_KEYBOARD
したがって、テスト中のシステムでタッチスクリーンデバイスをチェックインする簡単な方法は、次のセクションのudevadm info --export-db
の出力を解析することです。
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
最後に使用するコマンドは次のとおりです。
udevadm info --export-db | grep ID_INPUT_TOUCHSCREEN=1