~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/input/devices/elantech.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/input/devices/elantech.rst (Version linux-6.11.5) and /Documentation/input/devices/elantech.rst (Version linux-4.4.302)


  1 Elantech Touchpad Driver                          
  2 ========================                          
  3                                                   
  4         Copyright (C) 2007-2008 Arjan Opmeer <a    
  5                                                   
  6         Extra information for hardware version    
  7         provided by Steve Havelka                 
  8                                                   
  9         Version 2 (EeePC) hardware support bas    
 10         received from Woody at Xandros and for    
 11         by user StewieGriffin at the eeeuser.c    
 12                                                   
 13 .. Contents                                       
 14                                                   
 15  1. Introduction                                  
 16  2. Extra knobs                                   
 17  3. Differentiating hardware versions             
 18  4. Hardware version 1                            
 19     4.1 Registers                                 
 20     4.2 Native relative mode 4 byte packet for    
 21     4.3 Native absolute mode 4 byte packet for    
 22  5. Hardware version 2                            
 23     5.1 Registers                                 
 24     5.2 Native absolute mode 6 byte packet for    
 25         5.2.1 Parity checking and packet re-sy    
 26         5.2.2 One/Three finger touch              
 27         5.2.3 Two finger touch                    
 28  6. Hardware version 3                            
 29     6.1 Registers                                 
 30     6.2 Native absolute mode 6 byte packet for    
 31         6.2.1 One/Three finger touch              
 32         6.2.2 Two finger touch                    
 33  7. Hardware version 4                            
 34     7.1 Registers                                 
 35     7.2 Native absolute mode 6 byte packet for    
 36         7.2.1 Status packet                       
 37         7.2.2 Head packet                         
 38         7.2.3 Motion packet                       
 39  8. Trackpoint (for Hardware version 3 and 4)     
 40     8.1 Registers                                 
 41     8.2 Native relative mode 6 byte packet for    
 42         8.2.1 Status Packet                       
 43                                                   
 44                                                   
 45                                                   
 46 Introduction                                      
 47 ~~~~~~~~~~~~                                      
 48                                                   
 49 Currently the Linux Elantech touchpad driver i    
 50 hardware versions unimaginatively called versi    
 51 and version 4. Version 1 is found in "older" l    
 52 packet. Version 2 seems to be introduced with     
 53 per packet, and provides additional features s    
 54 and width of the touch.  Hardware version 3 us    
 55 for 2 fingers the concatenation of two 6 bytes    
 56 of up to 3 fingers. Hardware version 4 uses 6     
 57 combine a status packet with multiple head or     
 58 4 allows tracking up to 5 fingers.                
 59                                                   
 60 Some Hardware version 3 and version 4 also hav    
 61 separate packet format. It is also 6 bytes per    
 62                                                   
 63 The driver tries to support both hardware vers    
 64 with the Xorg Synaptics touchpad driver and it    
 65 utilities.                                        
 66                                                   
 67 Note that a mouse button is also associated wi    
 68 trackpoint when a trackpoint is available.  Di    
 69 (TouchPadOff=0) will also disable the buttons     
 70                                                   
 71 Additionally the operation of the touchpad can    
 72 contents of some of its internal registers. Th    
 73 by the driver as sysfs entries under /sys/bus/    
 74 that can be read from and written to.             
 75                                                   
 76 Currently only the registers for hardware vers    
 77 Hardware version 2 seems to use some of the sa    
 78 known whether the bits in the registers repres    
 79 have changed their meaning.                       
 80                                                   
 81 On top of that, some register settings have ef    
 82 in relative mode and not in absolute mode. As     
 83 driver always puts the hardware into absolute     
 84 mentioned below can be used immediately. But b    
 85 available Elantech documentation the informati    
 86 completeness sake.                                
 87                                                   
 88                                                   
 89 Extra knobs                                       
 90 ~~~~~~~~~~~                                       
 91                                                   
 92 Currently the Linux Elantech touchpad driver p    
 93 /sys/bus/serio/drivers/psmouse/serio? for the     
 94                                                   
 95 * debug                                           
 96                                                   
 97    Turn different levels of debugging ON or OF    
 98                                                   
 99    By echoing "0" to this file all debugging w    
100                                                   
101    Currently a value of "1" will turn on some     
102    "2" will turn on packet debugging. For hard    
103    OFF. For version 2 the default is "1".         
104                                                   
105    Turning packet debugging on will make the d    
106    received to the syslog before processing it    
107    generate quite a lot of data!                  
108                                                   
109 * paritycheck                                     
110                                                   
111    Turns parity checking ON or OFF.               
112                                                   
113    By echoing "0" to this file parity checking    
114    non-zero value will turn it ON. For hardwar    
115    For version 2 the default it is OFF.           
116                                                   
117    Hardware version 1 provides basic data inte    
118    calculating a parity bit for the last 3 byt    
119    can check these bits and reject any packet     
120    this knob you can bypass that check.           
121                                                   
122    Hardware version 2 does not provide the sam    
123    data consistency checking can be done. For     
124    default. Currently even turning it on will     
125                                                   
126 * crc_enabled                                     
127                                                   
128    Sets crc_enabled to 0/1. The name "crc_enab    
129    this integrity check, even though it is not    
130    check.                                         
131                                                   
132    Depending on the state of crc_enabled, cert    
133    verification is done by the driver on hardw    
134    driver will reject any packet that appears     
135    The state of crc_enabled can be altered wit    
136                                                   
137    Reading the crc_enabled value will show the    
138    "0" or "1" to this file will set the state     
139                                                   
140 Differentiating hardware versions                 
141 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
142                                                   
143 To detect the hardware version, read the versi    
144                                                   
145  4 bytes version: (after the arrow is the name    
146  02.00.22 => EF013                                
147  02.06.00 => EF019                                
148                                                   
149 In the wild, there appear to be more versions,    
150 02.00.00, 02.00.04, 02.00.06::                    
151                                                   
152  6 bytes:                                         
153  02.00.30 => EF113                                
154  02.08.00 => EF023                                
155  02.08.XX => EF123                                
156  02.0B.00 => EF215                                
157  04.01.XX => Scroll_EF051                         
158  04.02.XX => EF051                                
159                                                   
160 In the wild, there appear to be more versions,    
161 appears to be almost no difference, except for    
162 pressure/width and has different data consiste    
163                                                   
164 Probably all the versions with param[0] <= 01     
165 4 bytes/firmware 1. The versions < 02.08.00, w    
166 4 bytes/firmware 2. Everything >= 02.08.00 can    
167                                                   
168                                                   
169 Hardware version 1                                
170 ~~~~~~~~~~~~~~~~~~                                
171                                                   
172 Registers                                         
173 ---------                                         
174                                                   
175 By echoing a hexadecimal value to a register i    
176                                                   
177 For example::                                     
178                                                   
179    echo -n 0x16 > reg_10                          
180                                                   
181 * reg_10::                                        
182                                                   
183    bit   7   6   5   4   3   2   1   0            
184          B   C   T   D   L   A   S   E            
185                                                   
186          E: 1 = enable smart edges uncondition    
187          S: 1 = enable smart edges only when d    
188          A: 1 = absolute mode (needs 4 byte pa    
189          L: 1 = enable drag lock (see reg_22)     
190          D: 1 = disable dynamic resolution        
191          T: 1 = disable tapping                   
192          C: 1 = enable corner tap                 
193          B: 1 = swap left and right button        
194                                                   
195 * reg_11::                                        
196                                                   
197    bit   7   6   5   4   3   2   1   0            
198          1   0   0   H   V   1   F   P            
199                                                   
200          P: 1 = enable parity checking for rel    
201          F: 1 = enable native 4 byte packet mo    
202          V: 1 = enable vertical scroll area       
203          H: 1 = enable horizontal scroll area     
204                                                   
205 * reg_20::                                        
206                                                   
207          single finger width?                     
208                                                   
209 * reg_21::                                        
210                                                   
211          scroll area width (small: 0x40 ... wi    
212                                                   
213 * reg_22::                                        
214                                                   
215          drag lock time out (short: 0x14 ... l    
216                              0xff = tap again     
217                                                   
218 * reg_23::                                        
219                                                   
220          tap make timeout?                        
221                                                   
222 * reg_24::                                        
223                                                   
224          tap release timeout?                     
225                                                   
226 * reg_25::                                        
227                                                   
228          smart edge cursor speed (0x02 = slow,    
229                                                   
230 * reg_26::                                        
231                                                   
232          smart edge activation area width?        
233                                                   
234                                                   
235 Native relative mode 4 byte packet format         
236 -----------------------------------------         
237                                                   
238 byte 0::                                          
239                                                   
240    bit   7   6   5   4   3   2   1   0            
241          c   c  p2  p1   1   M   R   L            
242                                                   
243          L, R, M = 1 when Left, Right, Middle     
244             some models have M as byte 3 odd p    
245          when parity checking is enabled (reg_    
246             p1..p2 = byte 1 and 2 odd parity b    
247          c = 1 when corner tap detected           
248                                                   
249 byte 1::                                          
250                                                   
251    bit   7   6   5   4   3   2   1   0            
252         dx7 dx6 dx5 dx4 dx3 dx2 dx1 dx0           
253                                                   
254          dx7..dx0 = x movement;   positive = r    
255          byte 1 = 0xf0 when corner tap detecte    
256                                                   
257 byte 2::                                          
258                                                   
259    bit   7   6   5   4   3   2   1   0            
260         dy7 dy6 dy5 dy4 dy3 dy2 dy1 dy0           
261                                                   
262          dy7..dy0 = y movement;   positive = u    
263                                                   
264 byte 3::                                          
265                                                   
266    parity checking enabled (reg_11, P = 1):       
267                                                   
268       bit   7   6   5   4   3   2   1   0         
269             w   h  n1  n0  ds3 ds2 ds1 ds0        
270                                                   
271             normally:                             
272                ds3..ds0 = scroll wheel amount     
273                           positive = down or l    
274                           negative = up or rig    
275             when corner tap detected:             
276                ds0 = 1 when top right corner t    
277                ds1 = 1 when bottom right corne    
278                ds2 = 1 when bottom left corner    
279                ds3 = 1 when top left corner ta    
280             n1..n0 = number of fingers on touc    
281                only models with firmware 2.x r    
282                firmware 1.x seem to map one, t    
283                directly to L, M and R mouse bu    
284             h = 1 when horizontal scroll actio    
285             w = 1 when wide finger touch?         
286                                                   
287    otherwise (reg_11, P = 0):                     
288                                                   
289       bit   7   6   5   4   3   2   1   0         
290            ds7 ds6 ds5 ds4 ds3 ds2 ds1 ds0        
291                                                   
292             ds7..ds0 = vertical scroll amount     
293                        negative = up              
294                        positive = down            
295                                                   
296                                                   
297 Native absolute mode 4 byte packet format         
298 -----------------------------------------         
299                                                   
300 EF013 and EF019 have a special behaviour (due     
301 when 1 finger is touching, the first 2 positio    
302 This counting is reset whenever a different nu    
303                                                   
304 byte 0::                                          
305                                                   
306    firmware version 1.x:                          
307                                                   
308       bit   7   6   5   4   3   2   1   0         
309             D   U  p1  p2   1  p3   R   L         
310                                                   
311             L, R = 1 when Left, Right mouse bu    
312             p1..p3 = byte 1..3 odd parity bit     
313             D, U = 1 when rocker switch presse    
314                                                   
315    firmware version 2.x:                          
316                                                   
317       bit   7   6   5   4   3   2   1   0         
318            n1  n0  p2  p1   1  p3   R   L         
319                                                   
320             L, R = 1 when Left, Right mouse bu    
321             p1..p3 = byte 1..3 odd parity bit     
322             n1..n0 = number of fingers on touc    
323                                                   
324 byte 1::                                          
325                                                   
326    firmware version 1.x:                          
327                                                   
328       bit   7   6   5   4   3   2   1   0         
329             f   0  th  tw  x9  x8  y9  y8         
330                                                   
331             tw = 1 when two finger touch          
332             th = 1 when three finger touch        
333             f  = 1 when finger touch              
334                                                   
335    firmware version 2.x:                          
336                                                   
337       bit   7   6   5   4   3   2   1   0         
338             .   .   .   .  x9  x8  y9  y8         
339                                                   
340 byte 2::                                          
341                                                   
342    bit   7   6   5   4   3   2   1   0            
343         x7  x6  x5  x4  x3  x2  x1  x0            
344                                                   
345          x9..x0 = absolute x value (horizontal    
346                                                   
347 byte 3::                                          
348                                                   
349    bit   7   6   5   4   3   2   1   0            
350         y7  y6  y5  y4  y3  y2  y1  y0            
351                                                   
352          y9..y0 = absolute y value (vertical)     
353                                                   
354                                                   
355 Hardware version 2                                
356 ~~~~~~~~~~~~~~~~~~                                
357                                                   
358                                                   
359 Registers                                         
360 ---------                                         
361                                                   
362 By echoing a hexadecimal value to a register i    
363                                                   
364 For example::                                     
365                                                   
366    echo -n 0x56 > reg_10                          
367                                                   
368 * reg_10::                                        
369                                                   
370    bit   7   6   5   4   3   2   1   0            
371          0   1   0   1   0   1   D   0            
372                                                   
373          D: 1 = enable drag and drop              
374                                                   
375 * reg_11::                                        
376                                                   
377    bit   7   6   5   4   3   2   1   0            
378          1   0   0   0   S   0   1   0            
379                                                   
380          S: 1 = enable vertical scroll            
381                                                   
382 * reg_21::                                        
383                                                   
384          unknown (0x00)                           
385                                                   
386 * reg_22::                                        
387                                                   
388          drag and drop release time out (short    
389                                    0x7f = neve    
390                                                   
391                                                   
392 Native absolute mode 6 byte packet format         
393 -----------------------------------------         
394                                                   
395 Parity checking and packet re-synchronization     
396 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     
397                                                   
398 There is no parity checking, however some cons    
399                                                   
400 For instance for EF113::                          
401                                                   
402         SA1= packet[0];                           
403         A1 = packet[1];                           
404         B1 = packet[2];                           
405         SB1= packet[3];                           
406         C1 = packet[4];                           
407         D1 = packet[5];                           
408         if( (((SA1 & 0x3C) != 0x3C) && ((SA1 &    
409             (((SA1 & 0x0C) != 0x0C) && ((SA1 &    
410             (((SA1 & 0xC0) != 0x80) && (( A1 &    
411             (((SB1 & 0x3E) != 0x38) && ((SA1 &    
412             (((SB1 & 0x0E) != 0x08) && ((SA1 &    
413             (((SA1 & 0xC0) != 0x80) && (( C1 &    
414                 // error detected                 
415                                                   
416 For all the other ones, there are just a few c    
417                                                   
418         if( ((packet[0] & 0x0C) != 0x04) ||       
419             ((packet[3] & 0x0f) != 0x02) )        
420                 // error detected                 
421                                                   
422                                                   
423 In case an error is detected, all the packets     
424                                                   
425 One/Three finger touch                            
426 ^^^^^^^^^^^^^^^^^^^^^^                            
427                                                   
428 byte 0::                                          
429                                                   
430    bit   7   6   5   4   3   2   1   0            
431          n1  n0  w3  w2   .   .   R   L           
432                                                   
433          L, R = 1 when Left, Right mouse butto    
434          n1..n0 = number of fingers on touchpa    
435                                                   
436 byte 1::                                          
437                                                   
438    bit   7   6   5   4   3   2   1   0            
439          p7  p6  p5  p4 x11 x10 x9  x8            
440                                                   
441 byte 2::                                          
442                                                   
443    bit   7   6   5   4   3   2   1   0            
444          x7  x6  x5  x4  x3  x2  x1  x0           
445                                                   
446          x11..x0 = absolute x value (horizonta    
447                                                   
448 byte 3::                                          
449                                                   
450    bit   7   6   5   4   3   2   1   0            
451          n4  vf  w1  w0   .   .   .  b2           
452                                                   
453          n4 = set if more than 3 fingers (only    
454          vf = a kind of flag ? (only on EF123,    
455               of the buttons, 1 otherwise)        
456          w3..w0 = width of the finger touch (n    
457          b2 (on EF113 only, 0 otherwise), b2.R    
458                 0 = none                          
459                 1 = Left                          
460                 2 = Right                         
461                 3 = Middle (Left and Right)       
462                 4 = Forward                       
463                 5 = Back                          
464                 6 = Another one                   
465                 7 = Another one                   
466                                                   
467 byte 4::                                          
468                                                   
469    bit   7   6   5   4   3   2   1   0            
470         p3  p1  p2  p0  y11 y10 y9  y8            
471                                                   
472          p7..p0 = pressure (not EF113)            
473                                                   
474 byte 5::                                          
475                                                   
476    bit   7   6   5   4   3   2   1   0            
477         y7  y6  y5  y4  y3  y2  y1  y0            
478                                                   
479          y11..y0 = absolute y value (vertical)    
480                                                   
481                                                   
482 Two finger touch                                  
483 ^^^^^^^^^^^^^^^^                                  
484                                                   
485 Note that the two pairs of coordinates are not    
486 two fingers, but only the pair of the lower-le    
487 So the actual fingers might be situated on the    
488 defined by these two points.                      
489                                                   
490 byte 0::                                          
491                                                   
492    bit   7   6   5   4   3   2   1   0            
493         n1  n0  ay8 ax8  .   .   R   L            
494                                                   
495          L, R = 1 when Left, Right mouse butto    
496          n1..n0 = number of fingers on touchpa    
497                                                   
498 byte 1::                                          
499                                                   
500    bit   7   6   5   4   3   2   1   0            
501         ax7 ax6 ax5 ax4 ax3 ax2 ax1 ax0           
502                                                   
503          ax8..ax0 = lower-left finger absolute    
504                                                   
505 byte 2::                                          
506                                                   
507    bit   7   6   5   4   3   2   1   0            
508         ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0           
509                                                   
510          ay8..ay0 = lower-left finger absolute    
511                                                   
512 byte 3::                                          
513                                                   
514    bit   7   6   5   4   3   2   1   0            
515          .   .  by8 bx8  .   .   .   .            
516                                                   
517 byte 4::                                          
518                                                   
519    bit   7   6   5   4   3   2   1   0            
520         bx7 bx6 bx5 bx4 bx3 bx2 bx1 bx0           
521                                                   
522          bx8..bx0 = upper-right finger absolut    
523                                                   
524 byte 5::                                          
525                                                   
526    bit   7   6   5   4   3   2   1   0            
527         by7 by8 by5 by4 by3 by2 by1 by0           
528                                                   
529          by8..by0 = upper-right finger absolut    
530                                                   
531 Hardware version 3                                
532 ~~~~~~~~~~~~~~~~~~                                
533                                                   
534 Registers                                         
535 ---------                                         
536                                                   
537 * reg_10::                                        
538                                                   
539    bit   7   6   5   4   3   2   1   0            
540          0   0   0   0   R   F   T   A            
541                                                   
542          A: 1 = enable absolute tracking          
543          T: 1 = enable two finger mode auto co    
544          F: 1 = disable ABS Position Filter       
545          R: 1 = enable real hardware resolutio    
546                                                   
547 Native absolute mode 6 byte packet format         
548 -----------------------------------------         
549                                                   
550 1 and 3 finger touch shares the same 6-byte pa    
551 3 finger touch only reports the position of th    
552                                                   
553 Firmware would send 12 bytes of data for 2 fin    
554                                                   
555 Note on debounce:                                 
556 In case the box has unstable power supply or o    
557 when number of finger changes, F/W would send     
558 driver that the hardware is in debounce status    
559 The debouce packet has the following signature    
560                                                   
561     byte 0: 0xc4                                  
562     byte 1: 0xff                                  
563     byte 2: 0xff                                  
564     byte 3: 0x02                                  
565     byte 4: 0xff                                  
566     byte 5: 0xff                                  
567                                                   
568 When we encounter this kind of packet, we just    
569                                                   
570 One/Three finger touch                            
571 ^^^^^^^^^^^^^^^^^^^^^^                            
572                                                   
573 byte 0::                                          
574                                                   
575    bit   7   6   5   4   3   2   1   0            
576         n1  n0  w3  w2   0   1   R   L            
577                                                   
578         L, R = 1 when Left, Right mouse button    
579         n1..n0 = number of fingers on touchpad    
580                                                   
581 byte 1::                                          
582                                                   
583    bit   7   6   5   4   3   2   1   0            
584         p7  p6  p5  p4 x11 x10  x9  x8            
585                                                   
586 byte 2::                                          
587                                                   
588    bit   7   6   5   4   3   2   1   0            
589         x7  x6  x5  x4  x3  x2  x1  x0            
590                                                   
591         x11..x0 = absolute x value (horizontal    
592                                                   
593 byte 3::                                          
594                                                   
595    bit   7   6   5   4   3   2   1   0            
596          0   0  w1  w0   0   0   1   0            
597                                                   
598          w3..w0 = width of the finger touch       
599                                                   
600 byte 4::                                          
601                                                   
602    bit   7   6   5   4   3   2   1   0            
603         p3  p1  p2  p0  y11 y10 y9  y8            
604                                                   
605         p7..p0 = pressure                         
606                                                   
607 byte 5::                                          
608                                                   
609    bit   7   6   5   4   3   2   1   0            
610         y7  y6  y5  y4  y3  y2  y1  y0            
611                                                   
612         y11..y0 = absolute y value (vertical)     
613                                                   
614 Two finger touch                                  
615 ^^^^^^^^^^^^^^^^                                  
616                                                   
617 The packet format is exactly the same for two     
618 sends two 6 byte packets. The first packet con    
619 the second packet has data for the second fing    
620 total of 12 bytes are sent.                       
621                                                   
622 Hardware version 4                                
623 ~~~~~~~~~~~~~~~~~~                                
624                                                   
625 Registers                                         
626 ---------                                         
627                                                   
628 * reg_07::                                        
629                                                   
630    bit   7   6   5   4   3   2   1   0            
631          0   0   0   0   0   0   0   A            
632                                                   
633          A: 1 = enable absolute tracking          
634                                                   
635 Native absolute mode 6 byte packet format         
636 -----------------------------------------         
637                                                   
638 v4 hardware is a true multitouch touchpad, cap    
639 Unfortunately, due to PS/2's limited bandwidth    
640 complex.                                          
641                                                   
642 Whenever the numbers or identities of the fing    
643 status packet to indicate how many and which f    
644 head packets or motion packets. A head packet     
645 position (absolute x, y values), width, and pr    
646 two fingers' position delta.                      
647                                                   
648 For example, when status packet tells there ar    
649 can expect two following head packets. If the     
650 the following packets would be motion packets,    
651 position, until we receive a status packet.       
652                                                   
653 One exception is one finger touch. when a stat    
654 one finger, the hardware would just send head     
655                                                   
656 Status packet                                     
657 ^^^^^^^^^^^^^                                     
658                                                   
659 byte 0::                                          
660                                                   
661    bit   7   6   5   4   3   2   1   0            
662          .   .   .   .   0   1   R   L            
663                                                   
664          L, R = 1 when Left, Right mouse butto    
665                                                   
666 byte 1::                                          
667                                                   
668    bit   7   6   5   4   3   2   1   0            
669          .   .   . ft4 ft3 ft2 ft1 ft0            
670                                                   
671          ft4 ft3 ft2 ft1 ft0 ftn = 1 when fing    
672                                                   
673 byte 2::                                          
674                                                   
675    not used                                       
676                                                   
677 byte 3::                                          
678                                                   
679    bit   7   6   5   4   3   2   1   0            
680          .   .   .   1   0   0   0   0            
681                                                   
682          constant bits                            
683                                                   
684 byte 4::                                          
685                                                   
686    bit   7   6   5   4   3   2   1   0            
687          p   .   .   .   .   .   .   .            
688                                                   
689          p = 1 for palm                           
690                                                   
691 byte 5::                                          
692                                                   
693    not used                                       
694                                                   
695 Head packet                                       
696 ^^^^^^^^^^^                                       
697                                                   
698 byte 0::                                          
699                                                   
700    bit   7   6   5   4   3   2   1   0            
701         w3  w2  w1  w0   0   1   R   L            
702                                                   
703         L, R = 1 when Left, Right mouse button    
704         w3..w0 = finger width (spans how many     
705                                                   
706 byte 1::                                          
707                                                   
708    bit   7   6   5   4   3   2   1   0            
709         p7  p6  p5  p4 x11 x10  x9  x8            
710                                                   
711 byte 2::                                          
712                                                   
713    bit   7   6   5   4   3   2   1   0            
714         x7  x6  x5  x4  x3  x2  x1  x0            
715                                                   
716         x11..x0 = absolute x value (horizontal    
717                                                   
718 byte 3::                                          
719                                                   
720    bit   7   6   5   4   3   2   1   0            
721        id2 id1 id0   1   0   0   0   1            
722                                                   
723        id2..id0 = finger id                       
724                                                   
725 byte 4::                                          
726                                                   
727    bit   7   6   5   4   3   2   1   0            
728         p3  p1  p2  p0  y11 y10 y9  y8            
729                                                   
730         p7..p0 = pressure                         
731                                                   
732 byte 5::                                          
733                                                   
734    bit   7   6   5   4   3   2   1   0            
735         y7  y6  y5  y4  y3  y2  y1  y0            
736                                                   
737         y11..y0 = absolute y value (vertical)     
738                                                   
739 Motion packet                                     
740 ^^^^^^^^^^^^^                                     
741                                                   
742 byte 0::                                          
743                                                   
744    bit   7   6   5   4   3   2   1   0            
745        id2 id1 id0   w   0   1   R   L            
746                                                   
747        L, R = 1 when Left, Right mouse button     
748        id2..id0 = finger id                       
749        w = 1 when delta overflows (> 127 or <     
750        firmware sends us (delta x / 5) and (de    
751                                                   
752 byte 1::                                          
753                                                   
754    bit   7   6   5   4   3   2   1   0            
755         x7  x6  x5  x4  x3  x2  x1  x0            
756                                                   
757         x7..x0 = delta x (two's complement)       
758                                                   
759 byte 2::                                          
760                                                   
761    bit   7   6   5   4   3   2   1   0            
762         y7  y6  y5  y4  y3  y2  y1  y0            
763                                                   
764         y7..y0 = delta y (two's complement)       
765                                                   
766 byte 3::                                          
767                                                   
768    bit   7   6   5   4   3   2   1   0            
769        id2 id1 id0   1   0   0   1   0            
770                                                   
771        id2..id0 = finger id                       
772                                                   
773 byte 4::                                          
774                                                   
775    bit   7   6   5   4   3   2   1   0            
776         x7  x6  x5  x4  x3  x2  x1  x0            
777                                                   
778         x7..x0 = delta x (two's complement)       
779                                                   
780 byte 5::                                          
781                                                   
782    bit   7   6   5   4   3   2   1   0            
783         y7  y6  y5  y4  y3  y2  y1  y0            
784                                                   
785         y7..y0 = delta y (two's complement)       
786                                                   
787         byte 0 ~ 2 for one finger                 
788         byte 3 ~ 5 for another                    
789                                                   
790                                                   
791 Trackpoint (for Hardware version 3 and 4)         
792 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
793                                                   
794 Registers                                         
795 ---------                                         
796                                                   
797 No special registers have been identified.        
798                                                   
799 Native relative mode 6 byte packet format         
800 -----------------------------------------         
801                                                   
802 Status Packet                                     
803 ^^^^^^^^^^^^^                                     
804                                                   
805 byte 0::                                          
806                                                   
807    bit   7   6   5   4   3   2   1   0            
808          0   0  sx  sy   0   M   R   L            
809                                                   
810 byte 1::                                          
811                                                   
812    bit   7   6   5   4   3   2   1   0            
813        ~sx   0   0   0   0   0   0   0            
814                                                   
815 byte 2::                                          
816                                                   
817    bit   7   6   5   4   3   2   1   0            
818        ~sy   0   0   0   0   0   0   0            
819                                                   
820 byte 3::                                          
821                                                   
822    bit   7   6   5   4   3   2   1   0            
823          0   0 ~sy ~sx   0   1   1   0            
824                                                   
825 byte 4::                                          
826                                                   
827    bit   7   6   5   4   3   2   1   0            
828         x7  x6  x5  x4  x3  x2  x1  x0            
829                                                   
830 byte 5::                                          
831                                                   
832    bit   7   6   5   4   3   2   1   0            
833         y7  y6  y5  y4  y3  y2  y1  y0            
834                                                   
835                                                   
836          x and y are written in two's compleme    
837              over 9 bits with sx/sy the relati    
838              x7..x0 and y7..y0 the lower bits.    
839          ~sx is the inverse of sx, ~sy is the     
840          The sign of y is opposite to what the    
841              expects for a relative movement      
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php