1 .. include:: <isonum.txt> 2 3 ================= 4 Sentelic Touchpad 5 ================= 6 7 8 :Copyright: |copy| 2002-2011 Sentelic Corporat 9 10 :Last update: Dec-07-2011 11 12 Finger Sensing Pad Intellimouse Mode (scrollin 13 ============================================== 14 15 A) MSID 4: Scrolling wheel mode plus Forward p 16 page (5th button) 17 18 1. Set sample rate to 200; 19 2. Set sample rate to 200; 20 3. Set sample rate to 80; 21 4. Issuing the "Get device ID" command (0xF2) 22 5. FSP will respond 0x04. 23 24 :: 25 26 Packet 1 27 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 28 BYTE |---------------|BYTE |------------- 29 1 |Y|X|y|x|1|M|R|L| 2 |X|X|X|X|X|X|X 30 |---------------| |------------- 31 32 Byte 1: Bit7 => Y overflow 33 Bit6 => X overflow 34 Bit5 => Y sign bit 35 Bit4 => X sign bit 36 Bit3 => 1 37 Bit2 => Middle Button, 1 is presse 38 Bit1 => Right Button, 1 is pressed 39 Bit0 => Left Button, 1 is pressed, 40 Byte 2: X Movement(9-bit 2's complement in 41 Byte 3: Y Movement(9-bit 2's complement in 42 Byte 4: Bit3~Bit0 => the scrolling wheel's 43 valid values, -8 ~ +7 44 Bit4 => 1 = 4th mouse button is pr 45 0 = 4th mouse button is no 46 Bit5 => 1 = 5th mouse button is pr 47 0 = 5th mouse button is no 48 49 B) MSID 6: Horizontal and Vertical scrolling 50 51 - Set bit 1 in register 0x40 to 1 52 53 FSP replaces scrolling wheel's movement as 4 b 54 vertical scrolling. 55 56 :: 57 58 Packet 1 59 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 60 BYTE |---------------|BYTE |------------- 61 1 |Y|X|y|x|1|M|R|L| 2 |X|X|X|X|X|X|X 62 |---------------| |------------- 63 64 Byte 1: Bit7 => Y overflow 65 Bit6 => X overflow 66 Bit5 => Y sign bit 67 Bit4 => X sign bit 68 Bit3 => 1 69 Bit2 => Middle Button, 1 is presse 70 Bit1 => Right Button, 1 is pressed 71 Bit0 => Left Button, 1 is pressed, 72 Byte 2: X Movement(9-bit 2's complement in 73 Byte 3: Y Movement(9-bit 2's complement in 74 Byte 4: Bit0 => the Vertical scrolling mov 75 Bit1 => the Vertical scrolling mov 76 Bit2 => the Horizontal scrolling m 77 Bit3 => the Horizontal scrolling m 78 Bit4 => 1 = 4th mouse button is pr 79 0 = 4th mouse button is no 80 Bit5 => 1 = 5th mouse button is pr 81 0 = 5th mouse button is no 82 83 C) MSID 7 84 85 FSP uses 2 packets (8 Bytes) to represent Abso 86 so we have PACKET NUMBER to identify packets. 87 88 If PACKET NUMBER is 0, the packet is Packet 89 If PACKET NUMBER is 1, the packet is Packet 90 Please count this number in program. 91 92 MSID6 special packet will be enable at the sam 93 94 Absolute position for STL3886-G0 95 ================================ 96 97 1. Set bit 2 or 3 in register 0x40 to 1 98 2. Set bit 6 in register 0x40 to 1 99 100 :: 101 102 Packet 1 (ABSOLUTE POSITION) 103 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 104 BYTE |---------------|BYTE |------------- 105 1 |0|1|V|1|1|M|R|L| 2 |X|X|X|X|X|X|X 106 |---------------| |------------- 107 108 Byte 1: Bit7~Bit6 => 00, Normal data packe 109 => 01, Absolute coordinati 110 => 10, Notify packet 111 Bit5 => valid bit 112 Bit4 => 1 113 Bit3 => 1 114 Bit2 => Middle Button, 1 is presse 115 Bit1 => Right Button, 1 is pressed 116 Bit0 => Left Button, 1 is pressed, 117 Byte 2: X coordinate (xpos[9:2]) 118 Byte 3: Y coordinate (ypos[9:2]) 119 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 120 Bit3~Bit2 => X coordinate (ypos[1: 121 Bit4 => scroll up 122 Bit5 => scroll down 123 Bit6 => scroll left 124 Bit7 => scroll right 125 126 Notify Packet for G0 127 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 128 BYTE |---------------|BYTE |------------- 129 1 |1|0|0|1|1|M|R|L| 2 |C|C|C|C|C|C|C 130 |---------------| |------------- 131 132 Byte 1: Bit7~Bit6 => 00, Normal data packe 133 => 01, Absolute coordinati 134 => 10, Notify packet 135 Bit5 => 0 136 Bit4 => 1 137 Bit3 => 1 138 Bit2 => Middle Button, 1 is presse 139 Bit1 => Right Button, 1 is pressed 140 Bit0 => Left Button, 1 is pressed, 141 Byte 2: Message Type => 0x5A (Enable/Disab 142 Mode Type => 0xA5 (Normal/Icon mod 143 Byte 3: Message Type => 0x00 (Disabled) 144 => 0x01 (Enabled) 145 Mode Type => 0x00 (Normal) 146 => 0x01 (Icon) 147 Byte 4: Bit7~Bit0 => Don't Care 148 149 Absolute position for STL3888-Ax 150 ================================ 151 152 :: 153 154 Packet 1 (ABSOLUTE POSITION) 155 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 156 BYTE |---------------|BYTE |------------- 157 1 |0|1|V|A|1|L|0|1| 2 |X|X|X|X|X|X|X 158 |---------------| |------------- 159 160 Byte 1: Bit7~Bit6 => 00, Normal data packe 161 => 01, Absolute coordinati 162 => 10, Notify packet 163 => 11, Normal data packet 164 Bit5 => Valid bit, 0 means that th 165 When both fingers are up, 166 bit. 167 Bit4 => arc 168 Bit3 => 1 169 Bit2 => Left Button, 1 is pressed, 170 Bit1 => 0 171 Bit0 => 1 172 Byte 2: X coordinate (xpos[9:2]) 173 Byte 3: Y coordinate (ypos[9:2]) 174 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 175 Bit3~Bit2 => X coordinate (ypos[1: 176 Bit5~Bit4 => y1_g 177 Bit7~Bit6 => x1_g 178 179 Packet 2 (ABSOLUTE POSITION) 180 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 181 BYTE |---------------|BYTE |------------- 182 1 |0|1|V|A|1|R|1|0| 2 |X|X|X|X|X|X|X 183 |---------------| |------------- 184 185 Byte 1: Bit7~Bit6 => 00, Normal data packe 186 => 01, Absolute coordinate 187 => 10, Notify packet 188 => 11, Normal data packet 189 Bit5 => Valid bit, 0 means that th 190 When both fingers are up, 191 bit. 192 Bit4 => arc 193 Bit3 => 1 194 Bit2 => Right Button, 1 is pressed 195 Bit1 => 1 196 Bit0 => 0 197 Byte 2: X coordinate (xpos[9:2]) 198 Byte 3: Y coordinate (ypos[9:2]) 199 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 200 Bit3~Bit2 => X coordinate (ypos[1: 201 Bit5~Bit4 => y2_g 202 Bit7~Bit6 => x2_g 203 204 Notify Packet for STL3888-Ax 205 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 206 BYTE |---------------|BYTE |------------- 207 1 |1|0|1|P|1|M|R|L| 2 |C|C|C|C|C|C|C 208 |---------------| |------------- 209 210 Byte 1: Bit7~Bit6 => 00, Normal data packe 211 => 01, Absolute coordinate 212 => 10, Notify packet 213 => 11, Normal data packet 214 Bit5 => 1 215 Bit4 => when in absolute coordinat 216 0: left button is generate 217 1: left button is generate 218 Bit3 => 1 219 Bit2 => Middle Button, 1 is presse 220 Bit1 => Right Button, 1 is pressed 221 Bit0 => Left Button, 1 is pressed, 222 Byte 2: Message Type => 0xB7 (Multi Finger 223 Byte 3: Bit7~Bit6 => Don't care 224 Bit5~Bit4 => Number of fingers 225 Bit3~Bit1 => Reserved 226 Bit0 => 1: enter gesture mode; 0: 227 Byte 4: Bit7 => scroll right button 228 Bit6 => scroll left button 229 Bit5 => scroll down button 230 Bit4 => scroll up button 231 * Note that if gesture and add 232 happen at the same time, the b 233 be sent. 234 Bit3~Bit0 => Reserved 235 236 Sample sequence of Multi-finger, Multi-coordin 237 238 notify packet (valid bit == 1), abs pk 239 abs pkt 2, ..., notify packet (valid b 240 241 Absolute position for STL3888-B0 242 ================================ 243 244 :: 245 246 Packet 1(ABSOLUTE POSITION) 247 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 248 BYTE |---------------|BYTE |------------- 249 1 |0|1|V|F|1|0|R|L| 2 |X|X|X|X|X|X|X 250 |---------------| |------------- 251 252 Byte 1: Bit7~Bit6 => 00, Normal data packe 253 => 01, Absolute coordinate 254 => 10, Notify packet 255 => 11, Normal data packet 256 Bit5 => Valid bit, 0 means that th 257 When both fingers are up, 258 bit. 259 Bit4 => finger up/down information 260 Bit3 => 1 261 Bit2 => finger index, 0 is the fir 262 Bit1 => Right Button, 1 is pressed 263 Bit0 => Left Button, 1 is pressed, 264 Byte 2: X coordinate (xpos[9:2]) 265 Byte 3: Y coordinate (ypos[9:2]) 266 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 267 Bit3~Bit2 => X coordinate (ypos[1: 268 Bit4 => scroll down button 269 Bit5 => scroll up button 270 Bit6 => scroll left button 271 Bit7 => scroll right button 272 273 Packet 2 (ABSOLUTE POSITION) 274 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 275 BYTE |---------------|BYTE |------------- 276 1 |0|1|V|F|1|1|R|L| 2 |X|X|X|X|X|X|X 277 |---------------| |------------- 278 279 Byte 1: Bit7~Bit6 => 00, Normal data packe 280 => 01, Absolute coordinati 281 => 10, Notify packet 282 => 11, Normal data packet 283 Bit5 => Valid bit, 0 means that th 284 When both fingers are up, 285 bit. 286 Bit4 => finger up/down information 287 Bit3 => 1 288 Bit2 => finger index, 0 is the fir 289 Bit1 => Right Button, 1 is pressed 290 Bit0 => Left Button, 1 is pressed, 291 Byte 2: X coordinate (xpos[9:2]) 292 Byte 3: Y coordinate (ypos[9:2]) 293 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 294 Bit3~Bit2 => X coordinate (ypos[1: 295 Bit4 => scroll down button 296 Bit5 => scroll up button 297 Bit6 => scroll left button 298 Bit7 => scroll right button 299 300 Notify Packet for STL3888-B0:: 301 302 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 303 BYTE |---------------|BYTE |------------- 304 1 |1|0|1|P|1|M|R|L| 2 |C|C|C|C|C|C|C 305 |---------------| |------------- 306 307 Byte 1: Bit7~Bit6 => 00, Normal data packe 308 => 01, Absolute coordinati 309 => 10, Notify packet 310 => 11, Normal data packet 311 Bit5 => 1 312 Bit4 => when in absolute coordinat 313 0: left button is generate 314 1: left button is generate 315 Bit3 => 1 316 Bit2 => Middle Button, 1 is presse 317 Bit1 => Right Button, 1 is pressed 318 Bit0 => Left Button, 1 is pressed, 319 Byte 2: Message Type => 0xB7 (Multi Finger 320 Byte 3: Bit7~Bit6 => Don't care 321 Bit5~Bit4 => Number of fingers 322 Bit3~Bit1 => Reserved 323 Bit0 => 1: enter gesture mode; 0: 324 Byte 4: Bit7 => scroll right button 325 Bit6 => scroll left button 326 Bit5 => scroll up button 327 Bit4 => scroll down button 328 * Note that if gesture and add 329 happen at the same time, the b 330 be sent. 331 Bit3~Bit0 => Reserved 332 333 Sample sequence of Multi-finger, Multi-coordin 334 335 notify packet (valid bit == 1), abs pk 336 abs pkt 2, ..., notify packet (valid b 337 338 Absolute position for STL3888-Cx and STL3888-D 339 ============================================== 340 341 :: 342 343 Single Finger, Absolute Coordinate Mode (S 344 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 345 BYTE |---------------|BYTE |------------- 346 1 |0|1|0|P|1|M|R|L| 2 |X|X|X|X|X|X|X 347 |---------------| |------------- 348 349 Byte 1: Bit7~Bit6 => 00, Normal data packe 350 => 01, Absolute coordinate 351 => 10, Notify packet 352 Bit5 => Coordinate mode(always 0 i 353 0: single-finger absolute 354 1: multi-finger, multiple 355 Bit4 => 0: The LEFT button is gene 356 1: The LEFT button is gene 357 Default is 1 even if the L 358 Bit3 => Always 1, as specified by 359 Bit2 => Middle Button, 1 is presse 360 Bit1 => Right Button, 1 is pressed 361 Bit0 => Left Button, 1 is pressed, 362 Byte 2: X coordinate (xpos[9:2]) 363 Byte 3: Y coordinate (ypos[9:2]) 364 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 365 Bit3~Bit2 => X coordinate (ypos[1: 366 Bit4 => 4th mouse button(forward o 367 Bit5 => 5th mouse button(backward 368 Bit6 => scroll left button 369 Bit7 => scroll right button 370 371 Multi Finger, Multiple Coordinates Mode (M 372 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 373 BYTE |---------------|BYTE |------------- 374 1 |0|1|1|P|1|F|R|L| 2 |X|X|X|X|X|X|X 375 |---------------| |------------- 376 377 Byte 1: Bit7~Bit6 => 00, Normal data packe 378 => 01, Absolute coordinati 379 => 10, Notify packet 380 Bit5 => Coordinate mode (always 1 381 0: single-finger absolute 382 1: multi-finger, multiple 383 Bit4 => 0: The LEFT button is gene 384 1: The LEFT button is gene 385 Default is 1 even if the L 386 Bit3 => Always 1, as specified by 387 Bit2 => Finger index, 0 is the fir 388 If bit 1 and 0 are all 1 a 389 button is pressed. 390 Bit1 => Right Button, 1 is pressed 391 Bit0 => Left Button, 1 is pressed, 392 Byte 2: X coordinate (xpos[9:2]) 393 Byte 3: Y coordinate (ypos[9:2]) 394 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1: 395 Bit3~Bit2 => X coordinate (ypos[1: 396 Bit4 => 4th mouse button(forward o 397 Bit5 => 5th mouse button(backward 398 Bit6 => scroll left button 399 Bit7 => scroll right button 400 401 When one of the two fingers is up, the device 402 MFMC#0 report packets with zero X and Y to rep 403 four consecutive MFMC#1 report packets with ze 404 the 2nd finger is up. On the other hand, if b 405 will output four consecutive single-finger, ab 406 with zero X and Y. 407 408 Notify Packet for STL3888-Cx/Dx:: 409 410 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 411 BYTE |---------------|BYTE |------------- 412 1 |1|0|0|P|1|M|R|L| 2 |C|C|C|C|C|C|C 413 |---------------| |------------- 414 415 Byte 1: Bit7~Bit6 => 00, Normal data packe 416 => 01, Absolute coordinate 417 => 10, Notify packet 418 Bit5 => Always 0 419 Bit4 => 0: The LEFT button is gene 420 1: The LEFT button is gene 421 Default is 1 even if the L 422 Bit3 => 1 423 Bit2 => Middle Button, 1 is presse 424 Bit1 => Right Button, 1 is pressed 425 Bit0 => Left Button, 1 is pressed, 426 Byte 2: Message type: 427 0xba => gesture information 428 0xc0 => one finger hold-rotating g 429 Byte 3: The first parameter for the receiv 430 0xba => gesture ID (refer to the ' 431 0xc0 => region ID 432 Byte 4: The second parameter for the recei 433 0xba => N/A 434 0xc0 => finger up/down information 435 436 Sample sequence of Multi-finger, Multi-coordin 437 438 notify packet (valid bit == 1), MFMC p 439 MFMC packet 2 (byte 1, bit 2 == 1), MF 440 ..., notify packet (valid bit == 0) 441 442 That is, when the device is in MFMC mo 443 interleaved absolute coordinate packet 444 445 FSP Enable/Disable packet 446 ========================= 447 448 :: 449 450 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 451 BYTE |---------------|BYTE |------------- 452 1 |Y|X|0|0|1|M|R|L| 2 |0|1|0|1|1|0|1 453 |---------------| |------------- 454 455 FSP will send out enable/disable packet wh 456 command. Host will receive the packet whic 457 be set. The packet only use byte 0 and byt 458 Ignore the other bytes of the packet. 459 460 Byte 1: Bit7 => 0, Y overflow 461 Bit6 => 0, X overflow 462 Bit5 => 0, Y sign bit 463 Bit4 => 0, X sign bit 464 Bit3 => 1 465 Bit2 => 1, Middle Button 466 Bit1 => 1, Right Button 467 Bit0 => 1, Left Button 468 Byte 2: Bit7~1 => (0101101b) 469 Bit0 => 1 = Enable 470 0 = Disable 471 Byte 3: Don't care 472 Byte 4: Don't care (MOUSE ID 3, 4) 473 Byte 5~8: Don't care (Absolute packet) 474 475 PS/2 Command Set 476 ================ 477 478 FSP supports basic PS/2 commanding set and mod 479 details about PS/2 commands: 480 481 http://www.computer-engineering.org/ps2mouse/ 482 483 Programming Sequence for Determining Packet Pa 484 ============================================== 485 486 1. Identify FSP by reading device ID(0x00) and 487 488 2. For FSP version < STL3888 Cx, determine num 489 the 'test mode status' (0x20) register:: 490 491 buttons = reg[0x20] & 0x30 492 493 if buttons == 0x30 or buttons == 0x20: 494 # two/four buttons 495 Refer to 'Finger Sensing Pad P 496 section A for packet parsing d 497 elif buttons == 0x10: 498 # 6 buttons 499 Refer to 'Finger Sensing Pad P 500 section B for packet parsing d 501 elif buttons == 0x00: 502 # 6 buttons 503 Refer to 'Finger Sensing Pad P 504 section A for packet parsing d 505 506 3. For FSP version >= STL3888 Cx: 507 Refer to 'Finger Sensing Pad PS/2 Mous 508 section A for packet parsing detail (i 509 510 Programming Sequence for Register Reading/Writ 511 ============================================== 512 513 Register inversion requirement: 514 515 Following values needed to be inverted(the '~' 516 sent to FSP:: 517 518 0xe8, 0xe9, 0xee, 0xf2, 0xf3 and 0xff. 519 520 Register swapping requirement: 521 522 Following values needed to have their higher 4 523 swapped before being sent to FSP:: 524 525 10, 20, 40, 60, 80, 100 and 200. 526 527 Register reading sequence: 528 529 1. send 0xf3 PS/2 command to FSP; 530 531 2. send 0x66 PS/2 command to FSP; 532 533 3. send 0x88 PS/2 command to FSP; 534 535 4. send 0xf3 PS/2 command to FSP; 536 537 5. if the register address being to re 538 inverted(refer to the 'Register invers 539 goto step 6 540 541 a. send 0x68 PS/2 command to FSP; 542 543 b. send the inverted register addres 544 545 6. if the register address being to re 546 swapped(refer to the 'Register swappin 547 goto step 7 548 549 a. send 0xcc PS/2 command to FSP; 550 551 b. send the swapped register address 552 553 7. send 0x66 PS/2 command to FSP; 554 555 a. send the original register addres 556 557 8. send 0xe9(status request) PS/2 comm 558 559 9. the 4th byte of the response read f 560 requested register value(?? indicates 561 562 host: 0xe9 563 3888: 0xfa (??) (??) (val) 564 565 * Note that since the Cx release, the 566 complement of the register value at 567 result:: 568 569 host: 0xe9 570 3888: 0xfa (??) (~val) (val) 571 572 Register writing sequence: 573 574 1. send 0xf3 PS/2 command to FSP; 575 576 2. if the register address being to wr 577 inverted(refer to the 'Register invers 578 goto step 3 579 580 a. send 0x74 PS/2 command to FSP; 581 582 b. send the inverted register addres 583 584 3. if the register address being to wr 585 swapped(refer to the 'Register swappin 586 goto step 4 587 588 a. send 0x77 PS/2 command to FSP; 589 590 b. send the swapped register address 591 592 4. send 0x55 PS/2 command to FSP; 593 594 a. send the register address to FSP 595 596 5. send 0xf3 PS/2 command to FSP; 597 598 6. if the register value being to writ 599 inverted(refer to the 'Register invers 600 goto step 7 601 602 a. send 0x47 PS/2 command to FSP; 603 604 b. send the inverted register value 605 606 7. if the register value being to writ 607 swapped(refer to the 'Register swappin 608 goto step 8 609 610 a. send 0x44 PS/2 command to FSP; 611 612 b. send the swapped register value t 613 614 8. send 0x33 PS/2 command to FSP; 615 616 a. send the register value to FSP; 617 618 9. the register writing sequence is co 619 620 * Since the Cx release, the hardware w 621 complement of the register value at 622 result. Host can optionally send ano 623 command to FSP at the end of registe 624 register writing operation is succes 625 byte):: 626 627 host: 0xe9 628 3888: 0xfa (??) (~val) (val) 629 630 Programming Sequence for Page Register Reading 631 ============================================== 632 633 In order to overcome the limitation of maximum 634 supported, the hardware separates register int 635 'pages.' Each page is able to include up to 25 636 637 The default page after power up is 0x82; there 638 access to register 0x8301, one has to use foll 639 to page 0x83, then start reading/writing from/ 640 the register read/write sequence described in 641 642 Page register reading sequence: 643 644 1. send 0xf3 PS/2 command to FSP; 645 646 2. send 0x66 PS/2 command to FSP; 647 648 3. send 0x88 PS/2 command to FSP; 649 650 4. send 0xf3 PS/2 command to FSP; 651 652 5. send 0x83 PS/2 command to FSP; 653 654 6. send 0x88 PS/2 command to FSP; 655 656 7. send 0xe9(status request) PS/2 comm 657 658 8. the response read from FSP should b 659 660 661 Page register writing sequence: 662 663 1. send 0xf3 PS/2 command to FSP; 664 665 2. send 0x38 PS/2 command to FSP; 666 667 3. send 0x88 PS/2 command to FSP; 668 669 4. send 0xf3 PS/2 command to FSP; 670 671 5. if the page address being written i 672 inverted(refer to the 'Register invers 673 goto step 6 674 675 a. send 0x47 PS/2 command to FSP; 676 677 b. send the inverted page address to 678 679 6. if the page address being written i 680 swapped(refer to the 'Register swappin 681 goto step 7 682 683 a. send 0x44 PS/2 command to FSP; 684 685 b. send the swapped page address to 686 687 7. send 0x33 PS/2 command to FSP; 688 689 8. send the page address to FSP; 690 691 9. the page register writing sequence 692 693 Gesture ID 694 ========== 695 696 Unlike other devices which sends multiple fing 697 FSP processes multiple fingers' coordinates in 698 into a 8 bits integer, namely 'Gesture ID.' F 699 supported gesture IDs: 700 701 ======= ============================== 702 ID Description 703 ======= ============================== 704 0x86 2 finger straight up 705 0x82 2 finger straight down 706 0x80 2 finger straight right 707 0x84 2 finger straight left 708 0x8f 2 finger zoom in 709 0x8b 2 finger zoom out 710 0xc0 2 finger curve, counter clockw 711 0xc4 2 finger curve, clockwise 712 0x2e 3 finger straight up 713 0x2a 3 finger straight down 714 0x28 3 finger straight right 715 0x2c 3 finger straight left 716 0x38 palm 717 ======= ============================== 718 719 Register Listing 720 ================ 721 722 Registers are represented in 16 bits values. T 723 the page address and the lower 8 bits represen 724 that particular page. Refer to the 'Programmi 725 Reading/Writing' section for instructions on h 726 address:: 727 728 offset width default r/w name 729 0x8200 bit7~bit0 0x01 RO device 730 731 0x8201 bit7~bit0 RW versio 732 0xc1: 733 0xd0 ~ 734 0xe0 ~ 735 0xe2 ~ 736 737 0x8202 bit7~bit0 0x01 RO vendor 738 739 0x8203 bit7~bit0 0x01 RO produc 740 741 0x8204 bit3~bit0 0x01 RW revisi 742 743 0x820b test m 744 bit3 1 RO 0: rot 745 1: no 746 *only 747 748 0x820f regist 749 bit2 0 RW 1: rot 750 0: no 751 *suppo 752 753 bit0 0 RW 1 to e 754 *only 755 756 0x8210 RW system 757 bit0 1 RW Reserv 758 bit1 0 RW Reserv 759 bit4 0 RW Reserv 760 bit5 1 RW regist 761 0: rea 762 (Note that following registers does no 763 enabled prior to write: 05 06 07 08 09 764 40 41 42 43. In addition to that, thi 765 mode is enabled) 766 767 0x8220 test m 768 bit5~bit4 RO number 769 11 => 770 10 => 771 01 => 772 00 => 773 *only 774 775 0x8231 RW on-pad 776 bit7 0 RW on-pad 777 enable 778 0: dis 779 *only 780 781 0x8234 RW on-pad 782 bit4~bit0 0x05 RW XLO in 783 (Note that position unit is in 0.5 sca 784 *only 785 786 bit7 0 RW on-pad 787 0: dis 788 *only 789 790 0x8235 RW on-pad 791 bit4~bit0 0x1d RW XHI in 792 (Note that position unit is in 0.5 sca 793 *only 794 795 0x8236 RW on-pad 796 bit4~bit0 0x04 RW YLO in 797 (Note that position unit is in 0.5 sca 798 *only 799 800 0x8237 RW on-pad 801 bit4~bit0 0x13 RW YHI in 802 (Note that position unit is in 0.5 sca 803 *only 804 805 0x8240 RW system 806 bit1 0 RW FSP In 807 0: dis 808 *only 809 810 bit2 0 RW moveme 811 0: dis 812 (Note that this function has the funct 813 bit 1 is not set. However, the format 814 In addition, when bit 1 and bit 2 are 815 override bit 1.) 816 *only 817 818 bit3 0 RW abs. c 819 0: dis 820 (Note that this function has the funct 821 bit 1 is not set. However, the format 822 In addition, when bit 1, bit 2 and bit 823 bit 3 will override bit 1 and 2.) 824 *only 825 826 bit5 0 RW auto s 827 0: dis 828 *only 829 830 bit6 0 RW G0 abs 831 0: dis 832 (Note that the absolute/relative coord 833 bit 2 and 3. That is, if any of those 834 absolute coordinates; otherwise, host 835 relative coordinate.) 836 *only 837 838 bit7 0 RW EN_PS2 839 finger 840 0: dis 841 *only 842 843 0x8243 RW on-pad 844 bit0 0 RW on-pad 845 0: dis 846 (Note that if this bit is cleared, bit 847 *only 848 849 bit3 0 RW on-pad 850 0: dis 851 *only 852 853 bit5 0 RW on-pad 854 0: dis 855 *only 856 857 0x8290 RW softwa 858 bit0 0 RW absolu 859 0: dis 860 *suppo 861 862 bit1 0 RW gestur 863 0: dis 864 *suppo 865 866 bit2 0 RW two fi 867 0: dis 868 *suppo 869 870 bit3 0 RW finger 871 0: dis 872 *suppo 873 874 bit4 0 RW absolu 875 0: dis 876 *suppo 877 878 bit6~bit5 00 RW gestur 879 00: ba 880 01: su 881 10: su 882 11: ad 883 *suppo 884 885 bit7 0 RW Bx pac 886 0: dis 887 *suppo 888 *suppo 889 890 891 0x833d RW on-pad 892 bit7 1 RW on-pad 893 0: dis 894 *suppo 895 896 0x833e RW on-pad 897 bit7 0 RW on-pad 898 enable 899 data p 900 0: dis 901 *suppo
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.