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

TOMOYO Linux Cross Reference
Linux/Documentation/input/event-codes.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/event-codes.rst (Version linux-6.11.5) and /Documentation/input/event-codes.rst (Version linux-2.6.0)


  1 .. _input-event-codes:                            
  2                                                   
  3 =================                                 
  4 Input event codes                                 
  5 =================                                 
  6                                                   
  7                                                   
  8 The input protocol uses a map of types and cod    
  9 to userspace. This document describes the type    
 10 may be used.                                      
 11                                                   
 12 A single hardware event generates multiple inp    
 13 contains the new value of a single data item.     
 14 used to separate input events into packets of     
 15 the same moment in time. In the following, the    
 16 input event encompassing a type, code, and val    
 17                                                   
 18 The input protocol is a stateful protocol. Eve    
 19 of event codes have changed. However, the stat    
 20 input subsystem; drivers do not need to mainta    
 21 emit unchanged values without harm. Userspace     
 22 event code values using the EVIOCG* ioctls def    
 23 reports supported by a device are also provide    
 24 class/input/event*/device/capabilities/, and t    
 25 provided in class/input/event*/device/properti    
 26                                                   
 27 Event types                                       
 28 ===========                                       
 29                                                   
 30 Event types are groupings of codes under a log    
 31 type has a set of applicable codes to be used     
 32 Codes section for details on valid codes for e    
 33                                                   
 34 * EV_SYN:                                         
 35                                                   
 36   - Used as markers to separate events. Events    
 37     space, such as with the multitouch protoco    
 38                                                   
 39 * EV_KEY:                                         
 40                                                   
 41   - Used to describe state changes of keyboard    
 42     devices.                                      
 43                                                   
 44 * EV_REL:                                         
 45                                                   
 46   - Used to describe relative axis value chang    
 47     to the left.                                  
 48                                                   
 49 * EV_ABS:                                         
 50                                                   
 51   - Used to describe absolute axis value chang    
 52     coordinates of a touch on a touchscreen.      
 53                                                   
 54 * EV_MSC:                                         
 55                                                   
 56   - Used to describe miscellaneous input data     
 57                                                   
 58 * EV_SW:                                          
 59                                                   
 60   - Used to describe binary state input switch    
 61                                                   
 62 * EV_LED:                                         
 63                                                   
 64   - Used to turn LEDs on devices on and off.      
 65                                                   
 66 * EV_SND:                                         
 67                                                   
 68   - Used to output sound to devices.              
 69                                                   
 70 * EV_REP:                                         
 71                                                   
 72   - Used for autorepeating devices.               
 73                                                   
 74 * EV_FF:                                          
 75                                                   
 76   - Used to send force feedback commands to an    
 77                                                   
 78 * EV_PWR:                                         
 79                                                   
 80   - A special type for power button and switch    
 81                                                   
 82 * EV_FF_STATUS:                                   
 83                                                   
 84   - Used to receive force feedback device stat    
 85                                                   
 86 Event codes                                       
 87 ===========                                       
 88                                                   
 89 Event codes define the precise type of event.     
 90                                                   
 91 EV_SYN                                            
 92 ------                                            
 93                                                   
 94 EV_SYN event values are undefined. Their usage    
 95 sent in the evdev event stream.                   
 96                                                   
 97 * SYN_REPORT:                                     
 98                                                   
 99   - Used to synchronize and separate events in    
100     occurring at the same moment in time. For     
101     the REL_X and REL_Y values for one motion,    
102     motion will emit more REL_X and REL_Y valu    
103                                                   
104 * SYN_CONFIG:                                     
105                                                   
106   - TBD                                           
107                                                   
108 * SYN_MT_REPORT:                                  
109                                                   
110   - Used to synchronize and separate touch eve    
111     multi-touch-protocol.txt document for more    
112                                                   
113 * SYN_DROPPED:                                    
114                                                   
115   - Used to indicate buffer overrun in the evd    
116     Client should ignore all events up to and     
117     event and query the device (using EVIOCG*     
118     current state.                                
119                                                   
120 EV_KEY                                            
121 ------                                            
122                                                   
123 EV_KEY events take the form KEY_<name> or BTN_    
124 to represent the 'A' key on a keyboard. When a    
125 the key's code is emitted with value 1. When t    
126 emitted with value 0. Some hardware send event    
127 events have a value of 2. In general, KEY_<nam    
128 BTN_<name> is used for other types of momentar    
129                                                   
130 A few EV_KEY codes have special meanings:         
131                                                   
132 * BTN_TOOL_<name>:                                
133                                                   
134   - These codes are used in conjunction with i    
135     touchscreens. These devices may be used wi    
136     When an event occurs and a tool is used, t    
137     code should be set to a value of 1. When t    
138     with the input device, the BTN_TOOL_<name>    
139     trackpads, tablets, and touchscreens shoul    
140     code when events are generated. Likewise a    
141     touchscreens should export only one BTN_TO    
142     existing userspace, it is recommended to n    
143     but first emitting the old BTN_TOOL_<name>    
144     and then set the new BTN_TOOL_<name> at 1.    
145                                                   
146 * BTN_TOUCH:                                      
147                                                   
148     BTN_TOUCH is used for touch contact. While    
149     within meaningful physical contact, the va    
150     to 1. Meaningful physical contact may mean    
151     contact conditioned by an implementation d    
152     touchpad may set the value to 1 only when     
153     certain value. BTN_TOUCH may be combined w    
154     example, a pen tablet may set BTN_TOOL_PEN    
155     pen is hovering over but not touching the     
156                                                   
157 Note: For appropriate function of the legacy m    
158 BTN_TOUCH must be the first evdev code emitted    
159                                                   
160 Note: Historically a touch device with BTN_TOO    
161 interpreted as a touchpad by userspace, while     
162 BTN_TOOL_FINGER was interpreted as a touchscre    
163 with current userspace it is recommended to fo    
164 future, this distinction will be deprecated an    
165 EVIOCGPROP, defined in linux/input.h, will be     
166                                                   
167 * BTN_TOOL_FINGER, BTN_TOOL_DOUBLETAP, BTN_TOO    
168                                                   
169   - These codes denote one, two, three, and fo    
170     trackpad or touchscreen. For example, if t    
171     them on the touchpad in an effort to scrol    
172     BTN_TOOL_DOUBLETAP should be set to value     
173     Note that all BTN_TOOL_<name> codes and th    
174     purpose. A trackpad event generated by fin    
175     for one code from each group. At most only    
176     codes should have a value of 1 during any     
177                                                   
178 Note: Historically some drivers emitted multip    
179 a value of 1 in the same synchronization frame    
180                                                   
181 Note: In multitouch drivers, the input_mt_repo    
182 be used to emit these codes. Please see multi-    
183                                                   
184 EV_REL                                            
185 ------                                            
186                                                   
187 EV_REL events describe relative changes in a p    
188 move to the left by a certain number of units,    
189 space is unknown. If the absolute position is     
190 instead of EV_REL codes.                          
191                                                   
192 A few EV_REL codes have special meanings:         
193                                                   
194 * REL_WHEEL, REL_HWHEEL:                          
195                                                   
196   - These codes are used for vertical and hori    
197     respectively. The value is the number of d    
198     physical size of which varies by device. F    
199     this may be an approximation based on the     
200     see REL_WHEEL_HI_RES. These event codes ar    
201     REL_WHEEL_HI_RES and REL_HWHEEL_HI_RES sho    
202     available.                                    
203                                                   
204 * REL_WHEEL_HI_RES, REL_HWHEEL_HI_RES:            
205                                                   
206   - High-resolution scroll wheel data. The acc    
207     movement by one detent. For devices that d    
208     scrolling, the value is always a multiple     
209     high-resolution scrolling, the value may b    
210                                                   
211     If a vertical scroll wheel supports high-r    
212     will be emitted in addition to REL_WHEEL o    
213     and REL_HWHEEL may be an approximation bas    
214     scroll events. There is no guarantee that     
215     is a multiple of 120 at the time of an emu    
216     event.                                        
217                                                   
218 EV_ABS                                            
219 ------                                            
220                                                   
221 EV_ABS events describe absolute changes in a p    
222 may emit coordinates for a touch location.        
223                                                   
224 A few EV_ABS codes have special meanings:         
225                                                   
226 * ABS_DISTANCE:                                   
227                                                   
228   - Used to describe the distance of a tool fr    
229     event should only be emitted while the too    
230     proximity of the device and while the valu    
231     the input device may be used freely in thr    
232     instead.                                      
233   - BTN_TOOL_<name> should be set to 1 when th    
234     proximity and set to 0 when the tool leave    
235     BTN_TOOL_<name> signals the type of tool t    
236     hardware and is otherwise independent of A    
237                                                   
238 * ABS_PROFILE:                                    
239                                                   
240   - Used to describe the state of a multi-valu    
241     emitted only when the selected profile cha    
242     selected profile value.                       
243                                                   
244 * ABS_MT_<name>:                                  
245                                                   
246   - Used to describe multitouch input events.     
247     multi-touch-protocol.txt for details.         
248                                                   
249 * ABS_PRESSURE/ABS_MT_PRESSURE:                   
250                                                   
251    - For touch devices, many devices converted    
252      A finger flattens with pressure, causing     
253      pressure and contact size are directly re    
254      for other devices, for example digitizers    
255      pressure sensor ("pressure pads").           
256                                                   
257      A device should set the resolution of the    
258      pressure is in measurable units. If the r    
259      pressure data is in arbitrary units. If t    
260      pressure data is in units/gram. For examp    
261      resolution of 1 represents 10 gram, a val    
262      1000 represents 10 microgram.                
263                                                   
264 EV_SW                                             
265 -----                                             
266                                                   
267 EV_SW events describe stateful binary switches    
268 used to denote when a laptop lid is closed.       
269                                                   
270 Upon binding to a device or resuming from susp    
271 the current switch state. This ensures that th    
272 state is in sync.                                 
273                                                   
274 Upon resume, if the switch state is the same a    
275 subsystem will filter out the duplicate switch    
276 not need to keep the state of the switch at an    
277                                                   
278 EV_MSC                                            
279 ------                                            
280                                                   
281 EV_MSC events are used for input and output ev    
282 categories.                                       
283                                                   
284 A few EV_MSC codes have special meaning:          
285                                                   
286 * MSC_TIMESTAMP:                                  
287                                                   
288   - Used to report the number of microseconds     
289     should be coded as an uint32 value, which     
290     no special consequence. It is assumed that    
291     consecutive events is reliable on a reason    
292     A reset to zero can happen, in which case     
293     unknown.  If the device does not provide t    
294     not provide it to user space.                 
295                                                   
296 EV_LED                                            
297 ------                                            
298                                                   
299 EV_LED events are used for input and output to    
300 various LEDs on devices.                          
301                                                   
302 EV_REP                                            
303 ------                                            
304                                                   
305 EV_REP events are used for specifying autorepe    
306                                                   
307 EV_SND                                            
308 ------                                            
309                                                   
310 EV_SND events are used for sending sound comma    
311 devices.                                          
312                                                   
313 EV_FF                                             
314 -----                                             
315                                                   
316 EV_FF events are used to initialize a force fe    
317 such device to feedback.                          
318                                                   
319 EV_PWR                                            
320 ------                                            
321                                                   
322 EV_PWR events are a special type of event used    
323 management. Its usage is not well defined. To     
324                                                   
325 Device properties                                 
326 =================                                 
327                                                   
328 Normally, userspace sets up an input device ba    
329 i.e., the event types. In the case of two devi    
330 types, additional information can be provided     
331 properties.                                       
332                                                   
333 INPUT_PROP_DIRECT + INPUT_PROP_POINTER            
334 --------------------------------------            
335                                                   
336 The INPUT_PROP_DIRECT property indicates that     
337 directly mapped to screen coordinates (not tak    
338 transformations, such as scaling, flipping and    
339 devices require non-trivial transformation, su    
340 transformation for touchpads. Typical direct i    
341 drawing tablets; non-direct devices: touchpads    
342                                                   
343 The INPUT_PROP_POINTER property indicates that    
344 on the screen and thus requires use of an on-s    
345 movements.  Typical pointer devices: touchpads    
346 device: touchscreen.                              
347                                                   
348 If neither INPUT_PROP_DIRECT or INPUT_PROP_POI    
349 considered undefined and the device type shoul    
350 traditional way, using emitted event types.       
351                                                   
352 INPUT_PROP_BUTTONPAD                              
353 --------------------                              
354                                                   
355 For touchpads where the button is placed benea    
356 pressing down on the pad causes a button click    
357 set. Common in Clickpad notebooks and Macbooks    
358                                                   
359 Originally, the buttonpad property was coded i    
360 version field under the name integrated button    
361 compatibility, both methods need to be checked    
362                                                   
363 INPUT_PROP_SEMI_MT                                
364 ------------------                                
365                                                   
366 Some touchpads, most common between 2008 and 2    
367 of multiple contacts without resolving the ind    
368 number of contacts and a rectangular shape is     
369 touchpads, the SEMI_MT property should be set.    
370                                                   
371 Depending on the device, the rectangle may enc    
372 bounding box, or just some of them, for instan    
373 touches. The diversity makes the rectangle of     
374 gestures can normally be extracted from it.       
375                                                   
376 If INPUT_PROP_SEMI_MT is not set, the device i    
377 device.                                           
378                                                   
379 INPUT_PROP_TOPBUTTONPAD                           
380 -----------------------                           
381                                                   
382 Some laptops, most notably the Lenovo 40 serie    
383 device but do not have physical buttons associ    
384 device. Instead, the top area of the touchpad     
385 visual/haptic areas for left, middle, right bu    
386 with the trackstick.                              
387                                                   
388 If INPUT_PROP_TOPBUTTONPAD is set, userspace s    
389 accordingly. This property does not affect ker    
390 The kernel does not provide button emulation f    
391 them as any other INPUT_PROP_BUTTONPAD device.    
392                                                   
393 INPUT_PROP_ACCELEROMETER                          
394 ------------------------                          
395                                                   
396 Directional axes on this device (absolute and/    
397 accelerometer data. Some devices also report g    
398 can report through the rotational axes (absolu    
399                                                   
400 All other axes retain their meaning. A device     
401 regular directional axes and accelerometer axe    
402                                                   
403 Guidelines                                        
404 ==========                                        
405                                                   
406 The guidelines below ensure proper single-touc    
407 For multi-touch functionality, see the multi-t    
408 more information.                                 
409                                                   
410 Mice                                              
411 ----                                              
412                                                   
413 REL_{X,Y} must be reported when the mouse move    
414 the primary button press. BTN_{MIDDLE,RIGHT,4,    
415 further buttons of the device. REL_WHEEL and R    
416 scroll wheel events where available.              
417                                                   
418 Touchscreens                                      
419 ------------                                      
420                                                   
421 ABS_{X,Y} must be reported with the location o    
422 used to report when a touch is active on the s    
423 BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be repo    
424 contact. BTN_TOOL_<name> events should be repo    
425                                                   
426 For new hardware, INPUT_PROP_DIRECT should be     
427                                                   
428 Trackpads                                         
429 ---------                                         
430                                                   
431 Legacy trackpads that only provide relative po    
432 events like mice described above.                 
433                                                   
434 Trackpads that provide absolute touch position    
435 location of the touch. BTN_TOUCH should be use    
436 on the trackpad. Where multi-finger support is    
437 be used to report the number of touches active    
438                                                   
439 For new hardware, INPUT_PROP_POINTER should be    
440                                                   
441 Tablets                                           
442 -------                                           
443                                                   
444 BTN_TOOL_<name> events must be reported when a    
445 the tablet. ABS_{X,Y} must be reported with th    
446 should be used to report when the tool is in c    
447 BTN_{STYLUS,STYLUS2} should be used to report     
448 button may be used for buttons on the tablet e    
449 BTN_{0,1,2,etc} are good generic codes for unl    
450 meaningful buttons, like BTN_FORWARD, unless t    
451 purpose on the device.                            
452                                                   
453 For new hardware, both INPUT_PROP_DIRECT and I    
                                                      

~ [ 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