diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2012-02-01 12:12:24 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-02-01 12:14:17 -0500 |
commit | d04df0232d6b5172dc1958df1829abd0214c8969 (patch) | |
tree | 0804230b8237eeb777c2a1eb3639a273636b89a5 /Documentation/input/event-codes.txt | |
parent | 4936f97cbb99c19680ea6a3cc0148ebe51f0eb68 (diff) |
Input: document device properties
Add a section which defines the input device properties and provides
guidelines on how to use them.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Jussi Pakkanen <jussi.pakkanen@canonical.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'Documentation/input/event-codes.txt')
-rw-r--r-- | Documentation/input/event-codes.txt | 72 |
1 files changed, 64 insertions, 8 deletions
diff --git a/Documentation/input/event-codes.txt b/Documentation/input/event-codes.txt index 23fcb05175be..53305bd08182 100644 --- a/Documentation/input/event-codes.txt +++ b/Documentation/input/event-codes.txt | |||
@@ -17,11 +17,11 @@ reports supported by a device are also provided by sysfs in | |||
17 | class/input/event*/device/capabilities/, and the properties of a device are | 17 | class/input/event*/device/capabilities/, and the properties of a device are |
18 | provided in class/input/event*/device/properties. | 18 | provided in class/input/event*/device/properties. |
19 | 19 | ||
20 | Types: | 20 | Event types: |
21 | ========== | 21 | =========== |
22 | Types are groupings of codes under a logical input construct. Each type has a | 22 | Event types are groupings of codes under a logical input construct. Each |
23 | set of applicable codes to be used in generating events. See the Codes section | 23 | type has a set of applicable codes to be used in generating events. See the |
24 | for details on valid codes for each type. | 24 | Codes section for details on valid codes for each type. |
25 | 25 | ||
26 | * EV_SYN: | 26 | * EV_SYN: |
27 | - Used as markers to separate events. Events may be separated in time or in | 27 | - Used as markers to separate events. Events may be separated in time or in |
@@ -63,9 +63,9 @@ for details on valid codes for each type. | |||
63 | * EV_FF_STATUS: | 63 | * EV_FF_STATUS: |
64 | - Used to receive force feedback device status. | 64 | - Used to receive force feedback device status. |
65 | 65 | ||
66 | Codes: | 66 | Event codes: |
67 | ========== | 67 | =========== |
68 | Codes define the precise type of event. | 68 | Event codes define the precise type of event. |
69 | 69 | ||
70 | EV_SYN: | 70 | EV_SYN: |
71 | ---------- | 71 | ---------- |
@@ -220,6 +220,56 @@ EV_PWR: | |||
220 | EV_PWR events are a special type of event used specifically for power | 220 | EV_PWR events are a special type of event used specifically for power |
221 | mangement. Its usage is not well defined. To be addressed later. | 221 | mangement. Its usage is not well defined. To be addressed later. |
222 | 222 | ||
223 | Device properties: | ||
224 | ================= | ||
225 | Normally, userspace sets up an input device based on the data it emits, | ||
226 | i.e., the event types. In the case of two devices emitting the same event | ||
227 | types, additional information can be provided in the form of device | ||
228 | properties. | ||
229 | |||
230 | INPUT_PROP_DIRECT + INPUT_PROP_POINTER: | ||
231 | -------------------------------------- | ||
232 | The INPUT_PROP_DIRECT property indicates that device coordinates should be | ||
233 | directly mapped to screen coordinates (not taking into account trivial | ||
234 | transformations, such as scaling, flipping and rotating). Non-direct input | ||
235 | devices require non-trivial transformation, such as absolute to relative | ||
236 | transformation for touchpads. Typical direct input devices: touchscreens, | ||
237 | drawing tablets; non-direct devices: touchpads, mice. | ||
238 | |||
239 | The INPUT_PROP_POINTER property indicates that the device is not transposed | ||
240 | on the screen and thus requires use of an on-screen pointer to trace user's | ||
241 | movements. Typical pointer devices: touchpads, tablets, mice; non-pointer | ||
242 | device: touchscreen. | ||
243 | |||
244 | If neither INPUT_PROP_DIRECT or INPUT_PROP_POINTER are set, the property is | ||
245 | considered undefined and the device type should be deduced in the | ||
246 | traditional way, using emitted event types. | ||
247 | |||
248 | INPUT_PROP_BUTTONPAD: | ||
249 | -------------------- | ||
250 | For touchpads where the button is placed beneath the surface, such that | ||
251 | pressing down on the pad causes a button click, this property should be | ||
252 | set. Common in clickpad notebooks and macbooks from 2009 and onwards. | ||
253 | |||
254 | Originally, the buttonpad property was coded into the bcm5974 driver | ||
255 | version field under the name integrated button. For backwards | ||
256 | compatibility, both methods need to be checked in userspace. | ||
257 | |||
258 | INPUT_PROP_SEMI_MT: | ||
259 | ------------------ | ||
260 | Some touchpads, most common between 2008 and 2011, can detect the presence | ||
261 | of multiple contacts without resolving the individual positions; only the | ||
262 | number of contacts and a rectangular shape is known. For such | ||
263 | touchpads, the semi-mt property should be set. | ||
264 | |||
265 | Depending on the device, the rectangle may enclose all touches, like a | ||
266 | bounding box, or just some of them, for instance the two most recent | ||
267 | touches. The diversity makes the rectangle of limited use, but some | ||
268 | gestures can normally be extracted from it. | ||
269 | |||
270 | If INPUT_PROP_SEMI_MT is not set, the device is assumed to be a true MT | ||
271 | device. | ||
272 | |||
223 | Guidelines: | 273 | Guidelines: |
224 | ========== | 274 | ========== |
225 | The guidelines below ensure proper single-touch and multi-finger functionality. | 275 | The guidelines below ensure proper single-touch and multi-finger functionality. |
@@ -240,6 +290,8 @@ used to report when a touch is active on the screen. | |||
240 | BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be reported as the result of touch | 290 | BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be reported as the result of touch |
241 | contact. BTN_TOOL_<name> events should be reported where possible. | 291 | contact. BTN_TOOL_<name> events should be reported where possible. |
242 | 292 | ||
293 | For new hardware, INPUT_PROP_DIRECT should be set. | ||
294 | |||
243 | Trackpads: | 295 | Trackpads: |
244 | ---------- | 296 | ---------- |
245 | Legacy trackpads that only provide relative position information must report | 297 | Legacy trackpads that only provide relative position information must report |
@@ -250,6 +302,8 @@ location of the touch. BTN_TOUCH should be used to report when a touch is active | |||
250 | on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should | 302 | on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should |
251 | be used to report the number of touches active on the trackpad. | 303 | be used to report the number of touches active on the trackpad. |
252 | 304 | ||
305 | For new hardware, INPUT_PROP_POINTER should be set. | ||
306 | |||
253 | Tablets: | 307 | Tablets: |
254 | ---------- | 308 | ---------- |
255 | BTN_TOOL_<name> events must be reported when a stylus or other tool is active on | 309 | BTN_TOOL_<name> events must be reported when a stylus or other tool is active on |
@@ -260,3 +314,5 @@ button may be used for buttons on the tablet except BTN_{MOUSE,LEFT}. | |||
260 | BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use | 314 | BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use |
261 | meaningful buttons, like BTN_FORWARD, unless the button is labeled for that | 315 | meaningful buttons, like BTN_FORWARD, unless the button is labeled for that |
262 | purpose on the device. | 316 | purpose on the device. |
317 | |||
318 | For new hardware, both INPUT_PROP_DIRECT and INPUT_PROP_POINTER should be set. | ||