page.title=Input Device Configuration Files
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<p>Input device configuration files (<code>.idc</code> files) contain device-specific
configuration properties that affect the behavior of input devices.</p>
<p>Input device configuration files are typically not necessary for standard
peripherals such as HID keyboards and mice since the default system behavior
usually ensures that they will work out of the box.  On the other hand,
built-in embedded devices, particularly touch screens, almost always
require input device configuration files to specify their behavior.</p>
<h2 id="rationale">Rationale</h2>
<p>Android automatically detects and configures most input device capabilities
based on the event types and properties that are reported by the associated
Linux kernel input device driver.</p>
<p>For example, if an input device supports the <code>EV_REL</code> event type and codes
<code>REL_X</code> and <code>REL_Y</code> as well as the <code>EV_KEY</code> event type and <code>BTN_MOUSE</code>,
then Android will classify the input device as a mouse.  The default behavior
for a mouse is to present an on-screen cursor which tracks the mouse's movements
and simulates touches when the mouse is clicked.  Although the mouse can
be configured differently, the default behavior is usually sufficient for
standard mouse peripherals.</p>
<p>Certain classes of input devices are more ambiguous.  For example, multi-touch
touch screens and touch pads both support the <code>EV_ABS</code> event type and codes
<code>ABS_MT_POSITION_X</code> and <code>ABS_MT_POSITION_Y</code> at a minimum.  However, the intended
uses of these devices are quite different and cannot always be determined
automatically.  Also, additional information is required to make sense of the
pressure and size information reported by touch devices.  Hence touch devices,
especially built-in touch screens, usually need IDC files.</p>
<h2 id="location">Location</h2>
<p>Input device configuration files are located by USB vendor, product (and
optionally version) id or by input device name.</p>
<p>The following paths are consulted in order.</p>
<ul>
<li><code>/system/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc</code></li>
<li><code>/system/usr/idc/Vendor_XXXX_Product_XXXX.idc</code></li>
<li><code>/system/usr/idc/DEVICE_NAME.idc</code></li>
<li><code>/data/system/devices/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc</code></li>
<li><code>/data/system/devices/idc/Vendor_XXXX_Product_XXXX.idc</code></li>
<li><code>/data/system/devices/idc/DEVICE_NAME.idc</code></li>
</ul>
<p>When constructing a file path that contains the device name, all characters
in the device name other than '0'-'9', 'a'-'z', 'A'-'Z', '-' or '_' are replaced by '_'.</p>
<h2 id="syntax">Syntax</h2>
<p>An input device configuration file is a plain text file consisting of property
assignments and comments.</p>
<h3 id="properties">Properties</h3>
<p>Property assignments each consist of a property name, an <code>=</code>, a property value,
and a new line.  Like this:</p>
<pre><code>property = value
</code></pre>
<p>Property names are non-empty literal text identifiers.  They must not contain
whitespace.  Each components of the input system defines a set of properties
that are used to configure its function.</p>
<p>Property values are non-empty string literals, integers or floating point numbers.
They must not contain whitespace or the reserved characters <code>\</code> or <code>"</code>.</p>
<p>Property names and values are case-sensitive.</p>
<h3 id="comments">Comments</h3>
<p>Comment lines begin with '#' and continue to the end of the line.  Like this:</p>
<pre><code># A comment!
</code></pre>
<p>Blank lines are ignored.</p>
<h3 id="example">Example</h3>
<pre><code># This is an example of an input device configuration file.
# It might be used to describe the characteristics of a built-in touch screen.

# This is an internal device, not an external peripheral attached to the USB
# or Bluetooth bus.
device.internal = 1

# The device should behave as a touch screen, which uses the same orientation
# as the built-in display.
touch.deviceType = touchScreen
touch.orientationAware = 1

# Additional calibration properties...
# etc...
</code></pre>
<h2 id="common-properties">Common Properties</h2>
<p>The following properties are common to all input device classes.</p>
<p>Refer to the documentation of each input device class for information about the
special properties used by each class.</p>
<h4 id="deviceinternal"><code>device.internal</code></h4>
<p><em>Definition:</em> <code>device.internal</code> = <code>0</code> | <code>1</code></p>
<p>Specifies whether the input device is an internal built-in component as opposed to an
externally attached (most likely removable) peripheral.</p>
<ul>
<li>
<p>If the value is <code>0</code>, the device is external.</p>
</li>
<li>
<p>If the value is <code>1</code>, the device is internal.</p>
</li>
<li>
<p>If the value is not specified, the default value is <code>0</code> for all devices on the
    USB (BUS_USB) or Bluetooth (BUS_BLUETOOTH) bus, <code>1</code> otherwise.</p>
</li>
</ul>
<p>This property determines default policy decisions regarding wake events.</p>
<p>Internal input devices generally do not wake the display from sleep unless explicitly
configured to do so in the key layout file or in a hardcoded policy rule.  This
distinction prevents key presses and touches from spuriously waking up your phone
when it is in your pocket.  Usually there are only a small handful of wake keys defined.</p>
<p>Conversely, external input devices usually wake the device more aggressively because
they are assumed to be turned off or not plugged in during transport.  For example,
pressing any key on an external keyboard is a good indicator that the user wants the
device to wake up and respond.</p>
<p>It is important to ensure that the value of the <code>device.internal</code> property is set
correctly for all internal input devices.</p>
<h2 id="validation">Validation</h2>
<p>Make sure to validate your input device configuration files using the
<a href="validate-keymaps.html">Validate Keymaps</a> tool.</p>

