2

Cirqueタッチパッドの1つがあります。 http://www.cirque.com/downloads/docs/tsm9925.pdf

ここで、c \ c ++アプリケーションを使用して、このタッチパッドからタップの絶対位置を読み取ります。残念ながら、会社はWindowsドライバーのみを開発しましたが、Linuxでの位置を読み取る必要があります。/ dev / input / eventNサブシステムを使用しようとしましたが、指の移動方向と指の移動速度しか受信しませんでした。

それは可能ですか、そしてどうすればこれを行うことができますか?

4

3 に答える 3

1

提供されたリンクから:

For custom functionality at the product design stage, we offer software that 
allows OEMs to enable, disable or personalize advanced settings and/or 
reprogram the touch sensitive area.

Cirqueに直接連絡することをお勧めします

于 2010-08-12T18:59:12.033 に答える
1

タッチパッドが絶対位置を報告することはめったにありません。

受け入れるための答えがあるように;)

于 2010-08-18T06:41:11.767 に答える
1

これがどのように機能するかです:

Cirque Smart CAT (モデル GDU410 - これは古いモデルです!) は 8 バイトのパケットを報告します。最初に、パケットは次のようになります。

Byte 0, bit 0: Left button
Byte 0, bit 1: Right button
Byte 0, bit 2: Side buttons (they cannot be distinguished)
Byte 1: Relative X data
Byte 2: Relative Y data
Bytes 3-7: 0

絶対モードに切り替えるには、次の USB 制御要求をデバイスに送信する必要があります。

unsigned char buf[8];
do {
    Usb_Control_Request(Type=0xC1, Request=0x6A, Index=0,
        Value=0, Data Length=8, Data Buffer=buf)
} while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xBB, Value=1, No data)
do { ... /* C1/6A, see above */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB5, Value=0x3E0, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xA2, Value=0xFEE, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB4, Value=0xE, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x64, Index=0, Value=0, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);

おそらく Linux では、これは "libusb" を使用して実行できます。私はすでに Linux でいくつかのドライバー開発を行っていましたが、まだ "libusb" を使用していませんでした。

これを行った後、8 バイトのパケットは次のようになります。

Byte 0: Buttons, as before
Bytes 1-3: 0
Byte 4: low 8 bits of X finger position
Byte 5: bits 0-2: high 3 bits of X finger position
        bits 3-7: low 5 bits of Y finger position
Byte 6: bits 0-5: high 6 bits of Y finger position
Byte 7, low 7 (?) bits: non-zero if finger touches pad, 0 if not
        some pads report the finger pressure;
        MAYBE this is done in this field.

Finger positions:
X position: left ~0x790, right ~0x70
Y position: top ~0, bottom ~0x5B0

Cirque が提供するデバイス ドライバは、絶対位置モードを使用して、指の絶対位置に依存するスクロールや同様の機能を実行します。

于 2012-07-19T05:56:20.627 に答える