文字デバイス(マウス、キーボード、タッチスクリーンなど)のデバッグと入力データの読み取り

文字デバイス(マウス、キーボード、タッチスクリーンなど)のデバッグと入力データの読み取り

私は赤外線を使ったプロジェクトを進めています。マルチタッチフレームUSBケーブルでPCに接続すると、オブジェクト(手や指など)が通過するたびにマウスとして機能します。

私がしたいのは、通過するオブジェクトの座標を出力することです。デバイスがPCとどのように通信するかを理解できれば(可能であれば)、座標のx値とy値を印刷するプログラムを書くことができると思いました。このタイプのデバイスは文字デバイスとも呼ばれ、それをデバッグしてコンピュータに送信する入力を読み取る方法があるかどうか疑問に思いました。 (私の手のある位置のx座標とy座標への入力を送るとします。)これを行うと、マウスカーソルがそこに移動します。

これは私の専攻分野ではなく、私はコンピュータエンジニアなので、どのように始めるべきかわかりません。どんなアドバイスも本当にありがとうございます。よろしくお願いします。

lsusb出力は次のとおりです。

mohammedaabdu@Mohammed-HP-Pavilion-Gaming-Notebook:~$ lsusb -D /dev/bus/usb/001/008
Device: ID 1870:010d Nexio Co., Ltd 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1870 Nexio Co., Ltd
  idProduct          0x010d 
  bcdDevice            5.a1
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     736
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1

これはdmesg出力です:

[ 7907.643318] usb 1-1: new full-speed USB device number 5 using xhci_hcd
[ 7907.792675] usb 1-1: New USB device found, idVendor=1870, idProduct=010d, bcdDevice= 5.a1
[ 7907.792681] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7907.792684] usb 1-1: Product: Nexio HID Multi-Touch ATI0320-10
[ 7907.792687] usb 1-1: Manufacturer: Nexio Touch Device (HS)
[ 7907.798615] input: Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10 Touchscreen as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1870:010D.0002/input/input22
[ 7907.855645] input: Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10 Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1870:010D.0002/input/input23
[ 7907.856502] input: Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10 as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1870:010D.0002/input/input24
[ 7907.857637] hid-generic 0003:1870:010D.0002: input,hiddev1,hidraw1: USB HID v1.11 Mouse [Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10] on usb-0000:00:14.0-1/input0
[ 7908.181472] input: Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10 as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1870:010D.0002/input/input26
[ 7908.182031] input: Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10 as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1870:010D.0002/input/input28
[ 7908.182632] hid-multitouch 0003:1870:010D.0002: input,hiddev1,hidraw1: USB HID v1.11 Mouse [Nexio Touch Device (HS) Nexio HID Multi-Touch ATI0320-10] on usb-0000:00:14.0-1/input0

答え1

すでにマウスのように動作している場合は、マウスイベントから直接座標を取得できます。

これを行う方法はいくつかあります。たとえば、ライブラリを持つPythonプログラムPython-libinput

xevイベントも表示されます。

または、ルートとしてevtestで読んでいる内容を人が読めるバージョンで印刷します/dev/ìnput/eventX

一部のハードウェアは、システムに複数のデバイス(マウスやキーボードなど)として表示されます。

xinput --list

どの入力デバイスがあるかを教えてくれます。どのデバイスが正しいかわからない場合は、プラグを抜いて再接続して違いを確認できます。

この場合、生データではなく生イベントにアクセスします。

今始める必要があります。それに関する多くの文書がありますlibinput

関連情報