Qt 5.9 introduces many new features and improvements as well as bugfixes
over the 5.8.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

http://doc.qt.io/qt-5/index.html

The Qt version 5.9 series is binary compatible with the 5.8.x series.
Applications compiled for 5.8 will continue to run with 5.9.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

https://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                              New Features                                *
****************************************************************************

 -  Changed behavior of shift handler to only activate
   caps lock if the shift key is double-clicked.
 -  Added support for selection handles for the dedicated VKB.
 - [QTBUG-54254]  Add support for external keyboard layouts, which allows
   overriding and exclusion of the built-in keyboard layouts
 -  Add new property InputContext.uppercase, which is set to
   true when either InputContext.shift or InputContext.capsLock is true
 -  Added language selection popup for faster selection of
   input language.
 -  Automatically hide word candidate list when inactive.
 -  Added support for automatic selection of the only remaining
   word in the suggestion list.
 -  Added full screen input mode for super wide screens.
