--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt
+# Author: Mirko Vogt <mirko@openwrt.org>
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=qt5tools
+PKG_VERSION:=5.8.0
+PKG_RELEASE:=1
+PKG_HASH:=95ec8e76d393b6ba26ffff5041fce41946d2bf3aec1402c6533e24d9fc269d83
+
+PKG_SYS_NAME:=qttools-opensource-src-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz
+PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules
+
+PKG_HOST_ONLY:=1
+PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME)
+HOST_BUILD_DIR=$(BUILD_DIR)/host/$(PKG_SYS_NAME)
+PKG_BUILD_PARALLEL:=1
+HOST_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+HOST_BUILD_DEPENDS:=qt5base/host
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/nls.mk
+-include $(STAGING_DIR)/host/mk/qmake.mk
+
+define Package/qt5tools
+ SECTION:=video-frameworks
+ CATEGORY:=Video
+ SUBMENU:=Frameworks and Toolkits
+ TITLE:=qt5tools
+ URL:=http://qt.io
+ MAINTAINER:=Mirko Vogt <mirko@openwrt.org>
+ DEPENDS:=+qt5base
+ BUILDONLY:=1
+endef
+
+define Host/Install
+ $(call Host/Install/Default)
+
+ $(INSTALL_DIR) \
+ $(STAGING_DIR_HOST)/lib \
+ $(STAGING_DIR_HOST)/bin
+
+ $(CP) \
+ $(HOST_INSTALL_DIR)/lib/* \
+ $(STAGING_DIR_HOST)/lib/
+
+ $(CP) \
+ $(HOST_INSTALL_DIR)/bin/* \
+ $(STAGING_DIR_HOST)/bin/
+endef
+
+$(eval $(call BuildPackage,qt5tools))
+$(eval $(call HostBuild))
--- /dev/null
+diff -ruN qttools-opensource-src-5.8.0.orig/src/kmap2qmap/main.cpp qttools-opensource-src-5.8.0/src/kmap2qmap/main.cpp
+--- qttools-opensource-src-5.8.0.orig/src/kmap2qmap/main.cpp 2017-01-02 07:50:13.000000000 +0100
++++ qttools-opensource-src-5.8.0/src/kmap2qmap/main.cpp 2017-02-21 03:07:04.565561784 +0100
+@@ -270,6 +270,8 @@
+ { "Pause", Qt::Key_Pause },
+ { "VolumeDown", Qt::Key_VolumeDown },
+ { "VolumeUp", Qt::Key_VolumeUp },
++ { "VolumeMute", Qt::Key_VolumeMute },
++ { "MicMute", Qt::Key_MicMute },
+ { "MediaTogglePlayPause", Qt::Key_MediaTogglePlayPause },
+ { "MediaPlay", Qt::Key_MediaPlay },
+ { "MediaPause", Qt::Key_MediaPause },
+@@ -286,6 +288,11 @@
+ { "ToggleCallHangup", Qt::Key_ToggleCallHangup },
+ { "VoiceDial" , Qt::Key_VoiceDial },
+ { "LastNumberRedial", Qt::Key_LastNumberRedial },
++ { "Phone", Qt::Key_Phone },
++ { "Menu", Qt::Key_Menu },
++ { "Back", Qt::Key_Back },
++ { "LaunchMail", Qt::Key_LaunchMail },
++ { "LaunchMedia", Qt::Key_LaunchMedia },
+
+ { "KP_0", Qt::Key_0 | Qt::KeypadModifier },
+ { "KP_1", Qt::Key_1 | Qt::KeypadModifier },
+@@ -696,8 +703,8 @@
+ if (kcpos >= 0 && kcpos < (tokens.count()-3) && tokens[kcpos+2] == "=") {
+ quint16 keycode = tokens[kcpos+1].toInt();
+
+- if (keycode <= 0 || keycode > 0x1ff /* KEY_MAX */) {
+- parseWarning("keycode out of range [0..0x1ff]");
++ if (keycode <= 0 || keycode > 0x2ff /* KEY_MAX */) {
++ parseWarning("keycode out of range [0..0x2ff]");
+ break;
+ }
+