/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file.  Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: http://www.gnu.org/copyleft/fdl.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtquick-input-topic.html
\title Important Concepts In Qt Quick - User Input
\brief Overview of user input concepts

Being able to respond to user-input is a fundamental part of user-interface
design.  Depending on the use-case that an application solves, and the
form-factor of the device that the application runs on, the best way
to receive user-input may be different.

\section1 Touch

Allowing users to physically touch a screen to interact with an application is
a popular user-interface paradigm on portable devices like smartphones and
tablets.

Qt Quick was designed specifically with touch-driven user-interfaces in mind,
and thus touch events are supported in various visual object types, from
\l{Flickable} lists to the generic \l{MultiPointTouchArea} type, as well as
in the \l{MouseArea} type (which will be documented thoroughly in a proceeding
section).


\section1 Mouse

Mouse input is another important user input for user interfaces. Detecting
and reacting to clicks and presses according to the mouse cursor position is a fundamental
concept in user-interface design.

Qt Quick provides the MouseArea visual object type which automatically receives
mouse events (including clicks and wheel events) which allows developers to
create custom user-interface objects to handle mouse input.  Please see the
documentation about \l{qtquick-input-mouseevents.html}
{mouse events in Qt Quick} for more information on the topic.


\section1 Keyboard Input and Keyboard Focus

Supporting input from a keyboard is a vital component of the user interface of
many applications.

Any visual item can receive keyboard input through the \l Keys attached type.
Additionally, the issue of \e {keyboard focus} arises when multiple items
are required to receive key events, as these events must be passed to the
correct item. See the documentation about \l{Keyboard focus in Qt Quick} for more
information on this topic.

Qt Quick also provides visual text items which automatically receive keyboard
events and key-presses, and displays the appropriate text.  See the
documentation about \l{qtquick-input-textinput.html}{text input} for
in-depth information on the topic.


\section1 Device Motion Gestures

Detecting device gestures with an accelerometer, or through camera-based gesture
recognition, can allow users to interact with an application without requiring
their full and undevided attention.  It can also provide a more interactive
and engaging experience.

Qt Quick itself does not offer first-class support for physical device motion gestures;
however, the \l{Qt Sensors} module provides QML types with support for such gestures.
See the \l{Qt Sensors} module documentation for more information on the topic.

*/

