--- qt-x11-free-3.3.6.orig/debian/KUBUNTU-DEBIAN-CHANGES +++ qt-x11-free-3.3.6/debian/KUBUNTU-DEBIAN-CHANGES @@ -0,0 +1,4 @@ +No firebird/ibase build (remove build-dep, control entry, ibase ./configure option), firebird is not in Ubuntu main +gl build-deps different +install qtrc (change rules, qtrc file) +compile with -inputmethod-ext --- qt-x11-free-3.3.6.orig/debian/qt3-apps-dev.install +++ qt-x11-free-3.3.6/debian/qt3-apps-dev.install @@ -0,0 +1,7 @@ +usr/lib/libeditor.prl +usr/lib/libeditor.a +usr/lib/libdesignercore.prl +usr/lib/libdesignercore.a +usr/lib/libqassistantclient.prl +usr/lib/libqassistantclient.a +usr/include/qt3/qassistantclient.h --- qt-x11-free-3.3.6.orig/debian/qtrc +++ qt-x11-free-3.3.6/debian/qtrc @@ -0,0 +1,32 @@ +[3.3] +libraryPath=/usr/lib/kde3/plugins/ + +[General] +GUIEffects=general^eanimatecombo^e +embedFonts=true +enableXft=true +font=DejaVu Sans,9,-1,5,50,0,0,0,0,0 +fontPath=\0 +useXft=true +style=Plastik + +[KDE] +contrast=7 +kdeAddedLibraryPaths=/usr/lib/kde3/plugins/^e + +[KWinPalette] +activeBackground=#1f26ad +activeBlend=#259bb8 +activeForeground=#ffffff +activeTitleBtnBg=#e6e6e6 +frame=#efefef +inactiveBackground=#cdcdcd +inactiveBlend=#ababab +inactiveForeground=#dddddd +inactiveFrame=#efefef +inactiveTitleBtnBg=#ebebeb + +[Palette] +active=#000000^e#dddfe4^e#ffffff^e#ffffff^e#555555^e#c7c7c7^e#000000^e#ffffff^e#000000^e#ffffff^e#efefef^e#000000^e#678db2^e#ffffff^e#0000ee^e#52188b^e +disabled=#808080^e#dddfe4^e#ffffff^e#ffffff^e#555555^e#c7c7c7^e#c7c7c7^e#ffffff^e#808080^e#ffffff^e#efefef^e#000000^e#567594^e#ffffff^e#0000ee^e#52188b^e +inactive=#000000^e#dddfe4^e#ffffff^e#ffffff^e#555555^e#c7c7c7^e#000000^e#ffffff^e#000000^e#ffffff^e#efefef^e#000000^e#678db2^e#ffffff^e#0000ee^e#52188b^e \ No newline at end of file --- qt-x11-free-3.3.6.orig/debian/libqt3-i18n.install +++ qt-x11-free-3.3.6/debian/libqt3-i18n.install @@ -0,0 +1,8 @@ +usr/share/qt3/translations/qt_ar.qm +usr/share/qt3/translations/qt_cs.qm +usr/share/qt3/translations/qt_de.qm +usr/share/qt3/translations/qt_es.qm +usr/share/qt3/translations/qt_fr.qm +usr/share/qt3/translations/qt_he.qm +usr/share/qt3/translations/qt_ru.qm +usr/share/qt3/translations/qt_sk.qm --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-psql.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-psql.install @@ -0,0 +1 @@ +usr/lib/qt3/plugins/sqldrivers/libqsqlpsql.so --- qt-x11-free-3.3.6.orig/debian/control +++ qt-x11-free-3.3.6/debian/control @@ -0,0 +1,267 @@ +Source: qt-x11-free +Maintainer: Debian Qt/KDE Maintainers +Uploaders: Christopher Martin , Adeodato Simó +Build-Depends: debhelper (>= 5.0.31), libxext-dev (>= 4.3.0.dfsg.1-4), libxrandr-dev (>= 4.3.0.dfsg.1-4), libsm-dev (>= 4.3.0.dfsg.1-4), libxmu-dev (>= 4.3.0.dfsg.1-4), libice-dev (>= 4.3.0.dfsg.1-4), libx11-dev (>= 4.3.0.dfsg.1-4), libxt-dev (>= 4.3.0.dfsg.1-4), libxrender-dev, libxcursor-dev, libxinerama-dev, libxi-dev, zlib1g-dev, libjpeg62-dev, libmng-dev (>= 1.0.3), libpng12-dev | libpng12-0-dev, libfontconfig1-dev, libfreetype6-dev, libxft-dev, libiodbc2-dev (>= 3.51.2-4), libmysqlclient15-dev | libmysqlclient-dev, flex, libpq-dev, libaudio-dev, libcupsys2-dev, libgl1-mesa-dev | libgl-dev, libglu1-mesa-dev | libglu-dev, dpatch (>= 1.13), libsqlite3-dev +Section: libs +Priority: optional +Standards-Version: 3.7.2 + +Package: libqt3-mt +Architecture: any +Section: libs +Replaces: qt3-tools (<< 2:3.0.2-20020306-1), libqt3-helper, libqt3, libqt3c102-mt +Depends: ${shlibs:Depends}, fontconfig +Recommends: libgl1-mesa-glx | libgl1, libglu1-mesa | libglu1, libxmu6 (>= 4.3.0.dfsg.1-4) +Conflicts: libqt3c102-mt, libqui1-emb, libqt3c-mt +Suggests: libqt3-mt-psql, libqt3-mt-mysql, libqt3-mt-odbc +Description: Qt GUI Library (Threaded runtime version), Version 3 + This is the Trolltech Qt library, version 3. It's necessary for + applications that link against the libqt-mt.so.3, e.g. all KDE3 + applications. + +Package: libqt3-mt-mysql +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Replaces: libqt3-mysql (<= 2:3.1.1+cvs.20021220-1), libqt3c102-mt-mysql +Conflicts: libqt3c102-mt-mysql, libqt3c-mt-mysql +Description: MySQL database driver for Qt3 (Threaded) + This package contains the threaded MySQL plugin for Qt3. Install it if + you intend to use or write Qt programs that are to access a MySQL DB. + +Package: libqt3-mt-odbc +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Replaces: libqt3-odbc (<= 2:3.1.1+cvs.20021220-1), libqt3c102-mt-odbc +Conflicts: libqt3c102-mt-odbc, libqt3c-mt-odbc +Description: ODBC database driver for Qt3 (Threaded) + This package contains the threaded ODBC plugin for Qt3. Install it if + you intend to use or write Qt programs that are to access an ODBC DB. + +Package: libqt3-mt-psql +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Replaces: libqt3-psql (<= 2:3.1.1+cvs.20021220-1), libqt3c102-mt-psql +Conflicts: libqt3c102-mt-psql, libqt3c-mt-psql +Description: PostgreSQL database driver for Qt3 (Threaded) + This package contains the threaded PostgreSQL plugin for Qt3. + Install it if you intend to use or write Qt programs that are + to access a PostgreSQL DB. + +Package: libqt3-mt-sqlite +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Conflicts: libqt3c102-mt-sqlite +Replaces: libqt3c102-mt-sqlite +Description: SQLite database driver for Qt3 (Threaded) + This package contains the threaded SQLite plugin for Qt3. Install + it if you intend to use or write Qt programs that are to access an + SQLite DB. + +Package: libqt3-mt-dev +Architecture: any +Section: libdevel +Replaces: libqt-mt-dev, libqt3-dev, libqt3-helper, libqt3-headers (<= 3:3.1.1-3), libqt3-emb (<= 3:3.0.3-1) +Depends: libxext-dev (>= 4.3.0.dfsg.1-4), libxrandr-dev (>= 4.3.0.dfsg.1-4), libsm-dev (>= 4.3.0.dfsg.1-4), libxmu-dev (>= 4.3.0.dfsg.1-4), libice-dev (>= 4.3.0.dfsg.1-4), libx11-dev (>= 4.3.0.dfsg.1-4), libxt-dev (>= 4.3.0.dfsg.1-4), libxrender-dev, libxcursor-dev, libxinerama-dev, libxi-dev, zlib1g-dev, libjpeg62-dev, libmng-dev (>= 1.0.3), libpng12-dev | libpng12-0-dev, libfontconfig1-dev, libfreetype6-dev, libxft-dev, libaudio-dev, libcupsys2-dev, libgl1-mesa-dev | libgl-dev, libglu1-mesa-dev | libglu-dev, libc6-dev, libqt3-mt (= ${Source-Version}), libqt3-headers (= ${Source-Version}), qt3-dev-tools (= ${Source-Version}) +Conflicts: libqt-mt-dev, libqt3-emb (<= 3:3.0.3-1), libqt3-dev +Recommends: libqt3-compat-headers +Suggests: libqt3-i18n, qt3-doc +Description: Qt development files (Threaded) + Qt is a C++ class library optimized for graphical user interface + development. This package contains the libqt-mt.so symlink, necessary + for building threaded Qt applications as well as the libqui.so symlink + and the necessary header files for libqui.so. (See README.Debian and + the Qt Documentation for instructions on libqui.so) + . + WARNING: If you plan to build some older Qt3 applications, you will + most probably have to install the libqt3-compat-headers package. It + contains all the headers which are not part of the official Qt3 API + anymore but which are still used by some programs. So if you encounter + problems with missing header files, please install this package first + before you send a bugreport. + +Package: libqt3-headers +Architecture: any +Section: devel +Recommends: libqt3-mt-dev +Replaces: libqt3-mt-dev, libqt3-dev, libqt3-plugins-headers +Description: Qt3 header files + This package contains all header files for libqt and libqt-mt which come + with Qt3. If you want to compile or develop programs which use Qt3, you + have to install this package. + +Package: libqt3-compat-headers +Architecture: any +Section: devel +Depends: libqt3-headers (= ${Source-Version}) +Recommends: libqt3-mt-dev +Replaces: libqt3-mt-dev (<= 3:3.1.1-2), libqt3-dev (<= 3:3.1.1-2), libqt3-headers (<= 3:3.1.1-2) +Description: Qt 1.x and 2.x compatibility includes + This package contains header files that are intended for build + compatibility for applications that build with Qt3 but still use + deprecated includes. It is meant as an intermediate solution and + these header files are not part of the official Qt3 API. + All sourcecode that is still using the headers of this package is + subject to be changed to use the new header files which are in + libqt3-headers. + +Package: qt3-dev-tools +Architecture: any +Section: devel +Depends: ${shlibs:Depends} +Recommends: libqt3-mt-dev +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev, qt3-doc (<= 3:3.1.1-2) +Conflicts: libqt-dev (<< 3:2.3.2-10), uic (<= 3:2.3.2-9) +Description: Qt3 development tools + This package contains all tools that are necessary to build programs + that are written using Qt3. These are: qmake, uic and moc. + For Qt3 development, you most likely want to install this package. + +Package: qt3-designer +Architecture: any +Section: devel +Depends: ${shlibs:Depends} +Recommends: qt3-dev-tools +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev, qt3-doc (= 3:3.3.4-8) +Suggests: qt3-assistant, qt3-doc +Conflicts: qt-designer (<= 3:2.3.2-9), qt-designer-doc +Description: Qt3 Designer + The Qt Designer is a GUI design program that interactively lets you + construct user interfaces for the Qt library. Additionally it lets you + create whole project and works together with the database drivers + provided by Qt to create applications with easy database accesss through + Qt. The resulting user interface files can then be converted to + C++ classes using the uic commandline utility which is usually done + automatically for the developer with a project management with qmake + or automake. + +Package: qt3-apps-dev +Architecture: any +Section: devel +Depends: libqt3-mt-dev +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev +Description: Qt3 Developer applications development files + This package is intended for developers who want to develop applications + using the additional static libraries that ship with the applications + included with Qt; the Qt Designer and the Qt Assistant. + It allows integrating additional enhancements into the Qt Designer + respectively faciliate the Qt Assistant from within your Qt application + to interactively call the Assistant for displaying online help that the + developer includes with his application. + +Package: qt3-linguist +Architecture: any +Section: devel +Suggests: qt3-assistant +Depends: ${shlibs:Depends} +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev, qt3-doc (= 3:3.3.4-8) +Description: The Qt3 Linguist + This package contains the Qt3 Linguist which provides translators a + tool perfect for translating any Qt-based application into other + languages and can be used and installed independently of any Qt + development files by the translator. + +Package: qt3-assistant +Architecture: any +Section: x11 +Depends: ${shlibs:Depends}, qt3-doc +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev +Description: The Qt3 assistant application + This package contains the Qt3 Assistant, an easy to use frontend for + the complete Qt3 documentation and serves as an online help viewer for + any Qt program that wants to give the usesr access to online help. + Within the Qt tools it is used as the help viewer for the online help + for the Qt3 Designer and Linguist as well as qmake and the Qt 3 API + documentation. + . + Developers of Qt Application who want to faciliate the Qt Assistant for online + help display should refer to the README.Debian file for libqt3-mt-dev and + the package qt3-apps-dev. + +Package: qt3-qtconfig +Architecture: any +Section: x11 +Depends: ${shlibs:Depends} +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev +Description: The Qt3 Configuration Application + The Qt Configuration program allows endusers to configure the look + and behavior of any Qt3 application. It is mostly only necessary + on systems which don't run KDE because the KDE control center already + covers this configuration automatically for the users Qt3 applications + according to his desktop settings in KDE. However, if you need to run + CJK-fonts or other non-latin scripts, you will most likely want to + install this package. + +Package: qt3-dev-tools-embedded +Architecture: any +Section: devel +Recommends: libqt3-mt-dev +Depends: ${shlibs:Depends} +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev +Description: Tools to develop embedded Qt applications + This package contains applications only suitable for developing + applications with Qt Embedded and/or Qtopia. It provides the QVFB + program for simulating an embedded device desktop as well as makeqpf + for converting fonts to embedded fonts suitable for being utilized + by Qt Embedded applications. + +Package: qt3-dev-tools-compat +Architecture: any +Section: devel +Recommends: libqt3-mt-dev +Depends: ${shlibs:Depends} +Replaces: qt3-tools, libqt3-dev, libqt3-mt-dev +Description: Conversion utilities for Qt3 development + This package contains some older Qt tools (namely qt20fix qtrename140, + qm2ts, mergetr, findtr and msg2qm). These tools are needed only by + application developers who need to migrate any Qt application written + for Qt 1.x or 2.x over to Qt 3.x. The purpose of the tools are to + help fixing the changes with include file renaming as well as migrating + the message file format of Qt 2 translation files or any gettext-based + translation system to the Qt 3 system. + +Package: libqt3-i18n +Architecture: all +Section: libs +Recommends: libqt3-mt +Description: i18n files for Qt3 library + This package contains the internationalization files for the Qt library. + Qt applications that are internationalized will need to depend on this package + for full internationalization support of the application towards the end user. + +Package: qt3-doc +Architecture: all +Section: doc +Priority: extra +Replaces: qt-doc +Suggests: libqt3-headers, qt3-assistant | www-browser +Description: Qt3 API documentation + This package contains the complete API documentation for Qt3. + Examples to coding are in qt3-examples. The documentation is provided + in HTML and manpage format; the HTML version can be viewed in conjunction + with the Qt Assistant. + +Package: qt3-examples +Architecture: all +Section: doc +Priority: extra +Depends: libqt3-mt-dev (>= ${Source-Version}) +Description: Examples for Qt3 + These are examples provided with Qt3. They may be especially useful for + you if you are learning to program in Qt as they cover quite a lot of + things that are possible with Qt3. + +Package: qt-x11-free-dbg +Section: libdevel +Architecture: any +Priority: extra +Depends: libqt3-mt (= ${Source-Version}) +Conflicts: libqt3-mt-dbg +Replaces: libqt3-mt-dbg +Description: debugging symbols for qt-x11-free binaries + This package contains the debugging symbols associated with qt-x11-free. + They will automatically be used by gdb for debugging Qt-related + issues. --- qt-x11-free-3.3.6.orig/debian/qt3-assistant.postinst +++ qt-x11-free-3.3.6/debian/qt3-assistant.postinst @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +update-alternatives --install \ + /usr/bin/assistant assistant "/usr/bin/assistant-qt3" "45" \ + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/qt3-doc.docs +++ qt-x11-free-3.3.6/debian/qt3-doc.docs @@ -0,0 +1,2 @@ +FAQ +README-QT.TXT --- qt-x11-free-3.3.6.orig/debian/libqt3-compat-headers.install +++ qt-x11-free-3.3.6/debian/libqt3-compat-headers.install @@ -0,0 +1,54 @@ +usr/include/qt3/q1xcompatibility.h +usr/include/qt3/qapp.h +usr/include/qt3/qarray.h +usr/include/qt3/qbitarry.h +usr/include/qt3/qbttngrp.h +usr/include/qt3/qchkbox.h +usr/include/qt3/qclipbrd.h +usr/include/qt3/qcollect.h +usr/include/qt3/qcollection.h +usr/include/qt3/qcombo.h +usr/include/qt3/qconnect.h +usr/include/qt3/qdatetm.h +usr/include/qt3/qdrawutl.h +usr/include/qt3/qdstream.h +usr/include/qt3/qfiledef.h +usr/include/qt3/qfiledlg.h +usr/include/qt3/qfileinf.h +usr/include/qt3/qfontinf.h +usr/include/qt3/qfontmet.h +usr/include/qt3/qgrpbox.h +usr/include/qt3/qintcach.h +usr/include/qt3/qiodev.h +usr/include/qt3/qlcdnum.h +usr/include/qt3/qlined.h +usr/include/qt3/qlist.h +usr/include/qt3/qmenudta.h +usr/include/qt3/qmetaobj.h +usr/include/qt3/qmlined.h +usr/include/qt3/qmsgbox.h +usr/include/qt3/qmultilinedit.h +usr/include/qt3/qobjcoll.h +usr/include/qt3/qobjdefs.h +usr/include/qt3/qpaintd.h +usr/include/qt3/qpaintdc.h +usr/include/qt3/qpdevmet.h +usr/include/qt3/qpmcache.h +usr/include/qt3/qpntarry.h +usr/include/qt3/qpopmenu.h +usr/include/qt3/qprndlg.h +usr/include/qt3/qprogbar.h +usr/include/qt3/qprogdlg.h +usr/include/qt3/qpsprn.h +usr/include/qt3/qpushbt.h +usr/include/qt3/qqueue.h +usr/include/qt3/qradiobt.h +usr/include/qt3/qrangect.h +usr/include/qt3/qscrbar.h +usr/include/qt3/qsocknot.h +usr/include/qt3/qstack.h +usr/include/qt3/qtabdlg.h +usr/include/qt3/qtstream.h +usr/include/qt3/qvector.h +usr/include/qt3/qwidcoll.h +usr/include/qt3/qwindefs.h --- qt-x11-free-3.3.6.orig/debian/qt3-qtconfig.postinst +++ qt-x11-free-3.3.6/debian/qt3-qtconfig.postinst @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +update-alternatives --install \ + /usr/bin/qtconfig qtconfig "/usr/bin/qtconfig-qt3" "45" \ + --slave /usr/share/man/man1/qtconfig.1.gz qtconfig.1.gz \ + "/usr/share/man/man1/qtconfig-qt3.1.gz" + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/qt3-designer.install +++ qt-x11-free-3.3.6/debian/qt3-designer.install @@ -0,0 +1,8 @@ +usr/bin/designer +usr/bin/createcw +usr/bin/conv2ui +usr/share/qt3/templates/* +usr/share/qt3/doc/html/designer*html +usr/share/qt3/doc/html/designer*dcf +usr/share/qt3/doc/html/designer*jpg +usr/lib/qt3/plugins/designer/* --- qt-x11-free-3.3.6.orig/debian/qt3-linguist.links +++ qt-x11-free-3.3.6/debian/qt3-linguist.links @@ -0,0 +1 @@ +/usr/bin/linguist-qt3 /usr/share/qt3/bin/linguist --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools.postinst +++ qt-x11-free-3.3.6/debian/qt3-dev-tools.postinst @@ -0,0 +1,28 @@ +#!/bin/sh + +set -e + +update-alternatives --install \ + /usr/bin/moc moc "/usr/bin/moc-qt3" "45" \ + --slave /usr/share/man/man1/moc.1.gz moc.1.gz \ + "/usr/share/man/man1/moc-qt3.1.gz" + +update-alternatives --install \ + /usr/bin/uic uic "/usr/bin/uic-qt3" "45" \ + --slave /usr/share/man/man1/uic.1.gz uic.1.gz \ + "/usr/share/man/man1/uic-qt3.1.gz" + +update-alternatives --install \ + /usr/bin/lupdate lupdate "/usr/bin/lupdate-qt3" "45" \ + --slave /usr/share/man/man1/lupdate.1.gz lupdate.1.gz \ + "/usr/share/man/man1/lupdate-qt3.1.gz" + +update-alternatives --install \ + /usr/bin/lrelease lrelease "/usr/bin/lrelease-qt3" "45" \ + --slave /usr/share/man/man1/lrelease.1.gz lrelease.1.gz \ + "/usr/share/man/man1/lrelease-qt3.1.gz" + +update-alternatives --install \ + /usr/bin/qmake qmake "/usr/bin/qmake-qt3" "45" \ + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/qt3-linguist.prerm +++ qt-x11-free-3.3.6/debian/qt3-linguist.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) ;; + remove|failed-upgrade|deconfigure) + update-alternatives --remove linguist "/usr/bin/linguist-qt3" + ;; +esac + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-dev.links +++ qt-x11-free-3.3.6/debian/libqt3-mt-dev.links @@ -0,0 +1,7 @@ +/usr/lib/libqt-mt.la /usr/share/qt3/lib/libqt-mt.la +/usr/lib/libqui.prl /usr/share/qt3/lib/libqui.prl +/usr/lib/libqui.so.1.0.0 /usr/share/qt3/lib/libqui.so +/usr/lib/libqt-mt.prl /usr/share/qt3/lib/libqt-mt.prl +/usr/lib/libqt-mt.so.3.3.6 /usr/share/qt3/lib/libqt-mt.so +/usr/include/qt3 /usr/share/qt3/include +/usr/lib/qt3/plugins /usr/share/qt3/plugins --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools.links +++ qt-x11-free-3.3.6/debian/qt3-dev-tools.links @@ -0,0 +1,7 @@ +/usr/share/qt3/mkspecs/linux-g++ /usr/share/qt3/mkspecs/default +/usr/bin/qmake-qt3 /usr/share/qt3/bin/qmake +/usr/bin/lupdate-qt3 /usr/share/qt3/bin/lupdate +/usr/bin/lrelease-qt3 /usr/share/qt3/bin/lrelease +/usr/bin/uic-qt3 /usr/share/qt3/bin/uic +/usr/bin/moc-qt3 /usr/share/qt3/bin/moc +/usr/bin/qembed /usr/share/qt3/bin/qembed --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools.prerm +++ qt-x11-free-3.3.6/debian/qt3-dev-tools.prerm @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) ;; + remove|failed-upgrade|deconfigure) + update-alternatives --remove moc "/usr/bin/moc-qt3" + update-alternatives --remove uic "/usr/bin/uic-qt3" + update-alternatives --remove lupdate "/usr/bin/lupdate-qt3" + update-alternatives --remove lrelease "/usr/bin/lrelease-qt3" + update-alternatives --remove qmake "/usr/bin/qmake-qt3" + ;; +esac + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/rules +++ qt-x11-free-3.3.6/debian/rules @@ -0,0 +1,468 @@ +#!/usr/bin/make -f + +# build variables +export QTDIR=$(shell pwd) + +# re-set $(LD_LIBRARY_PATH) +OLD_LD_LIBRARY_PATH := $(LD_LIBRARY_PATH) +export LD_LIBRARY_PATH=$(QTDIR)/lib:$(OLD_LD_LIBRARY_PATH) + +# fix path +OLD_PATH := $(PATH) +export PATH=$(QTDIR)/bin:$(OLD_PATH) + +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) + +# dpatch stuff +include /usr/share/dpatch/dpatch.make + +# build variables (directorys) +DEBIAN = $(shell pwd)/debian +P_LIBS = $(DEBIAN)/libqt3-mt +P_DOC = $(DEBIAN)/qt3-doc +P_APPSDEV = $(DEBIAN)/qt3-apps-dev +P_HEADERS = $(DEBIAN)/libqt3-headers +P_QTMTDEV = $(DEBIAN)/libqt3-mt-dev + +TMP_INSTALL = $(DEBIAN)/tmp-install + +CONFIGURE_OPTS = \ + -prefix "/usr" \ + -sysconfdir "/etc/qt3" \ + -datadir "/usr/share/qt3" \ + -headerdir "/usr/include/qt3" \ + -docdir "/usr/share/qt3/doc" \ + -plugindir "/usr/lib/qt3/plugins" \ + -translationdir "/usr/share/qt3/translations" \ + \ + -debug \ + -thread \ + -shared \ + -fast \ + -no-exceptions \ + -platform linux-g++ \ + \ + -nis \ + -no-pch \ + -cups \ + -stl \ + -ipv6 \ + \ + -sm \ + -xshape \ + -xinerama \ + -xcursor \ + -xrandr \ + -xrender \ + -xft \ + -tablet \ + -xkb \ + \ + -system-zlib \ + -system-libpng \ + -system-libmng \ + -system-libjpeg \ + -system-nas-sound \ + \ + -enable-opengl \ + -dlopen-opengl \ + \ + -qt-gif \ + -qt-imgfmt-png \ + -qt-imgfmt-jpeg \ + -plugin-imgfmt-mng \ + \ + -plugin-sql-odbc \ + -plugin-sql-psql \ + -plugin-sql-mysql \ + -plugin-sql-sqlite \ + \ + -I/usr/include/mysql \ + -I/usr/include/freetype2 \ + -I`pg_config --includedir` \ + \ + -lfontconfig \ + -inputmethod \ + # End of CONFIGURE_OPTS + +interbase_archs := none +ifneq ($(DEB_HOST_ARCH_CPU),$(findstring $(DEB_HOST_ARCH_CPU),$(interbase_archs))) + CONFIGURE_OPTS += -no-sql-ibase + IBASE = -Nlibqt3-mt-ibase +else + IBASE = +endif + +ifeq ($(DEB_HOST_ARCH),arm) + CONFIGURE_OPTS += -DQT_QLOCALE_USES_FCVT +endif + +build: patch libqt-thread-stamp + + touch build-stamp + +libqt-thread-stamp: + + @echo "QTDIR is ${QTDIR}" + + dh_testdir + + echo yes | ./configure $(CONFIGURE_OPTS) + + rm -rf include/qinputcontext.h include/qinputcontextfactory.h include/qinputcontextplugin.h + ln -s ../src/kernel/qinputcontext.h include/qinputcontext.h + ln -s ../src/inputmethod/qinputcontextfactory.h include/qinputcontextfactory.h + ln -s ../src/inputmethod/qinputcontextplugin.h include/qinputcontextplugin.h + + # proceed + make sub-src sub-plugins sub-tools + make -C src INSTALL_ROOT=$(TMP_INSTALL) install_target + make INSTALL_ROOT=$(TMP_INSTALL) install + make INSTALL_ROOT=$(TMP_INSTALL) plugins-install + + # archives get accidentally stripped by make install. Copy over unstripped ones for now. + cp lib/lib*.a $(TMP_INSTALL)/usr/lib/ + + cp bin/qtrename140 $(TMP_INSTALL)/usr/bin/ + cp bin/qt20fix $(TMP_INSTALL)/usr/bin/ + cp bin/findtr $(TMP_INSTALL)/usr/bin/ + + # build conv2ui + cd tools/designer/tools/conv2ui && make + cp bin/conv2ui $(TMP_INSTALL)/usr/bin/conv2ui + + # build qvfb + cd tools/qvfb/ && make + cp tools/qvfb/qvfb $(TMP_INSTALL)/usr/bin/qvfb + + # install qmake.cache file + install -d $(P_QTMTDEV)/usr/share/qt3/ + cat .qmake.cache | sed "s#$(QTDIR)#/usr/share/qt3#g" > $(P_QTMTDEV)/usr/share/qt3/.qmake.cache + + # install qconfig.h for the mt + install -m 644 -D include/qconfig.h $(P_QTMTDEV)/usr/include/qt3/qconfig.h + install -m 644 -D include/qmodules.h $(P_QTMTDEV)/usr/include/qt3/qmodules.h + + install -m 644 -D include/qinputcontext.h $(P_HEADERS)/usr/include/qt3/qinputcontext.h + install -m 644 -D include/qinputcontextfactory.h $(P_HEADERS)/usr/include/qt3/qinputcontextfactory.h + install -m 644 -D include/qinputcontextplugin.h $(P_HEADERS)/usr/include/qt3/qinputcontextplugin.h + + touch libqt-thread-stamp + +clean: unpatch + + dh_testdir + + -rm -rf debian/patched + -rm -rf build-stamp libqt-thread-stamp + + -chmod -R u+w * + -chmod a-x doc/html/layout?.png + + if [ -f "src/Makefile" ]; then \ + make -C src clean; make -C plugins/src distclean; make -C tools distclean; \ + make -C tools/makeqpf distclean; make -C tools/qconfig distclean; make -C tools/qvfb distclean; \ + make -C tools/msg2qm distclean; make -C tools/mergetr distclean; make -C tools/qembed distclean; \ + make -C tools/designer/tools/conv2ui distclean; make -C tools/designer/tools/createcw distclean; \ + make -C tools/designer/plugins/glade distclean; make -C tools/designer/plugins/qglwidget distclean; \ + make -C config.tests/unix/largefile distclean; make -C qmake distclean; \ + fi + + -rm -rf .qmake.cache src/.qmake.internal.cache tools/designer/designer/.qmake.internal.cache qmake/GNUmakefile \ + config.status bin/moc bin/qmake src/moc/*.o mkspecs/default lib/lib* `pwd`/debian/doc $(TMP_INSTALL) \ + src/tools/qconfig.cpp include/qconfig.h include/qmodules.h plugins/accessibleqtwidgets.prl \ + config.tests/unix/ipv6/ipv6test config.tests/unix/ipv6/ipv6test.o config.tests/unix/ptrsize/ptrsizetest.o \ + config.tests/unix/ptrsize/ptrsizetest config.tests/unix/endian/endiantest.o \ + config.tests/unix/endian/endiantest lib/qt-mt.pc extensions/nsplugin/examples/trivial/libtrivial.prl \ + extensions/nsplugin/examples/grapher/libgrapher.prl bin/designer + + rm -f qmake/*o + rm -rf include/qinputcontext.h include/qinputcontextfactory.h include/qinputcontextplugin.h + rm -f src/.obj/debug-shared-mt/*o plugins/src/inputmethods/imsw-multi/.obj/debug-shared-mt/*o plugins/inputmethods/*so + rm -f plugins/src/inputmethods/imsw-none/.obj/debug-shared-mt/*o plugins/src/inputmethods/simple/.obj/debug-shared-mt/*o plugins/src/inputmethods/xim/.obj/debug-shared-mt/*o + + # delete generated Makefiles but save the toplevel Makefile + -mv Makefile Makefile.save + for a in `find . -name 'Makefile'`; do rm -f "$$a"; done + -mv Makefile.save Makefile + + cd examples/ && find . -name '.obj' | xargs rm -rf + + dh_clean + +install: build + + dh_testdir + dh_testroot + + dh_clean -i + dh_installdirs + + mkdir -p debian/tmp-install/etc/qt3 + cp debian/qtrc debian/tmp-install/etc/qt3/ + + # fix .prl files + for a in $(TMP_INSTALL)/usr/lib/*prl; do cat "$$a" | sed \ + "s#$(QTDIR)#/usr/share/qt3#g" > "$$a".new && mv "$$a".new "$$a"; done + + dh_install $(IBASE) --sourcedir=$(TMP_INSTALL) + + ## build qt3-doc package + # copy all docs there first + install -d $(P_DOC)/usr/share/qt3/doc/html/ + for a in `cd $(TMP_INSTALL)/usr/share/qt3/doc/html/ && find`; do cp $(TMP_INSTALL)/usr/share/qt3/doc/html/"$$a" $(P_DOC)/usr/share/qt3/doc/html/; done + + ## build designer package documentation + # qt3-designer + install -d `pwd`/debian/qt3-designer/usr/share/qt3/doc/html/ + for a in `cat doc/html/designer*.html doc/html/designer*.dcf | grep png | sed 's/^.*src=\"\([^\"]+\)\".*$$/\1/' | \ + perl -pe 's#<\?p[^>]+>##' | tee outputfile | perl -ne '/]*(src=\"[^"]+\")/; print $$1' | \ + sed 's/src=//g' | sed 's/"/ /g'`; do cp doc/html/"$$a" `pwd`/debian/qt3-designer/usr/share/qt3/doc/html/ && \ + rm -rf $(P_DOC)/usr/share/qt3/doc/html/"$$a" || true; done + rm -rf outputfile `pwd`/debian/qt3-designer/usr/share/qt3/doc/html/logo32.png + rm -rf `pwd`/debian/qt3-doc/usr/share/qt3/doc/html/designer* + + ## build linguist package documentation + # qt3-linguist + install -d `pwd`/debian/qt3-linguist/usr/share/qt3/doc/html/ + for a in `cat doc/html/linguist*.html doc/html/linguist*.dcf | grep png | sed 's/^.*src=\"\([^\"]+\)\".*$$/\1/' | \ + perl -pe 's#<\?p[^>]+>##' | tee outputfile | perl -ne '/]*(src=\"[^"]+\")/; print $$1' | \ + sed 's/src=//g' | sed 's/"/ /g'`; do cp doc/html/"$$a" `pwd`/debian/qt3-linguist/usr/share/qt3/doc/html/ && \ + rm -rf $(P_DOC)/usr/share/qt3/doc/html/"$$a" || true; done + rm -rf outputfile `pwd`/debian/qt3-linguist/usr/share/qt3/doc/html/logo32.png + rm -rf `pwd`/debian/qt3-doc/usr/share/qt3/doc/html/linguist* + + ## qt3-assistant + # remove docs from qt3-doc for qt-assistant + rm -rf `pwd`/debian/qt3-doc/usr/share/qt3/doc/html/assistant* + + ## all packages + # install the overrides files + #for a in debian/overrides/*; do install -d debian/`echo "$$a" | sed 's/debian\/overrides\///g'`/usr/share/lintian/overrides; done + #for a in debian/overrides/*; do cp "$$a" debian/`echo "$$a" | sed 's/debian\/overrides\///g'`/usr/share/lintian/overrides/`echo "$$a" | sed 's/debian\/overrides\///g'`; done + + chmod 644 debian/qt3-dev-tools/usr/share/qt3/mkspecs/aix-g++-64/qplatformdefs.h + chmod 644 debian/qt3-dev-tools/usr/share/qt3/mkspecs/macx-pbuilder/Info.plist.app + + mkdir -p debian/libqt3-mt/etc/qt3/ + cp debian/qtrc debian/libqt3-mt/etc/qt3/ + +binary-indep: build install + + # Build architecture-independent files here. + dh_testdir + dh_testroot + + dh_installdocs -i -XREADME.Debian + dh_installchangelogs -i changes-3.3.6 + + find doc/man -path \*/CVS -prune -o -print | cpio -pmd $(P_DOC)/usr/share/qt3/doc/ + + -rm -f `find $(P_DOC)/usr/share/qt3/doc/ -name "*.o"` + find $(P_DOC) -type f -perm +0100 | xargs --no-run-if-empty rm -f + + install -d $(P_DOC)/usr/share/man/man3/ + + for i in $(P_DOC)/usr/share/qt3/doc/doc/man/man3/* ; do mv $$i $(P_DOC)/usr/share/man/man3/ ; done + + -rm -rf $(P_DOC)/usr/share/qt3/doc/doc + + # other i18n files + for a in `cd translations/ && find . -name 'qt_*.qm' | sed 's/qt_//' | sed 's/\.qm//' | sed 's/\.\///g'`; do \ + install -D `pwd`/translations/qt_"$$a".qm `pwd`/debian/libqt3-i18n/usr/share/qt3/translations/qt_"$$a".qm; done + + # logo32.png + cp `pwd`/doc/html/logo32.png `pwd`/debian/qt3-doc/usr/share/qt3/doc/html/ + + # remove qmake html docu from qt3-doc + rm -rf `pwd`/debian/qt3-doc/usr/share/qt3/doc/html/qmake* + + # create examples package + install -d `pwd`/debian/doc/qt3-examples/tools/designer + install -d `pwd`/debian/doc/qt3-examples/tools/linguist + cp -ax examples `pwd`/debian/doc/qt3-examples + cp -ax tutorial `pwd`/debian/doc/qt3-examples + cp -ax tools/designer/examples `pwd`/debian/doc/qt3-examples/tools/designer/ + cp -ax tools/linguist/tutorial `pwd`/debian/doc/qt3-examples/tools/linguist/ + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name 'tt1'`; do rm -f "$$a"; done + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name 'tt2'`; do rm -f "$$a"; done + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name 'tt3'`; do rm -f "$$a"; done + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name '.moc'`; do rm -rf "$$a"; done + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name '.obj'`; do rm -rf "$$a"; done + for a in `cd $(DEBIAN)/doc/qt3-examples/ && find $(DEBIAN)/doc/qt3-examples/ -name 'Makefile'`; do rm -f "$$a"; done + install -D `pwd`/debian/maintain/build-examples.sh `pwd`/debian/doc/qt3-examples/build-examples + chmod 755 `pwd`/debian/doc/qt3-examples/build-examples + cd `pwd`/debian/doc/ && tar cvvfz qt3-examples.tar.gz qt3-examples/ + install -D `pwd`/debian/doc/qt3-examples.tar.gz `pwd`/debian/qt3-examples/usr/share/doc/qt3-examples/qt3-examples.tar.gz + + # proceed + dh_compress -i -Xhtml/ + dh_link -i + + dh_fixperms -i + dh_installdeb -i + + dh_perl -i + dh_shlibdeps -i + + # fix shlibdeps madness + for a in `find debian/ -name '*.substvars'`; do cat "$$a" | sed 's/, xlibs (>> 4.1.0)//g' > "$$a".new && mv "$$a.new" "$$a"; done + + dh_gencontrol -i + dh_md5sums -i + + dh_builddeb -i + +binary-arch: build install + + dh_testdir + dh_testroot + dh_installdirs -a + + ## create qt3-apps-dev-package + install -d $(P_APPSDEV)/usr/include/qt3/ + cp `pwd`/tools/designer/interfaces/*.h $(P_APPSDEV)/usr/include/qt3/ + cp `pwd`/tools/designer/editor/*.h $(P_APPSDEV)/usr/include/qt3/ + rm -rf `pwd`/debian/qt3-apps-dev/usr/include/qt3/preferences.ui.h + + ## qvfb package + install -m644 -D `pwd`/tools/qvfb/pda.skin `pwd`/debian/qt3-dev-tools-embedded/etc/qt3/qvfb/pda.skin + install -m644 -D `pwd`/tools/qvfb/pda_down.png `pwd`/debian/qt3-dev-tools-embedded/usr/share/qvfb/pda_down.png + install -m644 -D `pwd`/tools/qvfb/pda_up.png `pwd`/debian/qt3-dev-tools-embedded/usr/share/qvfb/pda_up.png + + # remove utterly ugle symlink + rm -rf `pwd`/debian/qt3-dev-tools//usr/share/qt3/mkspecs/linux-g++/linux-g++ + + # language file for linguist + install -d `pwd`/debian/qt3-linguist/usr/share/doc/qt3-linguist/ + cp translations/qt_untranslated.ts `pwd`/debian/qt3-linguist/usr/share/doc/qt3-linguist/ + + # fix that stupid friggin professional file + perl -pi -e 's{\$$\$$QT_SOURCE_TREE}{$(QTDIR)}' src/qt_professional.pri + + ## i18n files for designer, linguist and assistant + (cd `pwd`/tools/designer/designer/ && lrelease designer.pro) + for a in `cd tools/designer/designer/ && find . -name 'designer_*.qm' | sed 's/designer_//' | sed 's/\.qm//' | sed 's/\.\///g'`; do \ + install -D tools/designer/designer/designer_"$$a".qm `pwd`/debian/qt3-designer/usr/share/qt3/translations/designer_"$$a".qm; done + rm -rf `pwd`/tools/designer/designer/*.qm + + (cd `pwd`/tools/assistant/ && lrelease assistant.pro) + for a in `cd tools/assistant/ && find . -name 'assistant_*.qm' | sed 's/assistant_//' | sed 's/\.qm//' | sed 's/\.\///g'`; do \ + install -D tools/assistant/assistant_"$$a".qm `pwd`/debian/qt3-assistant/usr/share/qt3/translations/assistant_"$$a".qm; done + rm -rf `pwd`/tools/assistant/*.qm `pwd`/debian/libqt3-i18n/usr/share/qt3/translations/assistant_de.qm + + (cd `pwd`/tools/linguist/linguist/ && lrelease linguist.pro) + for a in `cd tools/linguist/linguist/ && find . -name 'linguist_*.qm' | sed 's/linguist_//' | sed 's/\.qm//' | sed 's/\.\///g'`; do \ + install -D tools/linguist/linguist/linguist_"$$a".qm `pwd`/debian/qt3-linguist/usr/share/qt3/translations/linguist_"$$a".qm; done + rm -rf `pwd`/tools/linguist/linguist/*.qm + + # desktop lnk files + install -m644 -D debian/maintain/designer-qt3.desktop `pwd`/debian/qt3-designer/usr/share/applications/designer-qt3.desktop + install -m644 -D debian/maintain/linguist-qt3.desktop `pwd`/debian/qt3-linguist/usr/share/applications/linguist-qt3.desktop + + install -m644 -D debian/maintain/assistant-qt3.desktop `pwd`/debian/qt3-assistant/usr/share/applications/assistant-qt3.desktop + install -m644 -D debian/maintain/qt3config.desktop `pwd`/debian/qt3-qtconfig/usr/share/applications/qt3config.desktop + + # include logo32 for every program + cd `pwd`/debian/qt3-designer/usr/share/qt3/doc/html && for a in `find . -name '*.html'`; \ + do cat "$$a" | sed 's/logo32/logo32-designer/g' > "$$a".new && mv "$$a".new "$$a"; done + + cd `pwd`/debian/qt3-linguist/usr/share/qt3/doc/html && for a in `find . -name '*.html'`; \ + do cat "$$a" | sed 's/logo32/logo32-linguist/g' > "$$a".new && mv "$$a".new "$$a"; done + + cd `pwd`/debian/qt3-assistant/usr/share/qt3/doc/html && for a in `find . -name '*.html'`; \ + do cat "$$a" | sed 's/logo32/logo32-assistant/g' > "$$a".new && mv "$$a".new "$$a"; done + + cd `pwd`/debian/qt3-dev-tools/usr/share/qt3/doc/html && for a in `find . -name '*.html'`; \ + do cat "$$a" | sed 's/logo32/logo32-qmake/g' > "$$a".new && mv "$$a".new "$$a"; done + + for a in designer linguist assistant; do install -m644 -D `pwd`/doc/html/logo32.png `pwd`/debian/qt3-"$$a"/usr/share/qt3/doc/html/logo32-"$$a".png; done + install -m644 -D `pwd`/doc/html/logo32.png `pwd`/debian/qt3-dev-tools/usr/share/qt3/doc/html/logo32-qmake.png + + # fix qmake.conf files + cd `pwd`/debian/qt3-dev-tools/usr/share/qt3/mkspecs/ && for a in *; do cd "$$a" && cat qmake.conf | sed 's/\$$(QTDIR)\/include/\/usr\/share\/qt3\/include/g' | sed 's/\$$(QTDIR)/\/usr\/share\/qt3/g' | \ + sed 's/\-I\/usr\/include/&\/qt3/g' >> qmake.conf.new && mv qmake.conf.new qmake.conf && cd ../; done + + # build attic package and copy it to libqt3-ompat-headers + cd `pwd`/src/ && tar cvvfz attic.tar.gz attic/ + install -D `pwd`/src/attic.tar.gz `pwd`/debian/libqt3-compat-headers/usr/share/doc/libqt3-compat-headers/attic.tar.gz + rm -rf `pwd`/src/attic.tar.gz + + # rename some binaries to make qt3/4 installations possible + mv `pwd`/debian/qt3-designer/usr/bin/designer `pwd`/debian/qt3-designer/usr/bin/designer-qt3 + mv `pwd`/debian/qt3-dev-tools/usr/bin/uic `pwd`/debian/qt3-dev-tools/usr/bin/uic-qt3 + mv `pwd`/debian/qt3-dev-tools/usr/bin/moc `pwd`/debian/qt3-dev-tools/usr/bin/moc-qt3 + mv `pwd`/debian/qt3-dev-tools/usr/bin/lupdate `pwd`/debian/qt3-dev-tools/usr/bin/lupdate-qt3 + mv `pwd`/debian/qt3-dev-tools/usr/bin/lrelease `pwd`/debian/qt3-dev-tools/usr/bin/lrelease-qt3 + mv `pwd`/debian/qt3-dev-tools/usr/bin/qmake `pwd`/debian/qt3-dev-tools/usr/bin/qmake-qt3 + mv `pwd`/debian/qt3-qtconfig/usr/bin/qtconfig `pwd`/debian/qt3-qtconfig/usr/bin/qtconfig-qt3 + mv `pwd`/debian/qt3-assistant/usr/bin/assistant `pwd`/debian/qt3-assistant/usr/bin/assistant-qt3 + mv `pwd`/debian/qt3-linguist/usr/bin/linguist `pwd`/debian/qt3-linguist/usr/bin/linguist-qt3 + + install -D debian/maintain/man/designer.1 `pwd`/debian/qt3-designer/usr/share/man/man1/designer-qt3.1 + install -D doc/man/man1/moc.1 `pwd`/debian/qt3-dev-tools/usr/share/man/man1/moc-qt3.1 + install -D doc/man/man1/uic.1 `pwd`/debian/qt3-dev-tools/usr/share/man/man1/uic-qt3.1 + install -D doc/man/man1/lrelease.1 `pwd`/debian/qt3-dev-tools/usr/share/man/man1/lrelease-qt3.1 + install -D doc/man/man1/lupdate.1 `pwd`/debian/qt3-dev-tools/usr/share/man/man1/lupdate-qt3.1 + install -D debian/maintain/man/qtconfig.1 `pwd`/debian/qt3-qtconfig/usr/share/man/man1/qtconfig-qt3.1 + install -D debian/maintain/man/linguist.1 `pwd`/debian/qt3-linguist/usr/share/man/man1/linguist-qt3.1 + + dh_link -pqt3-designer usr/share/qt3/doc/html usr/share/doc/qt3-designer/html + dh_link -pqt3-assistant usr/share/qt3/doc/html usr/share/doc/qt3-assistant/html + dh_link -pqt3-linguist usr/share/qt3/doc/html usr/share/doc/qt3-linguist/html + dh_link -pqt3-dev-tools usr/share/qt3/doc/html usr/share/doc/qt3-dev-tools/html + + # install the manpages we have + dh_installman -pqt3-designer debian/maintain/man/createcw.1 + dh_installman -pqt3-dev-tools-compat debian/maintain/man/qt20fix.1 debian/maintain/man/mergetr.1 debian/maintain/man/findtr.1 debian/maintain/man/msg2qm.1 + dh_installman -pqt3-dev-tools-embedded debian/maintain/man/makeqpf.1 debian/maintain/man/qvfb.1 + dh_installman -pqt3-dev-tools debian/maintain/man/qembed.1 + + # copy README.Debian + for a in libqt3-mt-dev libqt3-mt qt3-doc; do install -D `pwd`/debian/README.Debian `pwd`/debian/"$$a"/usr/share/doc/"$$a"/README.Debian; done + + # install the qmake binary + rm -rf `pwd`/debian/qt3-dev-tools/usr/bin/qmake + install -D `pwd`/qmake/qmake `pwd`/debian/qt3-dev-tools/usr/bin/qmake-qt3 + + # Install source for the designer tools, such as createcw. + cp -ra tools/designer/tools debian/qt3-designer/usr/share/qt3/tools + rm -f debian/qt3-designer/usr/share/qt3/tools/createcw/createcw + rm -rf debian/qt3-designer/usr/share/qt3/tools/createcw/.moc + rm -rf debian/qt3-designer/usr/share/qt3/tools/createcw/.obj + rm -f debian/qt3-designer/usr/share/qt3/tools/createcw/Makefile + rm -f debian/qt3-designer/usr/share/qt3/tools/conv2ui/conv2ui + rm -rf debian/qt3-designer/usr/share/qt3/tools/conv2ui/.moc + rm -rf debian/qt3-designer/usr/share/qt3/tools/conv2ui/.obj + rm -f debian/qt3-designer/usr/share/qt3/tools/conv2ui/Makefile + + # run remaining debhelper scripts + dh_installdocs -a $(IBASE) -XREADME.Debian + dh_installmenu -a $(IBASE) + + dh_installchangelogs -a $(IBASE) changes-3.3.6 + + dh_link -a $(IBASE) + dh_strip -a $(IBASE) --dbg-package=qt-x11-free-dbg + dh_compress -a $(IBASE) + dh_fixperms -a $(IBASE) + + # run remaining debhelper scripts + dh_makeshlibs -a $(IBASE) -V + dh_installdeb -a $(IBASE) + dh_perl -a $(IBASE) + dh_shlibdeps -a $(IBASE) -l`pwd`/debian/libqt3-mt/usr/lib + + # fix shlibdeps madness + for a in `find debian/ -name '*.substvars'`; do cat "$$a" | sed 's/, xlibs (>> 4.1.0)//g' > "$$a".new && mv "$$a.new" "$$a"; done + + # fix conffiles file for qt3-dev-tools-embedded + echo "/etc/qt3/qvfb/pda.skin" > `pwd`/debian/qt3-dev-tools-embedded/DEBIAN/conffiles + + dh_gencontrol -a $(IBASE) + dh_md5sums -a $(IBASE) + dh_builddeb -a $(IBASE) + +binary: binary-indep binary-arch +.PHONY: build binary-indep binary-arch binary install clean patch unpatch --- qt-x11-free-3.3.6.orig/debian/libqt3-headers.install +++ qt-x11-free-3.3.6/debian/libqt3-headers.install @@ -0,0 +1,271 @@ +usr/include/qt3/private/* +usr/include/qt3/qabstractlayout.h +usr/include/qt3/qaccel.h +usr/include/qt3/qaccessible.h +usr/include/qt3/qaction.h +usr/include/qt3/qapplication.h +usr/include/qt3/qasciicache.h +usr/include/qt3/qasciidict.h +usr/include/qt3/qasyncimageio.h +usr/include/qt3/qasyncio.h +usr/include/qt3/qbig5codec.h +usr/include/qt3/qbitarray.h +usr/include/qt3/qbitmap.h +usr/include/qt3/qbrush.h +usr/include/qt3/qbuffer.h +usr/include/qt3/qbutton.h +usr/include/qt3/qbuttongroup.h +usr/include/qt3/qcache.h +usr/include/qt3/qcanvas.h +usr/include/qt3/qcdestyle.h +usr/include/qt3/qcheckbox.h +usr/include/qt3/qcleanuphandler.h +usr/include/qt3/qclipboard.h +usr/include/qt3/qcolor.h +usr/include/qt3/qcolordialog.h +usr/include/qt3/qcombobox.h +usr/include/qt3/qcommonstyle.h +usr/include/qt3/qcompactstyle.h +usr/include/qt3/qconnection.h +usr/include/qt3/qcstring.h +usr/include/qt3/qcursor.h +usr/include/qt3/qdatabrowser.h +usr/include/qt3/qdatastream.h +usr/include/qt3/qdatatable.h +usr/include/qt3/qdataview.h +usr/include/qt3/qdatetime.h +usr/include/qt3/qdatetimeedit.h +usr/include/qt3/qdeepcopy.h +usr/include/qt3/qdesktopwidget.h +usr/include/qt3/qdial.h +usr/include/qt3/qdialog.h +usr/include/qt3/qdict.h +usr/include/qt3/qdir.h +usr/include/qt3/qdns.h +usr/include/qt3/qdockarea.h +usr/include/qt3/qdockwindow.h +usr/include/qt3/qdom.h +usr/include/qt3/qdragobject.h +usr/include/qt3/qdrawutil.h +usr/include/qt3/qdropsite.h +usr/include/qt3/qeditorfactory.h +usr/include/qt3/qerrormessage.h +usr/include/qt3/qeucjpcodec.h +usr/include/qt3/qeuckrcodec.h +usr/include/qt3/qevent.h +usr/include/qt3/qeventloop.h +usr/include/qt3/qfeatures.h +usr/include/qt3/qfile.h +usr/include/qt3/qfiledialog.h +usr/include/qt3/qfileinfo.h +usr/include/qt3/qfocusdata.h +usr/include/qt3/qfont.h +usr/include/qt3/qfontdatabase.h +usr/include/qt3/qfontdialog.h +usr/include/qt3/qfontinfo.h +usr/include/qt3/qfontmetrics.h +usr/include/qt3/qframe.h +usr/include/qt3/qftp.h +usr/include/qt3/qgarray.h +usr/include/qt3/qgb18030codec.h +usr/include/qt3/qgbkcodec.h +usr/include/qt3/qgcache.h +usr/include/qt3/qgdict.h +usr/include/qt3/qgeneric.h +usr/include/qt3/qgif.h +usr/include/qt3/qglist.h +usr/include/qt3/qglobal.h +usr/include/qt3/qgplugin.h +usr/include/qt3/qgrid.h +usr/include/qt3/qgridview.h +usr/include/qt3/qgroupbox.h +usr/include/qt3/qguardedptr.h +usr/include/qt3/qgvector.h +usr/include/qt3/qhbox.h +usr/include/qt3/qhbuttongroup.h +usr/include/qt3/qheader.h +usr/include/qt3/qhgroupbox.h +usr/include/qt3/qhostaddress.h +usr/include/qt3/qhttp.h +usr/include/qt3/qiconset.h +usr/include/qt3/qiconview.h +usr/include/qt3/qimage.h +usr/include/qt3/qimageformatplugin.h +usr/include/qt3/qinputdialog.h +usr/include/qt3/qintcache.h +usr/include/qt3/qintdict.h +usr/include/qt3/qinterlacestyle.h +usr/include/qt3/qiodevice.h +usr/include/qt3/qjiscodec.h +usr/include/qt3/qjpegio.h +usr/include/qt3/qjpunicode.h +usr/include/qt3/qkeycode.h +usr/include/qt3/qkeysequence.h +usr/include/qt3/qlabel.h +usr/include/qt3/qlayout.h +usr/include/qt3/qlcdnumber.h +usr/include/qt3/qlibrary.h +usr/include/qt3/qlineedit.h +usr/include/qt3/qlistbox.h +usr/include/qt3/qlistview.h +usr/include/qt3/qlocale.h +usr/include/qt3/qlocalfs.h +usr/include/qt3/qmainwindow.h +usr/include/qt3/qmap.h +usr/include/qt3/qmemarray.h +usr/include/qt3/qmenubar.h +usr/include/qt3/qmenudata.h +usr/include/qt3/qmessagebox.h +usr/include/qt3/qmetaobject.h +usr/include/qt3/qmime.h +usr/include/qt3/qmngio.h +usr/include/qt3/qmotifstyle.h +usr/include/qt3/qmotifplusstyle.h +usr/include/qt3/qmovie.h +usr/include/qt3/qmultilineedit.h +usr/include/qt3/qmutex.h +usr/include/qt3/qnamespace.h +usr/include/qt3/qnetwork.h +usr/include/qt3/qnetworkprotocol.h +usr/include/qt3/qnp.h +usr/include/qt3/qobject.h +usr/include/qt3/qobjectcleanuphandler.h +usr/include/qt3/qobjectdefs.h +usr/include/qt3/qobjectdict.h +usr/include/qt3/qobjectlist.h +usr/include/qt3/qpaintdevice.h +usr/include/qt3/qpaintdevicedefs.h +usr/include/qt3/qpaintdevicemetrics.h +usr/include/qt3/qpainter.h +usr/include/qt3/qpair.h +usr/include/qt3/qpalette.h +usr/include/qt3/qpen.h +usr/include/qt3/qpicture.h +usr/include/qt3/qpixmap.h +usr/include/qt3/qpixmapcache.h +usr/include/qt3/qplatinumstyle.h +usr/include/qt3/qpngio.h +usr/include/qt3/qpoint.h +usr/include/qt3/qpointarray.h +usr/include/qt3/qpolygonscanner.h +usr/include/qt3/qpopupmenu.h +usr/include/qt3/qprintdialog.h +usr/include/qt3/qprinter.h +usr/include/qt3/qprocess.h +usr/include/qt3/qprogressbar.h +usr/include/qt3/qprogressdialog.h +usr/include/qt3/qptrcollection.h +usr/include/qt3/qptrdict.h +usr/include/qt3/qptrlist.h +usr/include/qt3/qptrqueue.h +usr/include/qt3/qptrstack.h +usr/include/qt3/qptrvector.h +usr/include/qt3/qpushbutton.h +usr/include/qt3/qradiobutton.h +usr/include/qt3/qrangecontrol.h +usr/include/qt3/qrect.h +usr/include/qt3/qregexp.h +usr/include/qt3/qregion.h +usr/include/qt3/qrtlcodec.h +usr/include/qt3/qscrollbar.h +usr/include/qt3/qscrollview.h +usr/include/qt3/qsemaphore.h +usr/include/qt3/qsemimodal.h +usr/include/qt3/qserversocket.h +usr/include/qt3/qsession.h +usr/include/qt3/qsessionmanager.h +usr/include/qt3/qsettings.h +usr/include/qt3/qsgistyle.h +usr/include/qt3/qshared.h +usr/include/qt3/qsignal.h +usr/include/qt3/qsignalmapper.h +usr/include/qt3/qsignalslotimp.h +usr/include/qt3/qsimplerichtext.h +usr/include/qt3/qsize.h +usr/include/qt3/qsizegrip.h +usr/include/qt3/qsizepolicy.h +usr/include/qt3/qsjiscodec.h +usr/include/qt3/qslider.h +usr/include/qt3/qsocket.h +usr/include/qt3/qsocketdevice.h +usr/include/qt3/qsocketnotifier.h +usr/include/qt3/qsortedlist.h +usr/include/qt3/qsound.h +usr/include/qt3/qspinbox.h +usr/include/qt3/qsplashscreen.h +usr/include/qt3/qsplitter.h +usr/include/qt3/qsql.h +usr/include/qt3/qsqlcursor.h +usr/include/qt3/qsqldatabase.h +usr/include/qt3/qsqldriver.h +usr/include/qt3/qsqldriverplugin.h +usr/include/qt3/qsqleditorfactory.h +usr/include/qt3/qsqlerror.h +usr/include/qt3/qsqlfield.h +usr/include/qt3/qsqlform.h +usr/include/qt3/qsqlindex.h +usr/include/qt3/qsqlpropertymap.h +usr/include/qt3/qsqlquery.h +usr/include/qt3/qsqlrecord.h +usr/include/qt3/qsqlresult.h +usr/include/qt3/qsqlselectcursor.h +usr/include/qt3/qstatusbar.h +usr/include/qt3/qstring.h +usr/include/qt3/qstringlist.h +usr/include/qt3/qstrlist.h +usr/include/qt3/qstrvec.h +usr/include/qt3/qstyle.h +usr/include/qt3/qstylefactory.h +usr/include/qt3/qstyleplugin.h +usr/include/qt3/qstylesheet.h +usr/include/qt3/qsyntaxhighlighter.h +usr/include/qt3/qt.h +usr/include/qt3/qtabbar.h +usr/include/qt3/qtabdialog.h +usr/include/qt3/qtable.h +usr/include/qt3/qtabwidget.h +usr/include/qt3/qtextbrowser.h +usr/include/qt3/qtextcodec.h +usr/include/qt3/qtextcodecfactory.h +usr/include/qt3/qtextcodecplugin.h +usr/include/qt3/qtextedit.h +usr/include/qt3/qtextstream.h +usr/include/qt3/qtextview.h +usr/include/qt3/qthread.h +usr/include/qt3/qthreadstorage.h +usr/include/qt3/qtimer.h +usr/include/qt3/qtl.h +usr/include/qt3/qtoolbar.h +usr/include/qt3/qtoolbox.h +usr/include/qt3/qtoolbutton.h +usr/include/qt3/qtooltip.h +usr/include/qt3/qtranslator.h +usr/include/qt3/qtsciicodec.h +usr/include/qt3/qurl.h +usr/include/qt3/qurlinfo.h +usr/include/qt3/qurloperator.h +usr/include/qt3/qutfcodec.h +usr/include/qt3/quuid.h +usr/include/qt3/qvalidator.h +usr/include/qt3/qvaluelist.h +usr/include/qt3/qvaluestack.h +usr/include/qt3/qvaluevector.h +usr/include/qt3/qvariant.h +usr/include/qt3/qvbox.h +usr/include/qt3/qvbuttongroup.h +usr/include/qt3/qvfbhdr.h +usr/include/qt3/qvgroupbox.h +usr/include/qt3/qwaitcondition.h +usr/include/qt3/qwhatsthis.h +usr/include/qt3/qwidget.h +usr/include/qt3/qwidgetintdict.h +usr/include/qt3/qwidgetlist.h +usr/include/qt3/qwidgetplugin.h +usr/include/qt3/qwidgetstack.h +usr/include/qt3/qwindowdefs.h +usr/include/qt3/qwindowsstyle.h +usr/include/qt3/qwinexport.h +usr/include/qt3/qwizard.h +usr/include/qt3/qwmatrix.h +usr/include/qt3/qworkspace.h +usr/include/qt3/qxml.h --- qt-x11-free-3.3.6.orig/debian/qt3-designer.links +++ qt-x11-free-3.3.6/debian/qt3-designer.links @@ -0,0 +1 @@ +/usr/bin/designer-qt3 /usr/share/qt3/bin/designer --- qt-x11-free-3.3.6.orig/debian/libqt3-mt.install +++ qt-x11-free-3.3.6/debian/libqt3-mt.install @@ -0,0 +1,4 @@ +usr/lib/libqt-mt.so.* +usr/lib/libqui.so.1.* +usr/lib/qt3/plugins/imageformats/libqmng.so +usr/lib/qt3/plugins/inputmethods/*.so --- qt-x11-free-3.3.6.orig/debian/qt3-designer.prerm +++ qt-x11-free-3.3.6/debian/qt3-designer.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) ;; + remove|failed-upgrade|deconfigure) + update-alternatives --remove designer "/usr/bin/designer-qt3" + ;; +esac + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-dev.docs +++ qt-x11-free-3.3.6/debian/libqt3-mt-dev.docs @@ -0,0 +1,4 @@ +README +README.immodule +README-QT.TXT +PLATFORMS --- qt-x11-free-3.3.6.orig/debian/qt3-linguist.postinst +++ qt-x11-free-3.3.6/debian/qt3-linguist.postinst @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +update-alternatives --install \ + /usr/bin/linguist linguist "/usr/bin/linguist-qt3" "45" \ + --slave /usr/share/man/man1/linguist.1.gz linguist.1.gz \ + "/usr/share/man/man1/linguist-qt3.1.gz" + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/changelog +++ qt-x11-free-3.3.6/debian/changelog @@ -0,0 +1,2521 @@ +qt-x11-free (3:3.3.6-3ubuntu1) edgy; urgency=low + + * Synchronise with Debian + * Removed kubuntu_01_arabic_fonts.dpatch since debian has its own patch + now (30_qtc_arabic_font_fixes.dpatch) + + -- Anthony Mercatante Fri, 25 Aug 2006 12:16:03 +0200 + +qt-x11-free (3:3.3.6-3) unstable; urgency=low + + +++ Changes by Christopher Martin + + * Add a patch (accepted upstream) that fixes the use of some fonts + with broken or atypical opentype tables. Some common Arabic fonts + are affected. + + * Make READMEs and other docs available with libqt3-mt (not just + libqt3-mt-dev). Also include the Immodule README. + (Closes: #370742, #370744) + + * Patch the 11_qt_rubberband patch, to fix a crash and a signal bug + affecting Kimdaba (and probably others). + (Closes: #341982, #352409, #362155) + + * Add a hack to rarely used QFontDatabase code that avoids a crash that + was causing KImageMapEditor to fail to start. (Closes: #369795) + + * Add /usr/share/qt3/bin links for linguist, assistant, qtconfig, and + designer (qt3-dev-tools' binaries already have this). + (Closes: #375888, #375887) + + * Include a /usr/share/qt3/lib symlink for libqt-mt.la. (Closes: #376954) + + * Now that binutils has fixed xgot support, we can drop the mips/mipsel xgot + patch and rebuild. (Closes: #374883) + + -- Debian Qt/KDE Maintainers Sun, 23 Jul 2006 09:29:55 -0400 + +qt-x11-free (3:3.3.6-2ubuntu4) edgy; urgency=low + + * Fix bad patch kubuntu_04_xinerama.dpatch + + -- Jonathan Riddell Thu, 20 Jul 2006 18:38:15 +0100 + +qt-x11-free (3:3.3.6-2ubuntu3) edgy; urgency=low + + * Install debian/qtrc to /etc/qt3 + * Add kubuntu_04_xinerama.dpatch from http://ktown.kde.org/~seli/xinerama/ + + -- Jonathan Riddell Thu, 20 Jul 2006 15:30:11 +0100 + +qt-x11-free (3:3.3.6-2ubuntu2) edgy; urgency=low + + * Don't compile with binary incompatible input modules + + -- Jonathan Riddell Wed, 28 Jun 2006 11:45:18 +0000 + +qt-x11-free (3:3.3.6-2ubuntu1) edgy; urgency=low + + * Synchronise with Debian + + -- Jonathan Riddell Mon, 26 Jun 2006 09:51:03 +0000 + +qt-x11-free (3:3.3.6-2) unstable; urgency=low + + +++ Changes by Pierre Habouzit: + + * Update debian/control for new kfreebsd-amd64 port. (Closes: #361494) + + +++ Changes by Christopher Martin: + + * Remove obsolete xlibs-static-dev and x-dev build-depends. Also update the + Mesa build-depends for the new X.Org 7. (Closes: #363432) + + * Make libqt3-mt recommend OpenGL and related libraries, since they are + dlopened if available. + + -- Debian Qt/KDE Maintainers Sun, 23 Apr 2006 14:18:11 -0400 + +qt-x11-free (3:3.3.6-1ubuntu6) dapper-updates; urgency=low + + * Leave out (-1ubuntu5), rejected upload. + * Use ~/.qt-32 as user config directory, when running the i386 + binaries on amd64, adds kubuntu_03_qt_private_confdir_ia32.dpatch. + * Check for lib32 paths, when running the i386 binaries on x86_64 or ia64, + adds kubuntu_02_qt_modules_ia32.dpatch + + -- Matthias Klose Mon, 12 Jun 2006 17:24:02 +0200 + +qt-x11-free (3:3.3.6-1ubuntu4) dapper-updates; urgency=low + + * Add kubuntu_01_arabic_fonts.dpatch, closes Malone #11753 + + -- Jonathan Riddell Mon, 5 Jun 2006 13:36:53 +0000 + +qt-x11-free (3:3.3.6-1ubuntu3) dapper; urgency=low + + * Rebuild against the new libmysqlclient15off with correct symbols. + + -- Adam Conrad Thu, 6 Apr 2006 12:50:10 +1000 + +qt-x11-free (3:3.3.6-1ubuntu2) dapper; urgency=low + + [ Jonathan Riddell ] + * Install etc/qt3/qtrc in libqt3-mt.install + + [ Anthony Mercatante ] + * Updated qtrc to fit to the default kubuntu look + + -- Jonathan Riddell Mon, 3 Apr 2006 00:01:38 +0100 + +qt-x11-free (3:3.3.6-1ubuntu1) dapper; urgency=low + + * Sync with Debian + + -- Jonathan Riddell Sat, 25 Mar 2006 18:26:18 +0000 + +qt-x11-free (3:3.3.6-1) unstable; urgency=low + + * New upstream release. + + +++ Changes by Christopher Martin: + + * New release obsoletes patch #30, #33. Adapted the immodule patches to the + new release; please report regressions. + + * Add another small patch for immodule from Dirk Mueller, fixing an + inputcontext crash. + + * Build against libsqlite3-dev instead of libsqlite0-dev. + + * Temporarily version our build-depend on libxft-dev, to (>= 2.1.8.2-5.1), + ensuring that we build against a package with headers where we need them. + + -- Debian Qt/KDE Maintainers Thu, 23 Mar 2006 18:47:53 -0500 + +qt-x11-free (3:3.3.5-4) unstable; urgency=low + + +++ Changes by Christopher Martin: + + * Change build-depends from libmysqlclient12-dev to libmysqlclient15-dev. + (Closes: #350725) + + * Add a patch from Maksim Orlovich (provided by Bart Coppens), that should + resolve a crash in KMail when viewing exceedingly large mailboxes. + (Closes: #347392) + + * Incorporate the immodule patch (and sundry fixes for that patch). Some of + the packaging is borrowed from Ubuntu. + (Closes: #347377) + + -- Debian Qt/KDE Maintainers Thu, 23 Feb 2006 18:15:14 -0500 + +qt-x11-free (3:3.3.5-3) unstable; urgency=low + + +++ Changes by Christopher Martin: + + * Really add InterBase support to amd64. (Closes: #341614) + + * Add a patch for plugin loading when mixing-and-matching apps from + different Qt/KDE versions. + + -- Debian Qt/KDE Maintainers Thu, 1 Dec 2005 14:45:43 -0500 + +qt-x11-free (3:3.3.5-2) unstable; urgency=low + + +++ Changes by Christopher Martin: + + * Drop qt-copy's gamma patch, now that kdelibs has incorporated a + cleaner fix. (Closes: #333542) + + * Fix a new-for-3.3.5 QListView problem that was causing myriad random + crashes in KDE apps. (Closes: #338002) + + * Build the InterBase plugin on amd64, now that firebird2 works there. + + * Move all .desktop files from /usr/share/applnk to /usr/share/applications, + and ensure that they have Categories set. This cleanup also fixes the Qt3 + Assistant menu entry, which should now appear next to other Qt3 tools in + the menu. (Closes: #335465) + + * Bump DH_COMPAT to 5. No changes required, except that the debugging + package is renamed from libqt3-mt-dbg to qt-x11-free-dbg, and contains + debugging symbols for all binaries in all qt-x11-free packages. + + -- Debian Qt/KDE Maintainers Tue, 29 Nov 2005 08:17:59 -0500 + +qt-x11-free (3:3.3.5-1ubuntu18) dapper; urgency=low + + * Build against libsqlite3; the vast majority of packages uses 3, and we + want to get rid of 0. + + -- Martin Pitt Wed, 8 Mar 2006 14:34:25 +0000 + +qt-x11-free (3:3.3.5-1ubuntu17) dapper; urgency=low + + * Add patch kubuntu_05_fix_immodule_and_xim.dpatch which include some patches + from http://ktown.kde.org/~dirk/im/ . Fixes various problems such as log + out crash because of im-module. + * Patch by Hou ZhengPeng + + -- Jonathan Riddell Sun, 19 Feb 2006 18:48:01 +0800 + +qt-x11-free (3:3.3.5-1ubuntu16) dapper; urgency=low + + * Build against libmysqlclient15. + + -- Martin Pitt Thu, 2 Feb 2006 17:14:46 +0000 + +qt-x11-free (3:3.3.5-1ubuntu15) dapper; urgency=low + + * Remove build-dep and dependency on xlibs-static-dev + + -- Jonathan Riddell Fri, 20 Jan 2006 10:31:02 +0000 + +qt-x11-free (3:3.3.5-1ubuntu14) dapper; urgency=low + + * Added usr/lib/qt3/plugins/inputmethods/*.so to libqt3-mt.install to + install necessary inputmethods files. Without them, inputmethods are not + working at all + + -- Stephan Hermann Sat, 14 Jan 2006 10:14:59 +0100 + +qt-x11-free (3:3.3.5-1ubuntu13) dapper; urgency=low + + * Cleaned up the .moc mess in diff.gz + + -- Stephan Hermann Wed, 11 Jan 2006 05:05:10 +0100 + +qt-x11-free (3:3.3.5-1ubuntu12) dapper; urgency=low + + * Cleaning up debian/patches dir, removing a non working dpatch file, which + I sadly forgot to remove before. + * Added kubuntu_04_immodule_quietxi.,dpatch, but not applied yet. Will be + enabled just before release, to make the immodule added patches a bit more + silent. + + -- Stephan Hermann Wed, 11 Jan 2006 02:00:00 +0100 + +qt-x11-free (3:3.3.5-1ubuntu11) dapper; urgency=low + + * Applied patch for the immodule which has problems with KeyRelease events + and preventing some applications from working properly (e.g. Katapult, + Opera). Patch was provided by Lubos Lunak, you can find the patch here: + http://lists.freedesktop.org/archives/immodule-qt/2005-June/000732.html + + -- Stephan Hermann Tue, 10 Jan 2006 12:30:52 +0100 + +qt-x11-free (3:3.3.5-1ubuntu10) dapper; urgency=low + + * Add missing patches to 00list, really. + * Install immodule headers + + -- Jonathan Riddell Sun, 8 Jan 2006 04:49:15 +0000 + +qt-x11-free (3:3.3.5-1ubuntu9) dapper; urgency=low + + * Add missing patches to 00list + * Alter debian/rules to add symlinks to qtimmodule headers in includes/ + + -- Jonathan Riddell Fri, 6 Jan 2006 15:59:45 +0000 + +qt-x11-free (3:3.3.5-1ubuntu8) dapper; urgency=low + + * Fix install and clean rule for qtrc + + -- Jonathan Riddell Thu, 5 Jan 2006 23:57:32 +0000 + +qt-x11-free (3:3.3.5-1ubuntu7) dapper; urgency=low + + * Add debian/qtrc to install to etc/qt3/qtrc which includes path for + KDE widget style plugins, default to plastik and include sensible colours + http://bugzilla.ubuntu.com/2724 + + -- Jonathan Riddell Wed, 4 Jan 2006 01:04:56 +0000 + +qt-x11-free (3:3.3.5-1ubuntu6) dapper; urgency=low + + * Add Categories to .desktop files in debian/maintain + https://launchpad.net/distros/ubuntu/+source/qt-x11-free/+bug/5817 + (somehow got lost in last upload) + + -- Jonathan Riddell Sun, 1 Jan 2006 23:30:33 +0000 + +qt-x11-free (3:3.3.5-1ubuntu5) dapper; urgency=low + + * Add Categories to .desktop files in debian/maintain + https://launchpad.net/distros/ubuntu/+source/qt-x11-free/+bug/5817 + + -- Jonathan Riddell Wed, 21 Dec 2005 17:45:40 +0000 + +qt-x11-free (3:3.3.5-1ubuntu4) dapper; urgency=low + + * Add kubuntu_0067_nofclist.dpatch and + kubuntu_0066_fcsort2fcmatch.dpatch from KDE's qt-copy + * Build-dep on libmysqlclient14-dev + + -- Jonathan Riddell Thu, 15 Dec 2005 23:33:41 +0000 + +qt-x11-free (3:3.3.5-1ubuntu3) dapper; urgency=low + + * Resurrect debian/libqt3-mt-dev.links from the 3.3.4 packages, and + adjust to make sense in the 3.3.5 packaging, fixing FTBFS problems for + packages that expect to find includes and .so files in /usr/share/qt3 + + -- Adam Conrad Wed, 30 Nov 2005 16:28:03 +1100 + +qt-x11-free (3:3.3.5-1ubuntu2) dapper; urgency=low + + * Remove kubuntu_01_visibility.dpatch after discussion with upstream + * Add kubuntu_01_immodule_unified.dpatch for im-module support + + -- Jonathan Riddell Mon, 21 Nov 2005 12:28:07 +0000 + +qt-x11-free (3:3.3.5-1ubuntu1) dapper; urgency=low + + * Sync with Debian + * Add kubuntu_01_visibility.dpatch from http://bugs.kde.org/show_bug.cgi?id=109386 + for GCC 4 visiblity=hidden support in KDE + + -- Jonathan Riddell Thu, 10 Nov 2005 14:34:40 +0000 + +qt-x11-free (3:3.3.5-1) unstable; urgency=low + + * New upstream release. Drop patches merged upstream, and sync those that + remain. + + * Add a patch disabling 3.3.5's new use of includehints, since the + implementation is still buggy and causing build problems for many + programs. + + +++ Changes by Christopher Martin: + + * Move documention from qt3-doc back to qt3-designer and qt3-linguist, since + the last upload centralized it all in qt3-doc. The reason for this + inadvertent change was a years-old bug (just now noticed and fixed) in + debian/rules, wherein portions of it would fail if sh where something + other than bash. Add all the appropriate Replaces to cope with these + moves. (Closes: #327291) + + * Revert the versioning of our build-depends on libpq-dev, since the fixed + package has now built on all architectures. + + * Add a patch from the "Improving KDE" set that tweaks KDE's default GUI, + changing some of the selection and highlight effects. + + * Revert the splitting out of the Qt style plugins, as this caused hassles + for developers trying to create their own styles, and also problems with + PyQt. (Closes: #327360, #328109) + + * Re-enable InterBase support, now that firebird2 has been built with gcc4. + + -- Debian Qt/KDE Maintainers Fri, 16 Sep 2005 11:21:52 -0400 + +qt-x11-free (3:3.3.4-8ubuntu5) breezy; urgency=low + + * Remove 29_qtc_fix_rotated_randr.dpatch and replace with + kubuntu_03_fix_rotated_randr.dpatch from a previous build + * Add rm -f qmake/*o to clean target in debian/rules + + -- Jonathan Riddell Sat, 10 Sep 2005 00:32:18 +0100 + +qt-x11-free (3:3.3.4-8ubuntu4) breezy; urgency=low + + * Alter libqt3-mt-dev's dependencies to refer to the GL/GLU packages we + ship in main, so germinate isn't likely to have a conniption fit. + + -- Adam Conrad Wed, 7 Sep 2005 20:42:51 +1000 + +qt-x11-free (3:3.3.4-8ubuntu3) breezy; urgency=low + + * Disable ibase build + + -- Jonathan Riddell Thu, 1 Sep 2005 22:42:23 +0000 + +qt-x11-free (3:3.3.4-8ubuntu2) breezy; urgency=low + + * Remove firebird2-dev build-dep, it's universe + + -- Jonathan Riddell Thu, 1 Sep 2005 20:27:15 +0000 + +qt-x11-free (3:3.3.4-8ubuntu1) breezy; urgency=low + + * Sync with Debian + + -- Jonathan Riddell Thu, 1 Sep 2005 15:48:12 +0000 + +qt-x11-free (3:3.3.4-8) unstable; urgency=low + + +++ Changes by Christopher Martin: + + * Add a patch fixing the generation of PostScript, which was broken due to + a flaw in the code that only manifested itself with the GCC 4.0 + transition. This should fix printing in all Qt and KDE applications, as + well as other glitches where nonsensical results were generated. + (Closes: #326833, #326990, #327021) + + * No longer build non-threaded libraries. (Closes: #180326) + No package in the archive uses them, except a bogus qtdmm + build-dependency (#326627). + + * Add a libqt3c102-mt-dbg package. (Closes: #235396, #322868) + + * Make the Qt3 documentation available from /usr/share/doc/qt3-doc, and + therefore also usable in dwww and doc-central. (Closes: #185900, #284407, + #294630) + + * Apply packaging patches from Brian Nelson to allow Qt3 to co-exist + with Qt4 packages. (Closes: #306879) + + * Apply 06_disable_rpath to linux-g++-64/qmake.conf as too. + + * Add the gtkstyle patch, in order to better support Bluecurve. + (Closes: #316108) + + * Add more patches from qt-copy: + + 29_qtc_fix_rotated_randr: Improve height/width calculations for rotated + screens. + + 30_qtc_qtoolbar_77047: Fix for the toolbar extension menu. + + 33_qtc_qlistbox-crash: Fixes a crash that shows up in KHTML. + + 34_qtc_dnd_optimization: Massive DND speedups. + + 35_qtc_dnd_active_window_fix: Fixes DND when windows are changing focus. + + 36_qtc_dnd-timestamp-fix: Suppresses needless popups when using DND. + + 37_qtc_dragobject-dont-prefer-unknown: Fixes DND with some apps, like + Mozilla. + + 38_qtc_khotkeys_input_84434: Fixes keyboard input action in KHotKeys. + + 39_qtc_qpopup_has_mouse, 40_qtc_qpopup_ignore_mousepos: Fixes the mouse + movement and position affecting keyboard navigation with popups and + menus. + + * Enable tablet support: + - pass -tablet to configure. + - add libxi-dev to Build-Depends. + + * Build jpeg support into Qt, not as a plugin. + + * Build the Qt styles as plugins. This does not affect the Qt buildkey, + so shouldn't affect other packages. + + * Revamp the OpenGL linking patch. This fixes the loading of libXmu, a + problem which affected some screensavers. (Closes: #296661) + + * Temporarily bump the libpq-dev build-depends to (>= 8.0.3-15), ensuring + that we build against a version where the headers are located as expected. + + -- Debian Qt/KDE Maintainers Wed, 7 Sep 2005 11:23:55 -0400 + +qt-x11-free (3:3.3.4-7) unstable; urgency=low + + * The "Mistakes happen; sadly, sometimes they happen all the same day" release. + + +++ Changes by Adeodato Simó: + + * Fix new arm FTBFS: in 08_arm_gcc4.dpatch, patch the original file, not the + symlink, since patch makes a copy. + + -- Debian Qt/KDE Maintainers Thu, 11 Aug 2005 22:28:17 +0200 + +qt-x11-free (3:3.3.4-6) unstable; urgency=low + + * The "If debussy had been up..." release. + + +++ Changes by Adeodato Simó: + + * Include in 08_arm_gcc4.dpatch an appropriate cast so that GCC 4.0 does not + barf. Patch stolen from SuSE, kudos to Isaac Clerencia for finding it. + + -- Debian Qt/KDE Maintainers Thu, 11 Aug 2005 14:29:47 +0200 + +qt-x11-free (3:3.3.4-5) unstable; urgency=low + + +++ Changes by Adeodato Simó: + + * Fix FTBFS on arm due to incomplete compiler version check: teach qglobal.h + that GCC versions with major version != 3 exist. [08_arm_gcc4.dpatch] + + -- Debian Qt/KDE Maintainers Wed, 10 Aug 2005 12:10:01 +0200 + +qt-x11-free (3:3.3.4-4ubuntu5) breezy; urgency=low + + * Add lib64 symlink on amd64 to QTDIR, since the kernel wants that for + xconfig to work. (Ubuntu #5029) + + -- Tollef Fog Heen Fri, 19 Aug 2005 11:24:34 +0200 + +qt-x11-free (3:3.3.4-4ubuntu4) breezy; urgency=low + + * Update {build-,}depends for the xorg -> mesa transition. + * Add 32_gcc4_qiconview_fix.dpatch to fix FTBFS, thanks to Stephan Hermann. + + -- Adam Conrad Fri, 19 Aug 2005 00:16:11 +1000 + +qt-x11-free (3:3.3.4-4ubuntu3) breezy; urgency=low + + * Add kubuntu_02_fix_rotated_randr.dpatch from KDE's qt-copy + + -- Jonathan Riddell Thu, 11 Aug 2005 00:49:19 +0000 + +qt-x11-free (3:3.3.4-4ubuntu2) breezy; urgency=low + + * Compile with -tablet + + -- Jonathan Riddell Thu, 4 Aug 2005 18:08:03 +0000 + +qt-x11-free (3:3.3.4-4ubuntu1) breezy; urgency=low + + * Sync with Debian (brings in buildkey patch) + + -- Jonathan Riddell Thu, 28 Jul 2005 12:05:10 +0000 + +qt-x11-free (3:3.3.4-4) unstable; urgency=low + + * The "Three transitions and one maintainer switch" release. + + * Cope with the following ongoing transitions in unstable: + - C++ ABI transition. + - X.org transition. + - PostgreSQL 8.0 transition. + + * Move the package to the Debian Qt/KDE team, as agreed with the + maintainer. Thanks to Martin Loschwitz for all his work over the + years. + + +++ Changes by Adeodato Simó: + + * Transition to the new C++ ABI. Rename all the library packages as + necessary: every libqt3c102-* goes back to libqt3-* now. Changes based + on the patch provided by Matthias Klose in Ubuntu Bug 10723. + + + debian/control: + - renamed library packages. + - add conflicts and replaces against the libqt3c102-* packages, or + change the existing libqt3-* ones. + - change the existing recommends and suggests on libqt3c102-* to + libqt3-*. + - adjusted descriptions where appropriate. + + + debian/rules: + - s/c102// in various places. + + + debian/*.install, debian/*.links: + - renamed as appropriate. + + + debian/patches/31_gcc4_buildkey.dpatch: + - new patch picked from the Fedora Qt packages to ensure a stable + buildkey accross compiler upgrades now that GCC 4 is the default. + Kudos to Christopher Martin for finding about the existence of this + patch. + + The above solves trouble for users when using qt3-designer with g++ 4.0, + so this upload closes: #317768. + + Also, disabling InterBase support has been necessary in this upload, + because nobody has cared to make firebird2 not FTBFS with g++ 4.0. Dropped + the libqt3-ibase and libqt3-mt-ibase packages, which can be reintroduced + as soon as #317314 gets fixed. + + + debian/control: + - don't build-depend on firebird2-dev. + + + debian/rules: + - unconditionally use -no-sql-ibase and -Nlibqt3{,-mt}-ibase. + + * Transition to the new X.org packages: + + debian/control: + - build-depend in libglu1-xorg-dev instead of xlibmesa-glu-dev; make the + same change in the dependencies of libqt3-dev and libqt3-mt-dev. + - add libxinerama-dev and libxkbfile-dev to build-dependencies; add + libxinerama-dev to the dependencies of libqt3-dev and libqt3-mt-dev as + well (closes: #319305). + - add libxi-dev to the dependencies of libqt3-dev and libqt3-mt-dev. [cm] + + * Transition to the new PostgreSQL 8.0 packaging (closes: #317500): + + debian/control: build-depend on libpq-dev instead of postgresql-dev. + + debian/rules: invoke pg_config to determine the include directory. + + * Don't modify debian/control at build time, since doing it in the clean + target it's a release critical bug now: + + debian/rules: don't invoke type-handling to generate debian/control. + + debian/control.in: removed. + + debian/control: + - adjust the list of *-i386 ports to list only the non-dead ones. + - don't build depend on type-handling. + + * Overhaul arch detection in debian/rules: + - use DEB_HOST_ARCH instead of DEB_BUILD_GNU_CPU to detect arm. + - use DEB_HOST_ARCH_CPU instead of DEB_BUILD_GNU_CPU to detect an i386 CPU + (needs the new dpkg). + + +++ Changes by Christopher Martin: + + * Add sundry fixes from KDE's qt-copy. (Closes: #303065) + + * Fix qt3-designer's appearance in the KDE menu. (Closes: #290402) + + * Don't use lib64 on amd64. (Closes: #311562) + + * Don't duplicate the information in the qvfb manpage. (Closes: #282217) + + While we're at it, realize that a whole bunch of manpages were suffering + the same, and fix them (designer, makeqpf, mergetr, findtr, msg2qm, + qtconfig, createcw, qembed, qt20fix). [dato] + + * Add linguist manpage. Thanks to Jeremy Laine. (Closes: #268882) + + * Include createcw source for qt3-designer. (Closes: #305919) + + * Add missing qvfbhdr.h. (Closes: #182366, the qinterlacestyle.h + mentioned in this bug report was already included in recent versions.) + + * Many minor changes to improve lintian compliance. + + * Bump Standards-Version to 3.6.2 (no changes required). + + -- Debian Qt/KDE Maintainers Tue, 26 Jul 2005 19:06:03 +0200 + +qt-x11-free (3:3.3.4-3) unstable; urgency=medium + + * ML: Remove an utterly ugly symlink for linux-g++ that pointed to my + $HOME -- Trolltech strikes again! + + -- Martin Loschwitz Fri, 15 Apr 2005 15:17:00 +0200 + +qt-x11-free (3:3.3.4-2) unstable; urgency=medium + + * ML: Try adding back the qt{-mt}.pc-files, let's see whether they work + * ML: No others changes but re-building to get this into Sarge + + -- Martin Loschwitz Sat, 2 Apr 2005 13:02:00 +0100 + +qt-x11-free (3:3.3.4-1ubuntu10) breezy; urgency=low + + * Rebuild for removed libXcursor.la + + -- Jonathan Riddell Sun, 24 Jul 2005 18:11:56 +0000 + +qt-x11-free (3:3.3.4-1ubuntu9) breezy; urgency=low + + * Add kubuntu_01_rubberband.dpatch for pretty file browser selection + * Add versioned build-dep on xrender-dev, libxft-dev and libxcursor-dev + to ensure libXrender.la changes are picked up + + -- Jonathan Riddell Tue, 19 Jul 2005 12:19:08 +0000 + +qt-x11-free (3:3.3.4-1ubuntu8) breezy; urgency=low + + * debian/control.in: Adjusted GLU build-depends + * debian/control.in: changed libmysqlclient-dev to libmysqlclient12-dev + + -- Jonathan Riddell Sat, 16 Jul 2005 18:46:00 +0200 + +qt-x11-free (3:3.3.4-1ubuntu7) breezy; urgency=low + + * Fix XRandR detection test. Xrandr.h and randr.h can be in two different + includes directories: + - Add patch 25_flexible_xrandr.dpatch. + - Fix FTBFS on X.Org modular tree. + + * debian/control.in: Add build-dep on libxi-dev to fix yet another FTBFS + (Note that Xinput is not checked by configure so it shows the failure + only during the build). + + -- Fabio M. Di Nitto Tue, 21 Jun 2005 08:56:41 +0200 + +qt-x11-free (3:3.3.4-1ubuntu6) breezy; urgency=low + + * debian/control.in: Added build dependency libxrandr-dev to fix FTBFS. + + -- Martin Pitt Wed, 8 Jun 2005 14:34:03 +0000 + +qt-x11-free (3:3.3.4-1ubuntu5) breezy; urgency=low + + * Transition to new PostgreSQL architecture. + * debian/control.in: Changed build dependency postgresql-dev to libpq-dev. + * debian/rules: Use pg_config to determine include directory. + + -- Martin Pitt Tue, 7 Jun 2005 13:01:27 +0200 + +qt-x11-free (3:3.3.4-1ubuntu4) breezy; urgency=low + + * Add -tablet to configure to compile with graphics tablet support + + -- Jonathan Riddell Mon, 6 Jun 2005 10:55:47 +0000 + +qt-x11-free (3:3.3.4-1ubuntu3) breezy; urgency=low + + * Fix (build-)dependencies (libpng12-0-dev -> libpng12-dev), + xlibmesa-glu-dev -> libglu-dev-xorg. + + -- Matthias Klose Wed, 25 May 2005 02:46:53 +0000 + +qt-x11-free (3:3.3.4-1ubuntu2) breezy; urgency=low + + * Sync debian/patches with Debian, brings in 22_fix_ftbfs_amd64.dpatch + to fix 64 bit compile + + -- Jonathan Riddell Mon, 23 May 2005 23:05:01 +0000 + +qt-x11-free (3:3.3.4-1ubuntu1) breezy; urgency=low + + * final package + + -- Andreas Mueller Mon, 16 May 2005 14:25:01 +0000 + +qt-x11-free (3:3.3.4-1) experimental; urgency=low + + * ML: New upstream release Qt 3.3.4 packages for Debian (Closes: #292422) + * ML: patches/0048-qclipboard_hack_80072.patch: Fix the clipboard stuff + (Closes: #295828) + * ML: patches/0061-qscrollview-propagate-horizontal-wheelevent.patch: Fix + problems with horizontal scrollview + * ML: Took patch from BTS by Andreas Jochens to fix the FTBFS on the amd64 + architecture (Closes: #288405) + * ML: patches/19_security_fixes.dpatch: Removed this patch, incorporated + into upstream now. + * ML: patches/20_qlocale_compile_arm.dpatch: Removed, incorporated into + upstream as well. + * ML: patches/17_fix_qfontdatabase_cpp.dpatch: Disabled for now, seems to + be fixed by upstream according to changelog + + -- Martin Loschwitz Fri, 18 Mar 2005 15:57:00 +0100 + +qt-x11-free (3:3.3.4-0ubuntu0.2) breezy; urgency=low + + * CXX transition: rename libqtc102* back to libqt*. + + -- Andreas Mueller Sat, 14 May 2005 19:01:20 +0000 + +qt-x11-free (3:3.3.4-0ubuntu0.1) breezy; urgency=low + + * debian merge + * remove 17_fix_qfontdatabase_cpp, 19_security_fixes and 20_qlocale_compile_arm applied upstream + + -- Andreas Mueller Tue, 10 May 2005 19:12:32 +0000 + +qt-x11-free (3:3.3.3-8) unstable; urgency=high + + * ML: debian/control.in: Correct the Build-Depends: line to reflect latest + changes for libpng and libmysql (Closes: #284441) + + -- Martin Loschwitz Fri, 14 Jan 2005 12:17:00 +0100 + +qt-x11-free (3:3.3.3-7ubuntu3) hoary; urgency=low + + * Add patch kubuntu_01_qclipboard_hack_80072.dpatch to fix + http://bugs.kde.org/80072 as recommended by KDE. + + -- Jonathan Riddell Thu, 31 Mar 2005 23:14:16 +0100 + +qt-x11-free (3:3.3.3-7ubuntu2) hoary; urgency=low + + * Make libqt3-dev and libqt3-mt-dev depend on libxinerama-dev, since + -lXinerama is in QMAKE_LIBS_X11. + + -- Colin Watson Tue, 1 Mar 2005 12:43:04 +0000 + +qt-x11-free (3:3.3.3-7ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. + * Build-dep on libpng12-dev + + -- Tollef Fog Heen Mon, 6 Dec 2004 12:31:27 +0100 + +qt-x11-free (3:3.3.3-7) unstable; urgency=high + + * ML: debian/patches/21_fix_mips_mipsel.dpatch: To make it compile, even + define => QMAKE_CFLAGS += -Wa,-xgot -- thanks to Thiemo Seufer + + -- Martin Loschwitz Tue, 16 Nov 2004 19:37:00 +0100 + +qt-x11-free (3:3.3.3-6ubuntu1) hoary; urgency=low + + * Don't build depend on type-handling, don't build the Interbase/Firebird + packages. Closes: #3414. + * Build depend on libxinerama-dev, libxkbfile-dev. + * debian/patches/15_unify_declarations_glibc.dpatch: Don't patch the + symlink include/qglobals.h. + + -- Matthias Klose Tue, 16 Nov 2004 22:12:38 +0100 + +qt-x11-free (3:3.3.3-6) unstable; urgency=high + + * ML: Addedd debian/patches/21_fix_mips_mipsel.dpatch to make the beast + compile on MIPS/MIPSel again + + -- Martin Loschwitz Sun, 14 Nov 2004 16:44:00 +0100 + +qt-x11-free (3:3.3.3-5ubuntu2) hoary; urgency=low + + * Remember to upload .orig.tar.gz as well. + + -- Tollef Fog Heen Fri, 5 Nov 2004 02:08:11 +0100 + +qt-x11-free (3:3.3.3-5ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. (Ubuntu bug: #2872) + + -- Tollef Fog Heen Thu, 4 Nov 2004 13:07:34 +0100 + +qt-x11-free (3:3.3.3-5) unstable; urgency=high + + * ML: Acknowledging NMU by Matthias Klose, thanks. (Closes: #270202) + * ML: patches/04_qsql_odbc.dpatch: Fix Compilation of the iodbc stuff, + breakage caused by invalid redefinitions of variables (Closes: #278781) + * debian/rules: Delete .obj-directories in the clean-Target as requested + by Fabio Massimo Di Nitto (thanks for noticing this) + + -- Martin Loschwitz Sun, 31 Oct 2004 10:51:00 +0100 + +qt-x11-free (3:3.3.3-4.1) unstable; urgency=high + + * NMU, maintainer doesn't show any reaction. + * On arm-linux, configure using -DQT_QLOCALE_USES_FCVT. Seems to be a + known issue, mentioned in the 3.3.2 release notes, but nowhere in + the 3.3.3 sources. Great! Thanks to Paul Brook and Jan Niehusmann for + the investigations. Closes: #270202. + * Riku Voipio: Added patch: 20_qlocale_compile_arm.dpatch. + * debian/patches/00list: add 20_qlocale_compile_arm.dpatch. + + -- Matthias Klose Sat, 18 Sep 2004 17:01:16 +0200 + +qt-x11-free (3:3.3.3-4) unstable; urgency=high + + * ML: Applied patch from Marcus Meissner to fix broken XPM DoS not yet + fixed upstream [src/kernel/qimage.cpp, CAN-2004-0692] + * ML: Applied patch forwarded by Marcus Meissner to fix broken GIF DoS + unfixed upstream [src/kernel/qasyncimageio.cpp, CAN-2004-0693] + * ML: urgency=high to get security fixes into sarge as quick as possible + + -- Martin Loschwitz Sun, 22 Aug 2004 11:48:00 +0200 + +qt-x11-free (3:3.3.3-3) unstable; urgency=high + + * ML: Exchanged the dangling symlinks in /usr/share/qt3/lib with working + symlinks to /usr/lib (thanks to Aurelien Jarno) (Closes: #266284) + + -- Martin Loschwitz Tue, 17 Aug 2004 17:35:00 +0200 + +qt-x11-free (3:3.3.3-2) unstable; urgency=high + + * ML: Bring back the goddamn qmake binary that silently disappeared (thank + you Trolltech for replacing it with a symlink) (Closes: #265958) + + -- Martin Loschwitz Mon, 16 Aug 2004 00:31:00 +0200 + +qt-x11-free (3:3.3.3-1) unstable; urgency=high + + * ML: debian/control: Turned libqt3-headers and libqt3-compat-headers into + Architecture: any. This should avoid blocking packages from testing + * ML: debian/control: Added a patch by Robert Millan to add control.in to + fix breakage with iBase and OSes != Linux (Closes: #265413) + * ML: debian/patches/16_fix_opengl_check.dpatch: Make QLibrary search for + libGL.so.1, no dependency on libgl-dev packages (Closes: #264928) + * ML: debian/patches/17_fix_qfontdatabase_cpp.dpatch: A patch taken from + Lars Knoll via kde mailing list; fixes a problem with fond handling + * ML: Re-Build against the latest iodbc to get back shlibs of it; previous + version didn't have shlins accidentally (kudos to Adrian Bunk) + * ML: New Upstream Version (Qt 3.3.3), urgency is high to push this into + sarge as soon as possible (Qt 3.2 is not acceptable) + + -- Martin Loschwitz Sat, 14 Aug 2004 21:05:00 +0200 + +qt-x11-free (3:3.3.2-5) unstable; urgency=medium + + * ML: debian/rules: Fixed the debhelper calls, dh tried to install the + iBase stuff (Architecture: i386) even on non-i386 architectures. + * ML: Enable iBase for all Operating Systems instead of only for Linux + on i386 (thanks to Robert Millan again) + * ML: Severity is medium to not hold up KDE and tiff transition + + -- Martin Loschwitz Sat, 08 Aug 2004 10:50:00 +0200 + +qt-x11-free (3:3.3.2-4) unstable; urgency=low + + * ML: iBase seems to be similar to the black helicopters. Once they got + you there is no way to get rid of them. Disabled the iBase-Plugin + for all arches except x86 - hopefully. + + -- Martin Loschwitz Sat, 07 Aug 2004 22:13:00 +0200 + +qt-x11-free (3:3.3.2-3) unstable; urgency=low + + * ML: debian/control: Switch from Firebird1 to Firebird2 + + -- Martin Loschwitz Sat, 07 Aug 2004 16:33:00 +0200 + +qt-x11-free (3:3.3.2-2) unstable; urgency=low + + * ML: Let's have another try, this time with the right target distribution + + (verbatim copy of the 3:3.3.2-1 upload changelog follows) + + * ML: New Upstream (Qt 3.3.2) fixes: + - Strange line /usr/lib/libqt-mt.la (Closes: #216063) + - The wishlist-bugreport for it can be closed (Closes: #235394) + * ML: Fixed the description of the following packages: + - libqt3c102-mt-psql (Closes: #209735) + - libqt3c102-mt-odbc (Closes: #209932) + - qt3-examples (Closes: #210046) + - libqt3c102-mt-mysql (Closes: #210097) + * ML: Made qt3-assistant depend on qt3-doc (Closes: #256183) + * ML: Adopted patches by Robert Millan to make Qt build on Hurd + - Added patches/15_unify_declarations_glibc.dpatch + - Fixed debian/rules to avoid E2BIG on Hurd + Thanks, Robert! + * ML: Use libmysqlclient12 instead of libmysqlclient10 (Closes: #188622) + * ML: Use the OpenGL-libraries via dlopen (Closes: #257705) + + -- Martin Loschwitz Sat, 07 Aug 2004 13:08:00 +0200 + +qt-x11-free (3:3.3.2-1) experimental; urgency=low + + * ML: New Upstream (Qt 3.3.2) fixes: + - Strange line /usr/lib/libqt-mt.la (Closes: #216063) + - The wishlist-bugreport for it can be closed (Closes: #235394) + * ML: Fixed the description of the following packages: + - libqt3c102-mt-psql (Closes: #209735) + - libqt3c102-mt-odbc (Closes: #209932) + - qt3-examples (Closes: #210046) + - libqt3c102-mt-mysql (Closes: #210097) + * ML: Made qt3-assistant depend on qt3-doc (Closes: #256183) + * ML: Adopted patches by Robert Millan to make Qt build on Hurd + - Added patches/15_unify_declarations_glibc.dpatch + - Fixed debian/rules to avoid E2BIG on Hurd + Thanks, Robert! + * ML: Use libmysqlclient12 instead of libmysqlclient10 (Closes: #188622) + * ML: Use the OpenGL-libraries via dlopen (Closes: #257705) + + -- Martin Loschwitz Sat, 07 Aug 2004 09:50:00 +0200 + +qt-x11-free (3:3.3.2-0pre2) experimental; urgency=low + + * ML: Added qaccessible.h to the list of headers + * ML: Removed unnecessary dependencies again + * ML: Added patch to fix KDE menu problem + * ML: Build and include the source in upload now + + -- Martin Loschwitz Mon, 14 Jun 2004 21:23:00 +0200 + +qt-x11-free (3:3.3.2-0pre1) experimental; urgency=low + + * ML: First public version of packages for Qt 3.3 + * ML: Added packages for ibase and SQLite RDBMSs + * ML: Necessary Adaptions from the Qt 3.2 to Qt 3.3 packages + + -- Martin Loschwitz Sat, 12 Jun 2004 21:09:00 +0200 + +qt-x11-free (3:3.2.3-3) unstable; urgency=low + + * ML: Re-enabled STL support in Qt (Closes: #194475, #242633) + * ML: Enabled XRandr support (Closes: #253593) + * ML: Fixed FTBFS cursed by XCursor (Closes: #246198) + * ML: Split xlibs-dev dependencies (Closes: #253325) + * ML: Disabled the Xinerama_pic-hack (XFree 4.3 made it useless) + + -- Martin Loschwitz Thu, 10 Jun 2004 12:07:00 +0200 + + +qt-x11-free (3:3.2.3-2) unstable; urgency=low + + * ML: Rebuild to get back PIC-libs + + -- Martin Loschwitz Thu, 22 Jan 2004 15:23:00 +0100 + +qt-x11-free (3:3.2.3-1) unstable; urgency=low + + * ML: New upstream release (Qt 3.2.3) (Closes: #218464) + * ML: Add Replaces: for libqt3-emb (<= 3:3.0.3-1) (Closes: #218290) + * ML: Tuned libqt3-i18n package description (Closes: #208904) + * ML: Tuned qt3-qtconfig package description (Closes: #209259) + * ML: Removed some patches that were merged by upstream (#1, #8, #9, #10) + * ML: Don't include any of the .pc files; they're unsupported now + * ML: Don't include any of the .la files: they're not working now + + -- Martin Loschwitz Tue, 06 Jan 2004 09:54:00 +0100 + +qt-x11-free (3:3.2.1-6) unstable; urgency=low + + * ML: Added dependency to libqt3{-mt}-dev for xlibs-pic (Closes: #213855) + * ML: Sanify qmake.conf files to have existing paths instead of $(QTDIR) + * ML: Sanify qt{-mt}.pc files to have correct values + * ML: Bumped Standards-Version to 3.6.1 (No changes) + * ML: Added debian/compat + * ML: Added patch by Simon Hausmann to fix generation of pkgcof files + + -- Martin Loschwitz Sun, 05 Oct 2003 11:24:00 +0200 + +qt-x11-free (3:3.2.1-5) unstable; urgency=low + + * ML: Let's build styles into the library, instead of as plugins + (Closes: #197157) + * ML: Added build dependency for libaudio-dev to libqt3{-mt}-dev + (Closes: #210628, #210994, #212530) + * ML: Removed broken patches for mips and mipsel + (Closes: #210366) + * ML: Added patch by Dirk Mueller to fix kdesktop and other applications + + -- Martin Loschwitz Mon, 29 Sep 2003 19:35:00 +0200 + +qt-x11-free (3:3.2.1-4) unstable; urgency=low + + * ML: re-add the fontlist fix from previous versions + * ML: Added dependencies for libxft2-dev, libxrender-dev and libxcursor-dev + to the -dev packages (Closes: #208421) + * ML: Changed description of libqt3-plugins-headers package + * ML: Added patch by Lars Knoll to prevent generation of bogus mouse events + * RN: move unixmake2.cpp patch (approved by TT) + * RN: add qlineedit.cpp patch (approved by TT) + * RN: re-add pkg-config files + + -- Martin Loschwitz Wed, 3 Sep 2003 18:30:00 +0200 + +qt-x11-free (3:3.2.1-3) unstable; urgency=low + + * ML: Added patches/01_fix_mips_mipsel.dpatch (hopefully fixes mips[el] build) + * ML: Merged the patch added in previous release with the above one + * ML: For -1: Pass --sysconfdir and --translationdir options to ./configure + * ML: Enable support for Xcursor in debian/rules (on Ralf's request) + * RN: Copy qmake.cache file to the appropriate location (/usr/share/qt3/) + * RN: Include fix for unixmake2.cpp (libtool and pkgconfig) + + -- Martin Loschwitz Sun, 31 Aug 2003 18:41:00 +0200 + +qt-x11-free (3:3.2.1-2) unstable; urgency=low + + * ML: Build the qmake tool with -O2 as optimization flag (Closes: #207915) + * ML: Call dh_gencontrol with -a in debian/rules (Closes: #207917) + + -- Martin Loschwitz Sat, 30 Aug 2003 21:16:00 +0200 + +qt-x11-free (3:3.2.1-1) unstable; urgency=low + + * ML: New upstream version (Qt 3.2.1) (Closes: #204650) + * ML: Include all icon files for the Qt designer -- hopefully + + -- Martin Loschwitz Fri, 29 Aug 2003 14:59:00 +0200 + +qt-x11-free (3:3.1.1-9) unstable; urgency=low + + * ML: debian/control: Point out that libqt3-compat-headers might be of + importance (with Recommends and addition to package description, + Ben, I hope this satisfies you for now) + * ML: debian/rules Fix for-fork with patch from BTS (Closes: #188536) + + -- Martin Loschwitz Tue, 15 Jul 2003 19:45:00 +0200 + +qt-x11-free (3:3.1.1-8) unstable; urgency=low + + * ML: Apply patch from Kevin Puetz to fix font listing (Closes: #189750) + * ML: Don't rely on /usr/share/doc, remove qtrc crap (Closes: #189755) + * ML: Give the qt3-things a higher priority than the qt2 ones (Closes: #189755) + * ML: debian/qt3-qtconfig.menu: Moved to Settings section (Closes: #183827) + * ML: debian/copyright: Mention Qt3.1 instead of Qt2.2 (Closes: #185161) + * ML: debian/libqt3-plugins-headers: Added qinterlacestyle.h (Closes: #182259) + * ML: Have libqt3-dev and libqt3-mt-dev in the libdevel section + * RN: debian/control: Add libxft2-dev as dependency for -dev-packages + + -- Martin Loschwitz Sat, 10 May 2003 14:55:00 +0200 + +qt-x11-free (3:3.1.1-7) unstable; urgency=low + + * ML: The "Arg, can somebody purge typod please?"-release + - debian/control: Fixed corrupt Build-Depends: line + - debian/patches: Made the xinerama_pic patch i386-only + - debian/control: Removed unnecessary xlibs-pic Depends: + + -- Martin Loschwitz Fri, 07 Feb 2003 15:44:00 +0100 + +qt-x11-free (3:3.1.1-6) unstable; urgency=low + + * ML: Build with lXinerama_pic (for -fPIC) (Closes: #176071, #175075) + * ML: debian/rules: Convert to dpatch package + * ML: debian/control: Change Maintainer Address + * ML: debian/control: Have fontconfig as Depends: + * ML: debian/control: Fix {Build-}Dependencies for GLU libs (Closes: #182184) + + -- Martin Loschwitz Tue, 06 Feb 2003 18:40:00 +0100 + +qt-x11-free (3:3.1.1-5) unstable; urgency=low + + * ML: Added Build-Dependency for xlibmesa-glu-dev to fix FTBFS + * ML: Updated debian/patches/01 to reflect latest qt-copy changes + * ML: Removed patch for hppa (was needed to fix FTBFS) + + -- Martin Loschwitz Sat, 22 Feb 2003 08:47:00 +0100 + +qt-x11-free (3:3.1.1-4) unstable; urgency=low + + * RN: debian/rules: remove byacc commands + * RN: debian/rules: Change back to srcdir = builddir mechanism + * RN: debian/patches: Help to remove some unused patches + * RN: debian/maintain: Help to get rid of copying qmake.conf files around + * RN: debian/rules: Clean up the 'clean' target, make it work again + * RN: debian/qt3-doc.links: Fix breakage for man-link + * RN: debian/libqt3{mt-dev,dev}: Create plugins symlink + * ML: debian/control: Remove xlibmesa-dev dependencies (Closes: #181202) + * ML: debian/control: Change libqt3-headers back to arch=all + * ML: debian/patches: Added patch to make sure hppa compiles as it should + * ML: Create seperate qconfig.h files for non-mt/mt (Conflicts for -dev!) + + -- Martin Loschwitz Tue, 18 Feb 2003 19:26:00 +0100 + +qt-x11-free (3:3.1.1-3) unstable; urgency=low + + * RN: debian/libqt3-plugins-headers.install: Removed headers for codecs + * RN: debian/rules: Fix paths in .prl-files after build has finished + * RN: debian/libqt3-headers.install: Include some more includes files + * ML: Ship src/attic as .tar.gz in libqt3-compat-headers (it's obsolete, anyway) + * ML: Broke out qt3-examples package (saves place in -doc-package and makes sense) + * ML: debian/maintain/qmake*.conf: Applied patch by Brian Nelson (Closes: #180326) + * ML: Added debian/maintain/fixqc.sh to fix qmake.cache files during install + + -- Martin Loschwitz Wed, 12 Feb 2003 16:31:00 +0100 + +qt-x11-free (3:3.1.1-2pre3v1) unstable; urgency=low + + * New package: libqt3-compat-headers (Thanks to Ralf Nolden again) + * debian/patches/01_qtcopy_20030206.dpatch: Updated to qtcopy from 20030206 + * debian/libqt3-mt-dev.install: Move QGL classes here since QGL only works with mt + * debian/rules: Install .prl files to /usr/share/qt3/lib/ + * debian/rules: Include logo32.png is every html-documentation + * debian/libqt3c102-mt.links: Symlinks for libqui + * debian/maintain/{qtconfig,assistant}.desktop: Fix section in menu file + * debian/rules: Include qmake documentation + * debian/rules: remove qwindowsxpstyle.h + * debian/rules: Moved README.Debian to -dev-packages (Closes: #179932) + * debian/README.Debian: New Version with max 75 chars per line (Closes: #179408) + * debian/control: Corrected Suggests: fields (Closes: #179838) + * deban/maintain/qtconfig.desktop: New Version, works Ok now (Closes: #179773) + * debian/control: libqt3c102-mt now conflicts with libqui1-emb (Closes: #179759) + * debian/control: qt3-dev-tools now conflicts with qte3-designer (Closes: #179761) + * debian/qt3-dev-tools.links: Make setting of QMAKESPEC unnecessary (Closes: #178296) + * debian/qt3-doc.doc-base: Finally, fix doc-base stuff (Closes: #155566) + * debian/control: libqt3c102 and -mt don't conflict with libqt (Closes: #179768) + * debian/control: Depend on xlibmesa-gl-dev | libgl-dev + * debian/control: Added Conflicts: for unofficial libqt3c-packages (Closes: #180078) + * debian/rules: Don't provide static libraries any longer (Waiting for policy approval!) + * debian/rules: Header-directory now is /usr/include/qt3 + * debian/rules: build the -non-mt version before the -mt-version + * For 3:3.1.1-2: Added Conflicts: for qt3-dev-tools <-> uic (Closes: #179396) + + -- Martin Loschwitz Sat, 8 Feb 2003 09:34:00 +0100 + +qt-x11-free (3:3.1.1-2) unstable; urgency=low + + * debian/qt3-dev-tools.install: Include mkspecs for qmake (Closes: #179410) + * debian/rules: Include logo32.png in qt3-docs (Closes: #179437) + * debian/control: qt3-dev-tools now has Conflicts: for libqt-dev (moc!) + * debian/control: Fix Build-Depends: to be xlibmesa-gl-dev instead of -glu-dev. + * debian/*.links: Readded symlinks for /usr/share/qt3/bin/ (Closes: #179411) + * debian/rules: Remove undocumented Symlinks (they are deprecated) + * -dev-packages should not depend on libqt3-plugins-headers (Closes: #179429) + * This was fixed in 3:3.1.1-1 (Closes: #179155) + * debian/maintain/qmake*.conf: Fix errors causing FTBFS on hppa/alpha (Closes: #179582) + * debian/control: Make libqt3-dev/-mt-dev depend on xlibmesa-gl-dev (Closes: #179573) + + -- Martin Loschwitz Mon, 3 Feb 2003 12:49:00 +0100 + +qt-x11-free (3:3.1.1-1) unstable; urgency=low + + * The packages have been redesigned radically. + - New packages: libqt3-headers, libqt3-i18n, libqt3-plugins-headers, + qt3-apps-dev, qt3-assistant, qt3-designer, qt3-dev-tools-compat, + qt3-dev-tools-embedded, qt3-dev-tools, qt3-linguist, qt3-qtconfig (Closes: #178914) + - Please refer to package descriptions for more detailed informations. + - As you can see above, QtConfig was moved into its own package. (Closes: #153538) + - Also made sure that qt3-designer contains libcppeditor.so (Closes: #155792) + * Special Thanks for advising and help with this release goes to Ralf Nolden + * debian/control: Make libqt3/libqt3-mt depend on fontconfig (Closes: #174825, #173951) + * debian/control: Transist package to g++-3.2 (Closes: #159263, #135813, #178484, #176616) + * Package rebuilt, thus some bugs fixed. (Closes: #178698, #174959, #176827) + * debian/rules: Provide conv2ui, also qvfb was added back. (Closes: #173932) + * Bugs against packages in stable distribution don't make much sense. + Additionally, this is not a bug but a feature (Qt2 <-> Qt3 conflict) (Closes: #178660) + * Same as above. Additionally, please make sure to use libqt3-mt-dev instead + of libqt3-dev (Closes: #168317) + * This bug definetely can not happen anymore, since Qt3 takes care of + creation of debian/tmp-install (Closes: #163075) + * debian/README.Debian: Updated and extended by Ralf Nolden + * debian/patches/02_missing_manpages.dpatch: Don't apply against qt-copy + * debian/patches/10_qvfb_cpp.dpatch: Fix qvfb to meet our needs + * debian/patches/11_designer_fix.dpatch: Fix designer breakage + * debian/patches/12_plugins_fix.dpatch: Build all available plugins + * debian/patches/13_qtcopy_20030128.dpatch: Include qt-copy 20030128 + * debian/*: Various other little fixes and cleanups + * debian/rules: Moved /usr/share/qt to be /usr/share/qt3 + + -- Martin Loschwitz Wed, 29 Jan 2003 16:58:00 +0100 + +qt-x11-free (2:3.1.1+cvs.20021220-1) unstable; urgency=low + + * New Upstream version (Qt 3.1.1, using qt-copy from KDE project) + * Special thanks goes to Kevin Puetz for support and work on this release + * debian/patches/: Removed patches 05 and 06 and added correct -I's to rules + * debian/rules: don't build unthreaded plugins with QT_THREAD_SUPPORT (Closes: #172793) + * debian/control: Fix description of libqt3-helper (Closes: #72754) + * debian/rules: Moved libqui to libqt3-helper (Closes: #173539, #173537) + * debian/libqt3-dev.install: Only include useful bits for qmake + * debian/maintain/qmake-hppa.conf: Added -ftemplate-depth-99 (Closes: #173086) + * debian/rules: Make sure OpenGL support is enabled on threaded builds + * debian/rules: Use new srcdir != builddir technology, large cleanup + * debian/rules: Fixed path for html-files (remove the double html) + * debian/control: Added Replaces: to libqt3-helper for libqt3 (Closes: #173288) + * debian/rules: Removed all those ugly wrapper scripts (bah!) + * debian/control: Added build-dependency for Xft2 - thus Xft2 enabled + + -- Martin Loschwitz Fri, 20 Dec 2002 17:53:00 +0100 + +qt-x11-free (2:3.1.0+cvs.20021205-1) unstable; urgency=low + + * New Upstream version (Qt 3.1.0, using qt-copy from KDE project) (Closes: #167001) + * debian/control: Make libqt3-dev depending on correct packages (Closes: #167475) + * debian/rules: Enabled Qt support for cups + * debian/overrides/: Added overrides-files for various packages + * debian/control: depend on libaudio instead of nas-lib + * debian/control: Updated Standards-Version to 3.8.0 + * debian/rules: Use DH_COMPAT=4 + * debian/rules: Converted to dh_install + + -- Martin Loschwitz Thu, 05 Dec 2002 14:10:00 +0100 + +qt-x11-free (2:3.0.5-4) unstable; urgency=low + + * debian/09_assistant.dpatch: Fix doc-dir-path for Qt-assistant (Closes: #148924) + * debian/10_sizet_64bit.dpatch: Fix for 64bit machines (Closes: #159364) + * debian/11_qsql_odbc.dpatch: build with libiodbc2-dev + * debian/control: Build-Depend on libiodbc2-dev (Closes: #161352, #161353) + * qt3-doc _should_ be Recommends (assistant/qt3-tools needs it) (Closes: #149428) + * debian/rules: Fixed the 'clean'-target (Closes: #159264) + * debian/libqt3-dev.links: Symlink for /usr/share/qt/lib (Closes: #152507, #152509) + * debian/control: Updates Standards-Version + * debian/control: Tried to solve the dependency hell a bit + * debian/control: Removed libqt3 Suggests for anti-aliasing-howto + * debian/rules: Re-enabled NAS (Network Audio System) + * Must be a local problem (there ARE files in libqt3-dev) (Closes: #159674) + * Not a Qt bug; has been fixed probably long time ago (Closes: #154976) + + -- Martin Loschwitz Thu, 15 Oct 2002 09:29:00 +0200 + +qt-x11-free (2:3.0.5-3) unstable; urgency=low + + * Sometimes our buildds do strange things (Closes: #155258) + * debian/rules: added shlibdeps-path for libqt3-mt. + * debian/rules: libqt3-mysql, libqt3-odbc and libqt3-psql contain the + unthreaded plugins now (Closes: #152022) + + -- Martin Loschwitz Thu, 9 Aug 2002 22:18:00 +0200 + +qt-x11-free (2:3.0.5-2) unstable; urgency=low + + * debian/control: qt3-dev and qt3-doc are "Priority: extra" now. + * debian/rules: Fix alpha and hppa build (Closes: #150917) + + -- Martin Loschwitz Thu, 2 Aug 2002 12:43:00 +0200 + +qt-x11-free (2:3.0.5-1) unstable; urgency=low + + * debian/control: New Maintainer (Closes: #153534) + * debian/maintain: fix hppa build (qmake-hppa.conf) (Closes: #150917) + * debian/changelog: New upstream version 3.0.5 (Closes: #153266) + * debian/rules: We use dpatch now, thanks to Gergely Nagy + * Moved wrapper files and configs to debian/maintain/ + * debian/maintain/assistant.sh: not include content double + * configure: Set "QT_INSTALL_PLUGINS" correct + * Changed some includes in the SQL-files to make them working + * debian/control: Fix some build dependencies + * debian/patches: All patches against upstream can be found here now. + * debian/control: Depend on libpng3-dev (Closes: #154234). + + -- Martin Loschwitz Sat, 27 Jul 2002 13:51:00 +0200 + +qt-x11-free (2:3.0.4-2) unstable; urgency=low + + * Fix hppa build hopefully (Closes: #150917) + * Build cleanup + + -- Ivan E. Moore II Wed, 26 Jun 2002 13:28:00 -0700 + +qt-x11-free (2:3.0.4-1) unstable; urgency=low + + * New upstream version + * Fix qt-designer html access (Closes: #149505) + * Build postgresql modules + * This was fixed a while ago. (Closes: #134637) + * Build static libs again. yuk! Who the heck uses these anymore? + (Closes: #147084) + + -- Ivan E. Moore II Sun, 16 Jun 2002 12:25:00 -0700 + +qt-copy (2:3.0.3-20020329-7) unstable; urgency=low + + * move html files to html subdir...really...I mean it. (Closes: #149076) + + -- Ivan E. Moore II Thu, 06 Jun 2002 11:31:00 -0700 + +qt-copy (2:3.0.3-20020329-6) unstable; urgency=low + + * Remove unused doc dirs. (Closes: #148595) + * move html files to html subdir + + -- Ivan E. Moore II Thu, 30 May 2002 22:58:00 -0700 + +qt-copy (2:3.0.3-20020329-5) unstable; urgency=low + + * Fix assistant by providing a wrapper (Closes: #146255) + + -- Ivan E. Moore II Wed, 08 May 2002 17:21:00 -0700 + +qt-copy (2:3.0.3-20020329-4) unstable; urgency=low + + * Remove extra .'s from descriptions + + -- Ivan E. Moore II Fri, 03 May 2002 23:20:00 -0700 + +qt-copy (2:3.0.3-20020329-3) unstable; urgency=low + + * Fix priority (Closes: #145193) + + -- Ivan E. Moore II Tue, 30 Apr 2002 00:27:00 -0700 + +qt-copy (2:3.0.3-20020329-2) unstable; urgency=low + + * Fix overwrite issue (Closes: #141803, #141639) + * Re-add all the additional man pages + + -- Ivan E. Moore II Tue, 23 Apr 2002 00:27:00 -0700 + +qt-copy (2:3.0.3-20020329-1) unstable; urgency=low + + * Updated qt-copy to fix a few other bugs (Closes: #140462) + + -- Ivan E. Moore II Fri, 29 Mar 2002 09:08:00 -0700 + +qt-copy (2:3.0.3-20020314-5) unstable; urgency=low + + * Fix potential crash...thanks Daniel + + -- Ivan E. Moore II Sat, 23 Mar 2002 02:30:00 -0700 + +qt-copy (2:3.0.3-20020314-4) unstable; urgency=low + + * Don't build motif style as a plugin. It's pretty much the default so + let's have that builtin. + * Fix plugin pathing...actually this was a bug in the configure script + where it wasn't setting the proper items in the qconfig.h file + (Closes: #139449) + + -- Ivan E. Moore II Fri, 22 Mar 2002 10:36:00 -0700 + +qt-copy (2:3.0.3-20020314-3) unstable; urgency=low + + * Since this is still in incoming..change from a build-conflict to a + versioned depend + + -- Ivan E. Moore II Sat, 16 Mar 2002 11:00:00 -0700 + +qt-copy (2:3.0.3-20020314-2) unstable; urgency=low + + * Build-Conflict with libpng2-dev since it provides libpng-dev and we don't + want any of those problems. + + -- Ivan E. Moore II Fri, 15 Mar 2002 20:00:00 -0700 + +qt-copy (2:3.0.3-20020314-1) unstable; urgency=low + + * New upstream version. + * Includes updated zlib code + + -- Ivan E. Moore II Thu, 14 Mar 2002 12:31:00 -0700 + +qt-copy (2:3.0.2-20020306-1) unstable; urgency=low + + * New upstream version. Using qt-copy as it provides a bunch of fixes + for 3.0.2. (Closes: #135865) + * Fix suggests for libqt3-psql + * link to new png. Need this otherwise we are stuck with using the old + png library for quite some time. + * Fix cleanup (Closes: #135859) + * Include -mt versions of plugins. + + -- Ivan E. Moore II Wed, 06 Mar 2002 23:37:00 -0700 + +qt-copy (2:3.0.0.0-4) unstable; urgency=low + + * Fix qmake.cache inclusion (Closes: #118623) + + -- Ivan E. Moore II Wed, 07 Nov 2001 11:37:00 -0700 + +qt-x11-free (2:3.0.0.0-3) unstable; urgency=low + + * wrap uic so QTDIR is set for it...makes plugins happier + + -- Ivan E. Moore II Wed, 31 Oct 2001 09:19:00 -0700 + +qt-x11-free (2:3.0.0.0-2) unstable; urgency=low + + * Enable gl support. If it get's whacky like qt2 did we'll break it + off into it's own package. But until then we'll just do it this way. + * Fix wrapper (Closes: #116734) + + -- Ivan E. Moore II Mon, 22 Oct 2001 12:55:00 -0700 + +qt-x11-free (2:3.0.0.0-1) unstable; urgency=low + + * New upstream version + + -- Ivan E. Moore II Mon, 15 Oct 2001 11:54:00 -0700 + +qt-x11-free (2:3.0.0-0beta6-4) unstable; urgency=low + + * Don't compile in xinerama support...lets actually build on all archs + + -- Ivan E. Moore II Tue, 09 Oct 2001 16:00:00 -0700 + +qt-x11-free (2:3.0.0-0beta6-3) unstable; urgency=low + + * Properly include private include files + * Provide links from /usr/bin/ qt bins to /usr/share/qt/bin + + -- Ivan E. Moore II Mon, 08 Oct 2001 16:00:00 -0700 + +qt-x11-free (2:3.0.0-0beta6-2) unstable; urgency=low + + * Properly include include files (Closes: #114357) + * Pass variables onto designer (Closes: #114271) + * Add new variable to qmake.sh (Closes: #113341) + + -- Ivan E. Moore II Wed, 03 Oct 2001 16:11:00 -0700 + +qt-x11-free (2:3.0.0-0beta6-1) unstable; urgency=low + + * New upstream beta + + -- Ivan E. Moore II Mon, 01 Oct 2001 11:04:00 -0700 + +qt-x11-free (2:3.0.0-0beta5-2) unstable; urgency=low + + * Fix shlibs (Closes: #113055) + + -- Ivan E. Moore II Sun, 23 Sep 2001 18:41:00 -0700 + +qt-x11-free (2:3.0.0-0beta5-1) unstable; urgency=low + + * New upstream beta + + -- Ivan E. Moore II Tue, 18 Sep 2001 09:56:00 -0700 + +qt-x11-free (2:3.0.0-0beta4-2) unstable; urgency=low + + * Provide threaded QT library + * Cleanup deps + * Set shlibs files + * Remove -O2 from alpha build and add -mieee + * don't use gcc3 for alpha build anymore + + -- Ivan E. Moore II Sat, 08 Sep 2001 09:57:00 -0700 + +qt-x11-free (2:3.0.0-0beta4-1) unstable; urgency=low + + * New upstream beta + * Lintian error cleanup + + -- Ivan E. Moore II Wed, 29 Aug 2001 20:52:00 -0700 + +qt-x11-free (2:3.0.0-0beta3-2) unstable; urgency=low + + * Fix path issues for documentation (Closes: #109255) + + -- Ivan E. Moore II Mon, 19 Aug 2001 00:01:00 -0700 + +qt-x11-free (2:3.0.0-0beta3-1) unstable; urgency=low + + * new upstream beta + * Include mkspecs bits for qmake + * include qmake wrapper + + -- Ivan E. Moore II Fri, 27 Jul 2001 03:36:00 -0700 + +qt-x11-free (2:3.0.0-0beta2-3) unstable; urgency=low + + * drop Optimization down for other archs + * *should* fix m68k build (Closes: #104043) + + -- Ivan E. Moore II Tue, 17 Jul 2001 15:47:00 -0700 + +qt-x11-free (2:3.0.0-0beta2-2) unstable; urgency=low + + * actually include libqxt.so so people can build packages against it + * Remove the suggests for anti-aliasing-howto from the plugin packages + + -- Ivan E. Moore II Sun, 08 Jul 2001 03:50:00 -0700 + +qt-x11-free (2:3.0.0-0beta2-1) unstable; urgency=low + + * New upstream beta + * Ok, now we break out libqxt0 + + -- Ivan E. Moore II Thu, 05 Jul 2001 12:46:00 -0700 + +qt-x11-free (3.0.0-0beta1-6) unstable; urgency=low + + * Add missing build-depend for flex (Closes: #102978, #102984) + * Add conflict with libqxt0 (Closes: #102959) + + -- Ivan E. Moore II Sun, 01 Jul 2001 08:32:00 -0700 + +qt-x11-free (3.0.0-0beta1-5) unstable; urgency=low + + * ok..I'll get this stuff worked out soon. Fix gl build bits + (Closes: #102849) + + -- Ivan E. Moore II Sat, 30 Jun 2001 00:27:00 -0700 + +qt-x11-free (3.0.0-0beta1-4) unstable; urgency=low + + * Include qmake in libqt3-dev package + * Build database modules and provide seperate packages for them + * Build styles and provide them in libqt3 package + * Actually install designer plugins...guess that might help. + * More build cleanup...properly build all the tools/* modules + * Update build-depends + * Actually include linguist desktop file + * Include interface files as well + + -- Ivan E. Moore II Thu, 28 Jun 2001 22:03:00 -0700 + +qt-x11-free (3.0.0-0beta1-3) unstable; urgency=low + + * Fix libqui1 deps (Closes: #100804) + * Fix qmake symlink (Closes: #100964) + + -- Ivan E. Moore II Mon, 18 Jun 2001 19:40:00 -0700 + +qt-x11-free (3.0.0-0beta1-2) unstable; urgency=low + + * Fix dependencies for libqt3-dev...grrr + * Fix description for qt3-tools + + -- Ivan E. Moore II Thu, 07 Jun 2001 21:00:00 -0700 + +qt-x11-free (3.0.0-0beta1-1) unstable; urgency=low + + * New upstream beta version + + -- Ivan E. Moore II Sat, 26 May 2001 11:06:00 -0700 + +qt-x11 (2:2.3.0-final-5) unstable; urgency=low + + * Fix LD PATH problems due to new fakeroot routines (Closes: #98068) + * Get rid of gl specific package and just build main package with gl support + + -- Ivan E. Moore II Fri, 25 May 2001 00:25:00 -0700 + +qt-x11 (2:2.3.0-final-4) unstable; urgency=low + + * Fix konsole accents (Closes: #96678) + + -- Ivan E. Moore II Fri, 11 May 2001 10:27:00 -0700 + +qt-x11 (2:2.3.0-final-3) unstable; urgency=low + + * More alpha tweaks (only remove optimization for CXXFLAGS) + * Update bulid flags (Closes: #90334) + * Updating shlibs to stop problem with people using old libqt2 packages + * Several upstream fixes pulled out of the qt-copy CVS tree on KDE's + CVS Repository + * Build fixes for systems that do not have qt installed on them already + * Remove old Xft build hacks since we are using x4.0.3 now + * Update build-depends since we now require x4.0.3 + * Build libqt2-mt with opengl support (Closes: #91989) + * Build static libs with opengl support as well + * Remove old -dev provides which fixes buildd problems + * Get rid of 2.2 dummy packages libqt2.2 and libqt2.2-gl + * Update Build-Depends and other Depends that were pointing to provided or + pseudo packages. Have them point to a real package | pseudo package. + * Add new kde menu tag to qt-designer + * Add new libqxt0 pacakge so that in the future we don't have a confliction + with libqt3 and libqt2 since most likely libqxt soname won't change. + * Adding in lintian overrides finally + * Updating standards version + * Remove old hacks in debian/rules + * Should fix pure_virtual problems (Closes: #94676) + * Apply i18n patches (qclipboard, qstring, xim) + * Building with system png again + + -- Ivan E. Moore II Tue, 01 May 2001 22:42:00 -0700 + +qt-x11 (2:2.3.0-final-2) unstable; urgency=low + + * test build + + -- Ivan E. Moore II Sun, 07 Mar 2001 13:26:00 -0700 + +qt-x11 (2:2.3.0-final-1) unstable; urgency=low + + * New upstream version + * Applied xft workaround patch + * versioning the depends + * Adding in alpha specific build code so that it will build out of the + box. + + -- Ivan E. Moore II Wed, 07 Mar 2001 13:26:00 -0700 + +qt-x11 (2:2.3.0-beta1-3) unstable; urgency=low + + * Various patches applied from qt-copy branch of kde cvs. These include + several upstream fixes that were done post beta-1 and will be a part of + the next release. + LANG=he_IL.iso8859-8 will work correctly now. + .fontguess file now accepts quoted font names (so you can use font anmes + with white space inside) + * Konq's combobox works again + * Include xt extension (Closes: #88147) + + -- Ivan E. Moore II Thu, 01 Mar 2001 09:17:00 -0700 + +qt-x11 (2:2.3.0-beta1-2) unstable; urgency=low + + * Fix grave bug with xft (Closes: #87758) + + -- Ivan E. Moore II Mon, 26 Feb 2001 23:22:00 -0700 + +qt-x11 (2:2.3.0-beta1-1) unstable; urgency=low + + * New upstream version + * Don't clean everything out of bin/ after each stage as some pieces are + scripts that don't get built + * Fix Depends for libqutil1 + * Change version for kde-designer replace/conflicts so that one can actually + install kde-designer (Closes: #87223) + * Change doc package to qt-doc + * Let's go back to libqt2 and get away from libqt2.x. Providing migration + packages as to not totally hose people up right away. These will go + away prior to freeze. + * Build with XFT support - Anti Aliasing + + -- Ivan E. Moore II Fri, 23 Feb 2001 06:23:00 -0700 + +qt-x11 (2:2.2.4-5) unstable; urgency=low + + * Fix qt-mt package (Closes: #85132) + building of the tools cause the mt library to get hosed somehow + * Fix -dev depends for mt-dev + + -- Ivan E. Moore II Sat, 17 Feb 2001 00:42:00 -0700 + +qt-x11 (2:2.2.4-4) unstable; urgency=low + + * Break out uic and libqutil. This allows for developers not to need + qt-designer to build packages and also takes care of the fact that + libqutil is common. + * Changing dev packages to libqt-dev and libqt-mt-dev + + -- Ivan E. Moore II Thu, 15 Feb 2001 02:30:00 -0700 + +qt-x11 (2:2.2.4-3) unstable; urgency=low + + * Fix pathing for qt-designer for #85493 + * Change qt-designer's Depends on qt2.2-doc to Recommends (Closes: #85486) + * Adding in Perl depends properly for libqt2.2-dev + + -- Ivan E. Moore II Sat, 10 Feb 2001 17:30:00 -0700 + +qt-x11 (2:2.2.4-2) unstable; urgency=low + + * Include findtr (Closes: 85439) + * Build against new libmng + + -- Ivan E. Moore II Fri, 09 Feb 2001 16:30:00 -0700 + +qt-x11 (2:2.2.4-1) unstable; urgency=low + + * New upstream version + On X11, popup menus do not grab the keyboard anymore, but rely on and + enforce the application to have focus. This works around an X11 bug + where deadkeys do not work while the keyboard is grabbed. + See QT changelog for full list of updates + * Installing ui templates so that Designer doesn't complain. + * Adding in suggests for tmake + * Moving libqutil and uic over to designer package where they belong + * Moving away from /usr/lib/qt2 - + /usr/share/qt would have links for include/docs/man + it will also store all other pieces such as the ui templates for + designer. + * Cleaning up post/pre scripts, docs, etc. libqt2.2 package doesn't need + development docs and information...move it into -dev package + * Creating createcw and associated libs for use with designer + + -- Ivan E. Moore II Fri, 02 Feb 2001 16:30:00 -0700 + +qt2.2 (2:2.2.3-12) unstable; urgency=low + + * Only build designer once, using the shared libraries. This will cut + down on build time. + * Moving man pages into /usr/share/man tree + * Do not duplicate header files for examples and tools. + * Don't copy the tools/ directory tree since we build them already, if + someone wants the source to them they can dl the orig.tar.gz + * Don't remove the Makefile's during a clean so that we can include them + with the examples and tutorial + * Adding in a Debian menu entry for QT Designer + * Cleaning up descriptions to show where man pages were (since they were + still being referenced in the -dev package + * Adding note in README.Debian on how to build the examples and tutorial + * Compressing tutorial and examples to save on space by default. People + can then uncompress them if them want to use them. + * Cleaning up post/pre scripts + * Cleaning up diff + * Upstream patch applied for "dead keys" in qpopups - this is part of a + fix for Bug 82967. + * fix for setNamedColor parsing problem + + -- Ivan E. Moore II Sat, 27 Jan 2001 07:25:00 -0700 + +qt2.2 (2:2.2.3-11) unstable; urgency=low + + * Removing libpth-dev from depends + * One more upstream crash/bug fix in qasyncimageio + + -- Ivan E. Moore II Wed, 24 Jan 2001 18:41:00 -0700 + +qt2.2 (2:2.2.3-10) unstable; urgency=low + + * Fixing libqt2.2-dev dependencies. Adding libz-dev, xlibs-dev, libpng2-dev, + libjpeg62-dev, libmng-dev. (Closes: #83298) + * Adding uic information to libqt2.2-dev's description + * More crash fixes for graphics manipulation + + -- Ivan E. Moore II Tue, 23 Jan 2001 14:13:00 -0700 + +qt2.2 (2:2.2.3-9) unstable; urgency=low + + * Fix a crash problem with qimage + * More i18n + + -- Ivan E. Moore II Mon, 22 Jan 2001 00:10:00 -0700 + +qt2.2 (2:2.2.3-8) unstable; urgency=low + + * More upstream fixes...moving towards 2.2.4 + i18n work + bug fixes + * Removing old i18n patches + * fixing qt-designer section + * Build against new version of MNG + * Update build-depends + + -- Ivan E. Moore II Sat, 20 Jan 2001 01:28:00 -0700 + +qt2.2 (2:2.2.3-7) unstable; urgency=low + + * Moving tools/ includes to /usr/share/doc/qt2.2-doc/tools/includes + Apparantly they were causing problems with some apps + * Updating build-depends + * New upstream fixes + printing when your display has a resolution != 75 dpi + true type and type1 fonts will now get embedded into the document. This + fixes printing in almost all 8bit locales, *if* you are using these + fonts. + OK button fix + + -- Ivan E. Moore II Wed, 17 Jan 2001 16:05:00 -0700 + +qt2.2 (2:2.2.3-6) unstable; urgency=low + + * New i18n patches - submitted upstream finally it seems + * Cleanup of build-depends and depends. + * Creating a non-kde designer package + * Upstream i18n updates out of future 2.2.4 release. + * Fix print dialog problem - thanks to Michael Lachmann + + -- Ivan E. Moore II Mon, 15 Jan 2001 15:30:00 -0700 + +qt2.2 (2:2.2.3-5) unstable; urgency=low + + * Cleaning up depends/provides/conflicts + We are the only qt package for unstable so lets act like it. + * new i18n patch for qpsprinter + + -- Ivan E. Moore II Wed, 10 Jan 2001 16:00:00 -0700 + +qt2.2 (2:2.2.3-4) unstable; urgency=low + + * New i18n patches + * More build fixes + + -- Ivan E. Moore II Mon, 01 Jan 2001 03:31:00 -0700 + +qt2.2 (2:2.2.3-3) unstable; urgency=low + + * Applying Anti-Aliasing patch + * Adjusting Build-Depends as we now must have the latest X4 + * Adding libfreetyp6-dev to Build-Depends + * Fixing document links (Closes: #79876) + * New i18n patch update for qpsprinter + + -- Ivan E. Moore II Mon, 18 Dec 2000 01:13:00 -0700 + +qt2.2 (2:2.2.3-2) unstable; urgency=low + + * More build fixes...arggg... + * Applying new i18n patches for 2.2.3 and removing old 2.2.2 hacks + + -- Ivan E. Moore II Thu, 14 Dec 2000 16:27:00 -0700 + +qt2.2 (2:2.2.3-1) unstable; urgency=low + + * New upstream version + * Cleaning up build process + * Removing Mesa specific GL code as before + * Including new tools - qconfig, qvfb, makeqpf, and qembed + * Applying qscrollview patch from QT via + + -- Ivan E. Moore II Wed, 13 Dec 2000 14:45:00 -0700 + +qt2.2 (2:2.2.2-12) unstable; urgency=low + + * New ad hoc xim patch - amazing what happens when you have no other choice + * Updating shlibs + * More build-depends and depends work + + -- Ivan E. Moore II Mon, 11 Dec 2000 09:09:00 -0700 + +qt2.2 (2:2.2.2-11) unstable; urgency=low + + * Removing xim patch since it's been weeks without a fix for the problems + it causes + + -- Ivan E. Moore II Sat, 09 Dec 2000 06:30:00 -0700 + +qt2.2 (2:2.2.2-10) unstable; urgency=low + + * Friggen dependency loops. + + -- Ivan E. Moore II Thu, 07 Dec 2000 01:00:00 -0700 + +qt2.2 (2:2.2.2-9) unstable; urgency=low + + * Fixing broken shlibs...arggg + + -- Ivan E. Moore II Sat, 02 Dec 2000 23:12:00 -0700 + +qt2.2 (2:2.2.2-8) unstable; urgency=low + + * Creating libqt2.2-gl package. Recommendations from upstream folks to + only compile in GL support as necessary due to stability issues and the + fact that we do have users that require GL support in QT has led me to + move GL support out of the main QT package. libqt2.2 conflicts/replaces + libqt2.2-gl while libqt2.2-gl replaces libqt2.2. + * Adding in missing build-depends + * More build cleanup + + -- Ivan E. Moore II Thu, 30 Nov 2000 15:15:00 -0700 + +qt2.2 (2:2.2.2-7) unstable; urgency=low + + * New i18n patches + + -- Ivan E. Moore II Wed, 29 Nov 2000 07:52:00 -0700 + +qt2.2 (2:2.2.2-6) unstable; urgency=low + + * New i18n patches + * Adding in a replaces for libqt1g-dev and qt1g-dev + + -- Ivan E. Moore II Sat, 25 Nov 2000 03:40:00 -0700 + +qt2.2 (2:2.2.2-5) unstable; urgency=low + + * Removing nas support per popular demand + + -- Ivan E. Moore II Mon, 20 Nov 2000 15:45:00 -0700 + +qt2.2 (2:2.2.2-4) unstable; urgency=low + + * Moving threaded version of libqt to libqt2.2-mt to cut down on size of + main package and still allow for those who need the threaded version to + obtain it. + * Fixing up dependencies for xlibs vs xlib6g for ports that do not have + xlibs + * Fixing shlibs + + -- Ivan E. Moore II Sat, 18 Nov 2000 20:14:00 -0700 + +qt2.2 (2:2.2.2-4) unstable; urgency=low + + * Fixing up thread support again + * Fixing the last lintian error + + -- Ivan E. Moore II Sat, 18 Nov 2000 08:30:00 -0700 + +qt2.2 (2:2.2.2-3.1) unstable; urgency=low + + * Fixing QGLWidget problem (Closes: #77248) + + -- Ivan E. Moore II Thu, 16 Nov 2000 21:30:00 -0700 + +qt2.2 (2:2.2.2-3) unstable; urgency=low + + * Applying uic patch from upstream + * Adding in versioned replace (Closes: #77147) + + -- Ivan E. Moore II Thu, 16 Nov 2000 07:15:00 -0700 + +qt2.2 (2:2.2.2-2.1) unstable; urgency=low + + * Removing thread support as it still seems unstable + + -- Ivan E. Moore II Thu, 16 Nov 2000 07:15:00 -0700 + +qt2.2 (2:2.2.2-2) unstable; urgency=low + + * contains new i18n patches + + -- Ivan E. Moore II Thu, 16 Nov 2000 02:00:00 -0700 + +qt2.2 (2:2.2.2-1) unstable; urgency=low + + * New upstream version + * Does not contain any i18n patches + * compiled with nas sound support + * mesa specific GL code removed manually + + -- Ivan E. Moore II Tue, 14 Nov 2000 20:00:00 -0700 + +qt2.2 (2:2.2.1-11) unstable; urgency=low + + * Manually removing Mesa specific GL code from qt + * New i18n patch + * Cleaned up diff file + + -- Ivan E. Moore II Sun, 12 Nov 2000 03:00:00 -0700 + +qt2.2 (2:2.2.1-10) unstable; urgency=low + + * New i18n patches (Closes: #75830) + + -- Ivan E. Moore II Wed, 08 Nov 2000 16:00:00 -0700 + +qt2.2 (2:2.2.1-9.2) unstable; urgency=low + + * Fix to /usr/lib/qt2/man link problem (Closes: #75622) + + -- Ivan E. Moore II Sun, 05 Nov 2000 22:00:00 -0700 + +qt2.2 (2:2.2.1-9.1) unstable; urgency=low + + * Build against X4 libs + + -- Ivan E. Moore II Sat, 04 Nov 2000 12:00:00 -0700 + +qt2.2 (2:2.2.1-9) unstable; urgency=low + + * More opengl cleanup + * Removing i18n patches as they are causing problems in some apps + + -- Ivan E. Moore II Wed, 01 Nov 2000 23:00:00 -0700 + +qt2.2 (2:2.2.1-8) unstable; urgency=low + + * Re-adding opengl support until another solution is created + + -- Ivan E. Moore II Mon, 23 Oct 2000 16:28:00 -0700 + +qt2.2 (2:2.2.1-7) unstable; urgency=low + + * Round 42..heh...let's try the png fix again + + -- Ivan E. Moore II Wed, 18 Oct 2000 23:54:00 -0700 + +qt2.2 (2:2.2.1-6) unstable; urgency=low + + * Hopefully fix png image viewing crashing + * adding in links for /usr/lib/qt2/man and /usr/lib/qt2/doc + * Fixing compression of html files + + -- Ivan E. Moore II Wed, 18 Oct 2000 00:15:00 -0700 + +qt2.2 (2:2.2.1-5) unstable; urgency=low + + * Minor dependency fix for libqt2.2-dev's perl necessesity + + -- Ivan E. Moore II Sat, 14 Oct 2000 01:00:00 -0700 + +qt2.2 (2:2.2.1-4) unstable; urgency=low + + * Ok, I'm not sure what i did but somehow the i18n patches missed getting + applied when I updated the source. Re-Applying them. (Closes: #74713) + + -- Ivan E. Moore II Fri, 13 Oct 2000 23:30:00 -0700 + +qt2.2 (2:2.2.1-3) unstable; urgency=low + + * Putting includes for examples into qt2.2-doc package (Closes: #74479) + * adding in some build options recommended by upstream that will reduce + the amount of memory used by apps linked against qt as well as reduce + the size of the resulting library significantly + + -- Ivan E. Moore II Wed, 11 Oct 2000 02:30:00 -0700 + +qt2.2 (2:2.2.1-2) unstable; urgency=low + + * More build cleanup + + -- Ivan E. Moore II Sun, 08 Oct 2000 03:45:00 -0700 + +qt2.2 (2:2.2.1-1) unstable; urgency=low + + * Including new version of upstream source code (they buggered something) + * Applying i18n patches for 2.2.1 + + -- Ivan E. Moore II Sat, 07 Oct 2000 22:00:00 -0700 + +qt2.2 (2:2.2.1-0) unstable; urgency=low + + * New upstream version + * Building with thread support turned on (Closes: #72994) + + -- Ivan E. Moore II Thu, 05 Oct 2000 20:00:00 -0700 + +qt2.2 (2:2.2.0-20000906-9) unstable; urgency=low + + * Fixing up some dependencies and build-depends + + -- Ivan E. Moore II Tue, 26 Sep 2000 17:30:00 -0700 + +qt2.2 (2:2.2.0-20000906-8) unstable; urgency=low + + * Appling font patch to fix infinate loop and XFree4 (Closes: #72374) + * Fixing /usr/include/qt after removing alternatives + * Adding in a conflict for libqt1g-dev + + -- Ivan E. Moore II Sun, 24 Sep 2000 22:00:00 -0700 + +qt2.2 (2:2.2.0-20000906-7) unstable; urgency=low + + * Finally adding in a fix for dangling manpage (Closes: #67375) + * Getting rid of alternatives since this will be the only qt package + * Adding libmng support + * Fixing up build-depends + + -- Ivan E. Moore II Sat, 23 Sep 2000 00:30:00 -0700 + +qt2.2 (2:2.2.0-20000906-6) unstable; urgency=low + + * More cleanup of build process to better handle mergetr and msg2qm + * Should fix problem with mesa linking (Closes: #71829) + * Applying m17n patches (Closes: #71820) + + -- Ivan E. Moore II Mon, 18 Sep 2000 17:30:00 -0700 + +qt2.2 (2:2.2.0-20000906-5) unstable; urgency=low + + * Fixing problem with missing mergetr and msg2qm + + -- Ivan E. Moore II Tue, 12 Sep 2000 09:00:00 -0700 + +qt2.2 (2:2.2.0-20000906-4) unstable; urgency=low + + * Building against utahglx instead of mesa to get around hardcoded Mesa + items + + -- Ivan E. Moore II Sun, 10 Sep 2000 19:00:00 -0700 + +qt2.2 (2:2.2.0-20000906-3) unstable; urgency=low + + * Fixing src -> sub-src problem in rules file (should help alpha build) + + -- Ivan E. Moore II Sat, 09 Sep 2000 15:15:00 -0700 + +qt2.2 (2:2.2.0-20000906-2) unstable; urgency=low + + * Removing designer build pieces + + -- Ivan E. Moore II Fri, 08 Sep 2000 00:15:00 -0700 + +qt2.2 (2:2.2.0-20000906-1) unstable; urgency=low + + * Working out build issues + + -- Ivan E. Moore II Thu, 07 Sep 2000 15:00:00 -0700 + +qt2.2 (2:2.2.0-20000906-0) unstable; urgency=low + + * New upstream stable release + * Includes designer and is under a dual license. QPL and GPL + + -- Ivan E. Moore II Wed, 06 Sep 2000 07:45:00 -0700 + +qt2.2-copy (2:2.2.0-20000821-0.3) unstable; urgency=low + + * Building other tools (mergetr, msg2qm, qconfig) + * removing replace/conflict with libqt2.1 + + -- Ivan E. Moore II Tue, 05 Sep 2000 18:00:00 -0700 + +qt2.2-copy (2:2.2.0-20000821-0.2) unstable; urgency=low + + * Fixing library issues when building designer + + -- Ivan E. Moore II Fri, 01 Sep 2000 17:00:00 -0700 + +qt2.2-copy (2:2.2.0-20000821-0.1) unstable; urgency=low + + * Updating version number to be higher than Debian one + + -- Ivan E. Moore II Mon, 28 Aug 2000 06:00:00 -0700 + +qt2.2-copy (2:2.2.0-20000821-0) unstable; urgency=low + + * New upstream CVS version + * Providing designer + + -- Ivan E. Moore II Mon, 21 Aug 2000 18:00:00 -0700 + +qt2.2-copy (2:2.2.0-1.copy.1) unstable; urgency=low + + * New upstream beta version + + -- Ivan E. Moore II Sun, 20 Aug 2000 00:30:00 -0700 + +qt2.2-beta1 (2:2.2.0-0.beta1.0) unstable; urgency=low + + * New upstream beta version + + -- Ivan E. Moore II Thu, 10 Aug 2000 02:30:00 -0700 + +qt2.1 (2:2.1.0-1.1) unstable; urgency=low + + * Upping the epoch number since the upstream version changes made 2.1.0 + full release lower than the 2.1.0beta + + -- Ivan E. Moore II Thu, 18 May 2000 08:30:00 -0700 + +qt2.1 (2.1.0-1.1) unstable; urgency=low + + * Fixing qt_windows/mac.h include errors + * Adding in build depends + + -- Ivan E. Moore II Mon, 15 May 2000 02:30:00 -0700 + +qt2.1 (2.1.0-1) unstable; urgency=low + + * Applying patches for international support issues provided by + Oliver Bolzer + + -- Ivan E. Moore II Tue, 25 Apr 2000 17:45:00 -0700 + +qt2.1 (2.1.0-0) unstable; urgency=low + + * New upstream version + + -- Ivan E. Moore II Wed, 19 Apr 2000 05:30:00 -0700 + +qt2.1beta3 (2.1.0beta3-0) unstable; urgency=low + + * New upstream beta version + + -- Ivan E. Moore II Wed, 22 Mar 2000 18:00:00 -0700 + +qt2.1beta2 (2.1.0beta2-1.1) unstable; urgency=low + + * Applying qsortedlist.h patch + + -- Ivan E. Moore II Tue, 07 Mar 2000 10:30:00 -0700 + +qt2.1beta2 (2.1.0beta2-1) unstable; urgency=low + + * New upstream beta version + * Fixing prerm script + + -- Ivan E. Moore II Mon, 06 Mar 2000 00:30:00 -0700 + +qt2.1 (2.1.0-0.beta1.0) unstable; urgency=medium + + * New upstream beta version + * Taking over maintainership temporarily with permission from Heiko + * Fixing alternatives issue (Closes: #56997) + + -- Ivan E. Moore II Mon, 28 Feb 2000 18:00:00 -0700 + +qt2 (2.0.2-0.7) unstable; urgency=medium + + * Taking out old qt1g confliction (Closes: #54414) + * Fixing problem with overwriting moc man pages (Closes: #53067) + * NMU + + -- Ivan E. Moore II Sun, 09 Jan 2000 12:15:23 -0700 + +qt2 (2.0.2-0.6) unstable; urgency=medium + + * Compressing man pages (Closes: #51336) + * Fixing self dependencies issue with resident qt libs + * Adding in an alternative for -dev's libqt.so + * NMU + + -- Ivan E. Moore II Tue, 30 Nov 1999 23:15:23 -0400 + +qt2 (2.0.2-0.5) unstable; urgency=medium + + * Adding in a conflict for qt1g..sorry.. (Closes #49507, #49347, #48827) + * NMU + + -- Ivan E. Moore II Wed, 03 Nov 1999 00:15:23 -0400 + +qt2 (2.0.2-0.4) unstable; urgency=medium + + * Creating an alternative for /usr/include/qt + * NMU + + -- Ivan E. Moore II Wed, 03 Nov 1999 00:15:23 -0400 + +qt2 (2.0.2-0.3) unstable; urgency=medium + + * Changing pathing for doc-base (Closes: #47583) + * Setting sections properly in control file + * NMU + + -- Ivan E. Moore II Mon, 1 Nov 1999 00:15:23 -0400 + +qt2 (2.0.2-0.2) unstable; urgency=medium + + * Fixing self dependency (Closes: #48254) + * Including msg2qm and mergetr (Closes: #47897) + * Creating an alternative for moc between qt1 and qt2 (Closes: #44844) + * Linking /usr/lib/qt2/include to /usr/include/qt2 + * Fixing up post/pre scripts to work with debian policy (doc linking stuff) + * NMU + + -- Ivan E. Moore II Mon, 25 Oct 1999 08:15:23 -0400 + +qt2 (2.0.2-0.1) unstable; urgency=medium + + * New upstream version + * Changing package names to meet policy (Closes: 46229) + * NMU + + -- Ivan E. Moore II Thu, 07 Oct 1999 08:15:23 -0400 + +qt2 (2.0.1-0.1) unstable; urgency=medium + + * Rebuild with new gcc (2.95) libs + * Changing requirement for -doc from recommends to suggests + * Migrating to /usr/share/doc + * NMU for the above changes + + -- Ivan E. Moore II Sun, 12 Sep 1999 14:15:23 -0400 + +qt2 (2.0.1-0) unstable; urgency=medium + + * bug fix release (new upstream) + + -- Heiko Schlittermann Tue, 20 Jul 1999 09:15:23 +0200 + +qt2 (2.00-0) unstable; urgency=medium + + * final release + + -- Heiko Schlittermann Mon, 28 Jun 1999 18:08:19 +0200 + +qt2beta (2.00beta3-19990619-1) unstable; urgency=low + + * new upstream + * included below mentioned changes from J.M. Dassen + * included extensions: imageio, opengl, xt + + -- Heiko Schlittermann Sat, 19 Jun 1999 13:14:36 +0200 + +qt2beta (2.0-19990516-2.1) unstable; urgency=low + + * UNRELEASED. + * Bumped Standards-Version. + * [debian/control] Updated descriptions. + * [debian/rules] Strengthened 'clean' to produce better diffs. + * [src/Makefile.in] Disabled building of the libraries in "3rdparty" and + make use of the Debian libpng and libz packages instead. + * [debian/TODO] New. + * [debian/shlibs-dbg] Updated. + * Added doc-base support. + * Fixed a number of lintian complaints: + * [debian/control] Section "x11", not "main/x11". + * [debian/rules] Install changelogs. + * [debian/rules] Correct permission of documentation files. + * [debian/rules] Don't install LICENSE.QPL; it's in the copyright file + already. + * [debian/copyright.in] License is in LICENSE.QPL in the source + distribution. + + -- J.H.M. Dassen (Ray) Fri, 21 May 1999 18:59:25 +0200 + +qt2beta (2.0-19990516-2) unstable; urgency=low + + * skipping the man page steps entirely, since + the source doesn't seem to contain manpages, does it? + * built on a potato system + Thanks to: "Ivan E. Moore II" + + -- Heiko Schlittermann Mon, 17 May 1999 13:01:18 -0700 + +qt2beta (2.0-19990516-1) unstable; urgency=low + + * new checkout. + * gif enabled + + -- Heiko Schlittermann Mon, 10 May 1999 15:57:05 +0200 + +qt2beta (2.0-19990406-1) unstable; urgency=low + + * new checkout. + + -- Heiko Schlittermann Tue, 6 Apr 1999 09:07:14 +0200 + +qt2beta (2.0-19990316-1) unstable; urgency=low + + * new checkout. + + -- Heiko Schlittermann Tue, 16 Mar 1999 23:35:59 +0100 + +qt2beta (2.0-19990308-1) unstable; urgency=low + + * new checkout. + + -- Heiko Schlittermann Tue, 9 Mar 1999 00:03:32 +0100 + +qt2beta (2.0-19990302-1) unstable; urgency=low + + * new upstream beta ... (for coolo@kde.org) + + -- Heiko Schlittermann Tue, 2 Mar 1999 16:08:30 +0100 + +qt1-snapshot (1.39.19980414-2) unstable; urgency=low + + * insert the correct place (/usr/lib/qt1-snapshot/bin/moc) + of moc into the example Makefiles. + + -- Heiko Schlittermann Thu, 16 Apr 1998 17:45:00 +0200 + +qt1-snapshot (1.39.19980414-1) unstable; urgency=low + + * new upstream + * can now coexist with qt1 + * for further information read /usr/doc/qt1-snapshot/README.Debian + + -- Heiko Schlittermann Wed, 15 Apr 1998 22:41:36 +0200 + +qt1 (1.39.19980406-2) unstable; urgency=low + + * added the /usr/lib/qt dir w/ two symlinks + -> /usr/include and ->/usr/X11R6/lib + to make the QTDIR approach work (now + you can set QTDIR=/usr/lib/qt) + + -- Heiko Schlittermann Wed, 8 Apr 1998 11:18:16 +0200 + +qt1 (1.39.19980406-1) unstable; urgency=low + + * new upstream, used to compile qtscape + + -- Heiko Schlittermann Tue, 7 Apr 1998 11:22:02 +0200 + +qt1 (1.33-5) frozen; urgency=low + + * correct include and lib dir for the mesa stuff + + -- Heiko Schlittermann Mon, 6 Apr 1998 11:13:40 +0200 + +qt1 (1.33-4) frozen; urgency=low + + * next try to upload it. Build with mesa2g-dev + instead of the libc5 mesa libs. + * /usr/doc/example/qt-doc removed (#16921) + + -- Heiko Schlittermann Sun, 5 Apr 1998 13:58:13 +0200 + +qt1 (1.33-3) frozen; urgency=low + + * shlibs files now mention the current verion of libqt + * include libqgl (#16942, #14410) + * include tutorial in qt-doc + + -- Heiko Schlittermann Fri, 27 Mar 1998 13:07:30 +0100 + +qt1 (1.33-2) frozen; urgency=medium + + * dependency on xlib6 removed (#15905) + * include all .html files (#11567) + * hopefully lintian proof + * used the debhelper tools + + -- Heiko Schlittermann Tue, 24 Mar 1998 23:30:38 +0100 + +qt1 (1.33-1) unstable; urgency=medium + + * new upstream + + -- Heiko Schlittermann Mon, 23 Mar 1998 20:06:31 +0100 + +qt1 (1.31-1.3) unstable; urgency=low + + * -1.1 is not processed. maybe a new upload will work ? + * non-maintainer release by Andreas Jellinghaus . + + -- Andreas Jellinghaus Tue, 14 Oct 1997 10:47:14 +0200 + +qt1 (1.31-1.1) unstable; urgency=low + + * libc6 version. + * non-maintainer release by Andreas Jellinghaus . + + -- Andreas Jellinghaus Tue, 14 Oct 1997 10:47:14 +0200 + +qt1 (1.31-1) unstable; urgency=medium + + * new upstream release + + -- Heiko Schlittermann Mon, 13 Oct 1997 08:55:58 +0200 + +qt1 (1.30-1) unstable; urgency=medium + + * new upstream release + * changes: examples/tetris/Makefile clean target changed to + remove the *.moc file too + * src/moc/Makefile touches y.tab.h after cleanup since the + original source from troll tech contains it too (but + is useless) + + -- Heiko Schlittermann Tue, 30 Sep 1997 22:58:40 +0200 + +qt1 (1.2.1-1) stable unstable non-free; urgency=medium + + * new upstream release (Bugfix only!) + + -- Heiko Sclittermann Tue, 12 Aug 1997 21:26:13 +0200 + +qt1 (1.2-5) frozen non-free; urgency=low + + * set the new moc location in the examples and + tutorial makefiles. + + -- Heiko Schlittermann Tue, 29 Apr 1997 12:09:03 +0200 + +qt1 (1.2-4) frozen non-free; urgency=low + + * shlibs file lists version 1.2, since applications compiled + agains 1.2 doesn't work with < 1.2 + + -- Heiko Schlittermann Fri, 25 Apr 1997 20:04:04 +0200 + +qt1 (1.2-3) non-free; urgency=low + + * doc no longer depends on the library/binary package, + it only suggests it + + -- Heiko Schlittermann Mon, 21 Apr 1997 16:23:49 +0200 + +qt1 (1.2-2) non-free; urgency=low + + * moc goes to /usr/bin instead of /usr/X11R6/bin + + -- Heiko Schlittermann Thu, 17 Apr 1997 11:49:24 +0200 + +qt1 (1.2-1) non-free; urgency=medium + + * new upstream version + * bug8432 fixed: dependency on xlib6 + * New include dir is /usr/X11R6/include/qt (according to Xm, XmCxx, ...) + * bug8449 fixed: (suggestion) symlink + /usr/include/qt -> /usr/X11R6/include/qt (shouldn't do + to much harm) + * bug8507/8184 fixed: symlink in example dir + + -- Heiko Schlittermann Fri, 11 Apr 1997 12:46:12 +0200 + +qt1 (1.1-2) non-free; urgency=low + + * optional instead of extra .... + * correctly replace old qt0-doc and old qt0-dev with + qt-doc resp. qt-dev + + -- Heiko Schlittermann Fri, 28 Feb 1997 17:08:02 +0100 + +qt1 (1.1-0) non-free; urgency=medium + + * new upstream release out for about 3 months + + -- Heiko Schlittermann Wed, 12 Feb 1997 09:18:40 +0100 + +qt1 (1.0-3) contrib; urgency=low + + * should appear in non-free now + + -- Heiko Schlittermann Wed, 11 Dec 1996 19:02:08 +0100 + +qt1 (1.0-2) frozen unstable; urgency=low + + * nothing new unless distribution code and debian version + number -- I hope this will finally place all *deb files + in place on master. + + -- Heiko Schlittermann Thu, 5 Dec 1996 09:40:14 +0100 + +qt1 (1.0-1) unstable; urgency=low + + * new upstream version + * dev and doc package are now installed as qt-dev and qt-doc, + since only one qt-dev/qt-doc may exist at any time (but + qt may exist as qt0 and qt1) + + -- Heiko Schlittermann Fri, 18 Oct 1996 13:32:24 +0200 + +qt0 (0.99-1) unstable; urgency=low + + * new upstream version + + -- Heiko Schlittermann Mon, 9 Sep 1996 13:22:03 +0200 + +qt0 (0.98-1) unstable; urgency=low + + * initial release + + -- Heiko Schlittermann Sun, 8 Sep 1996 13:40:31 +0200 --- qt-x11-free-3.3.6.orig/debian/qt3-doc.doc-base +++ qt-x11-free-3.3.6/debian/qt3-doc.doc-base @@ -0,0 +1,11 @@ +Document: qt3-doc +Title: Qt Reference Documentation +Author: Troll Tech +Abstract: Qt (TM) is a multi-platform C++ GUI toolkit. It is a product of + Troll Tech. It is supported on all major variants of Microsoft Windows and + Unix/X Windows. +Section: Apps/Programming + +Format: HTML +Index: /usr/share/doc/qt3-doc/html/index.html +Files: /usr/share/doc/qt3-doc/html/*.html --- qt-x11-free-3.3.6.orig/debian/qt3-linguist.menu +++ qt-x11-free-3.3.6/debian/qt3-linguist.menu @@ -0,0 +1,6 @@ +?package(qt3-linguist):\ + needs="X11"\ + section="Apps/Programming"\ + hints="KDE"\ + title="Qt3 Linguist"\ + command="/usr/bin/linguist-qt3" --- qt-x11-free-3.3.6.orig/debian/qt3-designer.postinst +++ qt-x11-free-3.3.6/debian/qt3-designer.postinst @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +update-alternatives --install \ + /usr/bin/designer designer "/usr/bin/designer-qt3" "45" \ + --slave /usr/share/man/man1/designer.1.gz designer.1.gz \ + "/usr/share/man/man1/designer-qt3.1.gz" + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/maintain/man/makeqpf.1 +++ qt-x11-free-3.3.6/debian/maintain/man/makeqpf.1 @@ -0,0 +1,26 @@ +.TH "makeqpf" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +makeqpf \- Create qpf files from TTF and BDF files. +.SH "DESCRIPTION" +.LP +Qt Prerendered Font (QPF) is a light\-weight non\-scalable +font format specific to Qt/Embedded. makeqpf is a tool +that assists producing QPF files from TTF and BDF files. + + +.SH "SYNTAX" +qembed [ \fIgeneral\-files\fP ] <[ \fI\-\-images image\-files \fP]> +.br + +general\-files + These files can be any type of file. +\-\-images image\-files + These files must be in image formats supported by Qt. + +.SH "FILES" +.LP +\fI$(QTDIR)/etc/fonts/fontdir\fP +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/createcw.1 +++ qt-x11-free-3.3.6/debian/maintain/man/createcw.1 @@ -0,0 +1,57 @@ +.TH "createcw" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +createcw \- custom widget description creater for Qt Designer +.SH "SYNTAX" +.LP +createcw <\fIfilename.cw\fP> +.SH "DESCRIPTION" +.LP +This small application makes it much easier to create +custom widget descriptions for the Qt Designer. Using +them you can use custom widgets in the Qt Designer +including their signals, slots and properties. + +To do that normally you would have to enter all that +information in the custom widget dialog in the Qt +Designer for each widget. But this small tool can create +for you these description files for your custom widgets +which you then can simply import into the Qt Designer. So +you can use your custom widgets without any additional +work in your forms in the Qt Designer then. + +To do that you have to modify the sourcecode (main.cpp) a +bit and recompile it afterwards. + +STEP1: Include header files of the widgets for which a +description should be created here. If you have a widget +which is defined in the file mycustomwidget.h in +/home/joedeveloper/src, write here + +#include "/home/joedeveloper/src/mycustomwidget.h" + +STEP2: Instantiate all widgets for which a description +should be created here and add them to the list wl. If +your custom widget is e.g. called MyCustomWidget you +would write here + + Widget w; + w.w = new MyCustomWidget( 0, 0 ); + w.include = "mycustomwidget.h"; + w.location = "global"; + wl.append( w ); + +After that compile the program, link it with your custom +widget (library or object file) and run it like this: + + (unix): ./createcw mywidgets.cw + (win32): createcw mywidgets.cw + +After that you can import this description file into the +Qt Designer using the Custom\-Widget Dialog (See +Tools\->Custom\->Edit Custom Widgets... in the Qt Designer) +and use these custom widget there in your forms. + +.SH "AUTHORS" +.LP +Troll Tech --- qt-x11-free-3.3.6.orig/debian/maintain/man/findtr.1 +++ qt-x11-free-3.3.6/debian/maintain/man/findtr.1 @@ -0,0 +1,25 @@ +.TH "findtr" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +findtr \- Extracts information about text to be translated +.SH "SYNTAX" +.LP +findtr *.cpp *.h >myapp.po +.SH "DESCRIPTION" +.LP + +Extracts information about text to be translated. It +recognizes the tr() constructs described above and +produces a file in ".po" format, a simple text format +that your translation team will copy and edit. For +example, the base .po file might be myapp.po and +translated versions of the file would then be +myapp_de.po, myapp_fr.po, and myapp_ja.po for +translations in German, French and Japanese respectively. + + findtr *.cpp *.h >myapp.po + copy myapp.po myapp_de.po + edit myapp_de.po +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/qembed.1 +++ qt-x11-free-3.3.6/debian/maintain/man/qembed.1 @@ -0,0 +1,32 @@ +.TH "qembed" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +qembed \- Converts arbitrary files into C++ code. +.SH "DESCRIPTION" +.LP +The QEmbed tool, found in qt/tools/qembed, converts +arbitrary files into C++ code. This is useful for +including image files and other resources directly into +your application rather than loading the data from +external files. + +QEmbed can also generate uncompressed versions of images +that can be included directly into your application, +thus avoiding both the external file and the need to +parse the image file format. This is useful for small +images such as icons for which compression is not a +great gain. + + +.SH "SYNTAX" +qembed [ \fIgeneral\-files\fP ] <[ \fI\-\-images image\-files \fP]> +.br + +general\-files + These files can be any type of file. +\-\-images image\-files + These files must be in image formats supported by Qt. + +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/designer.1 +++ qt-x11-free-3.3.6/debian/maintain/man/designer.1 @@ -0,0 +1,54 @@ +.TH "qt-designer" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +qt\-designer \- Visual user interface designer for Qt. +.SH "DESCRIPTION" +.LP +Qt Designer simplifies the process of designing and +creating graphical user interfaces (GUI) using the +award\-winning Qt toolkit. Qt Designer is easy to learn. +There are tutorials, walkthrough examples and the +reference documentation accelerating you through the +learning phase. After that, Qt Designer greatly reduces +the time and effort needed to develop even the most +complex dialogs with an easy\-to\-use GUI and an integrated +help system. + + Qt Designer provides a rich set of features aimed at +making the creation of dialogs as easy and smooth as +possible without reducing the power of Qt. It offers all +the strength of the Qt layout system with a well\-designed +user interface. This, combined with the Qt Designer's +undo/redo system makes it simple to try different +arrangements of the widgets until the result satisfies +you. + + Using Qt Designer's convenient property editor along +with the dynamic Qt property system it is easy to set the +initial state of your widgets. Special editors for some +widgets (like listboxes, comboboxes, etc.) allow you to +fill these widgets with content without writing any code. +Using the object hierarchy view, the parent\-child +relationship between the widgets of a dialog can be +understood at a glance. + + Integrating dialogs into a Qt project is straightforward +thanks to the User Interface Compiler (UIC), which +generates C++ code from the XML dialog description on the +fly. The programmer can easily extend the functionality +of the generated classes by subclassing without touching +generated code at all or running the risk of loosing +their changes. +.SH "FILES" +.LP +\fI/usr/share/qt/tools/designer/*\fP +.SH "ENVIRONMENT VARIABLES" +.LP +.TP +\fBQTDIR\fP +Specifies the Qt base directory. On Debian systems this +should be set to /usr/share/qt. The /usr/bin/designer +wrapper script takes care of this. +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/mergetr.1 +++ qt-x11-free-3.3.6/debian/maintain/man/mergetr.1 @@ -0,0 +1,27 @@ +.TH "mergetr" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +mergetr \- Merge changes in translations +.SH "SYNTAX" +.LP +mergetr myapp_de.po myapp.po + +.SH "DESCRIPTION" +.LP +When the texts in your program change as it is developed, +a the base .po file can be regenerated using findtr, +then mergetr can be used to merge the changes into the +other .po files: + + mergetr myapp_de.po myapp.po + mergetr myapp_fr.po myapp.po + mergetr myapp_ja.po myapp.po + + +The translation team then edits the new .po files to +translate the new or changed texts. When texts change, +the old text is included in the .po file as a comment to +guide the new translation (no "fuzzy" matching is done). +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/linguist.1 +++ qt-x11-free-3.3.6/debian/maintain/man/linguist.1 @@ -0,0 +1,37 @@ +.TH LINGUIST 1 "28 August 2004" +.SH "NAME" +linguist \- Translation tool for Qt. + +.SH "SYNPOSIS" +.B linguist +[ +.I TRANSLATION +] + +.SH "DESCRIPTION" +.B Qt Linguist +is a tool for adding translations to Qt applications. It +introduces the concept of a translation "context" which +means a group of phrases that appear together on the +screen e.g. in the same menu or dialog. + +The only parameter accepted on the command line is +.I TRANSLATION +wich is the name of the translation file you wish to open. + +.SH FILES +.I ~/.qt/qt_designerrc +.RS +Per user configuration file. + +.SH SEE ALSO +.B Qt Linguist +is too complex to be described completely in the "man" page +format. If your system is properly configured, you can access +the full documentation within +.B Qt Linguist +under the Help menu. + +.SH AUTHOR +This manual page was written by Jeremy Laine , +for the Debian GNU/Linux system (but may be used by others). --- qt-x11-free-3.3.6.orig/debian/maintain/man/qvfb.1 +++ qt-x11-free-3.3.6/debian/maintain/man/qvfb.1 @@ -0,0 +1,66 @@ +.TH "qvfb" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +qvfb \- Virtual framebuffer for Qt +.SH "DESCRIPTION" +.LP +The virtual framebuffer allows Qt/Embedded programs to be +developed on your desktop machine, without switching +between consoles and X11. + +Start a Qt/Embedded master application (i.e., construct +QApplication with QApplication::GuiServer flag or use the +\-qws command line parameter). You will need to specify to +the server that you wish to use the virtual framebuffer +driver, e.g.: + + widgets \-qws \-display QVFb:0 + +You may prefer to set the QWS_DISPLAY environment +variable to be QVFb:0. + +qvfb supports the following command line options: + + \-width width: the width of the virtual framebuffer + (default: 240). + \-height height: the height of the virtual framebuffer + (default: 320). + \-depth depth: the depth of the virtual framebuffer (1, 8 + or 32; default: 8). + \-nocursor: do not display the X11 cursor in the + framebuffer window. + \-qwsdisplay :id the Qt/Embedded display id to provide + (default: 0). + + Virtual Framebuffer Design + +The virtual framebuffer emulates a framebuffer using a +shared memory region (the virtual frame buffer) and a +utility to display the framebuffer in a window (qvfb). +The regions of the display that have changed are updated +periodically, so you will see discrete snapshots of the +framebuffer rather than each individual drawing +operation. For this reason drawing problems such as +flickering may not be apparent until the program is run +using a real framebuffer. + +The target refresh rate can be set via the "View|Refresh +Rate" menu item. This will cause qvfb to check for +updated regions more quickly. The rate is a target only. +If little drawing is being done, the framebuffer will not +show any updates between drawing events. If an +application is displaying an animation the updates will +be frequent, and the application and qvfb will compete +for processor time. + +Mouse and keyboard events are passed to the Qt/Embedded +master process via named pipes. + +The virtual framebuffer is a development tool only. No +security issues have been considered in the virtual +framebuffer design. It should be avoided in a production +environment; QT_NO_QWS_VFB should always be defined in +production libraries. +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/qtconfig.1 +++ qt-x11-free-3.3.6/debian/maintain/man/qtconfig.1 @@ -0,0 +1,17 @@ +.TH "qtconfig" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +qtconfig \- Configuration tool for Qt +.SH "DESCRIPTION" +.LP +QConfig allows for GUI based configuration of Qt and + other Qt based sources. + +.SH "ENVIRONMENT VARIABLES" +.LP +.TP +\fBQTDIR\fP +Specifies the base Qt dir +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/msg2qm.1 +++ qt-x11-free-3.3.6/debian/maintain/man/msg2qm.1 @@ -0,0 +1,26 @@ +.TH "msg2qm" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +msg2qm \- Converts translated .po files to a Qt\-specific binary format. +.SH "SYNTAX" +.LP +msg2qm myapp_de.po myapp_de.qm +.SH "DESCRIPTION" +.LP + +Converts translated .po files to a Qt\-specific binary +format (".qm" Qt message files). The Qt message files +are platform and locale independent, containing +translations in Unicode and various hash tables to +provide fast look\-up. + + msg2qm myapp_de.po myapp_de.qm + msg2qm myapp_fr.po myapp_fr.qm + msg2qm myapp_ja.po myapp_ja.qm + + +In your application, use QTranslator::load() to load +translation files appropriate for the user's language. +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/man/qt20fix.1 +++ qt-x11-free-3.3.6/debian/maintain/man/qt20fix.1 @@ -0,0 +1,32 @@ +.TH "qt20fix" "1" "3.0.3" "Troll Tech AS, Norway." "" +.SH "NAME" +.LP +qt20fix \- Helps clean namespace when porting an app from Qt1 to Qt2 +.SH "SYNTAX" +.LP +qt20fix myapp.cpp + +.SH "DESCRIPTION" +.LP +Qt 2.x is namespace\-clean, unlike 1.x. Qt now uses very +few global identifiers. Identifiers like red, blue, +LeftButton, AlignRight, Key_Up, Key_Down, NoBrush etc. +are now part of a special class Qt (defined in +qnamespace.h), which is inherited by most Qt classes. +Member functions of classes that inherit from QWidget, +etc. are totally unaffected, but code that is not in +functions of classes inherited from Qt, you must qualify +these identifiers like this: Qt::red, Qt::LeftButton, +Qt::AlignRight, etc. + +The qt/bin/qt20fix script helps to fix the code that +needs adaption, though most code does not need changing. + +Compiling with \-DQT1COMPATIBILITY will help you get going +with Qt 2.x \- it allows all the old "dirty namespace" +identifiers from Qt 1.x to continue working. Without it, +you'll get compile errors that can easily be fixed by +searching this page for the clean identifiers. +.SH "AUTHORS" +.LP +TrollTech --- qt-x11-free-3.3.6.orig/debian/maintain/linguist-qt3.desktop +++ qt-x11-free-3.3.6/debian/maintain/linguist-qt3.desktop @@ -0,0 +1,26 @@ +[Desktop Entry] +Exec=linguist-qt3 +Name=Qt3 Linguist +Name[de]=Qt3-Linguist +Name[eo]=Qt3-Lingvisto +Name[es]=Lingüista Qt3 +Name[ko]=Qt ì–¸ì–´í•™ìž +Name[lv]=Qt3 Lingvists +Comment=Tool for translating message catalogues of Qt3 based programs +Comment[da]=Redskab til at oversætte Qt3 baserede programmer +Comment[de]=Dienstprogramm zur Ãœbersetzung von Programmen, die auf Qt3 basieren +Comment[eo]=Ilo por tradukado de mesaÄaroj de Qt3-bazitaj programoj +Comment[es]=Herramienta para la traducción de catálogos de mensajes de programas basados en Qt3 +Comment[he]=Qt תוססובמ תוינכות לש תועדוה יגולטק ×וגרתל ילכ +Comment[hu]=Segédprogram a Qt3-alapú programok üzenetfájljainak lefordításához +Comment[ko]=Qt를 바탕으로 하는 프로그램ì—ì„œ 쓸 ë²ˆì—­ëœ ë©”ì„¸ì§€ 목ë¡ì„ 관리하는 ë„구 +Comment[lv]=RÄ«ks ziņojumu katalogu tulkoÅ¡anai uz Qt3 bÄzÄ“tÄs programmÄs +Comment[pt]=Ferramenta para traduzir os catálogos de mensagens de programas do Qt3 +Comment[pt_BR]=Ferramenta para traduzir os catálogos de mensagens de programas do Qt3 +Comment[sv]=Verktyg för att översätta meddelandekataloger frÃ¥n Qt3-baserade program +MapNotify=true +MimeType=application/x-linguist +Terminal=false +Icon=linguist +Type=Application +Categories=Qt;Development --- qt-x11-free-3.3.6.orig/debian/maintain/assistant-qt3.desktop +++ qt-x11-free-3.3.6/debian/maintain/assistant-qt3.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Exec=assistant-qt3 +Name=Qt3 Assistant +Name[de]=Qt3 Assistent +Comment=Qt3 Helpcenter +Comment[de]= Qt3 Hilfezentrum +MapNotify=true +MimeType=application/x-assistant +Icon=assistant +Terminal=false +Type=Application +Categories=Qt;Development --- qt-x11-free-3.3.6.orig/debian/maintain/mkpatch.sh +++ qt-x11-free-3.3.6/debian/maintain/mkpatch.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +diff -Nru -x Makefile.cvs -x README.qt-copy -x upgrade_script.qt -x .cvsignore -x CVS -x include -x debian -x doc -x examples -x 3rdparty -x images -x mkspecs -I '^\*\*\( $\| \$Id\)' -I '^\#\( $\| \$Id\)' qt-x11-free-3.1.1.old/ qt-x11-free-3.1.1/ > qtcopy.diff --- qt-x11-free-3.3.6.orig/debian/maintain/qt3config.desktop +++ qt-x11-free-3.3.6/debian/maintain/qt3config.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Exec=qtconfig-qt3 +Name=Qt3 Configuration +Name[de]=Qt3 Konfiguration +Comment=A graphical configuration tool for programs using Qt 3 +Comment[de]=Ein grafisches Konfigurationstool für Qt3-Programme +MapNotify=true +MimeType=application/x-qtconfig +Terminal=false +Icon=qtconfig +Type=Application +Categories=Qt;Settings --- qt-x11-free-3.3.6.orig/debian/maintain/designer-qt3.desktop +++ qt-x11-free-3.3.6/debian/maintain/designer-qt3.desktop @@ -0,0 +1,77 @@ +[Desktop Entry] +Exec=designer-qt3 +Name=Qt3 Designer +Name[bg]=Qt3 Дизайнер +Name[br]=Ergrafer Qt3 +Name[ca]=Dissenyador Qt3 +Name[cs]=Qt3 designer +Name[de]=Qt3-Designer +Name[eo]=Qt3-Desegnilo +Name[es]=Diseñador Qt3 +Name[et]=Qt3 disainer +Name[eu]=Qt3 Diseinatzailea +Name[gl]=Deseñador de Qt3 +Name[he]=Qt בצעמ +Name[it]=Designer Qt3 +Name[ja]=Qtデザイナー +Name[ko]=Qt ë””ìžì´ë„ˆ +Name[lv]=Qt3 Dizainers +Name[mk]=Qt дизајнер +Name[no]=Qt3-designer +Name[oc]=Dessinador Qt3 +Name[pl]=Projektant Qt3 +Name[sk]=Qt3 Dizajnér +Name[sl]=Snovalnik Qt3 +Name[ta]=Qt À¨¼ôÀ¡Ç÷ +Name[uk]=Дизайнер Qt +Name[zh_CN.GB2312]=Qt 设计者 +Name[zh_TW.Big5]=Qt 設計器 +Comment=Qt3 interface designer +Comment[az]=Qt3 axtar üz dizayn proqramı +Comment[bg]=Qt3 interface дизайнер +Comment[br]=Ergrafer etrefas Qt3 +Comment[ca]=Dissenyador d'interfícies Qt3 +Comment[cs]=Editor UI pro Qt3 +Comment[da]=Qt3 grænseflade designer +Comment[de]=Schnittstellen-Designer für Qt3 +Comment[el]=Σχεδιασμός πεÏιβάλλοντων Qt +Comment[eo]=Qt3-Interfacdesegnilo +Comment[es]=Diseñador de interfaces de Qt3 +Comment[et]=Qt3 dialoogide redaktor +Comment[eu]=Qt3 interfaze diseinatzailea +Comment[fi]=Qt:n käyttöliittymäsuunnittelija +Comment[fr]=Conception d'interfaces avec Qt3 +Comment[gl]=Editor de interfaces de Qt3 +Comment[he]=Qt-ל ×יקשממ בצעמ +Comment[hu]=Qt3 felülettervezÅ‘ +Comment[is]=Viðmótshönnunartól fyrir Qt3 +Comment[it]=Editor per le interfaccie Qt3 +Comment[ja]=Qtインターフェースデザイナー +Comment[ko]=Qt ì¸í„°íŽ˜ì´ìŠ¤ ë””ìžì´ë„ˆ +Comment[lt]=Qt3 sÄ…sajos redaktorius +Comment[lv]=Qt3 starsejas dizainers +Comment[mk]=Дизајнер на Qt дијалози +Comment[nl]=Qt3 interface-ontwerper +Comment[no]=Qt3-grensesnittdesigner +Comment[no_NY]=Redigering av Qt3-miljø +Comment[oc]=Dessinador d'interfacies Qt3 +Comment[pl]=Projektant interfejsu Qt3 +Comment[pt]=Editor de interfaces do Qt3 +Comment[pt_BR]=Designer de interface Qt3 +Comment[ro]=Dezvoltator de interfeÅ£e Qt3 +Comment[ru]=редактор интерфейÑов приложений Qt +Comment[sk]=Qt3 dizajnér rozhrania +Comment[sl]=Snovalnik vmesnikov za Qt3 +Comment[sr]=Dizajner Qt3 interfejsa +Comment[sv]=Editor för gränssnitt till Qt3 +Comment[ta]=Qt À¨¼ôÀ¡Ç÷ +Comment[tr]=Qt3 arayüz tasarım programı +Comment[uk]=Редактор інтерфейÑу Ð´Ð»Ñ Qt +Comment[zh_CN.GB2312]=Qt ç•Œé¢è®¾è®¡ç¨‹åº +Comment[zh_TW.Big5]=Qt 介é¢ç·¨è¼¯å™¨ +MapNotify=true +MimeType=application/x-designer +Icon=designer +Terminal=false +Type=Application +Categories=Qt;Development --- qt-x11-free-3.3.6.orig/debian/maintain/build-examples.sh +++ qt-x11-free-3.3.6/debian/maintain/build-examples.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +BUILDDIR=$PWD +export QTDIR=/usr/share/qt3 + +# first copy over the libqt-mt.so build configuration of .qmake.cache +cp /usr/share/qt3/.qmake.cache ./.qmake.cache + +# Now compile the examples. The themes example +# won't work since qconfig.h is not really correct with the +# ifdef's for the QT_NO_xyz_STYLE, so we use make -k to continue +cd examples; qmake -o Makefile examples.pro; make -k + +# Now compile the tutorial. +cd $BUILDDIR/tutorial; qmake -o Makefile tutorial.pro; make + +# Then the designer examples. +cd $BUILDDIR/tools/designer/examples +for a in `find . -type d -maxdepth 1 -mindepth 1`; do + cd $a && qmake -o Makefile $a.pro; make; cd ..; +done + +# There is a bigger sql example in book/ with more subdirectories: +cd book +for a in `find . -type d -maxdepth 1 -mindepth 1`; do + cd $a && qmake -o Makefile $a.pro; make; cd ..; +done + +# Finally, build the linguist tutorials: +cd $BUILDDIR/tools/linguist/tutorial +for a in `find . -type d -maxdepth 1 -mindepth 1`; do + cd $a && qmake -o Makefile $a.pro; make; cd ..; +done + +# Return to the build directory +cd $BUILDDIR --- qt-x11-free-3.3.6.orig/debian/qt3-qtconfig.links +++ qt-x11-free-3.3.6/debian/qt3-qtconfig.links @@ -0,0 +1 @@ +/usr/bin/qtconfig-qt3 /usr/share/qt3/bin/qtconfig --- qt-x11-free-3.3.6.orig/debian/qt3-qtconfig.prerm +++ qt-x11-free-3.3.6/debian/qt3-qtconfig.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) ;; + remove|failed-upgrade|deconfigure) + update-alternatives --remove qtconfig "/usr/bin/qtconfig-qt3" + ;; +esac + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools-embedded.links +++ qt-x11-free-3.3.6/debian/qt3-dev-tools-embedded.links @@ -0,0 +1,2 @@ +/usr/bin/makeqpf /usr/share/qt3/bin/makeqpf +/usr/bin/qvfb /usr/share/qt3/bin/qvfb --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools-compat.install +++ qt-x11-free-3.3.6/debian/qt3-dev-tools-compat.install @@ -0,0 +1,6 @@ +usr/bin/qt20fix +usr/bin/qtrename140 +usr/bin/qm2ts +usr/bin/mergetr +usr/bin/findtr +usr/bin/msg2qm --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-sqlite.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-sqlite.install @@ -0,0 +1 @@ +usr/lib/qt3/plugins/sqldrivers/libqsqlite.so --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-mysql.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-mysql.install @@ -0,0 +1 @@ +usr/lib/qt3/plugins/sqldrivers/libqsqlmysql.so --- qt-x11-free-3.3.6.orig/debian/compat +++ qt-x11-free-3.3.6/debian/compat @@ -0,0 +1 @@ +5 --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools-embedded.install +++ qt-x11-free-3.3.6/debian/qt3-dev-tools-embedded.install @@ -0,0 +1,2 @@ +usr/bin/makeqpf +usr/bin/qvfb --- qt-x11-free-3.3.6.orig/debian/qt3-qtconfig.menu +++ qt-x11-free-3.3.6/debian/qt3-qtconfig.menu @@ -0,0 +1,5 @@ +?package(qt3-qtconfig):\ + needs="X11"\ + section="Apps/System"\ + title="Qt3Config"\ + command="/usr/bin/qtconfig-qt3" --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-dev.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-dev.install @@ -0,0 +1,9 @@ +usr/lib/libqt-mt.la +usr/lib/libqt-mt.prl +usr/lib/libqt-mt.so +usr/lib/libqui.prl +usr/lib/libqui.so +usr/lib/pkgconfig/qt-mt.pc +usr/include/qt3/qgl.h +usr/include/qt3/qglcolormap.h +usr/include/qt3/qwidgetfactory.h --- qt-x11-free-3.3.6.orig/debian/libqt3-mt.postrm +++ qt-x11-free-3.3.6/debian/libqt3-mt.postrm @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ "$1" = "purge" ]; then + if [ -d "/usr/share/doc/libqt3-mt/" ]; then + rm -rf /usr/share/doc/libqt3-mt/ + fi +fi + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/README.Debian +++ qt-x11-free-3.3.6/debian/README.Debian @@ -0,0 +1,366 @@ +Qt for Debian README +-------------------- + +1. Preface + +This README is intended to give developers and users exact information +about how the qt-x11-free package provided by TrollTech AS has been packaged +for Debian in case you either want to faciliate it for development +of applications and libraries or plugins using the Qt class library. With +qt-x11-3.1.1, the Debian packages have been massively restructured to get +the most out of theoriginal Qt package and spit the contents up into +several packages so that they make the most sensefor several groups of +users; developers, application users, translators of Qt-based +applications and Debian packagers who are packaging applications developed +with Qt.2. + +2. General Overview + +As Qt is a huge package that contains a complete environment for +developers, it needs to be split up into several packages that make it +easier for everyone else to handle it and not to require +unnecessary disk space for end-users. Additionally, Qt can be configured +in several ways - and therefore also used in several ways. Qt development +usually requires the environment variable QTDIR. As Debian is placing +libraries and header files in a quite specific filesystem order, this +usually breaks setting a single environment variable to meet the +requirements of packages. Therefore, symlinks are used to set up the system +to meet both, the Debian filesystem standard and the QTDIR variable. All of +Qt (so the QTDIR path) is available in /usr/share/qt3. If you need to set +QTDIR, do export QTDIR=/usr/share/qt3 + +The Qt packages itself are built in two different versions: dynamic +non-threaded and threaded. Each of these builds have specific differences +that you need to watch out for. The Qt package for Debian is optimized +on working with the threaded version, so application developers are advised +to use libqt-mt.so (by installing libqt3-mt-dev) for development. +The specific configuration differences are: + +a) non-threaded(shared library) + +The non-threaded library has some restrictions for the developer of Qt +applications, where some are Debian specific and some Qt specific: +- the library is called libqt.so and is placed under /usr/lib. +- the plugins built with this version are always using the extension + -non-mt.so, to indicate that they are to be used with the non-mt + (multithreaded) version. The plugins itself will install into the same + directory where the threaded version is placing its plugins too, so + that applications will all find the Qt plugins independed of the + version of Qt that they make use of. +- Qt OpenGL is not supported in the non-threaded version due to the fact + that OpenGL on Debian is built threaded. If you write any program that + you explicitely link against -lqt and that does make use of the QGL + classes, you will get symbol referencing errors. Change the linking + stage to link your application against the threaded version,-lqt-mt. +- The libqui library is not available for non-threaded programs. That means + in case a program that links against the non-threaded Qt library (-lqt) + and is also linking against libqui.so (-lqui) will not link. Instead, + change the linking of the program to -lqt-mt -lqui to make that work. + +For other notes, see c) common build configuration. + + +b) threaded (shared library) + +The threaded library version is the one supporting the maximum of Qt's +options and is to be preferred by application developers. The reasons for +that are mainly that it allows the use of threading as well as OpenGL, in +addition to that the project that makes the most use out of Qt, the KDE +project (http://www.kde.org) uses the threaded version by default also. +That means that a KDE user always already has the threaded library loaded +in his machine's memory. To have the minimum demands and maximum +performance for your application at run-time for the user's machine, it is +therefore best to link the application against the threaded version. + +NB: for Debian package maintainers: If the Qt application you are building +links against -lqt, change the Makefiles in a way that it links against +-lqt-mt. Contact the author of the application you package to change the +linking from -lqt to -lqt-mt (because all other distributions are doing the +same, defaulting on the threaded version). The library itself is called +libqt-mt.so and is to be found under /usr/lib. + +c) common build configuration + +As far as the common build configuration goes, we note explicitely that the +Debian package of Qt will in very rare cases break the compilation (most +likely the linking) of applications on Debian which use Qt, in particular +utilizing styles in an incorrect way by deriving from one of the styles +that ship with Qt. In case you are a Debian packager and encounter +problems, either contact me (nolden@kde.org) or the Qt package maintainer. +We will tell you why things don't work and what you should communicate on +with the programmers of your application that you are packaging. The build +configuration generally is intended to provide a Qt version that is as +small as possible in terms of the memory size it requires. Therefore, +everything inside Qt that can be compiled as plugins has been compiled that +way. This includes: + +- imageformats: jpeg and mng - codecs (for languages like arab, japanese + etc provided with Qt) +- sql drivers for databases (MySQL, ODBC and PostgreSQL) + +The only exception is the imageformat png which has been compiled built-in +due to the fact that there is literally no program that uses no icons at +all and icons are to be used preferrably in png format. The plugins are all +located under /usr/lib/qt3/plugins (threaded and non-threaded). This is +also the install location you should choose as a package maintainer for +qt-plugins so the user doesn't have to customize his library path for +loading Qt plugins. The only exception is that KDE delivers a set of Qt +plugins as well (mainly styles and designer plugins); those are placed in +/usr/lib/kde3/plugins. Plugins compiled with the non-threaded version have +their names changed from plugin.so to plugin-non-mt.so. If you'repackaging +plugins and provide them for the non-threaded Qt version as well, adapt the +name of the non-threaded linked version in this scheme. Due to the fact +that we configured the maximum possible extend of Qt to build pugins, +developers who derive from a class that is a plugin will get linker errors. +To make that explicitely clear, we added a libqt3-plugin-headers package +that contains the header files belonging to the plugins. This way you will +get errors at compile time already if the developer falsely used the styles +or other plugin code directly, assuming that this code is built-in into the +qt library. However, for reasons of completeness we created this additional +package. + +QMotif Extension: As this code is only available in commercial environments +(and produces a static library libqmotif.a anyway that those commercial +applications have to be linked against in addition to Qt), we left out all +header files of the libqt3-headers package that are belonging to this +QMotif extension. + +Oracle Database driver, Sybase & Microsoft SQL Server driver: Those drivers +are only available in a commercial version of Qt due to license +incompatibilities with the GPL. If you need to faciliate those drivers, +please visit http://www.trolltech.com and have a read at +http://doc.trolltech.com/3.0/sql-driver.html. + +3. Packages (End-User) + +The Qt built has been split up into several packages that allow for easy +installation for all types of users. The End-user usually only requires to +have the following packages installed to run an application that links +against Qt: + +Non-Threaded version:libqt3 (the library libqt.so.*) + +Optionally depending on the program's requirements: + +libqt3-odbc (ODBC driver) +libqt3-mysql (MySQL driver) +libqt3-psql (PostgreSQL driver) + +Threaded version:libqt3-mt (the library libqt-mt.so.* and libqui.so.* for +loading designer-made user interfaces at runtime). + +Optionally depending on the program's requirements: + +libqt3-mt-odbc +libqt3-mt-mysql +libqt3-mt-psql + +In addition to the libraries, it may make sense to install the program +qtconfig to customize the look and behaviorof Qt programs. If you have KDE +installed, the KDE control center will take this task automatically in most +cases. qtconfig is available in the package qt3-qtconfig. + +Also, Qt programs can make use of the online-help tool that ships with Qt, +the Qt Assistant. The Assistant can be installed with the package +qt3-assistant. + +Qt Configuration files +---------------------- +Qt programs most often use QSettings to store their information in configuration +files. With Qt 3.2, the new option --sysconfdir has been introduced that allows +us to use /etc/qt3 as the system-wide location where qt-program specific global +configuration files can go. If you're a programmer that wants to get familiar with +that, please look at the examples, documentation and the code in designer or +assistant as well as qtconfig. + +4. Packages (Package maintainers) + +In addition to the library, a package maintainer will require an additional +set of packages to compile a package that requires Qt. Depending on the +version of the qt library, you will require a different set of packages; +the most common option should be to make your application link against the +multi-threaded version (-mt).Packages necessary for compiling Qt +applications from source: + +libqt3-mt-dev (use libqt3-dev for linking against -lqt, this package only + contains the .so files and the header file for libqui.so) + +libqt3-headers (header files for libqt and libqt-mt) + +qt3-dev-tools (this package contains the tools uic and moc as well as +qmake, required for building Qt applications) + +If, however, you encounter an older program not to compile with this set +read the FAQ at the end of this document. + +5. Packages (Developers) + +In addition to the packages that packagers require, a developer usually +will require the Qt API documentationas well as tools like the assistant, +linguist or designer. However, you should be fine with installing the API +documentation that you can browse with a webbrowser, optionally with the +assistant. They are available in /usr/share/doc/qt3-doc/html. +For a regular development environment, install qt3-designer and qt3-doc. + +For faciliating Qt's extended environment to write plugins for the Qt +Designer or extend the Designer as well as utilizing the Qt Assistant by +calling it from within your program, install qt3-apps-dev, which contains +the static libraries and header files required for this functionality. + +For Embedded Developers, the program qvfb (Qt Virtual Frambuffer) and +makeqpf (embedded fonts tool)have been packaged into +qt3-dev-tools-embedded. For developers that work on migrating their program +from any Qt version prior to Qt 3.x to the Qt 3.x platform you will find +additional tools in the qt3-dev-tools-compat. + +For using the QTranslator class and where to find the qm-file for qt as +well as where to place your translations,see the next section. + +If your program doesn't compile with those settings in case you have +started your project with Qt 1.x or 2.x, please read the FAQ section at the +end of this document. + +Another addition is that the qconfig.h file is auto-generated during configure. +This means it is architecture specific and depends on the configure arguments. +Therefore it is packaged in their respective versions two times, once +with libqt3-dev for the non-threaded version, and once with libqt3-mt-dev +for the threaded version. As this file appears twice, these two packages +are a) architecture depending and b) conflicting with each other. +We see the good point in this that developers and packagers can't confuse +their packages with having the development files for both Qt builds +installed at the same time and will preferrably use libqt3-mt, reducing +the risk for accidential builds against libqt. + +.qmake.cache files are delivered with libqt3-dev and libqt3-mt-dev. They are +shipped as .qmake.cache in /usr/share/qt3/.qmake.cache, which makes sense +as they are build-dependent and the -dev packages are conflicting anyway, so +in case you need them for building Qt examples or other packages provided by +Trolltech relying on the configuration that Qt was build with, use these file +as required by your package. + +5. Packages (Translators) + +In order to translate a Qt program into any other language, the Qt 3 way to +do this is to let the developer create a ts-file containing the strings +that the program exposes on the user interface. The tools to create the +ts-file and to create the final qm (Q-message binary) file, lupdate and +lrelease, are included in qt3-dev-tools.The single translator that only +gets provided the ts file and has to return a translated ts file, it +is absolutely enough to install qt3-linguist; the package qt3-assistant can +be installed to access the online-help for the Qt Linguist itself. +In case you're converting an application using Qt prior to Qt 3, you may +want to uitilize the qt3-dev-tools-compat which include the necessary tools +to convert older qm files to the new ts file standard. + +Locations of message translations: + +Qt ships with a set of translations for the strings used inside Qt. Those +translations will be installed into /usr/share/qt3/translations (qm files +only), which equals $QTDIR/translations respectively +qInstallPath() + QString( "/translations" ). + +The configure option --translationdir has been set to /usr/share/qt3/translations +accordingly since it was introduced in Qt 3.2. + +To correctly enable your program to display the translations to the Qt +library and to load the translation of the program itself, we currently +suggest to either install your translations along with any other data files +into/usr/share//, translation files into the subdirectory +translations (that is /usr/share//translations) The code that your +application should use to load the Qt translation will have to look like +the following: + +int main( int argc, char **argv ) + { + QApplication app( argc, argv ); + + // translation file for Qt + QTranslator qt( 0 ); + qt.load( QString( "qt_" ) + QTextCodec::locale(), qInstallPath() + + QString( "/translations" ); + app.installTranslator( &qt ); + + // translation file for application strings + QTranslator myapp( 0 ); + myapp.load( QString( "myapp_" ) + QTextCodec::locale(), "." ); + // use a substitue for $prefix/share/appname/translations here + app.installTranslator( &myapp ); + +6. Frequently Asked Questions + +Using Qt for Debian as a developer or packager +---------------------------------------------- + +Q: I want to compile a source package that utilizes qmake to build the +Makefiles. What do I need to do to makeit work ? + +A: qmake requires two environment variables to be set, QTDIR and QMAKESPEC. +To make it work, do +export QTDIR=/usr/share/qt3 +export QMAKESPEC=linux-g++ + +Then run qmake -o Makefile .pro + +After that, the Makefile is correctly created to build your application on +Debian. As a packager, export thosetwo variables in the rules file before +calling qmake. + +Q: I have an application that when linking gives me symbol referencing +errors to Q*Style. Why does my applicationnot link correctly ? + +A: The author of the program is using the styles that ship with Qt directly +instead of using the QStylePlugin interface.If you are the author of the +program, change your program to use QStylePlugin. If you are a packager, +write to theauthor of the program that he is assuming that the styles +shipped with Qt are built-in to the library which is not the case on Debian +and that he please should fix this and use QStylePlugin. + +Q: Where are all the examples and tutorials ? And how do I build them ? + +A: Qt ships with examples and tutorials; so does the Linguist and Designer. +The tutorials and examples are compressed tarballs which you can unpack with +tar -zxvf into your home directory. Change into the qt3-examples directory +and run the provided ./build-examples script. All Qt examples and tutorials, +including those for designer and the linguist, will be compiled. You will +notice however, that those examples that inherit from style classes which +are not built-in into Qt but configured as a plugin will not compile due +to the fact that they can't link to the Qt library. + +Q: I'm writing a pure Qt application and I want to ship it with a default +configuration file. Where does that global configuration file go if I make +use of the QSettings class ? + +A: With qt-3.2.0, Trolltech has introduced a configure option to Qt called +--sysconfdir which we intentionally set to /etc/qt3 similar to /etc/kde3 for +KDE programs. Install your application's system wide configuration file +to /etc/qt3. + +Q: I'm compiling a program and I have a compile error due to a missing +include. Why isn't that include not present in the Debian packages anymore +? It compiled with older versions of Debian packages of Qt ! + +A: This may be due to two reasons: either the package still uses the old +includes from Qt 1.x or 2.x that got basically renamed by Trolltech due to +the naming convention. The filenames are now all following the scheme + +ClassName -> classname.h. + +Therefore, if you are the developer of the affected program, change your +sources according to this scheme. Qt ships with two tools, qt20fix and +qtrename140, to help developers migrate their API to the Qt 3 version, +which can help you in the transition upgrade to Qt 3. + +If you are affected by this as a packager, notify upstream to fix those +problems and in the meanwhile use libqt3-compat-headers as a build +dependency which includes the compatibility headers that just include the +right files from the new API again. + +Q: I have a question not covered by this FAQ and README file. Who should I +turn to ? + +A: Please turn to Ralf Nolden (nolden@kde.org) or Martin Loschwitz +(madkiss@madkiss.org) for any questions regarding Qt on Debian. + + -- Ralf Nolden Sun, 26 Jan 2003 20:39:19 +0100 + -- Ralf Nolden Mon, 1 Sep 2003 19:24:16 +0200 + * update for qt-3.2.1 --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-odbc.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-odbc.install @@ -0,0 +1 @@ +usr/lib/qt3/plugins/sqldrivers/libqsqlodbc.so --- qt-x11-free-3.3.6.orig/debian/qt3-apps-dev.links +++ qt-x11-free-3.3.6/debian/qt3-apps-dev.links @@ -0,0 +1,8 @@ +/usr/lib/libeditor.prl /usr/share/qt3/lib/libeditor.prl +/usr/lib/libeditor.a /usr/share/qt3/lib/libeditor.a +/usr/lib/libdesignercore.prl /usr/share/qt3/lib/libdesignercore.prl +/usr/lib/libdesignercore.a /usr/share/qt3/lib/libdesignercore.a +/usr/lib/libqassistantclient.prl /usr/share/qt3/lib/libqassistantclient.prl +/usr/lib/libqassistantclient.a /usr/share/qt3/lib/libqassistantclient.a +/usr/include/qt3 /usr/share/qt3/tools/designer/editor +/usr/include/qt3 /usr/share/qt3/tools/designer/interfaces --- qt-x11-free-3.3.6.orig/debian/qt3-assistant.links +++ qt-x11-free-3.3.6/debian/qt3-assistant.links @@ -0,0 +1 @@ +/usr/bin/assistant-qt3 /usr/share/qt3/bin/assistant --- qt-x11-free-3.3.6.orig/debian/qt3-assistant.prerm +++ qt-x11-free-3.3.6/debian/qt3-assistant.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) ;; + remove|failed-upgrade|deconfigure) + update-alternatives --remove assistant "/usr/bin/assistant-qt3" + ;; +esac + +#DEBHELPER# --- qt-x11-free-3.3.6.orig/debian/qt3-doc.links +++ qt-x11-free-3.3.6/debian/qt3-doc.links @@ -0,0 +1,2 @@ +/usr/share/man/man3 /usr/share/qt3/doc/man/man3 +/usr/share/qt3/doc/html /usr/share/doc/qt3-doc/html --- qt-x11-free-3.3.6.orig/debian/qt3-assistant.install +++ qt-x11-free-3.3.6/debian/qt3-assistant.install @@ -0,0 +1,3 @@ +usr/bin/assistant +usr/share/qt3/doc/html/assistant*html +usr/share/qt3/doc/html/assistant*dcf --- qt-x11-free-3.3.6.orig/debian/qt3-designer.menu +++ qt-x11-free-3.3.6/debian/qt3-designer.menu @@ -0,0 +1,6 @@ +?package(qt3-designer):\ + needs="X11"\ + section="Apps/Programming"\ + hints="KDE"\ + title="Qt3 Designer"\ + command="/usr/bin/designer-qt3" --- qt-x11-free-3.3.6.orig/debian/patches/kubuntu_02_qt_modules_ia32.dpatch +++ qt-x11-free-3.3.6/debian/patches/kubuntu_02_qt_modules_ia32.dpatch @@ -0,0 +1,99 @@ +#! /bin/sh -e +# Qt patch #51 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt-x11-free-3.3.6.orig/configure ++++ qt-x11-free-3.3.6/configure +@@ -1057,6 +1057,11 @@ + # generate qconfig.cpp + [ -d $outpath/src/tools ] || mkdir -p $outpath/src/tools + cat > $outpath/src/tools/qconfig.cpp.new < ++#include ++#include ++#include ++ + /* Install paths from configure */ + + static const char QT_INSTALL_PREFIX [267] = "qt_nstpath=$QT_INSTALL_PREFIX"; +@@ -1075,10 +1080,60 @@ + const char *qInstallPathHeaders() { return QT_INSTALL_HEADERS + 11; } + const char *qInstallPathLibs() { return QT_INSTALL_LIBS + 11; } + const char *qInstallPathBins() { return QT_INSTALL_BINS + 11; } +-const char *qInstallPathPlugins() { return QT_INSTALL_PLUGINS + 11; } ++const char *qInstallPathPlugins() ++{ ++#if defined(__linux__) && defined (__i386__) ++ struct utsname uts; ++ static char* path_plugins = NULL; ++ ++ if (path_plugins == NULL) ++ { ++ char *env_var = getenv("QT3_PLUGIN_PATH"); ++ char *env_value; ++ ++ path_plugins = strdup(QT_INSTALL_PLUGINS + 11); ++ uname(&uts); ++ if (!strcmp("x86_64", uts.machine) ++ && !access("/usr/lib32/qt3/plugins", R_OK|X_OK)) ++ path_plugins = "/usr/lib32/qt3/plugins"; ++ if (env_var ++ && (env_value = strchr(env_var, '=')) ++ && (!access(env_value+1, R_OK|X_OK))) ++ path_plugins = strdup(env_value+1); ++ } ++ return path_plugins; ++#endif ++ return QT_INSTALL_PLUGINS + 11; ++} + const char *qInstallPathData() { return QT_INSTALL_DATA + 11; } + const char *qInstallPathTranslations() { return QT_INSTALL_TRANSLATIONS + 11; } +-const char *qInstallPathSysconf() { return QT_INSTALL_SYSCONF + 11; } ++const char *qInstallPathSysconf() ++{ ++#if defined(__linux__) && defined (__i386__) ++ struct utsname uts; ++ ++ uname(&uts); ++ ++ static char* path_sysconfdir = NULL; ++ ++ if (path_sysconfdir == NULL) ++ { ++ char *env_var = getenv("QT3_SYSCONF_PATH"); ++ char *env_value; ++ ++ path_sysconfdir = strdup(QT_INSTALL_SYSCONF + 11); ++ uname(&uts); ++ if (!strcmp("x86_64", uts.machine) && !access("/etc/qt3-32", R_OK|X_OK)) ++ path_sysconfdir = "/etc/qt3-32"; ++ if (env_var ++ && (env_value = strchr(env_var, '=')) ++ && (!access(env_value+1, R_OK|X_OK))) ++ path_sysconfdir = strdup(env_value+1); ++ } ++ return path_sysconfdir; ++#endif ++ return QT_INSTALL_SYSCONF + 11; ++} + EOF + + # avoid unecessary rebuilds by copying only if qconfig.cpp has changed --- qt-x11-free-3.3.6.orig/debian/patches/47_immodule_nodebug_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/47_immodule_nodebug_fix.dpatch @@ -0,0 +1,120 @@ +#! /bin/sh -e +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make it compile on mips / mipsel + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp ++++ qt.patched/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp +@@ -306,8 +306,8 @@ + + currentIMKey = key; + +- qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s", +- imIndex, (const char *)_slave->identifierName() ); ++ // qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s", ++ // imIndex, (const char *)_slave->identifierName() ); + } + } + +--- qt.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++++ qt.patched/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp +@@ -140,7 +140,7 @@ + // only one character. See description of + // QInputContext::filterEvent() about key compression. + val = text[0].unicode(); +- qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); ++ // qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); + } + + // Store value +@@ -164,14 +164,14 @@ + + void QSimpleInputContext::setFocus() + { +- qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p", +- this, focusWidget() ); ++ //qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p", ++ //this, focusWidget() ); + } + + void QSimpleInputContext::unsetFocus() + { +- qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p", +- this, focusWidget() ); ++ //qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p", ++ //this, focusWidget() ); + reset(); + } + +@@ -188,8 +188,8 @@ + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: +- qDebug( "QSimpleInputContext::mouseHandler: " +- "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); ++ // qDebug( "QSimpleInputContext::mouseHandler: " ++ // "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); + break; + default: + break; +@@ -240,7 +240,7 @@ + + // no entries were found + if ( p == composeTable->data + composeTable->size ) { +- qDebug( "no match" ); ++ // qDebug( "no match" ); + clearComposeBuffer(); + return FALSE; + } +@@ -250,18 +250,18 @@ + + // check if partial match + if ( composeBuffer[i] == 0 && p->keys[i] ) { +- qDebug("partial match"); ++ // qDebug("partial match"); + return TRUE; + } + + if ( composeBuffer[i] != p->keys[i] ) { +- qDebug("different entry"); ++ // qDebug("different entry"); + clearComposeBuffer(); + return i!=0; + } + } + +- qDebug("match exactly"); ++ // qDebug("match exactly"); + + // match exactly + commitChar( p->value ); +--- qt.orig/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++++ qt.patched/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp +@@ -361,7 +361,7 @@ + } + + if (! widget->isTopLevel()) { +- qWarning("QInputContext: cannot create input context for non-toplevel widgets"); ++ // qWarning("QInputContext: cannot create input context for non-toplevel widgets"); + return; + } + --- qt-x11-free-3.3.6.orig/debian/patches/kubuntu_04_xinerama.dpatch +++ qt-x11-free-3.3.6/debian/patches/kubuntu_04_xinerama.dpatch @@ -0,0 +1,58 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## kubuntu_04_xinerama.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad qt-x11-free-3.3.6~/src/dialogs/qdialog.cpp qt-x11-free-3.3.6/src/dialogs/qdialog.cpp +--- qt-x11-free-3.3.6~/src/dialogs/qdialog.cpp 2006-07-20 15:58:40.000000000 +0100 ++++ qt-x11-free-3.3.6/src/dialogs/qdialog.cpp 2006-07-20 15:59:21.000000000 +0100 +@@ -670,6 +670,11 @@ + + #if defined(Q_WS_X11) + extern "C" { int XSetTransientForHint( Display *, unsigned long, unsigned long ); } ++#include ++#undef FocusIn ++// defined in qapplication_x11.cpp ++extern Atom qt_net_wm_full_placement; ++extern bool qt_net_supports(Atom atom); + #endif // Q_WS_X11 + + /*! +@@ -691,10 +696,12 @@ + + if ( !did_resize ) + adjustSize(); +- if ( has_relpos && !did_move ) { +- adjustPositionInternal( parentWidget(), TRUE ); +- } else if ( !did_move ) { +- adjustPositionInternal( parentWidget() ); ++ if( !qt_net_supports( qt_net_wm_full_placement )) { ++ if ( has_relpos && !did_move ) { ++ adjustPositionInternal( parentWidget(), TRUE ); ++ } else if ( !did_move ) { ++ adjustPositionInternal( parentWidget() ); ++ } + } + + if (windowState() != state) +diff -urNad qt-x11-free-3.3.6~/src/kernel/qapplication_x11.cpp qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp +--- qt-x11-free-3.3.6~/src/kernel/qapplication_x11.cpp 2006-07-20 15:59:15.000000000 +0100 ++++ qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp 2006-07-20 15:59:21.000000000 +0100 +@@ -272,6 +272,7 @@ + Atom qt_net_wm_state_stays_on_top = 0; // KDE extension + Atom qt_net_wm_pid = 0; + Atom qt_net_wm_user_time = 0; ++Atom qt_net_wm_full_placement = 0; // KDE extension + // Enlightenment support + Atom qt_enlightenment_desktop = 0; + +@@ -1988,6 +1989,7 @@ + &qt_net_wm_state_stays_on_top ); + qt_x11_intern_atom( "_NET_WM_PID", &qt_net_wm_pid ); + qt_x11_intern_atom( "_NET_WM_USER_TIME", &qt_net_wm_user_time ); ++ qt_x11_intern_atom( "_NET_WM_FULL_PLACEMENT", &qt_net_wm_full_placement ); + qt_x11_intern_atom( "ENLIGHTENMENT_DESKTOP", &qt_enlightenment_desktop ); + qt_x11_intern_atom( "_NET_WM_NAME", &qt_net_wm_name ); + qt_x11_intern_atom( "_NET_WM_ICON_NAME", &qt_net_wm_icon_name ); --- qt-x11-free-3.3.6.orig/debian/patches/11_qt_rubberband.dpatch +++ qt-x11-free-3.3.6/debian/patches/11_qt_rubberband.dpatch @@ -0,0 +1,416 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/iconview/qiconview.cpp ++++ qt.patched/src/iconview/qiconview.cpp +@@ -261,6 +261,7 @@ + + QIconViewToolTip *toolTip; + QPixmapCache maskCache; ++ QPixmap *backrubber; + QPtrDict selectedItems; + + struct ItemContainer { +@@ -1975,14 +1976,30 @@ + if ( picture() ) { + QPicture *pic = picture(); + if ( isSelected() ) { +- p->fillRect( pixmapRect( FALSE ), QBrush( cg.highlight(), QBrush::Dense4Pattern) ); ++ p->setBrush( QBrush( cg.highlight(), QBrush::Dense4Pattern ) ); ++ p->setPen( QPen( cg.highlight(), QBrush::Dense4Pattern ) ); ++ if (pixmapRect( FALSE ).width() && pixmapRect( FALSE ).height()) ++ p->drawRoundRect( pixmapRect( FALSE ), ++ 1000 / pixmapRect( FALSE ).width(), ++ 1000 / pixmapRect( FALSE ).height() ); + } + p->drawPicture( x()-pic->boundingRect().x(), y()-pic->boundingRect().y(), *pic ); + if ( isSelected() ) { +- p->fillRect( textRect( FALSE ), cg.highlight() ); ++ p->setBrush( QBrush( cg.highlight() ) ); ++ p->setPen( QPen( cg.highlight() ) ); ++ if (textRect( FALSE ).width() && textRect( FALSE ).width()) ++ p->drawRoundRect( textRect( FALSE ), ++ 1000 / textRect( FALSE ).width(), ++ 1000 / textRect( FALSE ).height() ); + p->setPen( QPen( cg.highlightedText() ) ); +- } else if ( view->d->itemTextBrush != NoBrush ) +- p->fillRect( textRect( FALSE ), view->d->itemTextBrush ); ++ } else if ( view->d->itemTextBrush != NoBrush ) { ++ p->setBrush( view->d->itemTextBrush ); ++ p->setPen( QPen( view->d->itemTextBrush.color() ) ); ++ if (textRect( FALSE ).width() && textRect( FALSE ).width()) ++ p->drawRoundRect( textRect( FALSE ), ++ 1000 / textRect( FALSE ).width(), ++ 1000 / textRect( FALSE ).height() ); ++ } + + int align = view->itemTextPos() == QIconView::Bottom ? AlignHCenter : AlignAuto; + if ( view->d->wordWrapIconText ) +@@ -2040,10 +2057,21 @@ + + p->save(); + if ( isSelected() ) { +- p->fillRect( textRect( FALSE ), cg.highlight() ); ++ p->setBrush( QBrush( cg.highlight() ) ); ++ p->setPen( QPen( cg.highlight() ) ); ++ if (textRect( FALSE ).width() && textRect( FALSE ).width()) ++ p->drawRoundRect( textRect( FALSE ), ++ 1000 / textRect( FALSE ).width(), ++ 1000 / textRect( FALSE ).height() ); + p->setPen( QPen( cg.highlightedText() ) ); +- } else if ( view->d->itemTextBrush != NoBrush ) +- p->fillRect( textRect( FALSE ), view->d->itemTextBrush ); ++ } else if ( view->d->itemTextBrush != NoBrush ) { ++ p->setBrush( view->d->itemTextBrush ); ++ p->setPen( QPen( view->d->itemTextBrush.color() ) ); ++ if (textRect( FALSE ).width() && textRect( FALSE ).width()) ++ p->drawRoundRect( textRect( FALSE ), ++ 1000 / textRect( FALSE ).width(), ++ 1000 / textRect( FALSE ).height() ); ++ } + + int align = AlignHCenter; + if ( view->d->wordWrapIconText ) +@@ -2059,31 +2087,13 @@ + /*! + Paints the focus rectangle of the item using the painter \a p and + the color group \a cg. ++ ++ The default implementation does nothing; subclasses may ++ reimplement this function. + */ + +-void QIconViewItem::paintFocus( QPainter *p, const QColorGroup &cg ) ++void QIconViewItem::paintFocus( QPainter *, const QColorGroup & ) + { +- if ( !view ) +- return; +- +- view->style().drawPrimitive(QStyle::PE_FocusRect, p, +- QRect( textRect( FALSE ).x(), textRect( FALSE ).y(), +- textRect( FALSE ).width(), +- textRect( FALSE ).height() ), cg, +- (isSelected() ? +- QStyle::Style_FocusAtBorder : +- QStyle::Style_Default), +- QStyleOption(isSelected() ? cg.highlight() : cg.base())); +- +- if ( this != view->d->currentItem ) { +- view->style().drawPrimitive(QStyle::PE_FocusRect, p, +- QRect( pixmapRect( FALSE ).x(), +- pixmapRect( FALSE ).y(), +- pixmapRect( FALSE ).width(), +- pixmapRect( FALSE ).height() ), +- cg, QStyle::Style_Default, +- QStyleOption(cg.base())); +- } + } + + /*! +@@ -2781,6 +2791,7 @@ + d->renamingItem = 0; + d->drawActiveSelection = TRUE; + d->drawDragShapes = FALSE; ++ d->backrubber = 0; + + connect( d->adjustTimer, SIGNAL( timeout() ), + this, SLOT( adjustItems() ) ); +@@ -3265,7 +3276,7 @@ + + void QIconView::doAutoScroll() + { +- QRect oldRubber = QRect( *d->rubber ); ++ QRect oldRubber = *d->rubber; + + QPoint vp = viewport()->mapFromGlobal( QCursor::pos() ); + QPoint pos = viewportToContents( vp ); +@@ -3282,7 +3293,6 @@ + bool block = signalsBlocked(); + + QRect rr; +- QRegion region( 0, 0, visibleWidth(), visibleHeight() ); + + blockSignals( TRUE ); + viewport()->setUpdatesEnabled( FALSE ); +@@ -3308,9 +3318,6 @@ + item->setSelected( TRUE, TRUE ); + changed = TRUE; + rr = rr.unite( item->rect() ); +- } else { +- region = region.subtract( QRect( contentsToViewport( item->pos() ), +- item->size() ) ); + } + + minx = QMIN( minx, item->x() - 1 ); +@@ -3327,37 +3334,72 @@ + viewport()->setUpdatesEnabled( TRUE ); + blockSignals( block ); + +- QRect r = *d->rubber; +- *d->rubber = oldRubber; +- +- QPainter p; +- p.begin( viewport() ); +- p.setRasterOp( NotROP ); +- p.setPen( QPen( color0, 1 ) ); +- p.setBrush( NoBrush ); +- drawRubber( &p ); +- d->dragging = FALSE; +- p.end(); +- +- *d->rubber = r; +- +- if ( changed ) { +- d->drawAllBack = FALSE; +- d->clipRegion = region; +- repaintContents( rr, FALSE ); +- d->drawAllBack = TRUE; ++ // static bool drawAll; ++ if ( d->backrubber == 0 ) { ++ d->backrubber = new QPixmap( viewport()->rect().size() ); ++ d->backrubber->fill( viewport(), viewport()->rect().topLeft() ); ++ // drawAll = true; + } + ++ // int oldX = 0, oldY = 0; ++ // if ( !drawAll && d->scrollTimer ) { ++ // oldX = contentsX(); ++ // oldY = contentsY(); ++ // } + ensureVisible( pos.x(), pos.y() ); ++ // if ( !drawAll && d->scrollTimer && ( oldX != contentsX() || oldY != contentsY() ) ) ++ // drawAll = true; + +- p.begin( viewport() ); +- p.setRasterOp( NotROP ); +- p.setPen( QPen( color0, 1 ) ); +- p.setBrush( NoBrush ); +- drawRubber( &p ); +- d->dragging = TRUE; ++ QRect allRect = oldRubber.normalize(); ++ if ( changed ) ++ allRect |= rr.normalize(); ++ allRect |= d->rubber->normalize(); ++ QPoint point = contentsToViewport( allRect.topLeft() ); ++ allRect = QRect( point.x(), point.y(), allRect.width(), allRect.height() ); ++ allRect &= viewport()->rect(); ++ ++ d->dragging = FALSE; ++ ++ QPainter p( d->backrubber ); ++ p.translate( -contentsX(), -contentsY() ); ++#if 0 ++ if ( !drawAll ) { ++ oldRubber = oldRubber.normalize(); ++ point = contentsToViewport( oldRubber.topLeft() ); ++ oldRubber = QRect( point.x(), point.y(), oldRubber.width(), oldRubber.height() ); ++ oldRubber &= viewport()->rect(); ++ ++ point = contentsToViewport( nr.topLeft() ); ++ nr = QRect( point.x(), point.y(), nr.width(), nr.height() ); ++ nr &= viewport()->rect(); ++ ++ QRegion region; ++ if ( allRect != nr ) ++ region = QRegion(allRect).subtract( QRegion( nr ) ); ++ if ( allRect != oldRubber ) ++ region += QRegion(allRect).subtract( QRegion( oldRubber ) ); ++ ++ QMemArray< QRect > ar = region.rects(); ++ for ( uint i = 0; i < ar.size(); ++i ) { ++ ar[i].addCoords( -2, -2, 4, 4 ); ++ ar[i] = ar[i].normalize(); ++ ++ p.setClipRect( ar[i] ); ++ drawContents( &p, contentsX() + ar[i].left(), contentsY() + ar[i].top(), ar[i].width(), ar[i].height() ); ++ } ++ } ++ else ++#endif ++ { ++ drawContents( &p, ++ contentsX() + allRect.left(), contentsY() + allRect.top(), ++ allRect.width(), allRect.height() ); ++ } + + p.end(); ++ // drawAll = false; ++ d->dragging = TRUE; ++ bitBlt( viewport(), allRect.topLeft(), d->backrubber, allRect ); + + if ( changed ) { + emit selectionChanged(); +@@ -3389,9 +3431,7 @@ + + void QIconView::drawContents( QPainter *p, int cx, int cy, int cw, int ch ) + { +- if ( d->dragging && d->rubber ) +- drawRubber( p ); +- ++ p->save(); + QRect r = QRect( cx, cy, cw, ch ); + + QIconViewPrivate::ItemContainer *c = d->firstContainer; +@@ -3465,8 +3505,16 @@ + d->currentItem->paintFocus( p, colorGroup() ); + } + +- if ( d->dragging && d->rubber ) +- drawRubber( p ); ++ p->restore(); ++ if ( d->rubber ) { ++ p->save(); ++ p->translate( contentsX(), contentsY() ); ++ p->setRasterOp( NotROP ); ++ p->setPen( QPen( color0, 1 ) ); ++ p->setBrush( NoBrush ); ++ drawRubber( p ); ++ p->restore(); ++ } + } + + /*! +@@ -4365,17 +4413,15 @@ + void QIconView::contentsMousePressEventEx( QMouseEvent *e ) + { + if ( d->rubber ) { +- QPainter p; +- p.begin( viewport() ); +- p.setRasterOp( NotROP ); +- p.setPen( QPen( color0, 1 ) ); +- p.setBrush( NoBrush ); ++ QRect r( d->rubber->normalize() ); ++ delete d->rubber; ++ d->rubber = 0; ++ ++ repaintContents( r, FALSE ); ++ d->dragging = FALSE; + +- drawRubber( &p ); +- d->dragging = FALSE; +- p.end(); +- delete d->rubber; +- d->rubber = 0; ++ delete d->backrubber; ++ d->backrubber = 0; + + if ( d->scrollTimer ) { + disconnect( d->scrollTimer, SIGNAL( timeout() ), this, SLOT( doAutoScroll() ) ); +@@ -4560,21 +4606,17 @@ + d->startDragItem = 0; + + if ( d->rubber ) { +- QPainter p; +- p.begin( viewport() ); +- p.setRasterOp( NotROP ); +- p.setPen( QPen( color0, 1 ) ); +- p.setBrush( NoBrush ); +- +- drawRubber( &p ); +- d->dragging = FALSE; +- p.end(); +- ++ QRect r(d->rubber->normalize()); ++ + if ( ( d->rubber->topLeft() - d->rubber->bottomRight() ).manhattanLength() > + QApplication::startDragDistance() ) + emitClicked = FALSE; + delete d->rubber; +- d->rubber = 0; ++ d->rubber = 0; ++ repaintContents(r, FALSE); ++ d->dragging = FALSE; ++ delete d->backrubber; ++ d->backrubber = 0; + d->currentItem = d->tmpCurrentItem; + d->tmpCurrentItem = 0; + if ( d->currentItem ) +@@ -5334,9 +5376,9 @@ + QPoint pnt( d->rubber->x(), d->rubber->y() ); + pnt = contentsToViewport( pnt ); + +- style().drawPrimitive(QStyle::PE_RubberBand, p, +- QRect(pnt.x(), pnt.y(), d->rubber->width(), d->rubber->height()), +- colorGroup(), QStyle::Style_Default, QStyleOption(colorGroup().base())); ++ style().drawPrimitive( QStyle::PE_RubberBand, p, ++ QRect( pnt.x(), pnt.y(), d->rubber->width(), d->rubber->height() ).normalize(), ++ colorGroup(), QStyle::Style_Default, QStyleOption(colorGroup().base()) ); + } + + /*! +--- qt.orig/src/widgets/qlistbox.cpp ++++ qt.patched/src/widgets/qlistbox.cpp +@@ -2163,7 +2163,7 @@ + } + + if ( d->rubber ) { +- drawRubber(); ++ repaintContents( d->rubber->normalize(), FALSE ); + delete d->rubber; + d->rubber = 0; + d->current = d->tmpCurrent; +@@ -2241,11 +2241,9 @@ + } + + if ( d->rubber ) { +- QRect r = d->rubber->normalize(); +- drawRubber(); ++ QRect r = d->rubber->normalize(); + d->rubber->setCoords( d->rubber->x(), d->rubber->y(), e->x(), e->y() ); + doRubberSelection( r, d->rubber->normalize() ); +- drawRubber(); + return; + } + +@@ -4388,6 +4386,7 @@ + return; + if ( !d->rubber->width() && !d->rubber->height() ) + return; ++ + QPainter p( viewport() ); + p.setRasterOp( NotROP ); + style().drawPrimitive( QStyle::PE_RubberBand, &p, d->rubber->normalize(), +@@ -4420,13 +4419,24 @@ + } + } + } ++ ++ QRect allRect = old; ++ if ( changed ) { ++ allRect |= pr; ++ } ++ allRect |= rubber; ++ allRect &= viewport()->rect(); ++ allRect.addCoords( -2, -2, 2, 2 ); ++ ++ repaintContents( QRect( contentsX() + allRect.left(), contentsY() + allRect.top(), allRect.width(), allRect.height() ), FALSE ); ++ drawRubber(); ++ + if ( changed ) { + emit selectionChanged(); + #if defined(QT_ACCESSIBILITY_SUPPORT) + QAccessible::updateAccessibility( viewport(), 0, QAccessible::Selection ); + #endif + } +- viewport()->repaint( pr, TRUE ); + } + + --- qt-x11-free-3.3.6.orig/debian/patches/19_qfontdatabase_hack.dpatch +++ qt-x11-free-3.3.6/debian/patches/19_qfontdatabase_hack.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qfontdatabase.cpp ++++ qt.patched/src/kernel/qfontdatabase.cpp +@@ -686,6 +686,10 @@ + } + + FM_DEBUG( " best style has distance 0x%x", dist ); ++ if (!foundry->count) { ++ QtFontStyle *temp = NULL; ++ return temp; ++ } + return foundry->styles[best]; + } + --- qt-x11-free-3.3.6.orig/debian/patches/10_arm_gcc4.dpatch +++ qt-x11-free-3.3.6/debian/patches/10_arm_gcc4.dpatch @@ -0,0 +1,43 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/tools/qglobal.h ++++ qt.patched/src/tools/qglobal.h +@@ -300,7 +300,7 @@ + supposedly know what you are doing.) */ + # if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) + # define Q_PACKED __attribute__ ((packed)) +-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 + # define Q_NO_PACKED_REFERENCE + # endif + # endif +--- qt/src/tools/qstring.h ++++ qt/src/tools/qstring.h +@@ -194,7 +194,7 @@ + char latin1() const { return ucs > 0xff ? 0 : (char) ucs; } + ushort unicode() const { return ucs; } + #ifdef Q_NO_PACKED_REFERENCE +- ushort &unicode() { return *(&ucs); } ++ ushort &unicode() { return *((ushort*)&ucs); } + #else + ushort &unicode() { return ucs; } + #endif --- qt-x11-free-3.3.6.orig/debian/patches/08_thread_default.dpatch +++ qt-x11-free-3.3.6/debian/patches/08_thread_default.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/mkspecs/linux-g++/qmake.conf ++++ qt.patched/mkspecs/linux-g++/qmake.conf +@@ -6,7 +6,7 @@ + + MAKEFILE_GENERATOR = UNIX + TEMPLATE = app +-CONFIG += qt warn_on release incremental link_prl ++CONFIG += qt warn_on release incremental link_prl thread + QMAKE_INCREMENTAL_STYLE = sublib + + QMAKE_CC = gcc --- qt-x11-free-3.3.6.orig/debian/patches/kubuntu_03_qt_private_confdir_ia32.dpatch +++ qt-x11-free-3.3.6/debian/patches/kubuntu_03_qt_private_confdir_ia32.dpatch @@ -0,0 +1,50 @@ +#! /bin/sh -e +# Qt patch #51 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- ./src/tools/qsettings.cpp.old 2006-03-08 17:47:37.000000000 +0100 ++++ ./src/tools/qsettings.cpp 2006-05-28 18:25:42.254128208 +0200 +@@ -63,6 +63,7 @@ + #ifndef NO_ERRNO_H + #include + #endif ++#include + + /*! + \class QSettings +@@ -465,7 +466,16 @@ + Q_UNUSED( format ); + #endif + +- QString appSettings(QDir::homeDirPath() + "/.qt/"); ++ char *private_confdir = "/.qt/"; ++ ++#if defined(__linux__) && defined (__i386__) ++ struct utsname uts; ++ uname(&uts); ++ if (!strcmp("x86_64", uts.machine)) ++ private_confdir = "/.qt-32/"; ++#endif ++ ++ QString appSettings(QDir::homeDirPath() + private_confdir); + QString defPath; + #ifdef Q_WS_WIN + #ifdef Q_OS_TEMP --- qt-x11-free-3.3.6.orig/debian/patches/26_qtc_qpixmap_constants.dpatch +++ qt-x11-free-3.3.6/debian/patches/26_qtc_qpixmap_constants.dpatch @@ -0,0 +1,399 @@ +#! /bin/sh -e +# Qt-Copy patch #7 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qpixmap_x11.cpp ++++ qt.patch/src/kernel/qpixmap_x11.cpp +@@ -1278,9 +1278,6 @@ bool QPixmap::convertFromImage( const QI + return FALSE; + int bppc = xi->bits_per_pixel; + +- if ( bppc > 8 && xi->byte_order == LSBFirst ) +- bppc++; +- + bool contig_bits = n_bits(red_mask) == rbits && + n_bits(green_mask) == gbits && + n_bits(blue_mask) == bbits; +@@ -1329,32 +1326,70 @@ bool QPixmap::convertFromImage( const QI + } + init=TRUE; + } ++ ++ enum { BPP8, ++ BPP16_8_3_M3, BPP16_7_2_M3, BPP16_MSB, BPP16_LSB, ++ BPP24_MSB, BPP24_LSB, ++ BPP32_16_8_0, BPP32_MSB, BPP32_LSB ++ } mode = BPP8; + +- for ( uint y=0; ybytes_per_line*y; +- QRgb* p = (QRgb *)src; ++ if ( bppc > 8 && xi->byte_order == LSBFirst ) ++ bppc++; + +-#define GET_RGB \ +- int r = qRed ( *p ); \ +- int g = qGreen( *p ); \ +- int b = qBlue ( *p++ ); \ +- r = red_shift > 0 \ +- ? r << red_shift : r >> -red_shift; \ +- g = green_shift > 0 \ +- ? g << green_shift : g >> -green_shift; \ +- b = blue_shift > 0 \ +- ? b << blue_shift : b >> -blue_shift; ++ int wordsize; ++ bool bigendian; ++ qSysInfo( &wordsize, &bigendian ); ++ bool same_msb_lsb = ( xi->byte_order == MSBFirst ) == ( bigendian ); ++ ++ if( bppc == 8 ) // 8 bit ++ mode = BPP8; ++ else if( bppc == 16 || bppc == 17 ) { // 16 bit MSB/LSB ++ if( red_shift == 8 && green_shift == 3 && blue_shift == -3 ++ && !d8 && same_msb_lsb ) ++ mode = BPP16_8_3_M3; ++ else if( red_shift == 7 && green_shift == 2 && blue_shift == -3 ++ && !d8 && same_msb_lsb ) ++ mode = BPP16_7_2_M3; ++ else ++ mode = bppc == 17 ? BPP16_LSB : BPP16_MSB; ++ } else if( bppc == 24 || bppc == 25 ) { // 24 bit MSB/LSB ++ mode = bppc == 25 ? BPP24_LSB : BPP24_MSB; ++ } else if( bppc == 32 || bppc == 33 ) { // 32 bit MSB/LSB ++ if( red_shift == 16 && green_shift == 8 && blue_shift == 0 ++ && !d8 && same_msb_lsb ) ++ mode = BPP32_16_8_0; ++ else ++ mode = bppc == 33 ? BPP32_LSB : BPP32_MSB; ++ } else ++ qFatal("Logic error 3"); + + #define GET_PIXEL \ + int pixel; \ + if ( d8 ) pixel = pix[*src++]; \ + else { \ +- GET_RGB \ +- pixel = (b & blue_mask)|(g & green_mask) | (r & red_mask) \ ++ int r = qRed ( *p ); \ ++ int g = qGreen( *p ); \ ++ int b = qBlue ( *p++ ); \ ++ r = red_shift > 0 \ ++ ? r << red_shift : r >> -red_shift; \ ++ g = green_shift > 0 \ ++ ? g << green_shift : g >> -green_shift; \ ++ b = blue_shift > 0 \ ++ ? b << blue_shift : b >> -blue_shift; \ ++ pixel = (r & red_mask)|(g & green_mask) | (b & blue_mask) \ + | ~(blue_mask | green_mask | red_mask); \ + } + ++// optimized case - no d8 case, shift only once instead of twice, mask only once instead of twice, ++// use direct values instead of variables, and use only one statement ++// (*p >> 16), (*p >> 8 ) and (*p) are qRed(),qGreen() and qBlue() without masking ++// shifts have to be passed including the shift operator (e.g. '>>3'), because of the direction ++#define GET_PIXEL_OPT(red_shift,green_shift,blue_shift,red_mask,green_mask,blue_mask) \ ++ int pixel = ((( *p >> 16 ) red_shift ) & red_mask ) \ ++ | ((( *p >> 8 ) green_shift ) & green_mask ) \ ++ | ((( *p ) blue_shift ) & blue_mask ); \ ++ ++p; ++ + #define GET_PIXEL_DITHER_TC \ + int r = qRed ( *p ); \ + int g = qGreen( *p ); \ +@@ -1374,91 +1409,177 @@ bool QPixmap::convertFromImage( const QI + ? g << green_shift : g >> -green_shift; \ + b = blue_shift > 0 \ + ? b << blue_shift : b >> -blue_shift; \ +- int pixel = (b & blue_mask)|(g & green_mask) | (r & red_mask); ++ int pixel = (r & red_mask)|(g & green_mask) | (b & blue_mask); + +- if ( dither_tc ) { +- uint x; +- switch ( bppc ) { +- case 16: // 16 bit MSB +- for ( x=0; x> 8); +- *dst++ = pixel; +- } ++// again, optimized case ++// can't be optimized that much :( ++#define GET_PIXEL_DITHER_TC_OPT(red_shift,green_shift,blue_shift,red_mask,green_mask,blue_mask, \ ++ rbits,gbits,bbits) \ ++ const int thres = D[x%16][y%16]; \ ++ int r = qRed ( *p ); \ ++ if ( r <= (255-(1<<(8-rbits))) && ((r< thres) \ ++ r += (1<<(8-rbits)); \ ++ int g = qGreen( *p ); \ ++ if ( g <= (255-(1<<(8-gbits))) && ((g< thres) \ ++ g += (1<<(8-gbits)); \ ++ int b = qBlue ( *p++ ); \ ++ if ( b <= (255-(1<<(8-bbits))) && ((b< thres) \ ++ b += (1<<(8-bbits)); \ ++ int pixel = (( r red_shift ) & red_mask ) \ ++ | (( g green_shift ) & green_mask ) \ ++ | (( b blue_shift ) & blue_mask ); ++ ++#define CYCLE(body) \ ++ for ( uint y=0; ybytes_per_line*y; \ ++ QRgb* p = (QRgb *)src; \ ++ body \ ++ } ++ ++ if ( dither_tc ) { ++ switch ( mode ) { ++ case BPP16_8_3_M3: ++ CYCLE( ++ Q_INT16* dst16 = (Q_INT16*)dst; ++ for ( uint x=0; x>3,0xf800,0x7e0,0x1f,5,6,5) ++ *dst16++ = pixel; ++ } ++ ) + break; +- case 17: // 16 bit LSB +- for ( x=0; x> 8; +- } ++ case BPP16_7_2_M3: ++ CYCLE( ++ Q_INT16* dst16 = (Q_INT16*)dst; ++ for ( uint x=0; x>3,0x7c00,0x3e0,0x1f,5,5,5) ++ *dst16++ = pixel; ++ } ++ ) ++ break; ++ case BPP16_MSB: // 16 bit MSB ++ CYCLE( ++ for ( uint x=0; x> 8); ++ *dst++ = pixel; ++ } ++ ) ++ break; ++ case BPP16_LSB: // 16 bit LSB ++ CYCLE( ++ for ( uint x=0; x> 8; ++ } ++ ) + break; + default: + qFatal("Logic error"); + } +- } else { +- uint x; +- switch ( bppc ) { +- case 8: // 8 bit +- for ( x=0; x> 8); +- *dst++ = pixel; +- } ++ case BPP16_8_3_M3: ++ CYCLE( ++ Q_INT16* dst16 = (Q_INT16*)dst; ++ for ( uint x=0; x>3,0xf800,0x7e0,0x1f) ++ *dst16++ = pixel; ++ } ++ ) + break; +- case 17: // 16 bit LSB +- for ( x=0; x> 8; +- } ++ case BPP16_7_2_M3: ++ CYCLE( ++ Q_INT16* dst16 = (Q_INT16*)dst; ++ for ( uint x=0; x>3,0x7c00,0x3e0,0x1f) ++ *dst16++ = pixel; ++ } ++ ) + break; +- case 24: // 24 bit MSB +- for ( x=0; x> 16; +- *dst++ = pixel >> 8; +- *dst++ = pixel; +- } ++ case BPP16_MSB: // 16 bit MSB ++ CYCLE( ++ for ( uint x=0; x> 8); ++ *dst++ = pixel; ++ } ++ ) + break; +- case 25: // 24 bit LSB +- for ( x=0; x> 8; +- *dst++ = pixel >> 16; +- } ++ case BPP16_LSB: // 16 bit LSB ++ CYCLE( ++ for ( uint x=0; x> 8; ++ } ++ ) + break; +- case 32: // 32 bit MSB +- for ( x=0; x> 24; +- *dst++ = pixel >> 16; +- *dst++ = pixel >> 8; +- *dst++ = pixel; +- } ++ case BPP24_MSB: // 24 bit MSB ++ CYCLE( ++ for ( uint x=0; x> 16; ++ *dst++ = pixel >> 8; ++ *dst++ = pixel; ++ } ++ ) + break; +- case 33: // 32 bit LSB +- for ( x=0; x> 8; +- *dst++ = pixel >> 16; +- *dst++ = pixel >> 24; +- } ++ case BPP24_LSB: // 24 bit LSB ++ CYCLE( ++ for ( uint x=0; x> 8; ++ *dst++ = pixel >> 16; ++ } ++ ) + break; +- default: +- qFatal("Logic error 2"); +- } +- } +- } +- xi->data = (char *)newbits; ++ case BPP32_16_8_0: ++ CYCLE( ++ memcpy( dst, p, w * 4 ); ++ ) ++ break; ++ case BPP32_MSB: // 32 bit MSB ++ CYCLE( ++ for ( uint x=0; x> 24; ++ *dst++ = pixel >> 16; ++ *dst++ = pixel >> 8; ++ *dst++ = pixel; ++ } ++ ) ++ break; ++ case BPP32_LSB: // 32 bit LSB ++ CYCLE( ++ for ( uint x=0; x> 8; ++ *dst++ = pixel >> 16; ++ *dst++ = pixel >> 24; ++ } ++ ) ++ break; ++ default: ++ qFatal("Logic error 2"); ++ } ++ } ++ xi->data = (char *)newbits; + } + + if ( d == 8 && !trucol ) { // 8 bit pixmap +@@ -1738,15 +1859,24 @@ bool QPixmap::convertFromImage( const QI + + if (image.depth() == 32) { + const int *iptr = (const int *) image.bits(); +- int max = w * h; +- while (max--) +- *aptr++ = *iptr++ >> 24; // squirt ++ if( axi->bytes_per_line == (int)w ) { ++ int max = w * h; ++ while (max--) ++ *aptr++ = *iptr++ >> 24; // squirt ++ } else { ++ for (uint i = 0; i < h; ++i ) { ++ for (uint j = 0; j < w; ++j ) ++ *aptr++ = *iptr++ >> 24; // squirt ++ aptr += ( axi->bytes_per_line - w ); ++ } ++ } + } else if (image.depth() == 8) { + const QRgb * const rgb = image.colorTable(); + for (uint y = 0; y < h; ++y) { + const uchar *iptr = image.scanLine(y); + for (uint x = 0; x < w; ++x) + *aptr++ = qAlpha(rgb[*iptr++]); ++ aptr += ( axi->bytes_per_line - w ); + } + } + --- qt-x11-free-3.3.6.orig/debian/patches/14_fix_kmenu.dpatch +++ qt-x11-free-3.3.6/debian/patches/14_fix_kmenu.dpatch @@ -0,0 +1,31 @@ +#! /bin/sh -e +# Qt-Copy patch #47 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- a/src/widgets/qpopupmenu.cpp 29 Apr 2004 22:31:28 -0000 1.60 ++++ a/src/widgets/qpopupmenu.cpp 30 Apr 2004 01:11:59 -0000 +@@ -2531,7 +2531,7 @@ QSize QPopupMenu::sizeHint() const + + QPopupMenu* that = (QPopupMenu*) this; + //We do not need a resize here, just the sizeHint.. +- return that->updateSize(FALSE, FALSE).expandedTo( QApplication::globalStrut() ); ++ return that->updateSize(FALSE).expandedTo( QApplication::globalStrut() ); + } --- qt-x11-free-3.3.6.orig/debian/patches/03_qt_fontlist_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/03_qt_fontlist_fix.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e +## 03_qt_fontlist_fix.dpatch by Martin Loschwitz +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix fonts list to show only the fonts we can use + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -ruN qt-x11-free-3.2.1.old/src/kernel/qfontdatabase_x11.cpp qt-x11-free-3.2.1/src/kernel/qfontdatabase_x11.cpp +--- qt-x11-free-3.2.1.old/src/kernel/qfontdatabase_x11.cpp 2003-08-20 15:07:34.000000000 +0200 ++++ qt-x11-free-3.2.1/src/kernel/qfontdatabase_x11.cpp 2003-09-03 11:08:05.000000000 +0200 +@@ -673,6 +673,9 @@ + if ( fontFamily && fontFamily->xlfdLoaded ) + return; + ++#ifdef QT_XFT2 ++ if ( !qt_has_xft ) { ++#endif // QT_XFT2 + int fontCount; + // force the X server to give us XLFDs + QCString xlfd_pattern = "-*-"; +@@ -764,8 +767,11 @@ + } + + XFreeFontNames( fontList ); +-} + ++#ifdef QT_XFT2 ++ } ++#endif // QT_XFT2 ++} + + #ifndef QT_NO_XFTFREETYPE + static int getXftWeight(int xftweight) --- qt-x11-free-3.3.6.orig/debian/patches/15_unify_declarations_glibc.dpatch +++ qt-x11-free-3.3.6/debian/patches/15_unify_declarations_glibc.dpatch @@ -0,0 +1,93 @@ +#! /bin/sh -e +## 15_unify_declarations_glibc.dpatch by Robert Millan +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: unify declarations for Glibc-based systems in upstream files + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- qt-x11-free-3.2.3.old/configure 2003-10-21 12:04:20.000000000 +0200 ++++ qt-x11-free-3.2.3/configure 2004-08-05 00:33:56.000000000 +0200 +@@ -1248,7 +1248,7 @@ + XPLATFORM="qws/solaris-$CFG_EMBEDDED-g++" + fi + ;; +- Linux:*) ++ Linux:*|GNU:*|GNU/*:*) + if [ -z "$PLATFORM" ]; then + case "$UNAME_MACHINE" in + *86) +@@ -1303,9 +1303,6 @@ + QNX:*) + PLATFORM=qnx-g++ + ;; +- GNU:*) +- PLATFORM=hurd-g++ +- ;; + dgux:*) + PLATFORM=dgux-g++ + ;; +@@ -1353,7 +1350,7 @@ + - Also available for Tru64: tru64-g++ + " + ;; +- Linux:*) ++ Linux:*|GNU:*|GNU/*:*) + PLATFORM=linux-g++ + PLATFORM_NOTES=" + - Also available for Linux: linux-kcc linux-icc linux-cxx +diff -ur qt-x11-free-3.2.3.old/doc/html/qglobal-h.html qt-x11-free-3.2.3/doc/html/qglobal-h.html +--- qt-x11-free-3.2.3.old/doc/html/qglobal-h.html 2003-11-10 13:06:43.000000000 +0100 ++++ qt-x11-free-3.2.3/doc/html/qglobal-h.html 2004-08-05 00:39:47.000000000 +0200 +@@ -148,7 +148,7 @@ + # define Q_OS_ULTRIX + #elif defined(sinix) + # define Q_OS_RELIANT +-#elif defined(__linux__) || defined(__linux) ++#elif defined(__linux__) || defined(__linux) || defined(__GNU__) || defined(__GLIBC__) + # define Q_OS_LINUX + #elif defined(__FreeBSD__) + # define Q_OS_FREEBSD +@@ -170,8 +170,6 @@ + # define Q_OS_AIX + #elif defined(__Lynx__) + # define Q_OS_LYNX +-#elif defined(__GNU_HURD__) +-# define Q_OS_HURD + #elif defined(__DGUX__) + # define Q_OS_DGUX + #elif defined(__QNXNTO__) +diff -ur qt-x11-free-3.2.3.old/src/tools/qglobal.h qt-x11-free-3.2.3/src/tools/qglobal.h +--- qt-x11-free-3.2.3.old/src/tools/qglobal.h 2003-11-10 11:21:38.000000000 +0100 ++++ qt-x11-free-3.2.3/src/tools/qglobal.h 2004-08-05 00:40:23.000000000 +0200 +@@ -112,7 +112,7 @@ + # define Q_OS_ULTRIX + #elif defined(sinix) + # define Q_OS_RELIANT +-#elif defined(__linux__) || defined(__linux) ++#elif defined(__linux__) || defined(__linux) || defined(__GNU__) || defined(__GLIBC__) + # define Q_OS_LINUX + #elif defined(__FreeBSD__) + # define Q_OS_FREEBSD +@@ -134,8 +134,6 @@ + # define Q_OS_AIX + #elif defined(__Lynx__) + # define Q_OS_LYNX +-#elif defined(__GNU_HURD__) +-# define Q_OS_HURD + #elif defined(__DGUX__) + # define Q_OS_DGUX + #elif defined(__QNXNTO__) --- qt-x11-free-3.3.6.orig/debian/patches/32_gtkstyle.dpatch +++ qt-x11-free-3.3.6/debian/patches/32_gtkstyle.dpatch @@ -0,0 +1,135 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qmenubar.cpp ++++ qt.patched/src/widgets/qmenubar.cpp +@@ -228,6 +228,10 @@ + static const int motifItemHMargin = 5; // menu item hor text margin + static const int motifItemVMargin = 4; // menu item ver text margin + ++// The others are 0 ++static const int gtkItemHMargin = 8; ++static const int gtkItemVMargin = 8; ++ + /* + + +----------------------------- +@@ -292,7 +296,14 @@ + setFrameStyle( QFrame::MenuBarPanel | QFrame::Raised ); + + QFontMetrics fm = fontMetrics(); +- int h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame; ++ ++ int h; ++ int gs = style().styleHint(QStyle::SH_GUIStyle); ++ if (gs == GtkStyle) { ++ h = fm.height() + gtkItemVMargin; ++ } else { ++ h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame; ++ } + + setGeometry( 0, 0, width(), h ); + +@@ -944,12 +955,19 @@ + h = QMAX( mi->pixmap()->height() + 4, QApplication::globalStrut().height() ); + } else if ( !mi->text().isNull() ) { // text item + QString s = mi->text(); +- w = fm.boundingRect( s ).width() +- + 2*motifItemHMargin; ++ if ( gs == GtkStyle ) { ++ w = fm.boundingRect( s ).width() + 2*gtkItemHMargin; ++ } else { ++ w = fm.boundingRect( s ).width() + 2*motifItemHMargin; ++ } + w -= s.contains('&')*fm.width('&'); + w += s.contains("&&")*fm.width('&'); + w = QMAX( w, QApplication::globalStrut().width() ); +- h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() ); ++ if (gs == GtkStyle ) { ++ h = QMAX( fm.height() + gtkItemVMargin, QApplication::globalStrut().height() ); ++ } else { ++ h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() ); ++ } + } else if ( mi->isSeparator() ) { // separator item + if ( style().styleHint(QStyle::SH_GUIStyle) == MotifStyle ) + separator = i; //### only motif? +--- qt.orig/src/widgets/qpopupmenu.cpp ++++ qt.patched/src/widgets/qpopupmenu.cpp +@@ -65,6 +65,8 @@ + static const int motifArrowHMargin = 6; // arrow horizontal margin + static const int motifArrowVMargin = 2; // arrow vertical margin + ++static const int gtkArrowHMargin = 0; // arrow horizontal margin ++static const int gtkArrowVMargin = 0; // arrow vertical margin + + /* + +@@ -2290,8 +2292,18 @@ + QRect r( itemGeometry( actItem ) ); + QPoint p; + QSize ps = popup->sizeHint(); ++ // GUI Style ++ int gs = style().styleHint(QStyle::SH_GUIStyle); ++ int arrowHMargin, arrowVMargin; ++ if (gs == GtkStyle) { ++ arrowHMargin = gtkArrowHMargin; ++ arrowVMargin = gtkArrowVMargin; ++ } else { ++ arrowHMargin = motifArrowHMargin; ++ arrowVMargin = motifArrowVMargin; ++ } + if( QApplication::reverseLayout() ) { +- p = QPoint( r.left() + motifArrowHMargin - ps.width(), r.top() + motifArrowVMargin ); ++ p = QPoint( r.left() + arrowHMargin - ps.width(), r.top() + arrowVMargin ); + p = mapToGlobal( p ); + + bool right = FALSE; +@@ -2304,7 +2316,7 @@ + if ( right ) + p.setX( mapToGlobal( r.topRight() ).x() ); + } else { +- p = QPoint( r.right() - motifArrowHMargin, r.top() + motifArrowVMargin ); ++ p = QPoint( r.right() - arrowHMargin, r.top() + arrowVMargin ); + p = mapToGlobal( p ); + + bool left = FALSE; +--- qt.orig/src/kernel/qnamespace.h ++++ qt.patched/src/kernel/qnamespace.h +@@ -294,7 +294,8 @@ + #ifdef QT_NO_COMPAT + enum GUIStyle { + WindowsStyle = 1, // ### Qt 4.0: either remove the obsolete enums or clean up compat vs. +- MotifStyle = 4 // ### QT_NO_COMPAT by reordering or combination into one enum. ++ MotifStyle = 4, // ### QT_NO_COMPAT by reordering or combination into one enum. ++ GtkStyle = 6 // Gtk compability mode + }; + #else + enum GUIStyle { +@@ -302,7 +303,8 @@ + WindowsStyle, + Win3Style, // OBSOLETE + PMStyle, // OBSOLETE +- MotifStyle ++ MotifStyle, ++ GtkStyle = 6 // Gtk compability mode + }; + #endif + --- qt-x11-free-3.3.6.orig/debian/patches/12_disable_includehints.dpatch +++ qt-x11-free-3.3.6/debian/patches/12_disable_includehints.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/tools/designer/uic/form.cpp ++++ qt.patched/tools/designer/uic/form.cpp +@@ -726,16 +726,7 @@ + } + n2 = n2.nextSibling().toElement(); + } +- } else if ( n.tagName() == "includehints" ) { +- QDomElement n2 = n.firstChild().toElement(); +- while ( !n2.isNull() ) { +- if ( n2.tagName() == "includehint" ) { +- QString file = n2.firstChild().toText().data(); +- localIncludes += file; +- } +- n2 = n2.nextSibling().toElement(); +- } +- } ++ } + } + + // additional includes (local or global) and forward declaractions --- qt-x11-free-3.3.6.orig/debian/patches/49_immodule_inputcontext_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/49_immodule_inputcontext_fix.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make it compile on mips / mipsel + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/inputmethod/qinputcontextfactory.cpp ++++ qt.patched/src/inputmethod/qinputcontextfactory.cpp +@@ -102,7 +102,8 @@ + if ( iface ) { + ret = iface->create( inputcontext ); + #ifdef Q_WS_X11 +- ret->setHolderWidget( widget ); ++ if ( ret ) ++ ret->setHolderWidget( widget ); + #endif + } + #endif --- qt-x11-free-3.3.6.orig/debian/patches/06_disable_rpath.dpatch +++ qt-x11-free-3.3.6/debian/patches/06_disable_rpath.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e +## 06_disable_rpath.dpatch by Martin Loschwitz +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Disables the rpath settings in qmake.conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/mkspecs/linux-g++/qmake.conf ++++ qt.patched/mkspecs/linux-g++/qmake.conf +@@ -53,7 +53,7 @@ + QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB + QMAKE_LFLAGS_SONAME = -Wl,-soname, + QMAKE_LFLAGS_THREAD = +-QMAKE_RPATH = -Wl,-rpath, ++QMAKE_RPATH = + + QMAKE_LIBS = + QMAKE_LIBS_DYNLOAD = -ldl +--- qt.orig/mkspecs/linux-g++-64/qmake.conf ++++ qt.patched/mkspecs/linux-g++-64/qmake.conf +@@ -56,7 +56,7 @@ + QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB + QMAKE_LFLAGS_SONAME = -Wl,-soname, + QMAKE_LFLAGS_THREAD = +-QMAKE_RPATH = -Wl,-rpath, ++QMAKE_RPATH = + + QMAKE_LIBS = + QMAKE_LIBS_DYNLOAD = -ldl --- qt-x11-free-3.3.6.orig/debian/patches/48_immodule_xim_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/48_immodule_xim_fix.dpatch @@ -0,0 +1,73 @@ +#! /bin/sh -e +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make it compile on mips / mipsel + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qapplication_x11.cpp ++++ qt.patched/src/kernel/qapplication_x11.cpp +@@ -3294,11 +3294,11 @@ + // filtering opportunity first to ensure all input methods work + // properly regardless of application design. + +-#ifndef QT_NO_IM_EXTENSIONS ++// #ifndef QT_NO_IM_EXTENSIONS + if( keywidget && keywidget->isEnabled() && keywidget->isInputMethodEnabled() ) { +-#else +- if( keywidget && keywidget->isEnabled() ) { +-#endif ++// #else ++// if( keywidget && keywidget->isEnabled() ) { ++// #endif + if( ( event->type==XKeyPress || event->type==XKeyRelease ) && + sm_blockUserInput ) // block user interaction during session management + return TRUE; +--- qt.orig/src/kernel/qwidget_x11.cpp ++++ qt.patched/src/kernel/qwidget_x11.cpp +@@ -2698,11 +2698,12 @@ + { + QInputContext *qic = 0; + +-#if !defined(QT_NO_IM_EXTENSIONS) ++// #if !defined(QT_NO_IM_EXTENSIONS) + if ( isInputMethodEnabled() ) { ++#if !defined(QT_NO_IM_EXTENSIONS) + qic = icHolderWidget()->ic; + #else +- { ++// { + // icHolderWidget is always topLevelWidget + QTLWExtra *topdata = icHolderWidget()->topData(); + qic = (QInputContext *)topdata->xic; +@@ -2753,10 +2754,10 @@ + */ + void QWidget::createInputContext() + { +-#if !defined(QT_NO_IM_EXTENSIONS) +- if( !isInputMethodEnabled() ) ++// #if !defined(QT_NO_IM_EXTENSIONS) ++ if( !isInputMethodEnabled() || QApplication::closingDown() ) + return; +-#endif ++// #endif + + QWidget *icWidget = icHolderWidget(); + #ifndef QT_NO_IM --- qt-x11-free-3.3.6.orig/debian/patches/35_qtc_dnd_active_window_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/35_qtc_dnd_active_window_fix.dpatch @@ -0,0 +1,184 @@ +#! /bin/sh -e +# Qt-Copy patch #2 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qapplication_x11.cpp ++++ qt.patched/src/kernel/qapplication_x11.cpp +@@ -4053,7 +4053,7 @@ void QApplication::closePopup( QWidget * + // Keyboard event translation + // + +-static int translateButtonState( int s ) ++int qt_x11_translateButtonState( int s ) + { + int bst = 0; + if ( s & Button1Mask ) +@@ -4119,7 +4119,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = lastMotion.y; + globalPos.rx() = lastMotion.x_root; + globalPos.ry() = lastMotion.y_root; +- state = translateButtonState( lastMotion.state ); ++ state = qt_x11_translateButtonState( lastMotion.state ); + if ( qt_button_down && (state & (LeftButton | + MidButton | + RightButton ) ) == 0 ) +@@ -4143,7 +4143,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = xevent->xcrossing.y; + globalPos.rx() = xevent->xcrossing.x_root; + globalPos.ry() = xevent->xcrossing.y_root; +- state = translateButtonState( xevent->xcrossing.state ); ++ state = qt_x11_translateButtonState( xevent->xcrossing.state ); + if ( qt_button_down && (state & (LeftButton | + MidButton | + RightButton ) ) == 0 ) +@@ -4155,7 +4155,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = event->xbutton.y; + globalPos.rx() = event->xbutton.x_root; + globalPos.ry() = event->xbutton.y_root; +- state = translateButtonState( event->xbutton.state ); ++ state = qt_x11_translateButtonState( event->xbutton.state ); + switch ( event->xbutton.button ) { + case Button1: button = LeftButton; break; + case Button2: button = MidButton; break; +@@ -4950,7 +4950,7 @@ bool QETWidget::translateKeyEventInterna + XKeyEvent xkeyevent = event->xkey; + + // save the modifier state, we will use the keystate uint later by passing +- // it to translateButtonState ++ // it to qt_x11_translateButtonState + uint keystate = event->xkey.state; + // remove the modifiers where mode_switch exists... HPUX machines seem + // to have alt *AND* mode_switch both in Mod1Mask, which causes +@@ -5064,7 +5064,7 @@ bool QETWidget::translateKeyEventInterna + } + #endif // !QT_NO_XIM + +- state = translateButtonState( keystate ); ++ state = qt_x11_translateButtonState( keystate ); + + static int directionKeyEvent = 0; + if ( qt_use_rtl_extensions && type == QEvent::KeyRelease ) { +--- qt.orig/src/kernel/qdnd_x11.cpp ++++ qt.patched/src/kernel/qdnd_x11.cpp +@@ -114,6 +114,8 @@ Atom qt_xdnd_finished; + Atom qt_xdnd_type_list; + const int qt_xdnd_version = 4; + ++extern int qt_x11_translateButtonState( int s ); ++ + // Actions + // + // The Xdnd spec allows for user-defined actions. This could be implemented +@@ -198,6 +200,8 @@ static Atom qt_xdnd_source_current_time; + static int qt_xdnd_current_screen = -1; + // state of dragging... true if dragging, false if not + bool qt_xdnd_dragging = FALSE; ++// need to check state of keyboard modifiers ++static bool need_modifiers_check = FALSE; + + // dict of payload data, sorted by type atom + static QIntDict * qt_xdnd_target_data = 0; +@@ -879,8 +883,20 @@ void qt_handle_xdnd_finished( QWidget *, + + void QDragManager::timerEvent( QTimerEvent* e ) + { +- if ( e->timerId() == heartbeat && qt_xdnd_source_sameanswer.isNull() ) +- move( QCursor::pos() ); ++ if ( e->timerId() == heartbeat ) { ++ if( need_modifiers_check ) { ++ Window root, child; ++ int root_x, root_y, win_x, win_y; ++ unsigned int mask; ++ XQueryPointer( qt_xdisplay(), qt_xrootwin( qt_xdnd_current_screen ), ++ &root, &child, &root_x, &root_y, &win_x, &win_y, &mask ); ++ if( updateMode( (ButtonState)qt_x11_translateButtonState( mask ))) ++ qt_xdnd_source_sameanswer = QRect(); // force move ++ } ++ need_modifiers_check = TRUE; ++ if( qt_xdnd_source_sameanswer.isNull() ) ++ move( QCursor::pos() ); ++ } + } + + static bool qt_xdnd_was_move = false; +@@ -948,6 +964,7 @@ bool QDragManager::eventFilter( QObject + updateMode(me->stateAfter()); + move( me->globalPos() ); + } ++ need_modifiers_check = FALSE; + return TRUE; + } else if ( e->type() == QEvent::MouseButtonRelease ) { + qApp->removeEventFilter( this ); +@@ -986,9 +1003,11 @@ bool QDragManager::eventFilter( QObject + beingCancelled = FALSE; + qApp->exit_loop(); + } else { +- updateMode(ke->stateAfter()); +- qt_xdnd_source_sameanswer = QRect(); // force move +- move( QCursor::pos() ); ++ if( updateMode(ke->stateAfter())) { ++ qt_xdnd_source_sameanswer = QRect(); // force move ++ move( QCursor::pos() ); ++ } ++ need_modifiers_check = FALSE; + } + return TRUE; // Eat all key events + } +@@ -1014,10 +1033,10 @@ bool QDragManager::eventFilter( QObject + + + static Qt::ButtonState oldstate; +-void QDragManager::updateMode( ButtonState newstate ) ++bool QDragManager::updateMode( ButtonState newstate ) + { + if ( newstate == oldstate ) +- return; ++ return false; + const int both = ShiftButton|ControlButton; + if ( (newstate & both) == both ) { + global_requested_action = QDropEvent::Link; +@@ -1041,6 +1060,7 @@ void QDragManager::updateMode( ButtonSta + } + } + oldstate = newstate; ++ return true; + } + + +@@ -1707,6 +1727,7 @@ bool QDragManager::drag( QDragObject * o + qt_xdnd_source_sameanswer = QRect(); + move(QCursor::pos()); + heartbeat = startTimer(200); ++ need_modifiers_check = FALSE; + + #ifndef QT_NO_CURSOR + qApp->setOverrideCursor( arrowCursor ); +--- qt.orig/src/kernel/qdragobject.h ++++ qt.patched/src/kernel/qdragobject.h +@@ -248,7 +248,7 @@ private: + + private: + QDragObject * object; +- void updateMode( ButtonState newstate ); ++ bool updateMode( ButtonState newstate ); + void updateCursor(); + + QWidget * dragSource; --- qt-x11-free-3.3.6.orig/debian/patches/02_various_fixes.dpatch +++ qt-x11-free-3.3.6/debian/patches/02_various_fixes.dpatch @@ -0,0 +1,120 @@ +#! /bin/sh -e +## 02_various_fixes.dpatch by Martin Loschwitz +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fixes various smaller mistakes + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt-x11-free-3.2.3.old/tools/designer/integration/designer.el 2003-10-03 13:32:02.000000000 +0200 ++++ qt-x11-free-3.2.3/tools/designer/integration/designer.el 2003-12-19 13:28:14.000000000 +0100 +@@ -1,9 +1,9 @@ +-(defvar designer-exec (concat (getenv "QTDIR") "/bin/designer")) ++(defvar designer-exec "/usr/bin/designer") + + (defun designer-open-ui-file () + (interactive) + (defvar procname "designer") +- (start-process procname nil designer-exec "-style" "windows" "-client" buffer-file-name) ++ (start-process procname nil designer-exec "-client" buffer-file-name) + ) + + (defun designer-create-ui-file (&optional arg) +diff -ruN qt-x11-free-3.2.3.old/tools/tools.pro qt-x11-free-3.2.3/tools/tools.pro +--- qt-x11-free-3.2.3.old/tools/tools.pro 2003-09-24 13:32:33.000000000 +0200 ++++ qt-x11-free-3.2.3/tools/tools.pro 2003-12-19 13:26:58.000000000 +0100 +@@ -6,7 +6,12 @@ + designer \ + assistant \ + linguist +- unix:SUBDIRS += qtconfig ++ unix:SUBDIRS += qtconfig \ ++ mergetr \ ++ qconfig \ ++ makeqpf \ ++ msg2qm \ ++ qembed + } + + CONFIG+=ordered +diff -ruN qt-x11-free-3.3.2.old/tools/designer/designer.pro qt-x11-free-3.3.2/tools/designer/designer.pro +--- qt-x11-free-3.3.2.old/tools/designer/designer.pro 2003-10-31 15:36:28.000000000 +0100 ++++ qt-x11-free-3.3.2/tools/designer/designer.pro 2004-05-14 16:08:10.000000000 +0200 +@@ -5,7 +5,9 @@ + SUBDIRS = uic \ + uilib \ + designer \ +- app ++ app \ ++ tools/createcw \ ++ tools/conv2ui + + dll:SUBDIRS *= editor plugins + shared:SUBDIRS *= editor plugins +diff -ruN qt-x11-free-3.3.3.old/tools/designer/tools/createcw/createcw.pro qt-x11-free-3.3.3/tools/designer/tools/createcw/createcw.pro +--- qt-x11-free-3.3.3.old/tools/designer/tools/createcw/createcw.pro 2003-10-31 14:36:28.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/designer/tools/createcw/createcw.pro 2004-08-13 23:19:54.000000000 +0000 +@@ -3,3 +3,6 @@ + HEADERS = + SOURCES = main.cpp + TARGET = createcw ++ ++target.path = $$bins.path ++INSTALLS += target +diff -ruN qt-x11-free-3.3.3.old/tools/makeqpf/makeqpf.pro qt-x11-free-3.3.3/tools/makeqpf/makeqpf.pro +--- qt-x11-free-3.3.3.old/tools/makeqpf/makeqpf.pro 2004-06-08 08:07:19.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/makeqpf/makeqpf.pro 2004-08-13 23:20:33.000000000 +0000 +@@ -5,3 +5,6 @@ + INTERFACES = + TARGET = makeqpf + REQUIRES=full-config nocrosscompiler ++ ++target.path = $$bins.path ++INSTALLS += target +diff -ruN qt-x11-free-3.3.3.old/tools/mergetr/mergetr.pro qt-x11-free-3.3.3/tools/mergetr/mergetr.pro +--- qt-x11-free-3.3.3.old/tools/mergetr/mergetr.pro 2004-06-08 08:07:26.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/mergetr/mergetr.pro 2004-08-13 23:21:09.000000000 +0000 +@@ -4,3 +4,6 @@ + SOURCES = mergetr.cpp + TARGET = mergetr + REQUIRES=full-config nocrosscompiler ++ ++target.path = $$bins.path ++INSTALLS += target +diff -ruN qt-x11-free-3.3.3.old/tools/msg2qm/msg2qm.pro qt-x11-free-3.3.3/tools/msg2qm/msg2qm.pro +--- qt-x11-free-3.3.3.old/tools/msg2qm/msg2qm.pro 2004-06-08 08:08:25.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/msg2qm/msg2qm.pro 2004-08-13 23:22:13.000000000 +0000 +@@ -5,3 +5,6 @@ + SOURCES = msg2qm.cpp + TARGET = msg2qm + REQUIRES=full-config nocrosscompiler ++ ++target.path = $$bins.path ++INSTALLS += target +diff -ruN qt-x11-free-3.3.3.old/tools/qembed/qembed.pro qt-x11-free-3.3.3/tools/qembed/qembed.pro +--- qt-x11-free-3.3.3.old/tools/qembed/qembed.pro 2004-06-08 08:08:40.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/qembed/qembed.pro 2004-08-13 23:22:44.000000000 +0000 +@@ -2,3 +2,6 @@ + SOURCES = qembed.cpp + TARGET = qembed + REQUIRES=full-config nocrosscompiler ++ ++target.path = $$bins.path ++INSTALLS += target --- qt-x11-free-3.3.6.orig/debian/patches/04_qsql_odbc.dpatch +++ qt-x11-free-3.3.6/debian/patches/04_qsql_odbc.dpatch @@ -0,0 +1,79 @@ +#! /bin/sh -e +## 04_qsql_odbc.dpatch by Martin Loschwitz +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make the package build with libiodbc2-dev instead of unixodbc-dev + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -ruN qt-x11-free-3.2.1.old/plugins/src/sqldrivers/odbc/odbc.pro qt-x11-free-3.2.1/plugins/src/sqldrivers/odbc/odbc.pro +--- qt-x11-free-3.2.1.old/plugins/src/sqldrivers/odbc/odbc.pro 2003-06-19 22:07:43.000000000 +0200 ++++ qt-x11-free-3.2.1/plugins/src/sqldrivers/odbc/odbc.pro 2003-08-29 16:15:21.000000000 +0200 +@@ -15,7 +15,7 @@ + unix { + OBJECTS_DIR = .obj + !contains( LIBS, .*odbc.* ) { +- LIBS *= -lodbc ++ LIBS *= -liodbc + } + } + +diff -ruN qt-x11-free-3.2.1.old/src/sql/drivers/odbc/debian_qsql_odbc.h qt-x11-free-3.2.1/src/sql/drivers/odbc/debian_qsql_odbc.h +--- qt-x11-free-3.2.1.old/src/sql/drivers/odbc/debian_qsql_odbc.h 1970-01-01 01:00:00.000000000 +0100 ++++ qt-x11-free-3.2.1/src/sql/drivers/odbc/debian_qsql_odbc.h 2003-08-29 16:15:21.000000000 +0200 +@@ -0,0 +1,10 @@ ++#ifdef UNICODE ++typedef SQLWCHAR SQLTCHAR; ++#else ++typedef SQLCHAR SQLTCHAR; ++#endif ++ ++#define SQL_WCHAR (-8) ++#define SQL_WVARCHAR (-9) ++#define SQL_WLONGVARCHAR (-10) ++#define SQL_C_WCHAR SQL_WCHAR +diff -ruN qt-x11-free-3.2.1.old/src/sql/drivers/odbc/qsql_odbc.h qt-x11-free-3.2.1/src/sql/drivers/odbc/qsql_odbc.h +--- qt-x11-free-3.2.1.old/src/sql/drivers/odbc/qsql_odbc.h 2003-06-19 22:00:21.000000000 +0200 ++++ qt-x11-free-3.2.1/src/sql/drivers/odbc/qsql_odbc.h 2003-08-29 16:16:42.000000000 +0200 +@@ -74,11 +74,8 @@ + # undef _MSC_VER + #endif + +-#ifndef Q_ODBC_VERSION_2 +-#include +-#endif +- + #include ++#include "debian_qsql_odbc.h" + + class QODBCPrivate; + class QODBCDriver; +diff -ruN qt-x11-free-3.2.1.old/src/sql/qt_sql.pri qt-x11-free-3.2.1/src/sql/qt_sql.pri +--- qt-x11-free-3.2.1.old/src/sql/qt_sql.pri 2003-07-08 11:33:23.000000000 +0200 ++++ qt-x11-free-3.2.1/src/sql/qt_sql.pri 2003-08-29 16:15:21.000000000 +0200 +@@ -115,7 +115,7 @@ + + unix { + !contains( LIBS, .*odbc.* ) { +- LIBS *= -lodbc ++ LIBS *= -liodbc + } + } + --- qt-x11-free-3.3.6.orig/debian/patches/30_qtc_arabic_font_fixes.dpatch +++ qt-x11-free-3.3.6/debian/patches/30_qtc_arabic_font_fixes.dpatch @@ -0,0 +1,352 @@ +#! /bin/sh -e +# Qt-Copy patch #70 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qscriptengine.cpp ++++ qt.patched/src/kernel/qscriptengine.cpp +@@ -289,7 +289,7 @@ + unsigned short *logClusters = item->log_clusters; + + int i; +- for (i = 0; i < length; ++i) ++ for (i = 0; i < length; ++i) + logClusters[i] = i; + + // first char in a run is never (treated as) a mark +@@ -304,7 +304,7 @@ + } else { + item->attributes[0].zeroWidth = FALSE; + } +- ++ + int lastCat = ::category(uc[0]); + for (i = 1; i < length; ++i) { + int cat = ::category(uc[i]); +@@ -381,7 +381,7 @@ + + static bool basic_shape(QShaperItem *item) + { +- if (item->font->stringToCMap(item->string->unicode()+item->from, item->length, item->glyphs, item->advances, ++ if (item->font->stringToCMap(item->string->unicode()+item->from, item->length, item->glyphs, item->advances, + &item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError) + return FALSE; + +@@ -421,7 +421,7 @@ + + if (openType && openType->supportsScript(item->script)) { + openType->selectScript(item->script, hebrew_features); +- ++ + if (item->font->stringToCMap(item->string->unicode()+item->from, item->length, item->glyphs, item->advances, + &item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError) + return FALSE; +@@ -437,7 +437,7 @@ + ShinDot = 0x5c1, + SinDot = 0x5c2, + Patah = 0x5b7, +- Qamats = 0x5b8, ++ Qamats = 0x5b8, + Holam = 0x5b9, + Rafe = 0x5bf + }; +@@ -446,7 +446,7 @@ + + const QChar *uc = item->string->unicode() + item->from; + unsigned short *logClusters = item->log_clusters; +- ++ + *shapedChars = *uc; + logClusters[0] = 0; + int slen = 1; +@@ -460,9 +460,9 @@ + if (base >= 0x5d0 + && base <= 0x5ea + && base != 0x5d7 +- && base != 0x5dd +- && base != 0x5df +- && base != 0x5e2 ++ && base != 0x5dd ++ && base != 0x5df ++ && base != 0x5e2 + && base != 0x5e5) { + shaped = base - 0x5d0 + 0xfb30; + } else if (base == 0xfb2a || base == 0xfb2b /* Shin with Shin or Sin dot */) { +@@ -532,12 +532,12 @@ + } + logClusters[i] = cluster_start; + } +- ++ + if (item->font->stringToCMap(shapedChars, slen, item->glyphs, item->advances, + &item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError) + return FALSE; + for (i = 0; i < item->num_glyphs; ++i) { +- if (item->attributes[i].mark) ++ if (item->attributes[i].mark) + item->advances[i] = 0; + } + qt_heuristicPosition(item); +@@ -1461,12 +1461,12 @@ + + enum { + InitProperty = 0x2, +- IsolProperty = 0x4, ++ IsolProperty = 0x4, + FinaProperty = 0x8, + MediProperty = 0x10, +- RligProperty = 0x20, +- CaltProperty = 0x40, +- LigaProperty = 0x80, ++ RligProperty = 0x20, ++ CaltProperty = 0x40, ++ LigaProperty = 0x80, + DligProperty = 0x100, + CswhProperty = 0x200, + MsetProperty = 0x400 +@@ -1477,14 +1477,14 @@ + { FT_MAKE_TAG('i', 's', 'o', 'l'), IsolProperty }, + { FT_MAKE_TAG('f', 'i', 'n', 'a'), FinaProperty }, + { FT_MAKE_TAG('m', 'e', 'd', 'i'), MediProperty }, +- { FT_MAKE_TAG('i', 'n', 'i', 't'), InitProperty }, +- { FT_MAKE_TAG('r', 'l', 'i', 'g'), RligProperty }, +- { FT_MAKE_TAG('c', 'a', 'l', 't'), CaltProperty }, +- { FT_MAKE_TAG('l', 'i', 'g', 'a'), LigaProperty }, +- { FT_MAKE_TAG('d', 'l', 'i', 'g'), DligProperty }, ++ { FT_MAKE_TAG('i', 'n', 'i', 't'), InitProperty }, ++ { FT_MAKE_TAG('r', 'l', 'i', 'g'), RligProperty }, ++ { FT_MAKE_TAG('c', 'a', 'l', 't'), CaltProperty }, ++ { FT_MAKE_TAG('l', 'i', 'g', 'a'), LigaProperty }, ++ { FT_MAKE_TAG('d', 'l', 'i', 'g'), DligProperty }, + { FT_MAKE_TAG('c', 's', 'w', 'h'), CswhProperty }, + // mset is used in old Win95 fonts that don't have a 'mark' positioning table. +- { FT_MAKE_TAG('m', 's', 'e', 't'), MsetProperty }, ++ { FT_MAKE_TAG('m', 's', 'e', 't'), MsetProperty }, + {0, 0} + }; + +@@ -1496,16 +1496,18 @@ + { FT_MAKE_TAG('f', 'i', 'n', '3'), FinaProperty }, + { FT_MAKE_TAG('m', 'e', 'd', 'i'), MediProperty }, + { FT_MAKE_TAG('m', 'e', 'd', '2'), MediProperty }, +- { FT_MAKE_TAG('i', 'n', 'i', 't'), InitProperty }, +- { FT_MAKE_TAG('r', 'l', 'i', 'g'), RligProperty }, +- { FT_MAKE_TAG('c', 'a', 'l', 't'), CaltProperty }, +- { FT_MAKE_TAG('l', 'i', 'g', 'a'), LigaProperty }, +- { FT_MAKE_TAG('d', 'l', 'i', 'g'), DligProperty }, ++ { FT_MAKE_TAG('i', 'n', 'i', 't'), InitProperty }, ++ { FT_MAKE_TAG('r', 'l', 'i', 'g'), RligProperty }, ++ { FT_MAKE_TAG('c', 'a', 'l', 't'), CaltProperty }, ++ { FT_MAKE_TAG('l', 'i', 'g', 'a'), LigaProperty }, ++ { FT_MAKE_TAG('d', 'l', 'i', 'g'), DligProperty }, + {0, 0} + }; + +-static bool arabicSyriacOpenTypeShape(QOpenType *openType, QShaperItem *item) ++static bool arabicSyriacOpenTypeShape(QOpenType *openType, QShaperItem *item, bool *ot_ok) + { ++ *ot_ok = true; ++ + openType->selectScript(item->script, item->script == QFont::Arabic ? arabic_features : syriac_features); + int nglyphs = item->num_glyphs; + if (item->font->stringToCMap(item->string->unicode()+item->from, item->length, item->glyphs, item->advances, +@@ -1562,7 +1564,10 @@ + apply[i] |= IsolProperty|MediProperty|FinaProperty; + } + +- openType->shape(item, apply.data()); ++ if (!openType->shape(item, apply.data())) { ++ *ot_ok = false; ++ return false; ++ } + item->num_glyphs = nglyphs; + return openType->positionAndAdd(item); + } +@@ -1577,8 +1582,14 @@ + #if defined(Q_WS_X11) && !defined(QT_NO_XFTFREETYPE) + QOpenType *openType = item->font->openType(); + +- if (openType && openType->supportsScript(QFont::Arabic)) +- return arabicSyriacOpenTypeShape(openType, item); ++ if (openType && openType->supportsScript(QFont::Arabic)) { ++ bool ot_ok; ++ if (arabicSyriacOpenTypeShape(openType, item, &ot_ok)) ++ return true; ++ if (ot_ok) ++ return false; ++ // fall through to the non OT code ++ } + #endif + + QVarLengthArray shapedChars(item->length); +--- qt.orig/src/kernel/qfontengine_p.h ++++ qt.patched/src/kernel/qfontengine_p.h +@@ -490,8 +490,8 @@ + return supported_scripts[script]; + } + void selectScript(unsigned int script, const Features *features = 0); +- +- void shape(QShaperItem *item, const unsigned int *properties = 0); ++ ++ bool shape(QShaperItem *item, const unsigned int *properties = 0); + bool positionAndAdd(QShaperItem *item, bool doLogClusters = TRUE); + + OTL_GlyphItem glyphs() const { return otl_buffer->in_string; } +@@ -499,7 +499,7 @@ + void setProperty(int index, uint property) { otl_buffer->in_string[index].properties = property; } + + +-private: ++private: + bool checkScript(unsigned int script); + QFontEngine *fontEngine; + FT_Face face; +--- qt.orig/src/kernel/qfontengine_x11.cpp ++++ qt.patched/src/kernel/qfontengine_x11.cpp +@@ -154,7 +154,7 @@ + return; + + w += h; // add some pixels to width because of italic correction +- QBitmap bm( w, h, TRUE ); // create bitmap ++ QBitmap bm( w, h, TRUE ); // create bitmap + QPainter paint; + paint.begin( &bm ); // draw text in bitmap + fe->draw( &paint, 0, si->ascent, engine, si, textFlags ); +@@ -2396,7 +2396,7 @@ + qDebug("error loading gpos table: %d", error); + #endif + } +- ++ + for (uint i = 0; i < QFont::NScripts; ++i) + supported_scripts[i] = checkScript(i); + } +@@ -2427,7 +2427,7 @@ + if (requirements & RequiresGsub) { + if (!gsub) + return FALSE; +- ++ + FT_UShort script_index; + FT_Error error = TT_GSUB_Select_Script(gsub, tag, &script_index); + if (error) { +@@ -2437,11 +2437,11 @@ + return FALSE; + } + } +- ++ + if (requirements & RequiresGpos) { + if (!gpos) + return FALSE; +- ++ + FT_UShort script_index; + FT_Error error = TT_GPOS_Select_Script(gpos, script, &script_index); + if (error) { +@@ -2460,7 +2460,7 @@ + { + if (current_script == script) + return; +- ++ + assert(script < QFont::NScripts); + // find script in our list of supported scripts. + uint tag = ot_scripts[script].tag; +@@ -2497,7 +2497,7 @@ + } + } + } +- ++ + if (gpos) { + TT_GPOS_Clear_Features(gpos); + FT_UShort script_index; +@@ -2544,7 +2544,7 @@ + + extern void qt_heuristicPosition(QShaperItem *item); + +-void QOpenType::shape(QShaperItem *item, const unsigned int *properties) ++bool QOpenType::shape(QShaperItem *item, const unsigned int *properties) + { + length = item->num_glyphs; + +@@ -2571,8 +2571,11 @@ + + loadFlags = FT_LOAD_DEFAULT; + +- if (gsub) +- TT_GSUB_Apply_String(gsub, otl_buffer); ++ if (gsub) { ++ uint error = TT_GSUB_Apply_String(gsub, otl_buffer); ++ if (error && error != TTO_Err_Not_Covered) ++ return false; ++ } + + #ifdef OT_DEBUG + // qDebug("log clusters before shaping:"); +@@ -2584,6 +2587,8 @@ + qDebug("-----------------------------------------"); + // dump_string(otl_buffer); + #endif ++ ++ return true; + } + + bool QOpenType::positionAndAdd(QShaperItem *item, bool doLogClusters) +@@ -2600,7 +2605,7 @@ + unlockFTFace(static_cast(fontEngine)->font()); + #endif + } +- ++ + // make sure we have enough space to write everything back + if (item->num_glyphs < (int)otl_buffer->in_length) { + item->num_glyphs = otl_buffer->in_length; +@@ -2654,11 +2659,11 @@ + // ###### fix the case where we have y advances. How do we handle this in Uniscribe????? + if (positions[i].new_advance) { + item->advances[i] = item->flags & QTextEngine::RightToLeft +- ? -qRound((positions[i].x_advance >> 6)*scale) ++ ? -qRound((positions[i].x_advance >> 6)*scale) + : qRound((positions[i].x_advance >> 6)*scale); + } else { + item->advances[i] += item->flags & QTextEngine::RightToLeft +- ? -qRound((positions[i].x_advance >> 6)*scale) ++ ? -qRound((positions[i].x_advance >> 6)*scale) + : qRound((positions[i].x_advance >> 6)*scale); + } + item->offsets[i].x = qRound((positions[i].x_pos >> 6)*scale); +--- qt.orig/src/kernel/qscriptengine_x11.cpp ++++ qt.patched/src/kernel/qscriptengine_x11.cpp +@@ -45,7 +45,12 @@ + #ifndef QT_NO_XFTFREETYPE + QOpenType *openType = item->font->openType(); + if (openType && openType->supportsScript(QFont::Syriac)) { +- return arabicSyriacOpenTypeShape(openType, item); ++ bool ot_ok; ++ if (arabicSyriacOpenTypeShape(openType, item, &ot_ok)) ++ return true; ++ if (ot_ok) ++ return false; ++ // fall through to the non OT code + } + #endif + return basic_shape(item); --- qt-x11-free-3.3.6.orig/debian/patches/25_qtc_qpixmap_mitshm.dpatch +++ qt-x11-free-3.3.6/debian/patches/25_qtc_qpixmap_mitshm.dpatch @@ -0,0 +1,536 @@ +#! /bin/sh -e +# Qt-Copy patch #5 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qpixmap_x11.cpp ++++ qt.patched/src/kernel/qpixmap_x11.cpp +@@ -37,7 +37,19 @@ + + // NOT REVISED + ++#include "qplatformdefs.h" ++ ++#if defined(Q_OS_WIN32) && defined(QT_MITSHM) ++#undef QT_MITSHM ++#endif ++ ++#ifdef QT_MITSHM ++ ++// Use the MIT Shared Memory extension for pixmap<->image conversions ++#define QT_MITSHM_CONVERSIONS ++ + // Uncomment the next line to enable the MIT Shared Memory extension ++// for QPixmap::xForm() + // + // WARNING: This has some problems: + // +@@ -45,14 +57,13 @@ + // 2. Qt does not handle the ShmCompletion message, so you will + // get strange effects if you xForm() repeatedly. + // +-// #define QT_MITSHM ++// #define QT_MITSHM_XFORM + +-#if defined(Q_OS_WIN32) && defined(QT_MITSHM) +-#undef QT_MITSHM ++#else ++#undef QT_MITSHM_CONVERSIONS ++#undef QT_MITSHM_XFORM + #endif + +-#include "qplatformdefs.h" +- + #include "qbitmap.h" + #include "qpaintdevicemetrics.h" + #include "qimage.h" +@@ -91,7 +102,7 @@ inline static void qSafeXDestroyImage( X + MIT Shared Memory Extension support: makes xForm noticeably (~20%) faster. + *****************************************************************************/ + +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + + static bool xshminit = FALSE; + static XShmSegmentInfo xshminfo; +@@ -173,8 +184,100 @@ static bool qt_create_mitshm_buffer( con + // return FALSE; + // } + +-#endif // QT_MITSHM ++#endif // QT_MITSHM_XFORM + ++#ifdef QT_MITSHM_CONVERSIONS ++ ++static bool qt_mitshm_error = false; ++static int qt_mitshm_errorhandler( Display*, XErrorEvent* ) ++{ ++ qt_mitshm_error = true; ++ return 0; ++} ++ ++static XImage* qt_XShmCreateImage( Display* dpy, Visual* visual, unsigned int depth, ++ int format, int /*offset*/, char* /*data*/, unsigned int width, unsigned int height, ++ int /*bitmap_pad*/, int /*bytes_per_line*/, XShmSegmentInfo* shminfo ) ++{ ++ if( width * height * depth < 100*100*32 ) ++ return NULL; ++ static int shm_inited = -1; ++ if( shm_inited == -1 ) { ++ if( XShmQueryExtension( dpy )) ++ shm_inited = 1; ++ else ++ shm_inited = 0; ++ } ++ if( shm_inited == 0 ) ++ return NULL; ++ XImage* xi = XShmCreateImage( dpy, visual, depth, format, NULL, shminfo, width, ++ height ); ++ if( xi == NULL ) ++ return NULL; ++ shminfo->shmid = shmget( IPC_PRIVATE, xi->bytes_per_line * xi->height, ++ IPC_CREAT|0600); ++ if( shminfo->shmid < 0 ) { ++ XDestroyImage( xi ); ++ return NULL; ++ } ++ shminfo->readOnly = False; ++ shminfo->shmaddr = (char*)shmat( shminfo->shmid, 0, 0 ); ++ if( shminfo->shmaddr == (char*)-1 ) { ++ XDestroyImage( xi ); ++ shmctl( shminfo->shmid, IPC_RMID, 0 ); ++ return NULL; ++ } ++ xi->data = shminfo->shmaddr; ++#ifndef QT_MITSHM_RMID_IGNORES_REFCOUNT ++ // mark as deleted to automatically free the memory in case ++ // of a crash (but this doesn't work e.g. on Solaris) ++ shmctl( shminfo->shmid, IPC_RMID, 0 ); ++#endif ++ if( shm_inited == 1 ) { // first time ++ XErrorHandler old_h = XSetErrorHandler( qt_mitshm_errorhandler ); ++ XShmAttach( dpy, shminfo ); ++ shm_inited = 2; ++ XSync( dpy, False ); ++ XSetErrorHandler( old_h ); ++ if( qt_mitshm_error ) { // oops ... perhaps we are remote? ++ shm_inited = 0; ++ XDestroyImage( xi ); ++ shmdt( shminfo->shmaddr ); ++#ifdef QT_MITSHM_RMID_IGNORES_REFCOUNT ++ shmctl( shminfo->shmid, IPC_RMID, 0 ); ++#endif ++ return NULL; ++ } ++ } else ++ XShmAttach( dpy, shminfo ); ++ return xi; ++} ++ ++static void qt_XShmDestroyImage( XImage* xi, XShmSegmentInfo* shminfo ) ++{ ++ XShmDetach( QPaintDevice::x11AppDisplay(), shminfo ); ++ XDestroyImage( xi ); ++ shmdt( shminfo->shmaddr ); ++#ifdef QT_MITSHM_RMID_IGNORES_REFCOUNT ++ shmctl( shminfo->shmid, IPC_RMID, 0 ); ++#endif ++} ++ ++static XImage* qt_XShmGetImage( const QPixmap* pix, int format, ++ XShmSegmentInfo* shminfo ) ++{ ++ XImage* xi = qt_XShmCreateImage( pix->x11Display(), (Visual*)pix->x11Visual(), ++ pix->depth(), format, 0, 0, pix->width(), pix->height(), 32, 0, shminfo ); ++ if( xi == NULL ) ++ return NULL; ++ if( XShmGetImage( pix->x11Display(), pix->handle(), xi, 0, 0, AllPlanes ) == False ) { ++ qt_XShmDestroyImage( xi, shminfo ); ++ return NULL; ++ } ++ return xi; ++} ++ ++#endif // QT_MITSHM_CONVERSIONS + + /***************************************************************************** + Internal functions +@@ -625,9 +728,20 @@ QImage QPixmap::convertToImage() const + d = 32; // > 8 ==> 32 + + XImage *xi = (XImage *)data->ximage; // any cached ximage? +- if ( !xi ) // fetch data from X server +- xi = XGetImage( x11Display(), hd, 0, 0, w, h, AllPlanes, ++#ifdef QT_MITSHM_CONVERSIONS ++ bool mitshm_ximage = false; ++ XShmSegmentInfo shminfo; ++#endif ++ if ( !xi ) { // fetch data from X server ++#ifdef QT_MITSHM_CONVERSIONS ++ xi = qt_XShmGetImage( this, mono ? XYPixmap : ZPixmap, &shminfo ); ++ if( xi ) { ++ mitshm_ximage = true; ++ } else ++#endif ++ xi = XGetImage( x11Display(), hd, 0, 0, w, h, AllPlanes, + mono ? XYPixmap : ZPixmap ); ++ } + Q_CHECK_PTR( xi ); + + QImage::Endian bitOrder = QImage::IgnoreEndian; +@@ -636,15 +750,31 @@ QImage QPixmap::convertToImage() const + QImage::LittleEndian : QImage::BigEndian; + } + image.create( w, h, d, 0, bitOrder ); +- if ( image.isNull() ) // could not create image ++ if ( image.isNull() ) { // could not create image ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) ++ qt_XShmDestroyImage( xi, &shminfo ); ++ else ++#endif ++ qSafeXDestroyImage( xi ); + return image; ++ } + + const QPixmap* msk = mask(); + const QPixmap *alf = data->alphapm; + + QImage alpha; + if (alf) { +- XImage *axi = XGetImage(x11Display(), alf->hd, 0, 0, w, h, AllPlanes, ZPixmap); ++ XImage* axi; ++#ifdef QT_MITSHM_CONVERSIONS ++ bool mitshm_aximage = false; ++ XShmSegmentInfo ashminfo; ++ axi = qt_XShmGetImage( alf, ZPixmap, &ashminfo ); ++ if( axi ) { ++ mitshm_aximage = true; ++ } else ++#endif ++ axi = XGetImage(x11Display(), alf->hd, 0, 0, w, h, AllPlanes, ZPixmap); + + if (axi) { + image.setAlphaBuffer( TRUE ); +@@ -658,7 +788,12 @@ QImage QPixmap::convertToImage() const + src += axi->bytes_per_line; + } + +- qSafeXDestroyImage( axi ); ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_aximage ) ++ qt_XShmDestroyImage( axi, &ashminfo ); ++ else ++#endif ++ qSafeXDestroyImage( axi ); + } + } else if (msk) { + image.setAlphaBuffer( TRUE ); +@@ -800,6 +935,12 @@ QImage QPixmap::convertToImage() const + xi->bits_per_pixel ); + #endif + image.reset(); ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) ++ qt_XShmDestroyImage( xi, &shminfo ); ++ else ++#endif ++ qSafeXDestroyImage( xi ); + return image; + } + +@@ -905,10 +1046,22 @@ QImage QPixmap::convertToImage() const + delete [] carr; + } + if ( data->optim != BestOptim ) { // throw away image data +- qSafeXDestroyImage( xi ); ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) ++ qt_XShmDestroyImage( xi, &shminfo ); ++ else ++#endif ++ qSafeXDestroyImage( xi ); + ((QPixmap*)this)->data->ximage = 0; +- } else // keep ximage data ++ } else { // keep ximage data ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) { // copy the XImage? ++ qt_XShmDestroyImage( xi, &shminfo ); ++ xi = 0; ++ } ++#endif + ((QPixmap*)this)->data->ximage = xi; ++ } + + return image; + } +@@ -1078,6 +1231,11 @@ bool QPixmap::convertFromImage( const QI + bool trucol = (visual->c_class == TrueColor); + int nbytes = image.numBytes(); + uchar *newbits= 0; ++ int newbits_size = 0; ++#ifdef QT_MITSHM_CONVERSIONS ++ bool mitshm_ximage = false; ++ XShmSegmentInfo shminfo; ++#endif + + if ( trucol ) { // truecolor display + QRgb pix[256]; // pixel translation table +@@ -1106,9 +1264,18 @@ bool QPixmap::convertFromImage( const QI + } + } + +- xi = XCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0 ); ++#ifdef QT_MITSHM_CONVERSIONS ++ xi = qt_XShmCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0, &shminfo ); ++ if( xi != NULL ) { ++ mitshm_ximage = true; ++ newbits = (uchar*)xi->data; ++ } ++ else ++#endif ++ xi = XCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0 ); + Q_CHECK_PTR( xi ); +- newbits = (uchar *)malloc( xi->bytes_per_line*h ); ++ if( newbits == NULL ) ++ newbits = (uchar *)malloc( xi->bytes_per_line*h ); + Q_CHECK_PTR( newbits ); + if ( !newbits ) // no memory + return FALSE; +@@ -1314,6 +1481,7 @@ bool QPixmap::convertFromImage( const QI + } + + newbits = (uchar *)malloc( nbytes ); // copy image into newbits ++ newbits_size = nbytes; + Q_CHECK_PTR( newbits ); + if ( !newbits ) // no memory + return FALSE; +@@ -1431,11 +1599,18 @@ bool QPixmap::convertFromImage( const QI + } + + if ( !xi ) { // X image not created +- xi = XCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0 ); ++#ifdef QT_MITSHM_CONVERSIONS ++ xi = qt_XShmCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0, &shminfo ); ++ if( xi != NULL ) ++ mitshm_ximage = true; ++ else ++#endif ++ xi = XCreateImage( dpy, visual, dd, ZPixmap, 0, 0, w, h, 32, 0 ); + if ( xi->bits_per_pixel == 16 ) { // convert 8 bpp ==> 16 bpp + ushort *p2; + int p2inc = xi->bytes_per_line/sizeof(ushort); + ushort *newerbits = (ushort *)malloc( xi->bytes_per_line * h ); ++ newbits_size = xi->bytes_per_line * h; + Q_CHECK_PTR( newerbits ); + if ( !newerbits ) // no memory + return FALSE; +@@ -1453,7 +1628,15 @@ bool QPixmap::convertFromImage( const QI + "(bpp=%d)", xi->bits_per_pixel ); + #endif + } +- xi->data = (char *)newbits; ++#ifdef QT_MITSHM_CONVERSIONS ++ if( newbits_size > 0 && mitshm_ximage ) { // need to copy to shared memory ++ memcpy( xi->data, newbits, newbits_size ); ++ free( newbits ); ++ newbits = (uchar*)xi->data; ++ } ++ else ++#endif ++ xi->data = (char *)newbits; + } + + if ( hd && (width() != (int)w || height() != (int)h || this->depth() != dd) ) { +@@ -1486,19 +1669,24 @@ bool QPixmap::convertFromImage( const QI + + } + +- XPutImage( dpy, hd, qt_xget_readonly_gc( x11Screen(), FALSE ), +- xi, 0, 0, 0, 0, w, h ); ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) ++ XShmPutImage( dpy, hd, qt_xget_readonly_gc( x11Screen(), FALSE ), ++ xi, 0, 0, 0, 0, w, h, False ); ++ else ++#endif ++ XPutImage( dpy, hd, qt_xget_readonly_gc( x11Screen(), FALSE ), ++ xi, 0, 0, 0, 0, w, h ); + +- if ( data->optim != BestOptim ) { // throw away image +- qSafeXDestroyImage( xi ); +- data->ximage = 0; +- } else { // keep ximage that we created +- data->ximage = xi; +- } + data->w = w; + data->h = h; + data->d = dd; + ++ XImage* axi = NULL; ++#ifdef QT_MITSHM_CONVERSIONS ++ bool mitshm_aximage = false; ++ XShmSegmentInfo ashminfo; ++#endif + if ( image.hasAlphaBuffer() ) { + QBitmap m; + m = image.createAlphaMask( conversion_flags ); +@@ -1534,13 +1722,22 @@ bool QPixmap::convertFromImage( const QI + data->alphapm->rendhd = + (HANDLE) XftDrawCreateAlpha( x11Display(), data->alphapm->hd, 8 ); + +- XImage *axi = XCreateImage(x11Display(), (Visual *) x11Visual(), +- 8, ZPixmap, 0, 0, w, h, 8, 0); ++#ifdef QT_MITSHM_CONVERSIONS ++ axi = qt_XShmCreateImage( x11Display(), (Visual*)x11Visual(), ++ 8, ZPixmap, 0, 0, w, h, 8, 0, &ashminfo ); ++ if( axi != NULL ) ++ mitshm_aximage = true; ++ else ++#endif ++ axi = XCreateImage(x11Display(), (Visual *) x11Visual(), ++ 8, ZPixmap, 0, 0, w, h, 8, 0); + + if (axi) { +- // the data is deleted by qSafeXDestroyImage +- axi->data = (char *) malloc(h * axi->bytes_per_line); +- Q_CHECK_PTR( axi->data ); ++ if( axi->data==NULL ) { ++ // the data is deleted by qSafeXDestroyImage ++ axi->data = (char *) malloc(h * axi->bytes_per_line); ++ Q_CHECK_PTR( axi->data ); ++ } + char *aptr = axi->data; + + if (image.depth() == 32) { +@@ -1558,14 +1755,48 @@ bool QPixmap::convertFromImage( const QI + } + + GC gc = XCreateGC(x11Display(), data->alphapm->hd, 0, 0); +- XPutImage(dpy, data->alphapm->hd, gc, axi, 0, 0, 0, 0, w, h); ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_aximage ) ++ XShmPutImage( dpy, data->alphapm->hd, gc, axi, 0, 0, 0, 0, w, h, False ); ++ else ++#endif ++ XPutImage(dpy, data->alphapm->hd, gc, axi, 0, 0, 0, 0, w, h); + XFreeGC(x11Display(), gc); +- qSafeXDestroyImage(axi); + } + } + #endif // QT_NO_XFTFREETYPE + } + ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage || mitshm_aximage ) ++ XSync( x11Display(), False ); // wait until processed ++#endif ++ ++ if ( data->optim != BestOptim ) { // throw away image ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) ++ qt_XShmDestroyImage( xi, &shminfo ); ++ else ++#endif ++ qSafeXDestroyImage( xi ); ++ data->ximage = 0; ++ } else { // keep ximage that we created ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_ximage ) { // copy the XImage? ++ qt_XShmDestroyImage( xi, &shminfo ); ++ xi = 0; ++ } ++#endif ++ data->ximage = xi; ++ } ++ if( axi ) { ++#ifdef QT_MITSHM_CONVERSIONS ++ if( mitshm_aximage ) ++ qt_XShmDestroyImage( axi, &ashminfo ); ++ else ++#endif ++ qSafeXDestroyImage(axi); ++ } + return TRUE; + } + +@@ -1722,7 +1953,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + return pm; + } + +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + static bool try_once = TRUE; + if (try_once) { + try_once = FALSE; +@@ -1755,7 +1986,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + dbpl = ((w*bpp+31)/32)*4; + dbytes = dbpl*h; + +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + if ( use_mitshm ) { + dptr = (uchar *)xshmimg->data; + uchar fillbyte = bpp == 8 ? white.pixel() : 0xff; +@@ -1771,7 +2002,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + memset( dptr, Qt::white.pixel( x11Screen() ), dbytes ); + else + memset( dptr, 0xff, dbytes ); +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + } + #endif + +@@ -1802,7 +2033,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + } else { + xbpl = (w*bpp)/8; + p_inc = dbpl - xbpl; +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + if ( use_mitshm ) + p_inc = xshmimg->bytes_per_line - xbpl; + #endif +@@ -1839,7 +2070,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + QPixmap pm( w, h ); + pm.data->uninit = FALSE; + pm.x11SetScreen( x11Screen() ); +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + if ( use_mitshm ) { + XCopyArea( dpy, xshmpm, pm.handle(), gc, 0, 0, w, h, 0, 0 ); + } else { +@@ -1848,7 +2079,7 @@ QPixmap QPixmap::xForm( const QWMatrix & + ZPixmap, 0, (char *)dptr, w, h, 32, 0 ); + XPutImage( dpy, pm.handle(), gc, xi, 0, 0, 0, 0, w, h); + qSafeXDestroyImage( xi ); +-#if defined(QT_MITSHM) ++#if defined(QT_MITSHM_XFORM) + } + #endif + +--- qt.orig/mkspecs/linux-g++/qplatformdefs.h ++++ qt.patched/mkspecs/linux-g++/qplatformdefs.h +@@ -102,5 +102,6 @@ + #define QT_VSNPRINTF ::vsnprintf + #endif + ++#define QT_MITSHM + + #endif // QPLATFORMDEFS_H --- qt-x11-free-3.3.6.orig/debian/patches/29_qtc_fix_rotated_randr.dpatch +++ qt-x11-free-3.3.6/debian/patches/29_qtc_fix_rotated_randr.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e +# Qt-Copy patch #32 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qapplication_x11.cpp ++++ qt.patched/src/kernel/qapplication_x11.cpp +@@ -3399,7 +3399,8 @@ int QApplication::x11ProcessEvent( XEven + #endif + + #ifndef QT_NO_XRANDR +- if (event->type == xrandr_eventbase + RRScreenChangeNotify) { ++ if (event->type == xrandr_eventbase + RRScreenChangeNotify ++ || ( event->type == ConfigureNotify && event->xconfigure.window == QPaintDevice::x11AppRootWindow())) { + // update Xlib internals with the latest screen configuration + XRRUpdateConfiguration(event); + --- qt-x11-free-3.3.6.orig/debian/patches/34_qtc_dnd_optimization.dpatch +++ qt-x11-free-3.3.6/debian/patches/34_qtc_dnd_optimization.dpatch @@ -0,0 +1,202 @@ +#! /bin/sh -e +# Qt-Copy patch #1 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qdnd_x11.cpp ++++ qt.patched/src/kernel/qdnd_x11.cpp +@@ -49,13 +49,15 @@ + #include "qdragobject.h" + #include "qobjectlist.h" + #include "qcursor.h" ++#include "qbitmap.h" ++#include "qpainter.h" + + #include "qt_x11_p.h" + + // conflict resolution + +-// unused, may be used again later: const int XKeyPress = KeyPress; +-// unused, may be used again later: const int XKeyRelease = KeyRelease; ++const int XKeyPress = KeyPress; ++const int XKeyRelease = KeyRelease; + #undef KeyPress + #undef KeyRelease + +@@ -249,20 +251,47 @@ class QShapedPixmapWidget : public QWidg + public: + QShapedPixmapWidget(int screen = -1) : + QWidget(QApplication::desktop()->screen( screen ), +- 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ) ++ 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ), oldpmser( 0 ), oldbmser( 0 ) + { + } + +- void setPixmap(QPixmap pm) ++ void setPixmap(QPixmap pm, QPoint hot) + { +- if ( pm.mask() ) { ++ int bmser = pm.mask() ? pm.mask()->serialNumber() : 0; ++ if( oldpmser == pm.serialNumber() && oldbmser == bmser ++ && oldhot == hot ) ++ return; ++ oldpmser = pm.serialNumber(); ++ oldbmser = bmser; ++ oldhot = hot; ++ bool hotspot_in = !(hot.x() < 0 || hot.y() < 0 || hot.x() >= pm.width() || hot.y() >= pm.height()); ++// if the pixmap has hotspot in its area, make a "hole" in it at that position ++// this will allow XTranslateCoordinates() to find directly the window below the cursor instead ++// of finding this pixmap, and therefore there won't be needed any (slow) search for the window ++// using findRealWindow() ++ if( hotspot_in ) { ++ QBitmap mask = pm.mask() ? *pm.mask() : QBitmap( pm.width(), pm.height()); ++ if( !pm.mask()) ++ mask.fill( Qt::color1 ); ++ QPainter p( &mask ); ++ p.setPen( Qt::color0 ); ++ p.drawPoint( hot.x(), hot.y()); ++ p.end(); ++ pm.setMask( mask ); ++ setMask( mask ); ++ } else if ( pm.mask() ) { + setMask( *pm.mask() ); + } else { + clearMask(); + } + resize(pm.width(),pm.height()); + setErasePixmap(pm); ++ erase(); + } ++private: ++ int oldpmser; ++ int oldbmser; ++ QPoint oldhot; + }; + + QShapedPixmapWidget * qt_xdnd_deco = 0; +@@ -859,6 +888,45 @@ void QDragManager::timerEvent( QTimerEve + move( QCursor::pos() ); + } + ++static bool qt_xdnd_was_move = false; ++static bool qt_xdnd_found = false; ++// check whole incoming X queue for move events ++// checking whole queue is done by always returning False in the predicate ++// if there's another move event in the queue, and there's not a mouse button ++// or keyboard or ClientMessage event before it, the current move event ++// may be safely discarded ++// this helps avoiding being overloaded by being flooded from many events ++// from the XServer ++static ++Bool qt_xdnd_predicate( Display*, XEvent* ev, XPointer ) ++{ ++ if( qt_xdnd_found ) ++ return False; ++ if( ev->type == MotionNotify ) ++ { ++ qt_xdnd_was_move = true; ++ qt_xdnd_found = true; ++ } ++ if( ev->type == ButtonPress || ev->type == ButtonRelease ++ || ev->type == XKeyPress || ev->type == XKeyRelease ++ || ev->type == ClientMessage ) ++ { ++ qt_xdnd_was_move = false; ++ qt_xdnd_found = true; ++ } ++ return False; ++} ++ ++static ++bool qt_xdnd_another_movement() ++{ ++ qt_xdnd_was_move = false; ++ qt_xdnd_found = false; ++ XEvent dummy; ++ XCheckIfEvent( qt_xdisplay(), &dummy, qt_xdnd_predicate, NULL ); ++ return qt_xdnd_was_move; ++} ++ + bool QDragManager::eventFilter( QObject * o, QEvent * e) + { + if ( beingCancelled ) { +@@ -881,8 +949,10 @@ bool QDragManager::eventFilter( QObject + + if ( e->type() == QEvent::MouseMove ) { + QMouseEvent* me = (QMouseEvent *)e; +- updateMode(me->stateAfter()); +- move( me->globalPos() ); ++ if( !qt_xdnd_another_movement()) { ++ updateMode(me->stateAfter()); ++ move( me->globalPos() ); ++ } + return TRUE; + } else if ( e->type() == QEvent::MouseButtonRelease ) { + qApp->removeEventFilter( this ); +@@ -1106,7 +1176,7 @@ void QDragManager::move( const QPoint & + delete qt_xdnd_deco; + qt_xdnd_deco = new QShapedPixmapWidget( screen ); + } +- updatePixmap(); ++ updatePixmap( globalPos ); + + if ( qt_xdnd_source_sameanswer.contains( globalPos ) && + qt_xdnd_source_sameanswer.isValid() ) { +@@ -1679,7 +1749,7 @@ bool QDragManager::drag( QDragObject * o + // qt_xdnd_source_object persists until we get an xdnd_finish message + } + +-void QDragManager::updatePixmap() ++void QDragManager::updatePixmap( const QPoint& cursorPos ) + { + if ( qt_xdnd_deco ) { + QPixmap pm; +@@ -1694,9 +1764,8 @@ void QDragManager::updatePixmap() + defaultPm = new QPixmap(default_pm); + pm = *defaultPm; + } +- qt_xdnd_deco->setPixmap(pm); +- qt_xdnd_deco->move(QCursor::pos()-pm_hot); +- qt_xdnd_deco->repaint(FALSE); ++ qt_xdnd_deco->setPixmap(pm, pm_hot); ++ qt_xdnd_deco->move(cursorPos-pm_hot); + //if ( willDrop ) { + qt_xdnd_deco->show(); + //} else { +@@ -1705,4 +1774,9 @@ void QDragManager::updatePixmap() + } + } + ++void QDragManager::updatePixmap() ++{ ++ updatePixmap( QCursor::pos()); ++} ++ + #endif // QT_NO_DRAGANDDROP +--- qt.orig/src/kernel/qdragobject.h ++++ qt.patched/src/kernel/qdragobject.h +@@ -245,6 +245,7 @@ private: + void move( const QPoint & ); + void drop(); + void updatePixmap(); ++ void updatePixmap( const QPoint& cursorPos ); + + private: + QDragObject * object; --- qt-x11-free-3.3.6.orig/debian/patches/16_fix_opengl_check.dpatch +++ qt-x11-free-3.3.6/debian/patches/16_fix_opengl_check.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp.orig 2004-08-18 14:55:20.629068213 +0200 ++++ qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp 2004-08-18 15:00:43.090260739 +0200 +@@ -125,7 +125,7 @@ + if (gl_syms_resolved) + return TRUE; + +- QLibrary gl("GL"); ++ QLibrary gl("GL.so.1"); + gl.setAutoUnload(FALSE); + + qt_glCallLists = (_glCallLists) gl.resolve("glCallLists"); +@@ -283,7 +283,7 @@ + typedef Status (*_XmuLookupStandardColormap)( Display *dpy, int screen, VisualID visualid, unsigned int depth, + Atom property, Bool replace, Bool retain ); + _XmuLookupStandardColormap qt_XmuLookupStandardColormap; +- qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu", "XmuLookupStandardColormap"); ++ qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu.so.6", "XmuLookupStandardColormap"); + if (!qt_XmuLookupStandardColormap) + qFatal("Unable to resolve Xmu symbols - please check your Xmu library installation."); + #define XmuLookupStandardColormap qt_XmuLookupStandardColormap +--- qt-x11-free-3.3.3/src/tools/qlibrary.cpp.orig 2004-08-18 14:56:00.322185890 +0200 ++++ qt-x11-free-3.3.3/src/tools/qlibrary.cpp 2004-08-18 14:57:51.939637946 +0200 +@@ -425,6 +425,7 @@ + } else { + tmpfilename = QString( "lib%1" ).arg( filename ); + } ++ if ( !filename.contains(".so") ) + tmpfilename += filter; + if(QFile::exists(tmpfilename) || it == filters.end()) { + filename = tmpfilename; --- qt-x11-free-3.3.6.orig/debian/patches/05_qvfb_cpp.dpatch +++ qt-x11-free-3.3.6/debian/patches/05_qvfb_cpp.dpatch @@ -0,0 +1,42 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -ruN qt-x11-free-3.1.1+cvs.20030123-old/tools/qvfb/pda.skin qt-x11-free-3.1.1+cvs.20030123/tools/qvfb/pda.skin +--- qt-x11-free-3.1.1+cvs.20030123-old/tools/qvfb/pda.skin 2002-09-06 14:32:46.000000000 +0200 ++++ qt-x11-free-3.1.1+cvs.20030123/tools/qvfb/pda.skin 2003-01-26 20:46:30.000000000 +0100 +@@ -1,4 +1,4 @@ +-pda_up.png pda_down.png ++/usr/share/qvfb/pda_up.png /usr/share/qvfb/pda_down.png + 57 81 + 240 320 + 0.5 +diff -ruN qt-x11-free-3.1.1+cvs.20030123-old/tools/qvfb/qvfb.cpp qt-x11-free-3.1.1+cvs.20030123/tools/qvfb/qvfb.cpp +--- qt-x11-free-3.1.1+cvs.20030123-old/tools/qvfb/qvfb.cpp 2002-10-04 17:27:31.000000000 +0200 ++++ qt-x11-free-3.1.1+cvs.20030123/tools/qvfb/qvfb.cpp 2003-01-26 20:47:19.000000000 +0100 +@@ -80,7 +80,7 @@ + bool vis = isVisible(); + if ( vis ) hide(); + menuBar()->hide(); +- Skin *skin = new Skin( this, skin_name, w, h ); ++ Skin *skin = new Skin( this, QString::fromLatin1( "/etc/qt3/qvfb/" ) + skin_name, w, h ); + view = new QVFbView( display_id, w, h, d, skin ); + skin->setView( view ); + view->setMargin( 0 ); --- qt-x11-free-3.3.6.orig/debian/patches/37_qtc_dragobject-dont-prefer-unknown.dpatch +++ qt-x11-free-3.3.6/debian/patches/37_qtc_dragobject-dont-prefer-unknown.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e +# Qt-Copy patch #38 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qdragobject.cpp ++++ qt.patched/src/kernel/qdragobject.cpp +@@ -844,6 +844,16 @@ bool QTextDrag::decode( const QMimeSourc + { + if(!e) + return FALSE; ++ ++ // when subtype is not specified, try text/plain first, otherwise this may read ++ // things like text/x-moz-url even though better targets are available ++ if( subtype.isNull()) { ++ QCString subtmp = "plain"; ++ if( decode( e, str, subtmp )) { ++ subtype = subtmp; ++ return true; ++ } ++ } + + if ( e->cacheType == QMimeSource::Text ) { + str = *e->cache.txt.str; --- qt-x11-free-3.3.6.orig/debian/patches/46_immodule_keyrelease_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/46_immodule_keyrelease_fix.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make it compile on mips / mipsel + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qapplication_x11.cpp ++++ qt.patched/src/kernel/qapplication_x11.cpp +@@ -5221,11 +5221,12 @@ + } else { + key = (int)(long)keyDict->find( keycode ); + if ( key ) +- if( !willRepeat ) // Take out key of dictionary only if this call. ++ if( !willRepeat && statefulTranslation ) // Take out key of dictionary only if this call. + keyDict->take( keycode ); + long s = (long)textDict->find( keycode ); + if ( s ) { +- textDict->take( keycode ); ++ if( statefulTranslation ) ++ textDict->take( keycode ); + ascii = (char)(s-256); + } + } --- qt-x11-free-3.3.6.orig/debian/patches/18_fix_makeqpf_qembed.dpatch +++ qt-x11-free-3.3.6/debian/patches/18_fix_makeqpf_qembed.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e +## 18_fix_makeqpf_qembed.dpatch by Martin Loschwitz +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix makeqpf by make it not use stuff defined in Qt embedded + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -ruN qt-x11-free-3.3.3.old/tools/makeqpf/main.cpp qt-x11-free-3.3.3/tools/makeqpf/main.cpp +--- qt-x11-free-3.3.3.old/tools/makeqpf/main.cpp 2004-06-23 14:13:52.000000000 +0000 ++++ qt-x11-free-3.3.3/tools/makeqpf/main.cpp 2004-08-14 08:53:01.000000000 +0000 +@@ -124,8 +124,6 @@ + } + }; + +-extern QString qws_topdir(); +- + class MakeQPF : public QMainWindow + { + Q_OBJECT +@@ -139,7 +137,7 @@ + view->addColumn("Weight"); + view->addColumn("Style"); + setCentralWidget(view); +- QString fontdir = qws_topdir() + "/lib/fonts"; ++ QString fontdir = QString(getenv("QTDIR")) + "/lib/fonts"; + readFontDir(fontdir); + + connect(view,SIGNAL(selectionChanged(QListViewItem*)), --- qt-x11-free-3.3.6.orig/debian/patches/09_amd64_lib64.dpatch +++ qt-x11-free-3.3.6/debian/patches/09_amd64_lib64.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/mkspecs/linux-g++-64/qmake.conf ++++ qt.patched/mkspecs/linux-g++-64/qmake.conf +@@ -41,11 +41,11 @@ + QMAKE_INCDIR = + QMAKE_LIBDIR = + QMAKE_INCDIR_X11 = /usr/X11R6/include +-QMAKE_LIBDIR_X11 = /usr/X11R6/lib64 ++QMAKE_LIBDIR_X11 = /usr/X11R6/lib + QMAKE_INCDIR_QT = $(QTDIR)/include + QMAKE_LIBDIR_QT = $(QTDIR)/lib + QMAKE_INCDIR_OPENGL = /usr/X11R6/include +-QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64 ++QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib + + QMAKE_LINK = g++ + QMAKE_LINK_SHLIB = g++ --- qt-x11-free-3.3.6.orig/debian/patches/17_qlistview_crash_iterator.dpatch +++ qt-x11-free-3.3.6/debian/patches/17_qlistview_crash_iterator.dpatch @@ -0,0 +1,58 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qlistview.cpp ++++ qt.patched/src/widgets/qlistview.cpp +@@ -7568,21 +7568,21 @@ + + QListViewItemIterator &QListViewItemIterator::operator++() + { +- if ( !curr ) +- return *this; ++ do { ++ if ( !curr ) ++ return *this; + +- QListViewItem *item = curr->firstChild(); +- if ( !item ) { +- while ( (item = curr->nextSibling()) == 0 ) { +- curr = curr->parent(); +- if ( curr == 0 ) +- break; ++ QListViewItem *item = curr->firstChild(); ++ if ( !item ) { ++ while ( (item = curr->nextSibling()) == 0 ) { ++ curr = curr->parent(); ++ if ( curr == 0 ) ++ break; ++ } + } +- } +- curr = item; +- // if the next one doesn't match the flags we try one more ahead +- if ( curr && !matchesFlags( curr ) ) +- ++( *this ); ++ curr = item; ++ // if the next one doesn't match the flags we try one more ahead ++ } while ( curr && !matchesFlags( curr ) ); + return *this; + } + --- qt-x11-free-3.3.6.orig/debian/patches/27_qtc_qscrollview-windowactivate-fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/27_qtc_qscrollview-windowactivate-fix.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e +# Qt-Copy patch #44 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qscrollview.cpp ++++ qt.patch/src/widgets/qscrollview.cpp +@@ -1551,6 +1551,9 @@ + case QEvent::LayoutHint: + d->autoResizeHint(this); + break; ++ case QEvent::WindowActivate: ++ case QEvent::WindowDeactivate: ++ return TRUE; + default: + break; + } --- qt-x11-free-3.3.6.orig/debian/patches/31_gcc4_buildkey.dpatch +++ qt-x11-free-3.3.6/debian/patches/31_gcc4_buildkey.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/configure ++++ qt.patched/configure +@@ -3031,7 +3031,7 @@ + COMPILER_VERSION="3.*" + ;; + *4.*) +- COMPILER_VERSION="4" ++ COMPILER_VERSION="4.*" + ;; + *) + ;; --- qt-x11-free-3.3.6.orig/debian/patches/13_qt335_qlistview_crash_fix.dpatch +++ qt-x11-free-3.3.6/debian/patches/13_qt335_qlistview_crash_fix.dpatch @@ -0,0 +1,31 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qlistview.cpp ++++ qt.patched/src/widgets/qlistview.cpp +@@ -3231,6 +3231,7 @@ + d->focusItem = 0; + d->selectAnchor = 0; + d->pressedItem = 0; ++ d->highlighted = 0; + + // if it's down its downness makes no sense, so undown it + d->buttonDown = FALSE; --- qt-x11-free-3.3.6.orig/debian/patches/23_qtc_qclipboard_hack.dpatch +++ qt-x11-free-3.3.6/debian/patches/23_qtc_qclipboard_hack.dpatch @@ -0,0 +1,63 @@ +#! /bin/sh -e +# Qt-Copy patch #48 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- bla/src/kernel/qclipboard_x11.cpp.sav 2004-04-30 12:00:06.000000000 +0200 ++++ bla/src/kernel/qclipboard_x11.cpp 2004-05-09 21:18:10.269264304 +0200 +@@ -109,6 +109,7 @@ static int pending_timer_id = 0; + static bool pending_clipboard_changed = FALSE; + static bool pending_selection_changed = FALSE; + ++Q_EXPORT bool qt_qclipboard_bailout_hack = false; + + // event capture mechanism for qt_xclb_wait_for_event + static bool waiting_for_data = FALSE; +@@ -453,6 +454,15 @@ static int qt_xclb_event_filter(XEvent * + return 0; + } + ++static bool selection_request_pending = false; ++ ++static Bool check_selection_request_pending( Display*, XEvent* e, XPointer ) ++ { ++ if( e->type == SelectionRequest && e->xselectionrequest.owner == owner->winId()) ++ selection_request_pending = true; ++ return False; ++ } ++ + bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event, + int timeout ) + { +@@ -504,6 +514,14 @@ bool qt_xclb_wait_for_event( Display *dp + do { + if ( XCheckTypedWindowEvent(dpy,win,type,event) ) + return TRUE; ++ if( qt_qclipboard_bailout_hack ) { ++ XEvent dummy; ++ selection_request_pending = false; ++ if ( owner != NULL ) ++ XCheckIfEvent(dpy,&dummy,check_selection_request_pending,NULL); ++ if( selection_request_pending ) ++ return TRUE; ++ } + + now = QTime::currentTime(); + if ( started > now ) // crossed midnight --- qt-x11-free-3.3.6.orig/debian/patches/39_qtc_qpopup_has_mouse.dpatch +++ qt-x11-free-3.3.6/debian/patches/39_qtc_qpopup_has_mouse.dpatch @@ -0,0 +1,68 @@ +#! /bin/sh -e +# Qt-Copy patch #59 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qpopupmenu.cpp ++++ qt.patched/src/widgets/qpopupmenu.cpp +@@ -253,6 +253,7 @@ public: + } scroll; + QSize calcSize; + QRegion mouseMoveBuffer; ++ uint hasmouse : 1; + }; + + static QPopupMenu* active_popup_menu = 0; +@@ -272,6 +273,7 @@ QPopupMenu::QPopupMenu( QWidget *parent, + d->scroll.scrollableSize = d->scroll.topScrollableIndex = 0; + d->scroll.scrollable = QPopupMenuPrivate::Scroll::ScrollNone; + d->scroll.scrolltimer = 0; ++ d->hasmouse = 0; + isPopupMenu = TRUE; + #ifndef QT_NO_ACCEL + autoaccel = 0; +@@ -1740,6 +1742,11 @@ void QPopupMenu::mouseMoveEvent( QMouseE + + int item = itemAtPos( e->pos() ); + if ( item == -1 ) { // no valid item ++ if( !d->hasmouse ) { ++ tryMenuBar( e ); ++ return; ++ } ++ d->hasmouse = 0; + int lastActItem = actItem; + actItem = -1; + if ( lastActItem >= 0 ) +@@ -1751,6 +1758,7 @@ void QPopupMenu::mouseMoveEvent( QMouseE + } + } else { // mouse on valid item + // but did not register mouse press ++ d->hasmouse = 1; + if ( (e->state() & Qt::MouseButtonMask) && !mouseBtDn ) + mouseBtDn = TRUE; // so mouseReleaseEvent will pop down + +@@ -2159,6 +2167,7 @@ void QPopupMenu::timerEvent( QTimerEvent + */ + void QPopupMenu::leaveEvent( QEvent * ) + { ++ d->hasmouse = 0; + if ( testWFlags( WStyle_Tool ) && style().styleHint(QStyle::SH_PopupMenu_MouseTracking, this) ) { + int lastActItem = actItem; + actItem = -1; --- qt-x11-free-3.3.6.orig/debian/patches/00list +++ qt-x11-free-3.3.6/debian/patches/00list @@ -0,0 +1,41 @@ +02_various_fixes +03_qt_fontlist_fix +04_qsql_odbc +05_qvfb_cpp +06_disable_rpath +08_thread_default +09_amd64_lib64 +10_arm_gcc4 +11_qt_rubberband +12_disable_includehints +13_qt335_qlistview_crash_fix +14_fix_kmenu +15_unify_declarations_glibc +16_fix_opengl_check +17_qlistview_crash_iterator +18_fix_makeqpf_qembed +19_qfontdatabase_hack +22_fix_ftbfs_amd64 +23_qtc_qclipboard_hack +24_qtc_qscrollview +25_qtc_qpixmap_mitshm +26_qtc_qpixmap_constants +27_qtc_qscrollview-windowactivate-fix +29_qtc_fix_rotated_randr +30_qtc_arabic_font_fixes +31_gcc4_buildkey +32_gtkstyle +34_qtc_dnd_optimization +35_qtc_dnd_active_window_fix +37_qtc_dragobject-dont-prefer-unknown +38_qtc_khotkeys_input_84434 +39_qtc_qpopup_has_mouse +40_qtc_qpopup_ignore_mousepos +45_immodule_unified +46_immodule_keyrelease_fix +47_immodule_nodebug_fix +48_immodule_xim_fix +49_immodule_inputcontext_fix +kubuntu_02_qt_modules_ia32 +kubuntu_03_qt_private_confdir_ia32 +kubuntu_04_xinerama \ No newline at end of file --- qt-x11-free-3.3.6.orig/debian/patches/22_fix_ftbfs_amd64.dpatch +++ qt-x11-free-3.3.6/debian/patches/22_fix_ftbfs_amd64.dpatch @@ -0,0 +1,56 @@ +#! /bin/sh -e + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urN qt-x11-free-3.3.3/tools/qvfb/qvfbview.cpp ./tools/qvfb/qvfbview.cpp +--- qt-x11-free-3.3.3/tools/qvfb/qvfbview.cpp 2004-04-15 14:53:25.000000000 +0200 ++++ ./tools/qvfb/qvfbview.cpp 2005-01-03 11:32:45.000000000 +0100 +@@ -115,7 +115,7 @@ + data = (unsigned char *)shmat( shmId, 0, 0 ); + } + +- if ( (int)data == -1 ) ++ if ( (long)data == -1 ) + qFatal( "Cannot attach to shared memory" ); + + hdr = (QVFbHeader *)data; +diff -urN qt-x11-free-3.3.3/examples/demo/opengl/fbm.c ./examples/demo/opengl/fbm.c +--- qt-x11-free-3.3.3/examples/demo/opengl/fbm.c 2003-05-27 17:19:17.000000000 +0200 ++++ ./examples/demo/opengl/fbm.c 2005-01-03 12:10:25.000000000 +0100 +@@ -50,6 +50,8 @@ + r1 = r0 - 1.; + #define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) + ++static float noise3(float vec[3]); ++ + /* Fractional Brownian Motion function */ + + double fBm( Vector point, double H, double lacunarity, double octaves, +diff -urN qt-x11-free-3.3.3/examples/demo/opengl/fbm.h ./examples/demo/opengl/fbm.h +--- qt-x11-free-3.3.3/examples/demo/opengl/fbm.h 2003-05-27 17:19:17.000000000 +0200 ++++ ./examples/demo/opengl/fbm.h 2005-01-03 12:10:05.000000000 +0100 +@@ -26,7 +26,6 @@ + double z; + } Vector; + +-float noise3(float vec[]); + double fBm( Vector point, double H, double lacunarity, double octaves, + int init ); + #endif --- qt-x11-free-3.3.6.orig/debian/patches/24_qtc_qscrollview.dpatch +++ qt-x11-free-3.3.6/debian/patches/24_qtc_qscrollview.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e +# Qt-Copy patch #61 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -u -3 -p -r1.65 qscrollview.cpp +--- bla/src/widgets/qscrollview.cpp 29 Apr 2004 22:31:28 -0000 1.65 ++++ bla/src/widgets/qscrollview.cpp 25 Jan 2005 12:07:04 -0000 +@@ -1863,7 +1863,7 @@ void QScrollView::viewportWheelEvent( QW + the event itself. + */ + QWheelEvent ce( viewportToContents(e->pos()), +- e->globalPos(), e->delta(), e->state()); ++ e->globalPos(), e->delta(), e->state(), e->orientation()); + contentsWheelEvent(&ce); + if ( ce.isAccepted() ) + e->accept(); --- qt-x11-free-3.3.6.orig/debian/patches/40_qtc_qpopup_ignore_mousepos.dpatch +++ qt-x11-free-3.3.6/debian/patches/40_qtc_qpopup_ignore_mousepos.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh -e +# Qt-Copy patch #60 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/widgets/qpopupmenu.cpp ++++ qt.patched/src/widgets/qpopupmenu.cpp +@@ -254,6 +254,7 @@ public: + QSize calcSize; + QRegion mouseMoveBuffer; + uint hasmouse : 1; ++ QPoint ignoremousepos; + }; + + static QPopupMenu* active_popup_menu = 0; +@@ -1354,6 +1355,7 @@ void QPopupMenu::show() + popupActive = -1; + if(style().styleHint(QStyle::SH_PopupMenu_SubMenuPopupDelay, this)) + d->mouseMoveBuffer = QRegion(); ++ d->ignoremousepos = QCursor::pos(); + } + + /*! +@@ -1701,6 +1703,11 @@ void QPopupMenu::mouseReleaseEvent( QMou + + void QPopupMenu::mouseMoveEvent( QMouseEvent *e ) + { ++ if( e->globalPos() == d->ignoremousepos ) { ++ return; ++ } ++ d->ignoremousepos = QPoint(); ++ + motion++; + + if ( parentMenu && parentMenu->isPopupMenu ) { --- qt-x11-free-3.3.6.orig/debian/patches/38_qtc_khotkeys_input_84434.dpatch +++ qt-x11-free-3.3.6/debian/patches/38_qtc_khotkeys_input_84434.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e +# Qt-Copy patch #56 + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- qt.orig/src/kernel/qapplication_x11.cpp ++++ qt.patched/src/kernel/qapplication_x11.cpp +@@ -5294,8 +5294,10 @@ static Bool qt_keypress_scanner(Display + qt_auto_repeat_data *d = (qt_auto_repeat_data *) arg; + if (d->error || + event->xkey.window != d->window || +- event->xkey.keycode != d->keycode) ++ event->xkey.keycode != d->keycode) { ++ d->error = TRUE; + return FALSE; ++ } + + if (event->type == XKeyPress) { + d->error = (! d->release || event->xkey.time - d->timestamp > 10); --- qt-x11-free-3.3.6.orig/debian/patches/45_immodule_unified.dpatch +++ qt-x11-free-3.3.6/debian/patches/45_immodule_unified.dpatch @@ -0,0 +1,16286 @@ +#! /bin/sh -e +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make it compile on mips / mipsel + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urN qt-x11-free-3.3.5.orig/ChangeLog.immodule qt-x11-free-3.3.5/ChangeLog.immodule +--- qt-x11-free-3.3.5.orig/ChangeLog.immodule 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/ChangeLog.immodule 2005-10-18 12:57:18.533256304 +0900 +@@ -0,0 +1,2027 @@ ++2004-09-10 YamaKen ++ ++ * changes.immodule ++ - Describe a bugfix ++ ++2004-09-10 YamaKen ++ ++ * src/inputmethod/qinputcontextinterface_p.h ++ - Update UUID of QInputContextFactory in accordance with API change ++ of QInputContext to avoid loading old invalid plugins ++ ++2004-09-10 YamaKen ++ ++ * README.immodule ++ - Add 'About this release' section ++ - Update version information ++ - Update to follow the change of configure options ++ - Modify some English expressions ++ ++ * changes.immodule ++ - Move release information to README.immodule ++ - Add differences from previous release ++ - Add description about incremental change indication ++ ++ * ChangeLog.immodule ++ - Update ++ ++2004-09-09 YamaKen ++ ++ * src/kernel/qapplication.cpp ++ - (removePostedEvents): ++ * Fix infinite loop condition ++ * delete receiver->postedEvents if the list has been empty ++ ++2004-09-09 YamaKen ++ ++ * This commit backports some code fragments from Qt4 branch to make ++ input method plugins source compatible with Qt4. ++ ++ * src/kernel/qinputcontext.cpp ++ - (QInputContext): Add 'parent' arg ++ ++ * src/kernel/qinputcontext.h ++ - Exclude qptrlist.h when compile with Qt4 ++ - (struct QInputContextMenu): Exclude member variables when compile ++ with Qt4 ++ - (QInputContext): Add 'parent' arg ++ - (addActionsTo): New function for Qt4 ++ ++2004-09-08 YamaKen ++ ++ * This commit renames input method module from 'input' to 'inputmehod' ++ because the name 'input' is too generic to indicate its function ++ ++ * configure ++ - Replace configuration options '-im' and '-im-ext' with ++ '-inputmethod' and '-inputmethod-ext' to be consistent with the ++ name of input method module subdirectory 'inputmethod' ++ - Rename the module name 'input' with 'inputmethod' ++ ++ * src/qt.pro ++ - Rename the module name 'input' with 'inputmethod' ++ - Rename some variable names inaccordance with the renaming of the ++ module ++ - Replace 'qt_input.pri' with 'qt_inputmethod.pri' in accordance ++ with the renaming of the file ++ ++ * src/inputmethod/qt_input.pri ++ - Rename to qt_inputmethod.pri ++ * src/inputmethod/qt_input.pri ++ - Renamed from qt_input.pri ++ - Replace module names ++ - Rename some variable names inaccordance with the renaming of the ++ module ++ ++2004-09-08 YamaKen ++ ++ * Rename input module subdirectory from "input" to "inputmethod" ++ ++2004-09-08 YamaKen ++ ++ * This commit contains following issues ++ - An API change. Return type of QInputContext::identifierName and ++ QInputContext::language has been changed from QCString which is ++ deprecated in Qt4 to QString to make plugins source compatible ++ with Qt4. ++ - Other backports from Qt4 branch ++ - Fix event receiving order inversion between QKeyEvent and ++ QIMEvent. The code is implemented based on Cougar's and ++ Kazuki's. Thank you the efforts. See following discussion for ++ further information. ++ http://freedesktop.org/pipermail/immodule-qt/2004-September/000447.html ++ http://freedesktop.org/pipermail/immodule-qt/2004-September/000497.html ++ ++ * src/kernel/qinputcontext.h ++ - (identifierName, language): Change return type from QCString to QString ++ - (addMenusTo): Make Qt3 specific ++ * src/kernel/qinputcontext.cpp ++ - (identifierName): ++ * Change return type from QCString to QString ++ * Modify the function description comment ++ - (language): Change return type from QCString to QString ++ ++ * src/kernel/qwidget.cpp ++ - (clearFocus): Enclose immodule specific code by #if ++ defined(Q_WS_X11) ++ ++ * src/kernel/qapplication.h ++ - Add 'class QIMEvent' declaration ++ - (removePostedEvents): New overriding function ++ * src/kernel/qapplication_x11.cpp ++ - Remove redundant 'class QInputContext' declaration ++ - (postIMEvent): Fix the event receiving order inversion problem ++ - (x11_apply_settings): Replace QString::find() which is deprecated ++ in Qt4 with QString::startsWith() ++ - (postEvent): Fix invalid QIMEvent compression that ignores IMStart ++ boundary ++ - (removePostedEvents): Original version of the function. Replace ++ the implementation with 2-args version. The behavior is not ++ changed ++ - (removePostedEvents): New overriding function. This function only ++ removes events that has specified event type. The implementation ++ is copied from original version of the function and modified to ++ accept event_type. This function is required by postIMEvent() ++ - (setActiveWindow): Enclose immodule specific code by #if ++ defined(Q_WS_X11) ++ ++ * src/input/qinputcontextinterface_p.h ++ - Modify a coding style to follow Trolltech's one for Qt3 ++ ++ * src/input/qinputcontextplugin.h ++ - Fix typos in comment ++ * src/input/qinputcontextplugin.cpp ++ - (keys, QInputContextPlugin, ~QInputContextPlugin): Modify the ++ function description comment ++ ++ * src/input/qinputcontextfactory.h ++ - Remove #include "qinputcontext.h" to reduce compilation dependency ++ - Add 'class QWidget' declaration ++ - Remove inappropriate #ifndef QT_NO_STRINGLIST. QStringList is now ++ required feature for immodule. See also changes of qfeatures.h ++ * src/input/qinputcontextfactory.cpp ++ - Add #include "qinputcontext.h" ++ - Remove unnecessary #include "qpopupmenu.h" ++ - Remove inappropriate #ifndef QT_NO_STRINGLIST. QStringList is now ++ required feature for immodule. See also changes of qfeatures.h ++ ++ * src/tools/qfeatures.h ++ - Define QT_NO_IM if QT_NO_STRINGLIST is defined ++ - Define QT_NO_IM_EXTENSIONS if QT_NO_IM or QT_NO_STRINGLIST is ++ defined ++ ++ * plugins/src/inputmethods/inputmethods.pro ++ - Rename conditional configuration symbol from "im" to "inputmethod" ++ inaccordance with chanege of configure script ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h ++ - (identifierName, language): Change return type from QCString to ++ QString ++ ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp ++ - (identifierName, language): Change return type from QCString to ++ QString ++ - (createImSelPopup): Replace QString::find() which is deprecated in ++ Qt4 with QString::startsWith() ++ ++ * plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp ++ - (create): Replace QString::find() which is deprecated in Qt4 with ++ QString::startsWith() ++ ++ * plugins/src/inputmethods/xim/qximinputcontext.h ++ - (language): Change return type from QCString to QString ++ - (identifierName): ++ * Change return type from QCString to QString ++ * Move inline implementation to qximinputcontext_x11.cpp ++ * plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ - (language): Change return type from QCString to QString ++ - (identifierName): ++ * Change return type from QCString to QString ++ * Move implementation from qximinputcontext.h ++ - (language): Replace QString::find() which is deprecated in Qt4 with ++ QString::startsWith() ++ ++2004-08-19 YamaKen ++ ++ * src/input/qinputcontextfactory.cpp ++ - (keys): Modify the function description comment ++ ++2004-08-18 YamaKen ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create_manager): Fix plugin directory from "/input" to "/inputmethods" ++ ++2004-08-18 YamaKen ++ ++ * src/kernel/qapplication_x11.cpp ++ - (KeyTbl): Add translations for Japanese and Korean alias keys ++ ++2004-08-18 YamaKen ++ ++ * This commit disables default IM configuration feature using qtrc and ++ qtconfig in BC mode. See following discussion for further ++ information. ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000416.html ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11_apply_settings): ++ * Move immodule handling into #ifndef QT_NO_IM rather than QT_NO_XIM ++ * Move qtrc handling into #ifndef QT_NO_IM_EXTENSIONS ++ ++ * src/inputmethods/imsw-multi/qmultiinputcontext.cpp ++ - (QMultiInputContext): Move qtrc handling into #ifndef ++ QT_NO_IM_EXTENSIONS ++ ++ * tools/qtconfig/mainwindow.cpp ++ - (MainWindow): Move qtrc handling into #ifndef QT_NO_IM_EXTENSIONS ++ ++ * src/kernel/qt_x11.pri ++ - Remove unnecessary configuration ++ ++2004-08-18 YamaKen ++ ++ Merge differences between qt-x11-free-3.3.2 and qt-x11-free-3.3.3 ++ ++2004-08-18 YamaKen ++ ++ * plugins/src/inputmethods/imsw-multi/imsw-multi.pro ++ * plugins/src/inputmethods/simple/simple.pro ++ * plugins/src/inputmethods/imsw-none/imsw-none.pro ++ * plugins/src/inputmethods/xim/xim.pro ++ - Remove inappropriate 'thread' from CONFIG. Thanks to Takumi ++ Asaki for reporting ++ ++2004-08-18 YamaKen ++ ++ * tools/qtconfig/mainwindow.cpp ++ - (MainWindow): Modify a comment ++ - (fileSave): Fix inappropriate /qt/DefaultInputMethodSwitcher ++ overwriting. Thanks Takumi Asaki for the reporting ++ ++2004-08-17 YamaKen ++ ++ * plugins/src/inputmethods/imsw-multi/imsw-multi.pro ++ * plugins/src/inputmethods/simple/simple.pro ++ * plugins/src/inputmethods/imsw-none/imsw-none.pro ++ * plugins/src/inputmethods/xim/xim.pro ++ - Change plugin directory from $QTDIR/plugins/input/ to ++ $QTDIR/plugins/inputmethods/ ++ * changes.immodule ++ - Add a description for the change of plugin directory ++ ++2004-08-17 YamaKen ++ ++ * src/kernel/qnamespace.h ++ - (Qt::Key) Add a comment about Korean-specific keyboard ++ support based on the information from Choe Hwanjin. Thanks ++ for the information. See following discussion for further ++ information ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000402.html ++ - (Qt::Key) Comment out some Korean-specific keys that has an ++ equivalent generic key ++ ++2004-08-14 YamaKen ++ ++ * This is preparation for qt-x11-immodule-unified-qt3.3.2-20040814 ++ ++ * ChangeLog.immodule ++ - Update ++ ++2004-08-14 YamaKen ++ ++ * changes.immodule ++ - Add and modify some descriptions ++ ++ * configure ++ - Rewrite some codes to avoid patch rejection against Qt ++ 3.3.3. Logically equivalent. ++ * src/widgets/qtextedit.cpp ++ - Rewrite some codes to avoid patch rejection against Qt ++ 3.3.3. Logically equivalent. ++ * src/widgets/qlineedit.cpp ++ - Rewrite some codes to avoid patch rejection against Qt ++ 3.3.3. Logically equivalent. ++ ++2004-08-13 LiuCougar ++ ++ cleanup: get rid of some warnings ++2004-08-12 YamaKen ++ ++ * changes.immodule ++ - New file. This file has been written for both users and ++ developers to inform important changes ++ ++2004-08-12 YamaKen ++ ++ * This is preparation for qt-x11-immodule-unified-qt3.3.2-20040812 ++ ++ * ChangeLog.immodule ++ - Update ++ ++2004-08-12 YamaKen ++ ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext, createInputContext): Fix qic location ++ - (destroyInputContext): Add safety check ++ ++2004-08-12 YamaKen ++ ++ * configure ++ - Fix incomplete qconfig configuratoin about QT_NO_IM and ++ QT_NO_IM_EXTENSIONS ++ ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext, createInputContext, destroyInputContext): Fix ++ invalid pointer reference ++ ++2004-08-12 LiuCougar ++ ++ fixed a compile issue in my gentoo box (gcc 3.3.3, glibc 2.3.3 ++2004-08-12 YamaKen ++ ++ * configure ++ - Fix option consistency handling between '-im' and '-im-ext' ++ ++ * README.immodule ++ - Fix a typo ++ ++2004-08-11 YamaKen ++ ++ * README.immodule ++ - Modify a little ++ ++2004-08-11 YamaKen ++ ++ * README.immodule ++ - New file. Some explanation has been described ++ ++ * ChangeLog.immodule ++ - New file ++ ++2004-08-11 YamaKen ++ ++ * plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ - (language): Remove QLocale dependency to be compiled on Qt 3.2.x ++ or earlier ++ ++2004-08-11 YamaKen ++ ++ * This commit merges 'Binary Compatible branch' into the trunk to ++ reduce maintenance cost. Now binary compatibility is ++ configurable. Binary incompatible features are surrounded by ++ #ifndef QT_NO_IM_EXTENSIONS ++ ++ * configure ++ - Add '-im' option to enable immodule feature (default yes). ++ - Add '-im-ext' option to enable more immodule extensions (default ++ no). Specify this option 'no' to keep binary compatibility with ++ standard Qt3 ++ ++ * src/kernel/qt_x11.pri ++ - Add conditional QT_NO_IM and QT_NO_IM_EXTENSIONS definition in ++ accordance with '-im' and '-im-ext' options ++ ++ * src/kernel/qwidget.h ++ - (icHolderWidget): New function for QT_NO_IM_EXTENSIONS ++ - (ic): Add #ifndef QT_NO_IM_EXTENSIONS for binary incompatible ++ variable ++ - (xic): Add #ifdef QT_NO_IM_EXTENSIONS for binary compatible ++ variable ++ * src/kernel/qwidget_x11.cpp ++ - (create): Add #ifndef QT_NO_IM_EXTENSIONS ++ - (destroy): Make some codes QT_NO_IM_EXTENSIONS independent ++ - (createTLSysExtra): Add a code fragment for QT_NO_IM_EXTENSIONS ++ - (deleteTLSysExtra): Modify a comment ++ - (getInputContext, changeInputContext, createInputContext, ++ destroyInputContext): Merge code fragments for QT_NO_IM_EXTENSIONS ++ - (deleteExtra): Merge a comment for QT_NO_IM_EXTENSIONS ++ ++ * src/kernel/qapplication.h ++ - (locateICHolderWidget, icHolderWidgets, create_xim, close_xim): ++ New functions for QT_NO_IM_EXTENSIONS ++ * src/kernel/qapplication_x11.cpp ++ - (create_im, close_im): Add #ifndef QT_NO_IM_EXTENSIONS ++ - (create_xim, close_xim): Merge functions for QT_NO_IM_EXTENSIONS ++ - (qt_init_internal, qt_cleanup): Merge code fragments for ++ QT_NO_IM_EXTENSIONS ++ ++ * plugins/src/inputmethods/inputmethods.pro ++ - Make plugin compilations configurable with '-im' option ++ ++2004-08-11 YamaKen ++ ++ * plugins/src/inputmethods/xim/qximinputcontext.h ++ - Replace QXIMINPUTCONTEXT_P_H with QXIMINPUTCONTEXT_H ++ ++ * src/widgets/qlineedit.cpp ++ - (QLineEditPrivate::updateMicroFocusHint): Modify the comment a ++ little ++ ++2004-08-11 YamaKen ++ ++ * This commit is participating with recent 'keyword static of C++' ++ discussion. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000344.html ++ for further information ++ ++ * src/kernel/qapplication_x11.cpp ++ - (QETWidget::translateKeyEventInternal): Prevent interwidget key ++ state transition about RTL extensions. This code had been written ++ by Daisuke Kameda in qt-x11-immodule-all-qt3.3.1-20040316.diff ++ ++ * src/widgets/qlineedit.cpp ++ - (QLineEditPrivate::updateMicroFocusHint): Add a comment that ++ explains that old rect variable is intentionally static ++ ++2004-08-11 YamaKen ++ ++ * This commit turns the argument of QInputContext::filterEvent() into ++ const. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000335.html ++ for further information ++ ++ * src/kernel/qinputcontext.h ++ - (filterEvent): Follow the API change ++ * src/kernel/qinputcontext.cpp ++ - (filterEvent): Follow the API change ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ - (filterEvent): Follow the API change ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ - (filterEvent): Follow the API change ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h ++ - (filterEvent): Follow the API change ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp ++ - (filterEvent): Follow the API change ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/simple/xcompose2q.rb ++ - Update to accept Compose flie of X.org's X11R6.7.0 ++ - Accept 'XCOMM' as comment sign to accept raw source file ++ - Accept both " " and "\"" as valid RHS ++ * plugins/src/inputmethods/simple/composetable.cpp ++ - Update Compose table from XFree86 4.3.0 to X.org's X11R6.7.0 ++ ++2004-08-10 YamaKen ++ ++ * This commit replaces the invalid header words 'This file is ++ part of the kernel module' of following files with 'This file ++ is part of the input method module' ++ ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.h ++ * plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h ++ * plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ * plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ * plugins/src/inputmethods/simple/composetable.cpp ++ * plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp ++ * plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h ++ * plugins/src/inputmethods/xim/qximinputcontextplugin.cpp ++ * plugins/src/inputmethods/xim/qximinputcontextplugin.h ++ * plugins/src/inputmethods/xim/qximinputcontext.h ++ * plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/simple/xcompose2q.rb ++ - Fix broken translation entries for most ASCII characters ++ * plugins/src/inputmethods/simple/composetable.cpp ++ - Translate again with fixed xcompose2q.rb. This fixes many ++ translation entries involving ascii character such as ++ " " ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/simple/xcompose2q.rb ++ - New file. This script is used for translating X's Compose ++ table into QSimpleInputContext's table ++ - Some bugs included ++ - Although I had released previous versions of this script ++ under GPL, I have released this version under another ++ license. See header ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ - Follow Trolltech's coding style for Qt3 ++ - Remove unnecessary headers ++ - (UNITIZE): Moved from qsimpleinputcontext.cpp. QT_ prefix is not ++ required since a macro does not pollute symbol space ++ - (struct _ComposeTableElement): Rename to QComposeTableElement ++ - (struct QComposeTableElement): Renamed from _ComposeTableElement ++ - (struct _ComposeTable): Rename to QComposeTable ++ - (struct QComposeTable): Renamed from _ComposeTable ++ - (isPreeditRelocationEnabled): Remove unnecessary overloading ++ function ++ - (isPreeditPreservationEnabled): Remove unnecessary function ++ - (checkComposeTable): Follow the renaming of the types of args ++ - (defaultComposeTable): New static member variable ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ - Separate composing table definition to composetable.cpp ++ - Remove unnecessary headers ++ - Replace 'true' and 'false' with 'TRUE' and 'FALSE' to follow ++ Trolltech's coding style for Qt3 ++ - Replace _ComposeTableElement with QComposeTableElement to follow ++ the renaming ++ - Replace ComposeTable with QComposeTable to follow the renaming ++ - (UNITIZE): Move to qsimpleinputcontext.h ++ - (defaultTable): Move to composetable.cpp ++ - (qtComposeTable): Move to composetable.cpp as defaultComposeTable ++ - (filterEvent): ++ * Clean up ++ * Add a comment about key compression ++ * replace qtComposeTable with defaultComposeTable to follow the ++ renaming ++ - (unsetFocus): Remove unnecessary isPreeditPreservationEnabled() ++ check ++ - (identifierName): Remove 'FIXME' comment ++ - (isPreeditRelocationEnabled): Remove unnecessary overloading ++ function ++ - (isPreeditPreservationEnabled): Remove unnecessary function ++ ++ * plugins/src/inputmethods/simple/composetable.cpp ++ - New file. This file has been separated from ++ qsimpleinputcontext.cpp to achieve following issues ++ * increase table maintenance ability ++ * ease editing code part of QSimpleInputContext ++ * ease development log tracking ++ * ease copyright tracking ++ * enclose UTF-8 comments into this file only ++ - Add original header from Compose file of XFree86 4.3.0 ++ - (defaultTable) Moved from qsimpleinputcontext.cpp ++ - (defaultComposeTable): New variable definition ++ ++ * plugins/src/inputmethods/simple/simple.pro ++ - Add composetable.cpp to SOURCES ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp ++ - (displayName, description): Modify the descriptions appropriately ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ - Replace #include "qximinputcontext_p.h" with ++ "qximinputcontext.h". XIM plugin is now working properly ++ ++2004-08-10 YamaKen ++ ++ * This commit changes the XIM input method into plugin. A little ++ modification is still required to work. See next commit information ++ ++ * src/input/qinputcontextfactory.cpp ++ - Remove XIM dependency ++ - (create, keys): Remove XIM dependent codes ++ ++ * src/input/qt_input.pri ++ - Remove QXIMInputContext entries ++ * src/input/qximinputcontext_p.h ++ - Moved to plugins/src/inputmethods/xim/qximinputcontext.h ++ * src/input/qximinputcontext_x11.cpp ++ - Moved to plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ ++ * plugins/src/inputmethods/inputmethods.pro ++ - Add xim to SUBDIRS ++ * plugins/src/inputmethods/xim ++ - New directory ++ * plugins/src/inputmethods/xim/xim.pro ++ - New file ++ * plugins/src/inputmethods/xim/qximinputcontextplugin.h ++ - New file ++ - (class QXIMInputContextPlugin): New class ++ - (QXIMInputContextPlugin, ~QXIMInputContextPlugin, keys, create, ++ languages, displayName, description): New function ++ * plugins/src/inputmethods/xim/qximinputcontextplugin.cpp ++ - New file ++ * plugins/src/inputmethods/xim/qximinputcontext.h ++ - Moved from src/input/qximinputcontext_p.h. No code changes have ++ been applied. A little modification is required to work. See next ++ commit information ++ * plugins/src/inputmethods/xim/qximinputcontext_x11.cpp ++ - Moved from src/input/qximinputcontext_x11.cpp. No code changes have ++ been applied ++ ++2004-08-10 YamaKen ++ ++ * src/input/qximinputcontext_p.h ++ - (QXIMInputContext): Remove the arg 'widget' to conform to standard ++ QInputContext API ++ * src/input/qximinputcontext_x11.cpp ++ - (QXIMInputContext): Remove the arg 'widget' to conform to standard ++ QInputContext API ++ - (setHolderWidget): Add QInputContext::setHolderWidget() to fix ++ inproper overriding ++ * src/input/qinputcontextfactory.cpp ++ - (create): Remove the arg from QXIMInputContext() ++ ++2004-08-10 YamaKen ++ ++ * src/input/qximinputcontext_p.h ++ - (setHolderWidget): New override function ++ * src/input/qximinputcontext_x11.cpp ++ - (QXIMInputContext): Split most part of the initialization code ++ into setHolderWidget() to allow null widget. This is required to ++ make imsw-none working properly ++ - (setHolderWidget): New function ++ ++2004-08-10 YamaKen ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11_apply_settings): Restrict defaultIM to be an IM-switcher. An ++ IM-switcher has a 'imsw-' prefix ++ ++2004-08-10 YamaKen ++ ++ * This commit adds imsw-none IM-switcher plugin according to ++ following discussion with Takumi Asaki. Thanks for the opinion. ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000320.html ++ ++ * plugins/src/inputmethods/inputmethods.pro ++ - Add imsw-none to SUBDIRS ++ * plugins/src/inputmethods/imsw-none/imsw-none.pro ++ - New file ++ * plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h ++ - New file ++ - (class QNoneInputContextPlugin): New class ++ * plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp ++ - New file ++ - (QNoneInputContextPlugin, ~QNoneInputContextPlugin, keys, ++ languages, displayName, description): New function ++ - (create): New function. Read key from QT_IM_MODULE or ++ /qt/DefaultInputMethod of qtrc and creates input context with the ++ key ++ ++2004-08-10 YamaKen ++ ++ * Rename input method plugin names to accord with other plugin names ++ ++ * plugins/src/inputmethods/imsw-multi/imsw-multi.pro ++ - Rename plugin name to qimsw-multi from qmultiinputcontextplugin ++ * plugins/src/inputmethods/simple/simple.pro ++ - Rename plugin name to qsimple from qsimpleinputcontextplugin ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/imsw-multi/multi.pro ++ - Move to imsw-multi.pro ++ * plugins/src/inputmethods/imsw-multi/imsw-multi.pro ++ - Move from multi.pro ++ ++2004-08-10 YamaKen ++ ++ * plugins/src/inputmethods/multi ++ - Move to imsw-multi ++ * plugins/src/inputmethods/imsw-multi ++ - Move from multi ++ * plugins/src/inputmethods/inputmethods.pro ++ - Replace 'multi' with 'imsw-multi' in SUBDIRS ++ ++2004-08-10 Kazuki Ohta ++ ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ - add full dead/multi key entries ++ - fix some bugs ++ ++2004-08-10 YamaKen ++ ++ * This commit changes pluggable popup menu API in accordance with ++ following discussion with Lars Knoll. Thanks for the advice. ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000300.html ++ ++ * src/kernel/qinputcontext.cpp ++ - (actions): New function ++ - (exportMenusInto): Remove to rename to addMenusTo() ++ - (addMenusTo): ++ * New function. Renamed from exportMenusInto() ++ * Follow introduction of enum QInputContextMenu::Action ++ * Add an explanation for this utility function to the function ++ description ++ ++ * src/kernel/qinputcontext.h ++ - (QInputContextMenu::Action): New enum ++ - (menus): Restrict to use with Qt3 only ++ - (qt4menus): Remove to replace with actions() ++ - (actions): New function for Qt4 ++ ++ * src/widgets/qtextedit.cpp ++ - (createPopupMenu): Replace exportMenusInto() with addMenusTo() ++ * src/widgets/qlineedit.cpp ++ - (createPopupMenu): Replace exportMenusInto() with addMenusTo() ++ ++2004-08-10 YamaKen ++ ++ * This commit changes the two input methods into plugin ++ ++ * src/input/qt_input.pri ++ - Remove QSimpleInputContext and QMultiInputContext entries ++ * src/input/qmultiinputcontext.h ++ - Moved to plugins/src/inputmethods/multi/qmultiinputcontext.h ++ * src/input/qmultiinputcontext.cpp ++ - Moved to plugins/src/inputmethods/multi/qmultiinputcontext.cpp ++ * src/input/qsimpleinputcontext.h ++ - Moved to plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ * src/input/qsimpleinputcontext.cpp ++ - Moved to plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ ++ * plugins/src/src.pro ++ - Add 'inputmethods' to SUBDIRS. The directory name 'inputmethods' ++ is intended to be compatible with Qt/Embedded. Install directory ++ name is still kept as 'input' for backward compatibility ++ * plugins/src/inputmethods/inputmethods.pro ++ - New file ++ ++ * plugins/src/inputmethods/multi/multi.pro ++ - New file ++ * plugins/src/inputmethods/multi/qmultiinputcontextplugin.h ++ - New file ++ * plugins/src/inputmethods/multi/qmultiinputcontextplugin.cpp ++ - New file ++ * plugins/src/inputmethods/multi/qmultiinputcontext.h ++ - Moved from src/input/qmultiinputcontext.h. No code changes have ++ been applied ++ * plugins/src/inputmethods/multi/qmultiinputcontext.cpp ++ - Moved from src/input/qmultiinputcontext.cpp. No code changes have ++ been applied ++ ++ * plugins/src/inputmethods/simple/simple.pro ++ - New file ++ * plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h ++ - New file ++ * plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp ++ - New file ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.h ++ - Moved from src/input/qsimpleinputcontext.h. No code changes have ++ been applied ++ * plugins/src/inputmethods/simple/qsimpleinputcontext.cpp ++ - Moved from src/input/qsimpleinputcontext.cpp. No code changes have ++ been applied ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create): Remove dedicated instantiation handling for ++ QSimpleInputContext and QMultiInputContext ++ ++ * tools/qtconfig/mainwindow.h ++ - (inputMethodIdentifiers): New member variable ++ * tools/qtconfig/mainwindow.cpp ++ - (MainWindow): ++ * Replace identifier name of input methods with displaynames ++ * Add filtering out process for IM-switchers that has "imsw-" ++ prefix ++ * Disable sorting for input method names ++ * Modify some comments ++ * Simplify setCurrentItem() handling for inputMethodCombo widget ++ * Add recorded input method name to the display name of unknown ++ input method ++ * Save recorded input method name even if unknown input method ++ - (fileSave): ++ * Save /qt/DefaultInputMethodSwitcher with default value ++ "imsw-multi" ++ * Save identifier name of the input method rather than display name ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Update the class description comment ++ ++ * src/input/qinputcontextplugin.cpp ++ - (class QInputContextPlugin): Update the class description comment ++ - (keys): Update the function description comment ++ - (languages, displayName, description): Add the function ++ description comment ++ ++ ++2004-08-05 YamaKen ++ ++ * This commit adds generic pluggable popup menu feature. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000266.html ++ for further information. The implementation may be altered in ++ accordance with discussion in the list. ++ ++ * src/kernel/qinputcontext.h ++ - (struct QInputContextMenu): New struct ++ - (qt4menus): New function. Just a placeholder for now ++ - (menus): New function ++ - (exportMenusInto): New function ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Add 'Text widget implementor's guide' ++ section to the class description comment ++ - (menus): New function ++ - (exportMenusInto): New function ++ ++ * src/input/qmultiinputcontext.h ++ - (qt4menus): New function. Just a placeholder for now ++ - (menus): New function ++ * src/input/qmultiinputcontext.cpp ++ - (menus): ++ * New function to follow new API. The function merges slave menus ++ and QMultiInputContext's own 'Select Input Method' menu ++ * The functionality is ported from QLineEdit::createPopupMenu() ++ * An accelerator has been added as 'Select Input &Method' ++ ++ * src/widgets/qtextedit.cpp ++ - Remove QMultiInputContext dependency ++ - (createPopupMenu): Replace QMultiInputContext dependent submenu ++ handling with the pluggable popup menu ++ * src/widgets/qlineedit.cpp ++ - Remove QMultiInputContext dependency ++ - (createPopupMenu): Replace QMultiInputContext dependent submenu ++ handling with the pluggable popup menu ++ ++ * src/kernel/qwidget.h ++ - Remove #include "qinputcontext.h" to reduce compile time when we ++ hacked qinputcontext.h ++ ++2004-08-04 Kazuki Ohta ++ ++ * src/input/qmultiinputcontext.cpp ++ - use QInputContextFactory::description and set whatsthis help ++ ++2004-08-03 YamaKen ++ ++ * This commit adds QInputContextFactory::description() feature ++ ++ * src/input/qinputcontextinterface_p.h ++ - Update the UUID because the interface has been changed ++ - (description): New function ++ ++ * src/input/qinputcontextplugin.h ++ - (description): New function ++ ++ * src/input/qinputcontextfactory.h ++ - (description): New function ++ - (QInputContextPluginPrivate::description): New function ++ * src/input/qinputcontextfactory.cpp ++ - (description): New function ++ - (displayName): Replace fallback value with empty string instead of ++ null ++ ++2004-08-03 YamaKen ++ ++ * This commit alters the configuration convention about ++ IM-switcher. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000232.html ++ for further information. The implementation may be altered in ++ accordance with discussion in the list. ++ ++ * src/kernel/qapplication_x11.cpp ++ - (defaultIM): Replace "xim" with "imsw-multi" ++ - (x11_apply_settings): ++ * Replace the environment variable name QT_IM_MODULE with ++ QT_IM_SWITCHER ++ * Replace the qtrc variable name /qt/DefaultInputMethod with ++ /qt/DefaultInputMethodSwitcher ++ * Replace "xim" with "imsw-multi" for default plugin ++ ++ * src/input/qmultiinputcontext.h ++ - (lastCreatedIMKey): Remove to rename to currentIMKey ++ - (currentIMKey): New member variable. Renamed from lastCreatedIMKey ++ because the semantics of the variable has been changed by ++ introduction of QT_IM_SWITCHER ++ ++ * src/input/qmultiinputcontext.cpp ++ - Replace lastCreatedIMKey with currentIMKey ++ - (QMultiInputContext): Add default input method specification ++ feature using QT_IM_MODULE and /qt/DefaultInputMethod ++ - (createImSelPopup): ++ * Add IM-switcher plugin elimination feature using "imsw-" prefix ++ * Add dispName.isNull() checking ++ * Apply some rewriting without altering logic for human readability ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create): Replace the identifier name "multi" with "imsw-multi" ++ ++2004-08-03 Kazuki Ohta ++ ++ * This commit implements table searching suite ++ ++ - QKeyEvent::text() is restricted to only one character, ++ so qsimpleic use QChar::unicode() value in case keys are ++ pressed otherwise composing keys are pressed. ++ ++ - Composing Table is temporally deleted for testing. ++ Need to prepare proper entries. ++ Now qsimpleic can deal with capital letter more cleaner way ++ ++ * Next, I introduce X's composing parser to qsimpleic ++ ++2004-08-02 YamaKen ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11_apply_settings): Merge the comment about defaultIM ++ overwritten by r52 from r45 ++ ++2004-07-31 LiuCougar ++ ++ new environment variable QT_IM_MODULE to overwrite the default inputmethod plugin ++2004-07-31 LiuCougar ++ ++ "deleteLater" is safer then "delete" QObject directly ++2004-07-30 YamaKen ++ ++ * src/kernel/qnamespace.h ++ - (Qt::Key): ++ * Replace dead key values with new one to avoid keycode conflict ++ * Add a comment about the latin 1 keycodes ++ * Add some comments about the offset for keycode from X keycode ++ * src/kernel/qevent.cpp ++ - (key): Add a comment about latin 1 keycodes to the function ++ description. ++ ++ * src/kernel/qapplication_x11.cpp ++ - Define define XK_XKB_KEYS to include dead key definitions from ++ keysymdef.h ++ - Remove XK_dead_ keys definition ++ ++2004-07-29 Kazuki Ohta ++ ++ * Change to use displayName() in IM-Switch Popupmenu ++ ++ * src/input/qmultiinputcontext.h ++ - (keyDict): new variable ++ * src/input/qmultiinputcontext.cpp ++ - (createImSelPopup): use displanName() on popup and store key in keyDict ++ - (changeInputMethodWithMenuId): find key from using keyDict ++ ++ * Problem * ++ - if key=="XIM", displayName(key) is QString::null ++ * Wish * ++ - add "virtual QString description( const QString &key ) = 0;" for showing the description of IM on PopupMenu as a whatsthis help ++ ++2004-07-28 YamaKen ++ ++ * src/input/qinputcontextinterface_p.h ++ - Update the UUID because the interface has been changed ++ - (languages): New function ++ - (displayName): New function ++ ++ * src/input/qinputcontextplugin.h ++ - (languages): New function ++ - (displayName): New function ++ * src/input/qinputcontextplugin.cpp ++ - (QInputContextPluginPrivate::languages): New function ++ - (QInputContextPluginPrivate::displayName): New function ++ ++ * src/input/qinputcontextfactory.h ++ - (languages): New function ++ - (displayName): New function ++ * src/input/qinputcontextfactory.cpp ++ - (languages): New function ++ - (displayName): New function ++ ++2004-07-27 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - (deletionRequested): New signal. Added for fatal error handling ++ * src/kernel/qinputcontext.cpp ++ - (deletionRequested): Add the function description comment ++ * src/kernel/qwidget.h ++ - (destroyInputContext): Change ordinary function to slot to receive ++ the signal QInputContext::deletionRequested() ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext, createInputContext): ++ * Connect deletionRequested() signal of qic to destroyInputContext() ++ * Follow renaming of QApplication::imEventReceived() to postIMEvent() ++ - (destroyInputContext): Modify the function description comment ++ ++ * src/input/qximinputcontext_p.h ++ - (close): New function ++ * src/input/qximinputcontext_x11.cpp ++ - (close_xim): ++ * Remove invalid QApplication::close_im() invocation ++ * Add proper finalization using deletionRequested() signal ++ - (close): New function ++ ++ * src/kernel/qapplication.h ++ - (imEventReceived): Remove this inappropriate name to rename to ++ postIMEvent() ++ - (postIMEvent): New slot. Renamed from imEventReceived() ++ * src/kernel/qapplication_x11.cpp ++ - (imEventReceived): Remove this inappropriate name to rename to ++ postIMEvent() ++ - (postIMEvent): New slot. Renamed from imEventReceived() ++ - (close_im): Remove unused commented out code. The code had already ++ been moved to qximinputcontext.cpp ++ ++ * src/input/qmultiinputcontext.h ++ - (destroyInputContext): New slot ++ - (imEventReceived): Remove this inappropriate name to rename to ++ postIMEvent() ++ - (postIMEvent): New slot. Renamed from imEventReceived() ++ * src/input/qmultiinputcontext.cpp ++ - (QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX): New macro. Defined as default ++ - (filterEvent): Insert #ifdef QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX ++ - (destroyInputContext): New slot. Processes deletionRequested from slave ++ - (imEventReceived): Remove this inappropriate name to rename to ++ postIMEvent() ++ - (postIMEvent): New slot. Renamed from imEventReceived() ++ - (slave): ++ * Add proper instanciation code for popup menu mode ++ * Insert #ifdef QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX ++ - (changeInputMethod(int)): ++ * Add error handling for no available input methods ++ * Insert #ifdef QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX ++ - (changeInputMethod(QString)): ++ * Add error handling for no available input methods ++ * Add default selection for null key ++ * Connect deletionRequested() signal ++ * Fix debug message ++ * src/widgets/qtextedit.cpp ++ - (createPopupMenu): ++ * Add NULL check for input context ++ * Replace the label "SelectInputMethod" with "Select Input Method" ++ * src/widgets/qlineedit.cpp ++ - (createPopupMenu): ++ * Add NULL check for input context ++ * Replace the label "SelectInputMethod" with "Select Input Method" ++ ++2004-07-27 YamaKen ++ ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext): ++ * Remove unnecessary createInputContext() ++ * Reorder the code fragments to reduce temporal memory consumption ++ ++2004-07-27 YamaKen ++ ++ * This commit is a comment and variable name update. No actual code is ++ modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Modify the class description comment ++ - (filterEvent): Mark the argument as /* const */ to make it const ++ in future ++ - (reset): Add a requirement to the function description comment for ++ reimplementation ++ ++ * src/kernel/qapplication_x11.cpp ++ - (locateICHolderWidget, icHolderWidgets, changeAllInputContext): ++ Modify the function description comment ++ ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext): ++ * Rename 'name' with 'identifierName' to eliminate the ambiguity ++ * Modify the function description comment ++ * Modify a comment ++ * Follow Trolltech's coding style ++ - (createInputContext): ++ * Modify the function description comment ++ * Modify a comment ++ - (resetInputContext): Modify the function description comment ++ ++ * src/kernel/qapplication_x11.cpp ++ - (defaultIM): Modify the comment ++ - (changeAllInputContext): ++ * Rename 'name' with 'identifierName' to eliminate the ambiguity ++ * Follow Trolltech's coding style ++ - (defaultInputMethod): Modify the function description comment ++ - (x11_apply_settings): Modify a comment ++ ++ * src/input/qinputcontextplugin.cpp ++ - (class QInputContextPlugin): Modify the class description comment ++ - (create): Modify the function description comment ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create): Modify the function description comment ++ ++2004-07-24 YamaKen ++ ++ * src/kernel/qinputcontext.cpp ++ - Add #if defined(Q_WS_X11) around X11 platform specific ++ functions. these functions cannot be moved to ++ qinputcontext_x11.cpp at now since the QInputContextPrivate is ++ defined in qinputcontext.cpp. This will be fixed in porting to ++ Qt4. ++ - (filterEvent): Add the function description comment according ++ with the Simplified API (filtering precedence, key compression) ++ ++ * src/kernel/qapplication_x11.cpp ++ - (locateICHolderWidget, icHolderWidgets, changeAllInputContext): ++ Modify the function description comment ++ ++2004-07-24 YamaKen ++ ++ * This commit is a comment update. No code is modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Add the class description comment according ++ with the Simplified API (preedit relocation is done, not entirely ++ completed yet) ++ ++2004-07-24 YamaKen ++ ++ * This commit contains the fixes in response to Lars Knoll's ++ advice. Thanks for the advice. ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11_apply_settings): Remove trUtf8() from "xim" to specify the ++ default input method ++ ++ * src/kernel/qapplication_x11.cpp, src/input/qximinputcontext_x11.cpp ++ - (ximServer, xim_preferred_style, composingKeycode, input_mapper): ++ Add qt_ prefix to avoid symbol space pollution ++ - (qt_ximServer, qt_xim_preferred_style, qt_ximComposingKeycode, ++ qt_input_mapper): Renamed from above one ++ ++2004-07-24 YamaKen ++ ++ * This commit is a comment update. No code is modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Modify several expressions ++ ++2004-07-23 YamaKen ++ ++ * This commit is a comment update. No code is modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Add the class description comment according ++ with the Simplified API (preedit preservation is done, not ++ entirely completed yet) ++ - (QInputContext, focusWidget, setFocusWidget, isComposing, ++ setFocus, unsetFocus): Modify a typo in the function description ++ comment ++ ++2004-07-23 YamaKen ++ ++ * src/input/qsimpleinputcontext.cpp ++ - Modify the file header description ++ * src/input/qmultiinputcontext.cpp ++ - Modify the file header description ++ * src/input/qsimpleinputcontext.h ++ - Modify the file header description ++ * src/input/qmultiinputcontext.h ++ - Modify the file header description ++ ++2004-07-23 YamaKen ++ ++ * src/input/qsimpleinputcontext.h ++ - Add a copyright and license header ++ ++ * src/input/qsimpleinputcontext.cpp ++ - Add a copyright and license header ++ ++2004-07-23 YamaKen ++ ++ * This commit is a comment update. No code is modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContext): Add the class description comment according ++ with the Simplified API (not completed yet) ++ - (QInputContext): Modify a expression in the function description ++ comment ++ - (sendIMEventInternal, font): Modify a typo in the function ++ description comment ++ ++2004-07-23 Kazuki Ohta ++ ++ * src/input/qsimpleinputcontext.cpp ++ - OOps. fix typo. ++ ++2004-07-23 Kazuki Ohta ++ ++ * src/input/qsimpleinputcontext.cpp ++ - follow Qt coding rule ++ - more valid capitalize case ++ ++2004-07-23 Kazuki Ohta ++ ++ * src/input/qinputcontextfactory.cpp ++ - enable QSimpleInputContext by specifying in qtrc "DefaultInputMethod=simple" ++ ++2004-07-23 Kazuki Ohta ++ ++ * This commit add simple table based InputContext for dead/multi key support ++ ++ * src/input/qsimpleinputcontext.h, src/input/qsimpleinputcontext.cpp ++ - simple table based InputContext ++ ++2004-07-22 Kazuki Ohta ++ ++ * kernel/qapplication_x11.cpp, kernel/qnamespace.h ++ - add dead key entries ++ ++2004-07-22 YamaKen ++ ++ * This commit is a comment update. No code is modified. ++ ++ * src/kernel/qinputcontext.cpp ++ - (holderWidget, setHolderWidget, focusWidget, setFocusWidget, ++ releaseComposingWidget, isPreeditRelocationEnabled, isComposing, ++ sendIMEventInternal, sendIMEvent): Add the function description comment ++ according with the Simplified API ++ - (QInputContext, setFocus, unsetFocus): Update the function ++ description comment according with the Simplified API ++ - (~QInputContext, imEventGenerated): Add the function description ++ comment ++ - (reset, identifierName, language, filterEvent): Update the ++ function description comment ++ - (setMicroFocus, mouseHandler, reset, identifierName, language): ++ Modify a expression in the function description comment ++ ++ * src/kernel/qwidget_x11.cpp ++ - (icHolderWidget, resetInputContext, focusInputContext, ++ unfocusInputContext, sendMouseEventToInputContext): Update the ++ function description comment ++ ++ * src/kernel/qapplication_x11.cpp ++ - (imEventReceived): Update the function description comment ++ ++2004-07-21 Kazuki Ohta ++ ++ * src/input/qmultiinputcontext.h ++ - (createImSelPopup): new function ++ - (changeInputMethodWithMenuId): new slot ++ - (changeInputMethod(QString)): new function ++ - (popup): new variable ++ - (lastCreatedIMKey): new variable ++ ++ * src/input/qmultiinputcontext.cpp ++ - add #ifndef QT_NO_IM ++ - (createImSelPopup): create QPopupMenu object which can switch IM. ++ Currently selected IM is marked as checked. ++ ++ * src/input/qinputcontextfactory.h ++ - remove "class QPopupMenu" ++ ++ * src/widget/qtextedit.cpp ++ - add im-switch popup to the menu which is shown when widget is right-clicked. ++ ++ * src/widget/qlineedit.cpp ++ - add im-switch popup to the menu which is shown when widget is right-clicked. ++ ++2004-07-21 YamaKen ++ ++ * src/kernel/qinputcontext.cpp ++ - (filterEvent, setMicroFocus, mouseHandler): Update the function ++ description comment according with the Simplified API ++ - (reset, identifierName, language): Update the function description ++ comment ++ ++2004-07-20 YamaKen ++ ++ * src/input/qmultiinputcontext.cpp ++ - (changeInputMethod): Fix invalid imIndex circulation. Thanks ++ to Kazuki for reporting ++ ++2004-07-20 YamaKen ++ ++ * This commit enables a flexible signal connection ++ configuration. Default behavior is based on Cougar's ++ suggestion. Thanks. ++ ++ * src/input/qmultiinputcontext.h ++ - (beIndirectlyConnected): New instance variable ++ ++ * src/input/qmultiinputcontext.cpp ++ - (QMultiInputContext): Add beIndirectlyConnected to initializer list ++ - (imEventReceived): Add a function description comment ++ - (changeInputMethod): Connect imEventGenerated signal of slave ++ according with beIndirectlyConnected. The default behavior is ++ changed as directly connected to imEventGenerated signal of this ++ ++2004-07-20 YamaKen ++ ++ * src/kernel/qwidget_x11.cpp ++ - (setMicroFocusHint): Update the comment about XIM handling ++ - (focusInputContextunfocusInputContext, ++ sendMouseEventToInputContext): Add the function description comment ++ ++ * src/kernel/qinputcontext_x11.cpp ++ - (x11FilterEvent): Update the function description comment ++ according with the Simplified API ++ ++2004-07-20 YamaKen ++ ++ * src/input/qmultiinputcontext.cpp ++ - (changeInputMethod): Fix the conversion to const char * from ++ identifierName() ++ ++2004-07-20 YamaKen ++ ++ * src/input/qximinputcontext_p.h ++ - (identifierName): Replace the result "XIM" with "xim" to be ++ consistent with corresponding immodule of GTK+ ++ ++ * src/kernel/qapplication_x11.cpp ++ - (defaultIM, x11_apply_settings): Replace "XIM" with "xim" ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create, keys): Replace "XIM" with "xim" ++ ++ * tools/qtconfig/mainwindow.cpp ++ - (MainWindow): Replace "XIM" with "xim" ++ ++2004-07-20 YamaKen ++ ++ * This commit enables QInputContext proxying, and provide an ++ experimental immodule-switcher QMultiInputContext as its ++ examples. The changes is following. ++ ++ 1. Use signal to deliver QIMEvent instead of explicit ++ postEvent(). This enables QIMEvent proxying and better platform ++ abstraction. Corresponding slot is created as ++ QApplication::imEventReceived(). ++ ++ 2. Move some methods of QInputContext to public from protected or ++ private. This enables that proxy-IM can access slave methods. ++ ++ 3. Make some methods of QInputContext virtual. This enables ++ overriding the methods as proxy ++ ++ 4. Rename QInputContext::name() to identifierName() to avoid ++ conflicting with QObject::name() ++ ++ This patch does not break binary compatibility from vanilla Qt3. ++ But it costs immodule developer small modification. ++ ++ * src/kernel/qinputcontext.h ++ - (class QInputContext): Inherit QObject and add Q_OBJECT macro ++ - (name): Remove to rename to identifierName() to avoid conflicting ++ with QObject::name() ++ - (identifierName): New function. Renamed from name() ++ - (isComposing, isPreeditRelocationEnabled): Move to public from ++ protected to allow proxying ++ - (setFocusWidget,setHolderWidget, releaseComposingWidget): Move to ++ public from private to allow proxying ++ - (focusWidget, holderWidget): ++ * Make public from protected ++ * Make virtual to allow overriding the method as proxy ++ - (imEventGenerated): New signal ++ ++ * src/kernel/qinputcontext.cpp ++ - (QInputContext): Add QObject() to initializer list ++ - (sendIMEventInternal): Replace QApplication::postEvent with signal ++ emitting according to the change ++ - (name): Remove to rename to identifierName() to avoid conflicting ++ with QObject::name() ++ - (identifierName): ++ * New function. Renamed from name() ++ * Return type has changed to QCString from QString to avoid using ++ of i18n string and confusing this with display name for endusers ++ ++ * src/kernel/qwidget_x11.cpp ++ - (changeInputContext): Add QObject::connect() to follow the change ++ of IMEvent flow ++ - (createInputContext): Add QObject::connect() to follow the change ++ of IMEvent flow ++ ++ * src/kernel/qapplication.h ++ - (imEventReceived): New slot ++ * src/kernel/qapplication_x11.cpp ++ - (imEventReceived): New slot to relay QIMEvent to event queue using ++ postEvent() ++ ++ * src/input/qmultiinputcontext.h ++ - New file. Copyright and licensing information is temporarily ++ adapted to our cirmumstances ++ - (QMultiInputContext): New class ++ - (QMultiInputContext): New function ++ - (~QMultiInputContext): New function ++ - (identifierName): New function ++ - (language): New function ++ - (x11FilterEvent): New function. Added based on Cougar's ++ advice. Thanks ++ - (filterEvent): New function ++ - (reset): New function ++ - (setFocus): New function ++ - (unsetFocus): New function ++ - (setMicroFocus): New function ++ - (mouseHandler): New function ++ - (font): New function ++ - (isComposing): New function ++ - (isPreeditRelocationEnabled): New function ++ - (focusWidget): New function ++ - (holderWidget): New function ++ - (setFocusWidget): New function ++ - (setHolderWidget): New function ++ - (releaseComposingWidget): New function ++ - (slave): New function ++ - (slave): New function (const QInputContext *slave() const) ++ - (changeInputMethod): New function ++ - (imEventReceived): New slot ++ * src/input/qmultiinputcontext.cpp ++ - New file. Copyright and licensing information is temporarily ++ adapted to our cirmumstances ++ - (QMultiInputContext): New function ++ - (~QMultiInputContext): New function ++ - (identifierName): New function ++ - (language): New function ++ - (x11FilterEvent): New function. Added based on Cougar's ++ advice. Thanks ++ - (filterEvent): New function. Filters Control+Alt+Key_Down and ++ Control+Alt+Key_Up as IM selection keys as temporary ++ implementation. We should show popup menu ++ - (reset): New function ++ - (setFocus): New function ++ - (unsetFocus): New function ++ - (setMicroFocus): New function ++ - (mouseHandler): New function ++ - (font): New function ++ - (isComposing): New function ++ - (isPreeditRelocationEnabled): New function ++ - (focusWidget): New function ++ - (holderWidget): New function ++ - (setFocusWidget): New function ++ - (setHolderWidget): New function ++ - (releaseComposingWidget): New function ++ - (slave): New function ++ - (slave): New function (const QInputContext *slave() const) ++ - (changeInputMethod): New function ++ - (imEventReceived): New slot ++ * src/input/qinputcontextfactory.cpp ++ - (create): Add QMultiInputContext instanciation. Use the name ++ "multi" to specify it ++ * src/input/qinputcontextfactory.h ++ - Add #include "qinputcontext.h" to avoid compilation error ++ ++ * src/input/qximinputcontext_p.h ++ - (class QXIMInputContext): Add Q_OBJECT macro to follow the API change ++ - (name): Remove to follow the API change ++ - (identifierName): ++ * New function. Renamed from name() ++ * Return type has changed to QCString from QString to follow the ++ API change ++ - (isPreeditRelocationEnabled): Move to public from protected to ++ follow the API change ++ - (isComposing): Remove unnecessary access permission breaker ++ because QInputContext::isComposing() have made public ++ * src/input/qximinputcontext_x11.cpp ++ - (isComposing): Remove unnecessary access permission breaker ++ because QInputContext::isComposing() have made public ++ ++ * src/input/qt_input.pri ++ - Add qmultiinputcontext.h and multiinputcontext.cpp ++ ++2004-07-18 LiuCougar ++ ++ use virtual insert version to make subclasses work as expected (merged from bc-branch r19) ++2004-07-16 Kazuki Ohta ++ ++ * src/input/qinputcontextfactory.h: not the definition of QInputContextPlugin ++ ++2004-07-13 YamaKen ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11ProcessEvent): Add comment for key event filtering considerations ++ - (QETWidget::translateKeyEvent): Add comment for key compression ++ considerations ++ ++2004-07-11 YamaKen ++ ++ * src/kernel/qwidget.h ++ - (sendMouseEventToInputContext): Move into #if defined(Q_WS_X11) ++ because it is not implemented in other platforms ++ ++2004-07-11 YamaKen ++ ++ * This commit fixes a mismerge with my Simplified API patches ++ ++ * src/kernel/qwidget_x11.cpp ++ - (destroyInputContext): Replace the code with original Simplified ++ API patch. See the comment to recognize the original intention ++ - (focusInputContext): Fix a condition to call qic->setFocus() as ++ originally written. See added comment to recognize the original ++ intention ++ ++ * src/kernel/qwidget.h ++ - (changeInputContext): Move into #if defined(Q_WS_X11) as ++ originally written because it is not implemented in other ++ platforms ++ ++ * src/input/qximinputcontext_p.h ++ - (mouseHandler): Fix a typo as originally written ++ ++ * src/input/qximinputcontext_x11.cpp ++ - Fix a comment location to express original intention ++ ++2004-07-08 LiuCougar ++ ++ replace sendEvent with postEvent in qinputcontext to improve the process performance of IMCompose events ++2004-07-08 YamaKen ++ ++ * Insert the comment 'UPDATED COMMENT REQUIRED' into some places for future ++ modifications ++ * Modify some comments ++ * Replace 'InputMethod' in some comments with 'input method' ++ * Replace 'InputContext' in some comments with 'input context' ++ ++ * src/kernel/qinputcontext.h ++ - Move description of QInputContext to qinputcontext.cpp ++ * src/kernel/qinputcontext.cpp ++ - Move description of QInputContext from qinputcontext.h ++ ++2004-07-07 Daisuke Kameda ++ ++ Adding the function which realize mapping arbitrary input context and widget: ++ QApplication::locateICHolderWidget() ++ QApplication::icHolderWidgets() ++ QWidget::icHolderWidget() ++ QWidget::getInputContext() ++ ++ Adding the function which changes input method: ++ QApplication::changeAllInputContext() ++ QWidget::changeInputContext() ++ QApplication::defaultInputMethod() ++ ++ change QApplication::create_xim() to QApplication::create_im() ++ change QApplication::close_xim() to QApplication::close_im() ++ ++ ++2004-07-06 Daisuke Kameda ++ ++ "QLineEdit should only setMicroFocus if the cursorRect has changed" by cougar ++ ++2004-07-06 Daisuke Kameda ++ ++ Re-Creating immodule for Qt/X11 trunk ++ ++2004-06-22 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - (sendIMEvent): Private version of sendIMEvent(). Remove to ++ rename to sendIMEventInternal ++ - (sendIMEventInternal): Rename from sendIMEvent and accept ++ discrete variables rather than QEvent *e to be adaptable ++ to Qt/Embedded ++ * src/kernel/qinputcontext.cpp ++ - (sendIMEvent): Protected version of sendIMEvent(). Move ++ QEvent construction to sendIMEventInternal() ++ - (sendIMEvent): Private version of sendIMEvent(). Remove to ++ rename to sendIMEventInternal ++ - (sendIMEventInternal): ++ * Rename from sendIMEvent ++ * accept discrete variables rather than QEvent *e to be ++ adaptable to Qt/Embedded ++ * Add placeholder for Qt/Embedded ++ - (setFocusWidget): Follow specification change of sendIMEvent() ++ ++2004-06-20 YamaKen ++ ++ * src/kernel/qevent.h ++ - (class QIMError): Remove to rename to QIMErrorEvent ++ - (class QIMErrorEvent): Rename from QIMError ++ - (QIMErrorEvent::isDeleteIC): Remove to rename to isDeletionRequest ++ - (QIMErrorEvent::isDeletionRequest): Rename from isDelete ++ ++ * src/kernel/qwidget.h ++ - (imErrorEvent): Follow renaming of QIMError ++ * src/kernel/qwidget.cpp ++ - (imErrorEvent): Follow renaming of QIMError and ++ QIMError::isDeleteIC() ++ - (event): Follow renaming of QIMError ++ ++ * src/kernel/qinputcontext.h ++ - (ownerWidget): Remove to rename to holderWidget ++ - (holderWidget): Rename from ownerWidget ++ - (setOwnerWidget): Remove to rename to setHolderWidget ++ - (setHolderWidget): Rename from setOwnerWidget ++ - (releaseComposingWidget): New function. ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContextPrivate): Rename ownerWidget to holderWidget ++ - (ownerWidget): Remove to rename to holderWidget ++ - (holderWidget): Rename from ownerWidget ++ - (setOwnerWidget): Remove to rename to setHolderWidget ++ - (setHolderWidget): Rename from setOwnerWidget ++ - (sendIMError): Follow renaming of QIMError and ++ QIMError::isDeleteIC() ++ - (releaseComposingWidget): New function. ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create): Follow renaming of QInputContext::setOwnerWidget() ++ ++ * src/kernel/qwidget_x11.cpp ++ - (destroy): Add qic->releaseComposingWidget() to reset ++ preserved composing information involving this widget ++ ++2004-06-15 YamaKen ++ ++ * src/kernel/qwidget_x11.cpp ++ - (setMicroFocusHint): Replace relative coordinate with ++ global one for qic->setMicroFocus(). This is required to ++ share particular IM plugin code with Qt/Embedded ++ ++ * src/widgets/qlineedit.cpp ++ - (sendMouseEventToInputContext): Add button event sending ++ when clicking on out of preedit ++ ++ * src/widgets/qtextedit.cpp ++ - (sendMouseEventToInputContext): Add button event sending ++ when clicking on out of preedit ++ ++ * src/input/qximinputcontext_p.h ++ - (isComposing): New function ++ - (composing, cpos, sellen): Remove to follow API change ++ - (isPreeditRelocationEnabled): New overriding function to ++ follow API change ++ - (isPreeditPreservationEnabled): New function ++ ++ * src/input/qximinputcontext_x11.cpp ++ - (xic_start_callback, xic_draw_callback, xic_done_callback, ++ x11FilterEvent, reset): Replace qic->composing with ++ qic->isComposing() to use automatic compose state tracking ++ of QInputContext ++ - (QXIMInputContext): Remove composing, cpos, sellen from ++ initializer list ++ - (sendIMEvent): Remove remembering of cpos, sellen ++ - (reset): Replace IMEnd event sending with ++ QInputContext::reset() ++ - (resetClientState): Remove cpos, sellen, composing ++ - (isComposing): Exported interface for xic callbacks to ++ access protected QInputContext::isComposing() ++ - (setMicroFocus): Follow API change that replaces relative ++ coordinate with global one ++ - (mouseHandler): Add approprate reset on clicking ++ - (setFocus, unsetFocus): Remove preedit preservation and ++ relocation to follow API change. They are moved to ++ QInputContext as generarization ++ - (isPreeditRelocationEnabled): New function to follow API ++ change. ++ - (isPreeditPreservationEnabled): New function. This ++ indicates that whether preedit state should be preserved ++ or not when focusing out the widget ++ ++2004-06-14 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - (setFocus): Remove hasPreservedPreedit arg ++ - (unsetFocus): Remove preservePreedit arg ++ - (isPreeditRelocationEnabled): New function ++ - (isComposing): New function ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContextPrivate): Reorganize variables for ++ preedit relocation ++ - (QInputContextPrivate::resetComposingState): New function ++ - (QInputContextPrivate::updateComposingState): New function ++ - (setFocusWidget): Add preedit relocation support. Preedit ++ state is relocated to another text widget when the shared ++ context has focused on the another text widget. This ++ feature is mainly used by Japanese input methods ++ - (isPreeditRelocationEnabled): New function. Preedit ++ relocation is enabled only if this function returned TRUE. ++ - (isComposing): New function. Returns current composing ++ state as result of automatic compose state tracking ++ through sendIMEvent(). The function is for used by ++ subclass of QInputContext to know preedit state of the ++ widget. Although QWidget and QInputContextFactory can ++ access to the function as friend, they must not use the ++ function to know composing state of contexts. Keep less ++ relationship to simplify input method development ++ - (sendIMEvent): New 1-arg overloaded function. The function ++ encupsulates platform-dependent IMEvent sending. Only ++ Q_WS_X11 is supported for now. Q_WS_QWS should be supported ++ - (sendIMEvent): ++ * 4-args version of the overloaded function ++ * Isolate platform-dependent event sending process to ++ separated function ++ * Add preedit relocation support ++ * Add compose state tracking support ++ - (unsetFocus): Add reset() for simple ephemeral input ++ contexts ++ - (mouseHandler): Add reset() when clicking for simple ++ ephemeral input contexts ++ - (reset): Add preedit finalization code. Overriding ++ function should call this function to ensure proper ++ preedit state ++ ++2004-06-11 YamaKen ++ ++ * src/kernel/qlineedit.cpp ++ - (QLineEditPrivate::xToPosInternal, QLineEditPrivate::xToPos): ++ Fix loose placement to tail when clicking beyond the string ++ ++2004-06-10 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - Remove several pointers to QWidget to share concrete IM ++ implementation code with Qt/Embedded. The IM model of ++ Qt/Embedded requires that widgets and input contexts are ++ existing in another process ++ - (QInputContext): Remove the QWidget * arg ++ - (focusWidget, ownerWidget): ++ * Move to protected and unrecommended ++ * Move the inline function definition to qinputcontext.cpp ++ - (filterEvent): Remove unnecessary keywidget ++ - (setFocus): ++ * Remove newFocusWidget arg ++ * Add hasPreservedPreedit arg ++ - (unsetFocus): Add preservePreedit arg ++ - (sendIMError): New function to hide ownerWidget from ++ derived QInputContext ++ - (composingWidget, setComposingWidget): New function to support ++ preedit relocation of shared context on focus transition ++ - (setFocusWidget, setOwnerWidget): New function to ++ implement internal functionality on Qt/X11 platform ++ - (d): New variable to hide ABI change ++ - (QInputContext, operator=): New function to disable copy ++ constructor and operator= ++ ++ * src/kernel/qinputcontext.cpp ++ - (class QInputContextPrivate): New class to hide ABI change ++ - (QInputContext): ++ * Follow API change ++ * Follow introducing QInputContextPrivate ++ - (~QInputContext): Follow introducing QInputContextPrivate ++ - (ownerWidget): ++ * Move from qinputcontext.h ++ * Follow introducing QInputContextPrivate ++ - (setOwnerWidget): New function to complement removal of ++ the arg of QInputContext constructor ++ - (composingWidget, setComposingWidget): New function. These ++ functions are participating with preedit relocation of shared ++ context on focus transition ++ - (focusWidget): ++ * Move from qinputcontext.h ++ * Follow introducing QInputContextPrivate ++ * Follow introducing composingWidget ++ - (setFocusWidget): New function to complement removal of ++ the QWidget * arg of setFocus() ++ - (filterEvent): Follow API change of removal of keywidget ++ - (sendIMEvent): Add #ifdef to isolate Qt/X11 dependent code ++ - (sendIMError): New function to hide ownerWidget() from ++ derived QInputContext. This is required to share particular ++ IM plugin code with Qt/Embedded ++ - (setFocus, unsetFocus): Follow API change ++ ++ * src/input/qinputcontextfactory.cpp ++ - (create): Add ownerWidget initialization for new context ++ ++ * src/kernel/qwidget.cpp ++ - (setFocus): Remove unnecessary shared input context ++ checking ++ ++ * src/kernel/qwidget_x11.cpp ++ - (setActiveWindow): Replace duplicated code with ++ focusInputContext() ++ - (getInputContext): Return input context only if ++ isInputMethodEnabled() widget, otherwise returns 0. This ++ is required for proper focus transition handling ++ - (unfocusInputContext): Follow API change of ++ QInputContext::unsetFocus() ++ ++ * src/kernel/qapplication.cpp ++ - (setActiveWindow): Follow change of QWidget::unfocusInputContext() ++ ++ * src/kernel/qapplication_x11.cpp ++ - (x11ProcessEvent): Follow API change of ++ QInputContext::filterEvent() ++ ++ * src/input/qximinputcontext_p.h ++ - (setFocus, unsetFocus): Follow API Change ++ - (hasFocus): New function ++ - (close): New function ++ ++ * src/input/qximinputcontext.cpp ++ - Remove unrecommended focusWidget() and ownerWidget() ++ - (ximWidgetList): Remove to replace with ximContextList ++ - (ximContextList): New variable ++ - (xic_draw_callback): Replace focusWidget() with hasFocus() ++ to follow API Change ++ - (QXIMInputContext): ++ * Follow API change ++ * Follow replacing to ximContextList ++ - (~QXIMInputContext): ++ * Follow replacing to ximContextList ++ * Remove unnecessary QInputContext::unsetFocus() ++ - (close_xim): ++ * Follow replacing to ximContextList ++ * Follow API change ++ - (close, hasFocus): New function. Exported interface for ++ xic_draw_callback to access protected features ++ - (setFocus, unsetFocus): Follow API change ++ ++2004-06-09 YamaKen ++ ++ * src/kernel/qwidget.cpp ++ ++ - (hide): Remove unfocusInputContext(). This caused ++ excessive invalid QInputContext::unsetFocus(). ++ QWidget::deactivateWidgetCleanup() handles ++ unfocusInputContext() appropriately via ++ qApp->setActiveWindow( 0 ). ++ ++2004-06-08 YamaKen ++ ++ * src/kernel/qrichtext_p.h ++ - (QTextCursor::place): New 5-args overloaded function ++ - (QTextCursor::place): 3-args version of the function is ++ reimplemented as inline function using new 5-args one. ++ * src/kernel/qrichtext.cpp ++ - (QTextCursor::place): Remove 3-args version of the function ++ - (QTextCursor::place): New 5-args overloaded function. This ++ is copied from 3-args one and added new args loosePlacing ++ and matchBetweenCharacters ++ ++ * src/widgets/qtextedit.cpp ++ - (sendMouseEventToInputContext): Send mouse event when only ++ mouse cursor is placed within preedit area. This is ++ accomplished by new 5-args QTextCursor::place() ++ - (contentsContextMenuEvent): Disable context menu when in ++ IM composing state ++ - (drawContents): Add updateMicroFocusHint() to follow ++ dragging of active window by the showed candidate window ++ - (contentsMouseMoveEvent): Fix cursor vanishing on IM ++ composing state ++ ++ * src/kernel/qlineedit.cpp ++ - (sendMouseEventToInputContext): Exclude character at ++ preedit[preeditLength] from being handled as preedit ++ - (contextMenuEvent): Disable context menu when in IM ++ composing state ++ - (focusInEvent): Fix invalid MicroFocusHint position which ++ caused that candidate window is always showed at end of ++ the preedit when active window is show() back ++ ++2004-06-07 YamaKen ++ ++ * src/kernel/qwidget_x11.cpp ++ - (reparentSys): Fix an invalid assumption about input ++ context location involving destroyInputContext() ++ - (deleteTLSysExtra): Remove destroyInputContext() because ++ the input context is not a extra data and should be ++ destroyed in QWidget::destroy() ++ - (destroyInputContext): Remove icHolderWidget() because ++ this function is called to destroy the input context that ++ belongs to the widget itself ++ - (destroy): Replace 'this->ic' with 'ic' ++ - (create): Replace 'this->ic' with 'ic' ++ ++ * src/kernel/qwidget.cpp ++ - (hide): Add unfocusInputContext() ++ ++ * src/kernel/qapplication.cpp ++ - (setActiveWindow): Add unfocusInputContext() ++ ++ * src/kernel/qlineedit.cpp ++ - (QLineEditPrivate::xToPosInternal): New function. Copied ++ from xToPos and Remove the safety limiter. ++ - (QLineEditPrivate::xToPos): Reimprement using xToPosInternal ++ - (sendMouseEventToInputContext): ++ * Fix position boundary as matching with character ++ boundary rather than center of character ++ * Send mouse event when only mouse cursor is placed within ++ preedit area. This is accomplished by replacing xToPos() ++ with xToPosInternal() ++ ++2004-06-04 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - (font): New function. Returns the font of focusWidget() ++ * src/kernel/qinputcontext.cpp ++ - (font): New function ++ ++ * src/kernel/qwidget_x11.cpp ++ - (setActiveWindow, focusInputContext): Avoid calling ++ qic->setFocus() if the target is identical widget ++ - (setMicroFocusHint, setActiveWindow, createInputContext, ++ destroyInputContext, resetInputContext, ++ focusInputContext): Remove obsolete comment around qic ++ retrieving ++ ++ * src/input/qximinputcontext_x11.cpp ++ - (language): Return Chinese languages appropriately (such ++ as "zh_CN") ++ ++2004-06-03 YamaKen ++ ++ * src/kernel/qinputcontext.h ++ - (getOwnerWidget): Remove to rename to ownerWidget ++ - (ownerWidget): New function. Rename from getOwnerWidget to ++ be consistent with the name focusWidget ++ - (focusWidget): New function. Add to make IM-related ++ communication with focusWidget easy. The name is imported ++ from QApplication::focusWidget to be supposed same role ++ - (language): Change return type to QCString from const char * ++ - (filterEvent): Change args. Passes QEvent *event rather than ++ preexpanded key event values. This is intended to pass other ++ IM-related events in future. The IM-related events are ++ supposed as QWheelEvent, QTabletEvent and so on ++ - (setFocusHint): Remove to be appropriate name ++ - (setMicroFocus): ++ * Rename from setFocusHint to be appropriate name. This ++ function instructs 'MicroFocus' rect within a widget that ++ is different to normal focus for widgets, so the name ++ 'setFocus' is invalid. And 'Hint' is a concept for the ++ manager of this class and loses the meaning when passed to ++ this class. The passed values are not a hint but have ++ well-defined actual effect, so the name 'Hint' is ++ invalid. Finally, Qt/Embedded 2.3.7 has a samely named ++ method in QWSInputMethod ++ * Remove the arg 'widget' to consistent with the new ++ focusWidget() method ++ - (mouseHandler): New function. The method interface is ++ imported from QWSInputMethod::mouseHandler() of Qt/Embedded ++ 2.3.7 and extended for desktop system ++ - (sendIMEvent): New function. Conventional function to send ++ QIMEvent to appropriate widget using focusWidget(). IM ++ developers can send IMEvents without tracking focuswidget by ++ themself ++ - (ownerWidget): Remove to Rename to _ownerWidget ++ - (_ownerWidget): New variable. Renamed from ownerWidget to ++ avoid name conflict with ownerWidget() ++ - (_focusWidget): New variable. ++ * src/kernel/qinputcontext.cpp ++ - (QInputContext): Follow API change ++ - (~QInputContext): Clean up ++ - (filterEvent): Follow API change ++ - (sendIMEvent): New function. ++ - (setFocusHint): Remove to follow new API ++ - (setMicroFocus): copied from setFocusHint and reimplement to ++ follow new API ++ - (mouseHandler): New function ++ - (language): Follow API change ++ ++ * src/kernel/qwidget.h ++ - (sendMouseEventToInputContext): New function ++ - (unfocusInputContext): New function ++ ++ * src/kernel/qwidget.cpp ++ - (setFocus): Invoke unfocusInputContext() with previous ++ focus widget to delegate reset responsibility to input ++ context instead of resetInputContext() directly. See also ++ comment for further information ++ - (clearFocus): Add unfocusInputContext(); ++ - (event): Delegate reset responsibility to input context ++ instead of resetInputContext() directly. See also comment ++ for further information ++ ++ * src/kernel/qwidget_x11.cpp ++ - (setMicroFocusHint): Modify to follow API change ++ - (setActiveWindow): Modify to follow API change ++ - (focusInputContext): Modify to follow API change ++ - (unfocusInputContext): New function ++ - (sendMouseEventToInputContext): New function ++ ++ * src/kernel/qapplication_x11.cpp ++ - (class QETWidget): Change translateKeyEventInternal definition ++ - (x11ProcessEvent): Change QInputContext::filterEvent() ++ invocation to follow API change ++ - (translateKeyEventInternal): ++ * Add new arg statefulTranslation to enable duplicate call ++ within single event loop. This is required to support both ++ QInputContext::filterEvent() and RTL extensions ++ * Restore accidencially omitted qt_mode_switch_remove_mask ++ handling ++ ++ * src/input/qximinputcontext_p.h ++ - (class QXIMInputContext): Follow API change of QInputContext ++ - (language): Change return type to follow new API ++ - (setFocus): Change arg to follow new API ++ - (setFocusHint): Remove to follow new API ++ - (setMicroFocus): New method to follow new API ++ - (mouseHandler): New method to follow new API ++ - (sendIMEvent): New method (reimp) ++ - (focusWidget): Remove to follow new API ++ - (cpos): New variable ++ - (sellen): New variable ++ * src/input/qximinputcontext_x11.cpp ++ - (qt_compose_emptied): Remove as result of optimization. It ++ has become unnecessary now ++ - (xic_start_callback): Add IMStart event sending as ++ result of optimization ++ - (xic_draw_callback): Optimize state management for IMEvent ++ sending, and simplify using sendIMEvent() ++ - (xic_done_callback): Simplify using sendIMEvent() ++ - (QXIMInputContext): ++ * Follow class definition change ++ * Follow API change ++ - (~QXIMInputContext): Modify to follow API change ++ - (x11FilterEvent): Optimize state management for IMEvent ++ sending, and simplify using sendIMEvent() ++ - (sendIMEvent): New function. Implement to remember last ++ IMEvent information ++ - (reset): Simplify using sendIMEvent() ++ - (resetClientState): Follow class definition change ++ - (setFocusHint): Remove to follow new API ++ - (setMicroFocus): copied from setFocusHint and modified to ++ follow new API ++ - (mouseHandler): New function. Implemented to reset the ++ context on MouseButtonPress except for Japanese IM. See ++ also comment for further information ++ - (setFocus): Reimplement to follow new API. Automatically ++ handles appropriate IMEvent sending on focus transition ++ - (unsetFocus): Reimplement to follow new API. Implemented to ++ reset the context on FocusOut except for Japanese IM. See ++ also comment for further information ++ ++ * src/widgets/qlineedit.h ++ - (sendMouseEventToInputContext): New function ++ * src/widgets/qlineedit.cpp ++ - (QLineEditPrivate::composeMode): New function ++ - (QLineEditPrivate::hasIMSelection): New function ++ - (QLineEditPrivate::preeditLength): New function ++ - (QLineEditPrivate::imSelectionLength): New function ++ - (mousePressEvent, mouseMoveEvent, mouseReleaseEvent, ++ mouseDoubleClickEvent): Support QInputContext::mouseHandler() ++ - (sendMouseEventToInputContext): New function. Retrieve the ++ position and call QWidget::sendMouseEventToInputContext() ++ - (drawContents): Follow API change ++ ++ * src/widgets/qtextedit.h ++ - (sendMouseEventToInputContext): New function ++ * src/widgets/qtextedit.cpp ++ - (QTextEditPrivate::composeMode): New function ++ - (sendMouseEventToInputContext): New function. Retrieve the ++ position and call QWidget::sendMouseEventToInputContext() ++ - (imComposeEvent, imEndEvent): Clean up with composeMode() ++ - (contentsMousePressEvent, contentsMouseMoveEvent, ++ contentsMouseReleaseEvent, contentsMouseDoubleClickEvent): ++ Support QInputContext::mouseHandler() ++ ++2004-06-01 YamaKen ++ ++ * src/input/qximinputcontext_x11.cpp (x11FilterEvent): Fix ++ commit problem except for on-the-spot style ++ ++2004-05-31 YamaKen ++ ++ * First 'Simplified API' patch. A lot of changes to be described ++ ++2004-03-16 Daisuke Kameda ++ ++ * A lot of changes to be described before this date. Almost ++ of code are written by Daisuke Kameda +diff -urN qt-x11-free-3.3.5.orig/README.immodule qt-x11-free-3.3.5/README.immodule +--- qt-x11-free-3.3.5.orig/README.immodule 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/README.immodule 2005-10-18 12:57:18.536255848 +0900 +@@ -0,0 +1,107 @@ ++immodule for Qt ++ ++ ++* What is this? ++ ++ immodule for Qt is a modular, extensible input method subsystem for ++ Qt. ++ ++ This project brings functionality similar to the immodule for GTK+ ++ to the Qt library. The main goal of the project is to extend and ++ enhance the input method support in the Qt library, in order to ++ provide a modern and powerful multi-language input system. Our short ++ term goal is to make Qt (especially Qt/X11) "up-to-date" with other ++ X11-based toolkits such as GTK+. We are also focusing on what the ++ input method API should be for future Qt versions. ++ ++ See our webpage for further information. ++ ++ http://immodule-qt.freedesktop.org/ ++ ++ ++* About this release ++ ++ qt-x11-immodule-unified-qt3.3.3-20040910 is a stable release. Since ++ it breaks backward compatibility (source and binary) about immodule ++ with our previous releases qt-x11-immodule-unified-qt3.3.3-20040819 ++ and qt-x11-immodule-bc-qt3.3.2-20040623, optional immodule plugins ++ must be updated to proper version. See 'Optional immodule plugins' ++ section of our download page. ++ ++ http://immodule-qt.freedesktop.org/Software/ImmoduleQtDownload ++ ++ However, backward compatibility (source and binary) with normal Qt ++ 3.3.3 is kept in 'Binary Compatible' mode. ++ ++ ++* How to install ++ ++ After extract the Qt archive, perform following instructions ++ ++ cd qt-x11-free-3.3.3 ++ patch -p0 < qt-x11-immodule-unified-qt3.3.3-20040910.diff ++ ./make-symlinks.sh ++ ./configure ++ ++ Our patch provides following two configure options. Choose 'Binary ++ Compatible' for normal use. ++ ++ Build Qt with 'Binary Compatible' immodule support (default) ++ ++ configure -inputmethod ++ ++ Build Qt without binary compatibility, but supports more advanced ++ immodule extensions. It cannot be used with ordinary application ++ binaries (i.e. the option is for developers) ++ ++ configure -inputmethod -inputmethod-ext ++ ++ ++* How to use ++ ++ - See users manual of each input method plugins ++ ++ - Run qtconfig to choose your favorite XIM input style ++ ++ ++* Environment variables ++ ++ Some environment variables are available for expert users and system ++ integrators. The specification is preliminary and may be changed ++ without notification. Be careful. ++ ++ See following examples to use the variables. ++ ++ ++ - set "xim" input method as default ++ ++ export QT_IM_MODULE=xim ++ ++ ++ - set "simple" composing input method as default ++ ++ export QT_IM_MODULE=simple ++ ++ ++ - set "xim" input method as default, and disable input method ++ selection menu in the context menu ++ ++ export QT_IM_SWITCHER=imsw-none ++ export QT_IM_MODULE=xim ++ ++ ++ - set "xim" input method as default, and enable input method ++ selection menu in the context menu (default configuration) ++ ++ export QT_IM_SWITCHER=imsw-multi ++ export QT_IM_MODULE=xim ++ ++ ++ - set "iiimqcf" that has its own input method switching framework as ++ default, and disable input method selection menu in the context ++ menu. Such configuration is required by some system integrators to ++ provide unified user interface for global input method switching ++ over the desktop ++ ++ export QT_IM_SWITCHER=imsw-none ++ export QT_IM_MODULE=iiimqcf +diff -urN qt-x11-free-3.3.5.orig/changes.immodule qt-x11-free-3.3.5/changes.immodule +--- qt-x11-free-3.3.5.orig/changes.immodule 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/changes.immodule 2005-10-18 12:57:18.538255544 +0900 +@@ -0,0 +1,248 @@ ++This file describes significant change from ++qt-x11-immodule-bc-qt3.3.2-20040623. ++ ++Differences from previous release ++(qt-x11-immodule-unified-qt3.3.3-20040819) are itemized with '+' ++sign. Search it to track incremental change. ++ ++**************************************************************************** ++* For users * ++**************************************************************************** ++ ++General ++------- ++ +++ A strange character inversion problem on some input methods has been ++ fixed ++ ++ ++Input methods ++------------- ++ ++- Added "simple" input method which provides dead/multi key composing ++ for latin languages ++ ++ ++User Interface ++-------------- ++ ++- Added input method selection menu in the context menu of text ++ widgets ++ ++ ++Configuration ++------------- ++ +++ default IM configuration feature of qtconfig has been disabled in BC ++ mode. This is a political change to avoid the confusion about input ++ method configuration in accordance with GTK+ environment. ++ ++ See following discussion for further information. ++ ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000416.html ++ ++- Added new environment variables QT_IM_SWITCHER and QT_IM_MODULE to ++ set user's favorite input method as default. See README.immodule for ++ examples. ++ ++ ++Build & Install ++--------------- ++ +++ configure options have been changed for internal reasons. See 'How ++ to install' section of README.immodule ++ ++- This version of immodule requires corresponding version of each ++ input method plugins (i.e. update your additional input method ++ plugins) ++ ++- Plugin directory has been changed from $QTDIR/plugins/input/ to ++ $QTDIR/plugins/inputmethods/. Delete old directory. ++ ++- Some codes have been changed to allow compiling against Qt 3.2.x or ++ earlier. ++ ++ ++**************************************************************************** ++* For develpers * ++**************************************************************************** ++ ++Documents ++--------- ++ ++- Almost description of QInputContext and QInputContextPlugin has been ++ filled. Feel free to ask obscure things at our mailinglist. ++ ++ ++New features ++------------ ++ ++- Pluggable input method switcher ++ ++ Now we can write input method switcher as an ordinary input method ++ plugin. The two plugins 'imsw-multi' and 'imsw-none' are provided as ++ default. But the architecture needs more discussion about whether ++ the design is right or not. Join the discussion. ++ ++- Pluggable popup menu ++ ++ Any input method can provide its own popup menu. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000266.html ++ for further information. ++ ++- QInputContext proxying ++ ++ Some methods of QInputContext have been changed to enable ++ QInputContext proxying. This feature is required to implement ++ pluggable input method switcher. ++ ++ ++General ++------- ++ +++ QInputContext has been source compatible with Qt4 version. Basic ++ input method plugin can be source compatible without #ifdef. Only ++ pluggable popup menu requires #ifdef'ed different code. In addition, ++ be careful about use of classes that is deprecated in Qt4. ++ ++- Our two development tree for Qt3 'Binary Compatible' and 'ALL' have ++ been merged into this unified source tree. The source tree is called ++ 'Unified' patch. ++ ++- 'dead keys' for latin languages have been added into Qt::Key ++ ++- Added plugins/src/inputmethods directory to build input method ++ plugins within the Qt source tree. The directory name 'inputmethods' ++ is intended to be compatible with Qt/Embedded. Install directory ++ name is still kept as 'input' for backward compatibility ++ ++- Changed XIM input method to a plugin instead of directly link into ++ libqt ++ ++- Plugin directory has been changed from $QTDIR/plugins/input/ to ++ $QTDIR/plugins/inputmethods/. Replace install directory with new ++ one. ++ ++- Fixed some bugs in previous qt-x11-immodule-bc-qt3.3.2-20040623. See ++ following log for more detail. ++ ++ * src/kernel/qwidget_x11.cpp ++ - (destroyInputContext): Replace the code with original Simplified ++ API patch. See the comment to recognize the original intention ++ - (focusInputContext): Fix a condition to call qic->setFocus() as ++ originally written. See added comment to recognize the original ++ intention ++ ++- QLocale dependency has been removed to be compiled on Qt 3.2.x or ++ earlier ++ ++- Many internal improvements and cleanups ++ ++ ++API Changes in qt-x11-immodule-unified-qt3.3.3-20040910 ++------------------------------------------------------- +++ QInputContext ++ ++ * QInputContext() ++ ++ Added 'parent' arg to be compatible with Qt4. Since the arg ++ defaults to 0, no modification of plugins are required. ++ ++ * language() ++ * identifierName() ++ ++ Return type of these two methods have been changed from QCString ++ which is deprecated in Qt4 to QString to make plugins source ++ compatible with Qt4. ++ ++ * addActionsTo() ++ ++ New method for Qt4 text widget developer ++ ++ ++API Changes in qt-x11-immodule-unified-qt3.3.3-20040812 ++------------------------------------------------------- ++ ++- QInputContext proxying ++ ++ QInputContext have been changed as follows to enable QInputContext ++ proxying. ++ ++ 1. Use signal to deliver QIMEvent instead of explicit ++ postEvent(). This enables QIMEvent proxying and better platform ++ abstraction. Corresponding slot is created as ++ QApplication::imEventReceived(). ++ ++ 2. Move some methods of QInputContext to public from protected or ++ private. This enables that proxy-IM can access slave methods. ++ ++ 3. Make some methods of QInputContext virtual. This enables ++ overriding the methods as proxy ++ ++ 4. Rename QInputContext::name() to identifierName() to avoid ++ conflicting with QObject::name() ++ ++ ++- QInputContext ++ ++ * language() ++ ++ New method to indicate current language ++ ++ * menus() ++ ++ New method for the pluggable popup menu feature ++ ++ * addMenusTo() ++ ++ New method for text widget developer ++ ++ * deletionRequested() ++ ++ New signal to request deletion of this instance. This is added for ++ fatal error handling ++ ++ * identifierName() ++ ++ This replaces name() of previous API to avoid conflicting with ++ QObject::name(), and to distinguish the role from displayName() ++ ++ * filterEvent() ++ ++ Turn the argument into const. See ++ http://freedesktop.org/pipermail/immodule-qt/2004-August/000335.html ++ for further information ++ ++ * isComposing ++ * isPreeditRelocationEnabled ++ ++ Move to public from protected to allow proxying ++ ++ * setFocusWidget ++ * setHolderWidget ++ * releaseComposingWidget ++ ++ Move to public from private to allow proxying ++ ++ * focusWidget ++ * holderWidget ++ ++ - Make public from protected to allow proxying ++ - Make virtual to allow overriding the method as proxy ++ ++- QInputContextPlugin ++ ++ * languages() ++ ++ New method which returns what languages are supported by the ++ QInputContext instance ++ ++ * displayName() ++ ++ New method which returns a user friendly i18n-ized name of the ++ QInputContext instance ++ ++ * description() ++ ++ New method which returns a i18n-ized brief description of the ++ QInputContext instance +diff -urN qt-x11-free-3.3.5.orig/configure qt-x11-free-3.3.5/configure +--- qt-x11-free-3.3.5.orig/configure 2005-08-22 18:31:26.000000000 +0900 ++++ qt-x11-free-3.3.5/configure 2005-10-18 12:57:18.561252048 +0900 +@@ -218,7 +218,7 @@ + fi + + # licensed modules depend on type of commercial license +-MODULES="styles tools kernel widgets dialogs iconview workspace" ++MODULES="styles tools kernel widgets dialogs iconview workspace inputmethod" + [ "$PLATFORM_QWS" = "yes" ] && [ "$Products" = "qt-professional" ] && MODULES="$MODULES network" + [ "$Products" != "qt-professional" ] && MODULES="$MODULES network canvas table xml opengl sql" + CFG_MODULES_AVAILABLE=$MODULES +@@ -265,6 +265,9 @@ + CFG_SQL_AUTODETECTED= + CFG_GFX_AVAILABLE= + CFG_STYLE_AVAILABLE= ++#Keep this position for CFG_IM* to avoid patch rejection ++CFG_IM=yes ++CFG_IM_EXT=no + CFG_TABLET=auto + CFG_XKB=auto + CFG_NIS=auto +@@ -396,6 +399,12 @@ + VAR=fatal_error + VAL=no + ;; ++ #Qt style yes options for immodule ++ #Keep this place to avoid patch rejection ++ -inputmethod|-inputmethod-ext) ++ VAR=`echo $1 | sed "s,^-\(.*\),\1,"` ++ VAL=yes ++ ;; + -embedded) + VAR=embedded + # this option may or may not be followed by an argument +@@ -1015,6 +1024,20 @@ + dlopen-opengl) + CFG_DLOPEN_OPENGL="$VAL" + ;; ++ inputmethod) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then ++ CFG_IM="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; ++ inputmethod-ext) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then ++ CFG_IM_EXT="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; + *) + UNKNOWN_OPT=yes + ;; +@@ -1894,6 +1917,13 @@ + CFG_GFX_AVAILABLE=`echo $CFG_GFX_AVAILABLE` + fi + ++# immodule extensions ++if [ "$CFG_IM" = "no" ]; then ++ CFG_IM_EXT=no ++fi ++if [ "$CFG_IM_EXT" = "yes" ]; then ++ CFG_IM=yes ++fi + + #------------------------------------------------------------------------------- + # help - interactive parts of the script _after_ this section please +@@ -2201,6 +2231,20 @@ + XKY="*" + XKN=" " + fi ++ if [ "$CFG_IM" = "no" ]; then ++ IMY=" " ++ IMN="*" ++ else ++ IMY="*" ++ IMN=" " ++ fi ++ if [ "$CFG_IM_EXT" = "no" ]; then ++ IXY=" " ++ IXN="*" ++ else ++ IXY="*" ++ IXN=" " ++ fi + cat << EOF + + Qt/X11 only: +@@ -2249,6 +2293,14 @@ + -dlopen-opengl ..... Qt uses dlopen(3) to resolve OpenGL functions + (instead of linking with OpenGL libraries directly). + ++ $IMN -no-inputmethod .... Do not compile immodule (extensible input method) ++ support. ++ $IMY -inputmethod ....... Compile immodule support. ++ ++ $IXN -no-inputmethod-ext Do not compile more immodule extensions support. ++ $IXY -inputmethod-ext ... Compile more immodule extensions support. ++ (breaks ABI with standard Qt3). ++ + EOF + fi + +@@ -2927,6 +2979,16 @@ + if [ "$CFG_XKB" = "yes" ]; then + QMAKE_CONFIG="$QMAKE_CONFIG xkb" + fi ++ if [ "$CFG_IM" = "yes" ]; then ++ QMAKE_CONFIG="$QMAKE_CONFIG inputmethod" ++ elif [ "$CFG_IM" = "no" ]; then ++ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IM" ++ fi ++ if [ "$CFG_IM_EXT" = "yes" ]; then ++ QMAKE_CONFIG="$QMAKE_CONFIG inputmethod-ext" ++ elif [ "$CFG_IM_EXT" = "no" ]; then ++ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IM_EXTENSIONS" ++ fi + elif [ "$PLATFORM_MAC" = "yes" ]; then + if [ "$CFG_TABLET" = "yes" ]; then + QMAKE_CONFIG="$QMAKE_CONFIG tablet" +@@ -3051,7 +3113,7 @@ + # minimal-config small-config medium-config large-config full-config + # + # Modules: +-# styles tools kernel widgets dialogs iconview workspace ++# styles tools kernel widgets dialogs iconview workspace inputmethod + # + # Enterprise/Open Source edition modules: + # network canvas table xml opengl sql +@@ -3059,6 +3121,8 @@ + # Options: + # stl + # ++# X11 : inputmethod-ext ++# + # Things that do not affect the Qt API/ABI: + # system-jpeg no-jpeg jpeg + # system-mng no-mng mng +@@ -3080,10 +3144,10 @@ + # tablet + # ipv6 + # +-# X11 : xftnameunparse x11sm xinerama xcursor xrandr xrender xftfreetype xkb ++# X11 : xftnameunparse x11sm xinerama xcursor xrandr xrender xftfreetype xkb inputmethod + # Embedded: embedded ft + # +-ALL_OPTIONS="styles tools kernel widgets dialogs iconview workspace network canvas table xml opengl sql stl" ++ALL_OPTIONS="styles tools kernel widgets dialogs iconview workspace inputmethod network canvas table xml opengl sql stl" + BUILD_CONFIG= + BUILD_OPTIONS= + +@@ -3097,7 +3161,7 @@ + BUILD_CONFIG="$config_option" + ;; + +- styles|tools|kernel|widgets|dialogs|iconview|workspace|network|canvas|table|xml|opengl|sql|stl) ++ styles|tools|kernel|widgets|dialogs|iconview|workspace|inputmethod|network|canvas|table|xml|opengl|sql|stl) + # these config options affect the Qt API/ABI. they should influence + # the generation of the buildkey, so we don't skip them + SKIP="no" +@@ -3430,6 +3494,8 @@ + echo "XRender support ..... $CFG_XRENDER" + echo "Xft support ......... $CFG_FREETYPE" + echo "XKB Support ......... $CFG_XKB" ++ echo "immodule support .... $CFG_IM" ++ echo "immodule ext support $CFG_IM_EXT" + elif [ "$PLATFORM_MAC" = "yes" ]; then + echo "Accessibility ....... $CFG_ACCESSIBILITY" + echo "Tablet support ...... $CFG_TABLET" +diff -urN qt-x11-free-3.3.5.orig/make-symlinks.sh qt-x11-free-3.3.5/make-symlinks.sh +--- qt-x11-free-3.3.5.orig/make-symlinks.sh 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/make-symlinks.sh 2005-10-18 12:57:18.563251744 +0900 +@@ -0,0 +1,12 @@ ++#!/bin/sh ++cd include ++rm -f q*.h ++ln -s ../src/*/q*.h . ++ln -s ../extensions/*/src/q*.h . ++ln -s ../tools/assistant/lib/qassistantclient.h . ++ln -s ../tools/designer/uilib/qwidgetfactory.h . ++rm -f q*_p.h ++cd private ++rm -f q*_p.h ++ln -s ../../src/*/q*_p.h . ++ +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/imsw-multi.pro qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/imsw-multi.pro +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/imsw-multi.pro 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/imsw-multi.pro 2005-10-18 12:57:18.565251440 +0900 +@@ -0,0 +1,14 @@ ++TEMPLATE = lib ++TARGET = qimsw-multi ++DESTDIR = ../../../inputmethods ++ ++INCLUDEPATH += . ++CONFIG += qt warn_on debug plugin ++target.path += $$plugins.path/inputmethods ++INSTALLS += target ++ ++# Input ++HEADERS += qmultiinputcontext.h \ ++ qmultiinputcontextplugin.h ++SOURCES += qmultiinputcontext.cpp \ ++ qmultiinputcontextplugin.cpp +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 2005-10-18 12:57:18.568250984 +0900 +@@ -0,0 +1,379 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QMultiInputContext class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qmultiinputcontext.h" ++#include ++#include ++#include ++#ifndef QT_NO_IM_EXTENSIONS ++#include ++#endif ++ ++#include ++ ++#define QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX ++ ++QMultiInputContext::QMultiInputContext() ++ : QInputContext(), _slave( 0 ), imIndex( 0 ), cachedFocus( FALSE ), ++ cachedFocusWidget( 0 ), cachedHolderWidget( 0 ), ++ beIndirectlyConnected( FALSE ), popup( NULL ), currentIMKey( QString::null ) ++{ ++ keyDict.setAutoDelete( true ); ++ keyDict.clear(); ++ ++ if ( getenv( "QT_IM_MODULE" ) ) { ++ currentIMKey = getenv( "QT_IM_MODULE" ); ++ } else { ++#ifndef QT_NO_IM_EXTENSIONS ++ QSettings settings; ++ currentIMKey = settings.readEntry( "/qt/DefaultInputMethod", "xim" ); ++#else ++ currentIMKey = "xim"; ++#endif ++ } ++} ++ ++QMultiInputContext::~QMultiInputContext() ++{ ++ keyDict.clear(); ++} ++ ++ ++QString QMultiInputContext::identifierName() ++{ ++ return ( slave() ) ? slave()->identifierName() : ""; ++} ++ ++QString QMultiInputContext::language() ++{ ++ return ( slave() ) ? slave()->language() : ""; ++} ++ ++ ++#if defined(Q_WS_X11) ++bool QMultiInputContext::x11FilterEvent( QWidget *keywidget, XEvent *event ) ++{ ++ return ( slave() ) ? slave()->x11FilterEvent( keywidget, event ) : FALSE; ++} ++#endif // Q_WS_X11 ++ ++ ++bool QMultiInputContext::filterEvent( const QEvent *event ) ++{ ++#if !defined(QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX) ++ if ( event->type() == QEvent::KeyPress ) { ++ QKeyEvent *keyevent = (QKeyEvent *)event; ++ ++ // filter selection key ++ // Control+Alt+Key_Down: change to next input method ++ // Control+Alt+Key_Up: change to previous input method ++ if ( ( keyevent->state() & Qt::ControlButton ) && ++ ( keyevent->state() & Qt::AltButton ) ) { ++ if ( keyevent->key() == Qt::Key_Up ) { ++ changeInputMethod( --imIndex ); ++ return TRUE; ++ } else if ( keyevent->key() == Qt::Key_Down ) { ++ changeInputMethod( ++imIndex ); ++ return TRUE; ++ } ++ } ++ } ++#endif ++ ++ return ( slave() ) ? slave()->filterEvent( event ) : FALSE; ++} ++ ++void QMultiInputContext::reset() ++{ ++ if ( slave() ) ++ slave()->reset(); ++} ++ ++ ++void QMultiInputContext::setFocus() ++{ ++ cachedFocus = TRUE; ++ if ( slave() ) ++ slave()->setFocus(); ++} ++ ++void QMultiInputContext::unsetFocus() ++{ ++ cachedFocus = FALSE; ++ if ( slave() ) ++ slave()->unsetFocus(); ++} ++ ++void QMultiInputContext::setMicroFocus( int x, int y, int w, int h, QFont *f ) ++{ ++ if ( slave() ) ++ slave()->setMicroFocus( x, y, w, h, f ); ++} ++ ++void QMultiInputContext::mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState state ) ++{ ++ if ( slave() ) ++ slave()->mouseHandler( x, type, button, state ); ++} ++ ++QFont QMultiInputContext::font() const ++{ ++ return ( slave() ) ? slave()->font() : QInputContext::font(); ++} ++ ++void QMultiInputContext::destroyInputContext() ++{ ++ if ( _slave ) { ++ // _slave->reset() may not properly work in the case, so we ++ // manually resets the composing state of text widget ++ if ( _slave->focusWidget() ) { ++ QIMEvent *terminator = new QIMEvent( QEvent::IMEnd, QString::null, -1 ); ++ emit imEventGenerated( _slave->focusWidget(), terminator ); ++ } ++ _slave->deleteLater(); ++ _slave = 0; ++ } ++} ++ ++ ++/*! ++ This function is a placeholder for future experiment or extension ++ such as commit string snooping. set beIndirectlyConnected = TRUE ++ to activate this virtual function. ++*/ ++void QMultiInputContext::postIMEvent( QObject *receiver, QIMEvent *event ) ++{ ++ emit imEventGenerated( receiver, event ); ++} ++ ++ ++#if defined(Q_WS_X11) ++QWidget *QMultiInputContext::focusWidget() const ++{ ++ return ( slave() ) ? slave()->focusWidget() : 0; ++} ++ ++QWidget *QMultiInputContext::holderWidget() const ++{ ++ return ( slave() ) ? slave()->holderWidget() : 0; ++} ++ ++ ++void QMultiInputContext::setFocusWidget( QWidget *w ) ++{ ++ cachedFocusWidget = w; ++ if ( slave() ) ++ slave()->setFocusWidget( w ); ++} ++ ++void QMultiInputContext::setHolderWidget( QWidget *w ) ++{ ++ cachedHolderWidget = w; ++ if ( slave() ) ++ slave()->setHolderWidget( w ); ++} ++ ++void QMultiInputContext::releaseComposingWidget( QWidget *w ) ++{ ++ if ( slave() ) ++ slave()->releaseComposingWidget( w ); ++} ++ ++#endif ++ ++bool QMultiInputContext::isComposing() const ++{ ++ return ( slave() ) ? slave()->isComposing() : FALSE; ++} ++ ++bool QMultiInputContext::isPreeditRelocationEnabled() ++{ ++ return ( slave() ) ? slave()->isPreeditRelocationEnabled() : FALSE; ++} ++ ++QInputContext *QMultiInputContext::slave() ++{ ++ if ( ! _slave ) { ++#if !defined(QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX) ++ changeInputMethod( imIndex ); ++#else ++ changeInputMethod( currentIMKey ); ++#endif ++ } ++ ++ return _slave; ++} ++ ++const QInputContext *QMultiInputContext::slave() const ++{ ++ return _slave; ++} ++ ++void QMultiInputContext::changeInputMethod( int newIndex ) ++{ ++#if !defined(QT_NO_IM_QMULTIINPUTCONTEXT_IMINDEX) ++ QStringList keys = QInputContextFactory::keys(); ++ if ( keys.size() == 0 ) ++ return; ++ ++ if ( newIndex >= (int)keys.size() ) { ++ imIndex = 0; ++ } else if ( newIndex < 0 ) { ++ imIndex = keys.size() - 1; ++ } else { ++ imIndex = newIndex; ++ } ++ ++ changeInputMethod( keys[imIndex] ); ++#endif ++} ++ ++void QMultiInputContext::changeInputMethod( QString key ) ++{ ++ QStringList keys = QInputContextFactory::keys(); ++ if ( keys.size() == 0 ) ++ return; ++ ++ if ( key.isEmpty() ) ++ key = keys[0]; ++ ++ if ( _slave ) { ++ _slave->reset(); ++ delete _slave; ++ } ++ ++ _slave = QInputContextFactory::create( key, cachedHolderWidget ); ++ if ( _slave ) { ++ insertChild( _slave ); ++ ++ const char *method; ++ if ( beIndirectlyConnected ) { ++ method = SLOT(imEventReceived(QObject *,QIMEvent *)); ++ } else { ++ method = SIGNAL(imEventGenerated(QObject *,QIMEvent *)); ++ } ++ connect( _slave, SIGNAL(imEventGenerated(QObject *,QIMEvent *)), ++ this, method ); ++ connect( _slave, SIGNAL(deletionRequested()), ++ this, SLOT(destroyInputContext()) ); ++ ++ if ( cachedFocus ) { ++ _slave->setFocus(); ++ _slave->setFocusWidget( cachedFocusWidget ); ++ } ++ ++ currentIMKey = key; ++ ++ qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s", ++ imIndex, (const char *)_slave->identifierName() ); ++ } ++} ++ ++QPtrList *QMultiInputContext::menus() ++{ ++ QInputContextMenu *imSelMenu = new QInputContextMenu; ++ imSelMenu->title = tr( "Select Input &Method" ); ++ imSelMenu->popup = createImSelPopup(); ++ ++ QPtrList *result = new QPtrList; ++ result->append( imSelMenu ); ++ ++ QPtrList *slaveMenus = ( slave() ) ? slave()->menus() : 0; ++ if ( slaveMenus ) { ++ for ( QPtrList::Iterator it = slaveMenus->begin(); ++ it != slaveMenus->end(); ++ ++it ) { ++ QInputContextMenu *slaveMenu = *it; ++ result->append( slaveMenu ); ++ } ++ delete slaveMenus; ++ } ++ ++ return result; ++} ++ ++QPopupMenu *QMultiInputContext::createImSelPopup() ++{ ++ if ( popup ) ++ delete popup; ++ ++ popup = new QPopupMenu(); ++ keyDict.clear(); ++ ++ QStringList keys = QInputContextFactory::keys(); ++ for ( uint i=0; i < keys.size(); i++ ) { ++ QString idName = keys[i]; ++ bool isIMSwitcher = idName.startsWith( "imsw-" ); ++ ++ if ( ! isIMSwitcher ) { ++ QString dispName = QInputContextFactory::displayName( idName ); ++ if ( dispName.isEmpty() ) ++ dispName = idName; ++ ++ int id = popup->insertItem( dispName ); ++ keyDict.insert( (long)id, new QString( idName ) ); ++ ++ if ( idName == currentIMKey ) ++ popup->setItemChecked( id, true ); ++ ++ QString descriptionStr = QInputContextFactory::description( idName ); ++ if ( ! descriptionStr.isEmpty() ) ++ popup->setWhatsThis( id, descriptionStr ); ++ } ++ } ++ ++ QObject::connect( popup, SIGNAL(activated(int)), ++ this, SLOT(changeInputMethodWithMenuId(int)) ); ++ ++ return popup; ++} ++ ++void QMultiInputContext::changeInputMethodWithMenuId( int menuid ) ++{ ++ QString *key = keyDict.find( (long)menuid ); ++ changeInputMethod( (*key) ); ++} ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.h 2005-10-18 12:57:18.570250680 +0900 +@@ -0,0 +1,124 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QMultiInputContext class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QMULTIINPUTCONTEXT_H ++#define QMULTIINPUTCONTEXT_H ++ ++#ifndef QT_NO_IM ++ ++#include ++#include ++#include ++#include ++#include ++ ++class QPopupMenu; ++ ++class QMultiInputContext : public QInputContext ++{ ++ Q_OBJECT ++public: ++ QMultiInputContext(); ++ ~QMultiInputContext(); ++ ++ QString identifierName(); ++ QString language(); ++ ++#if defined(Q_WS_X11) ++ bool x11FilterEvent( QWidget *keywidget, XEvent *event ); ++#endif // Q_WS_X11 ++ bool filterEvent( const QEvent *event ); ++ void reset(); ++ ++ void setFocus(); ++ void unsetFocus(); ++ void setMicroFocus( int x, int y, int w, int h, QFont *f = 0 ); ++ void mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, Qt::ButtonState state ); ++ QFont font() const; ++ bool isComposing() const; ++ bool isPreeditRelocationEnabled(); ++ ++#if (QT_VERSION-0 >= 0x040000) ++ QPtrList *qt4menus(); ++#endif ++ QPtrList *menus(); ++ QPopupMenu *createImSelPopup(); ++ ++#if defined(Q_WS_X11) ++ QWidget *focusWidget() const; ++ QWidget *holderWidget() const; ++ ++ void setFocusWidget( QWidget *w ); ++ void setHolderWidget( QWidget *w ); ++ void releaseComposingWidget( QWidget *w ); ++#endif ++ ++public slots: ++ virtual void destroyInputContext(); ++ virtual void postIMEvent( QObject *receiver, QIMEvent *event ); ++ ++protected slots: ++ void changeInputMethodWithMenuId( int menuid ); ++ ++protected: ++ QInputContext *slave(); ++ const QInputContext *slave() const; ++ ++ void changeInputMethod( int newIndex ); ++ void changeInputMethod( QString name ); ++ ++ QInputContext *_slave; ++ int imIndex; ++ bool cachedFocus; ++ QWidget *cachedFocusWidget; ++ QWidget *cachedHolderWidget; ++ bool beIndirectlyConnected; ++ ++ QIntDict keyDict; ++ QGuardedPtr popup; ++ QString currentIMKey; ++}; ++ ++#endif //Q_NO_IM ++ ++#endif // QMULTIINPUTCONTEXT_H +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp 2005-10-18 12:57:18.571250528 +0900 +@@ -0,0 +1,88 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QMultiInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qmultiinputcontext.h" ++#include "qmultiinputcontextplugin.h" ++#include ++#include ++ ++ ++QMultiInputContextPlugin::QMultiInputContextPlugin() ++{ ++} ++ ++QMultiInputContextPlugin::~QMultiInputContextPlugin() ++{ ++} ++ ++QStringList QMultiInputContextPlugin::keys() const ++{ ++ // input method switcher should named with "imsw-" prefix to ++ // prevent to be listed in ordinary input method list. ++ return QStringList( "imsw-multi" ); ++} ++ ++QInputContext *QMultiInputContextPlugin::create( const QString &key ) ++{ ++ return new QMultiInputContext; ++} ++ ++QStringList QMultiInputContextPlugin::languages( const QString &key ) ++{ ++ return QStringList( "" ); ++} ++ ++QString QMultiInputContextPlugin::displayName( const QString &key ) ++{ ++ return tr( "Multiple Input Method Switcher" ); ++} ++ ++QString QMultiInputContextPlugin::description( const QString &key ) ++{ ++ return tr( "Multiple input method switcher that uses the context menu of the text widgets" ); ++} ++ ++ ++Q_EXPORT_PLUGIN( QMultiInputContextPlugin ) ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.h qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontextplugin.h 2005-10-18 12:57:18.573250224 +0900 +@@ -0,0 +1,63 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QMultiInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qmultiinputcontext.h" ++#include ++#include ++ ++ ++class QMultiInputContextPlugin : public QInputContextPlugin ++{ ++ Q_OBJECT ++public: ++ QMultiInputContextPlugin(); ++ ~QMultiInputContextPlugin(); ++ ++ QStringList keys() const; ++ QInputContext *create( const QString &key ); ++ QStringList languages( const QString &key ); ++ QString displayName( const QString &key ); ++ QString description( const QString &key ); ++}; ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/imsw-none.pro qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/imsw-none.pro +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/imsw-none.pro 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/imsw-none.pro 2005-10-18 12:57:18.574250072 +0900 +@@ -0,0 +1,12 @@ ++TEMPLATE = lib ++TARGET = qimsw-none ++DESTDIR = ../../../inputmethods ++ ++INCLUDEPATH += . ++CONFIG += qt warn_on debug plugin ++target.path += $$plugins.path/inputmethods ++INSTALLS += target ++ ++# Input ++HEADERS += qnoneinputcontextplugin.h ++SOURCES += qnoneinputcontextplugin.cpp +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp 2005-10-18 12:57:18.576249768 +0900 +@@ -0,0 +1,100 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QNoneInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qnoneinputcontextplugin.h" ++#include ++#include ++ ++ ++QNoneInputContextPlugin::QNoneInputContextPlugin() ++{ ++} ++ ++QNoneInputContextPlugin::~QNoneInputContextPlugin() ++{ ++} ++ ++QStringList QNoneInputContextPlugin::keys() const ++{ ++ // input method switcher should named with "imsw-" prefix to ++ // prevent to be listed in ordinary input method list. ++ return QStringList( "imsw-none" ); ++} ++ ++QInputContext *QNoneInputContextPlugin::create( const QString &key ) ++{ ++ QString actuallySpecifiedKey; ++ ++ bool isIMSwitcher = key.startsWith( "imsw-" ); ++ if ( ! isIMSwitcher ) ++ return 0; ++ ++ if ( getenv( "QT_IM_MODULE" ) ) { ++ actuallySpecifiedKey = getenv( "QT_IM_MODULE" ); ++ } else { ++ QSettings settings; ++ actuallySpecifiedKey = settings.readEntry( "/qt/DefaultInputMethod", "xim" ); ++ } ++ ++ return QInputContextFactory::create( actuallySpecifiedKey, 0 ); ++} ++ ++QStringList QNoneInputContextPlugin::languages( const QString &key ) ++{ ++ return QStringList( "" ); ++} ++ ++QString QNoneInputContextPlugin::displayName( const QString &key ) ++{ ++ return tr( "Dummy Input Method Switcher" ); ++} ++ ++QString QNoneInputContextPlugin::description( const QString &key ) ++{ ++ return tr( "Dummy input method switcher that uses the context menu of the text widgets" ); ++} ++ ++ ++Q_EXPORT_PLUGIN( QNoneInputContextPlugin ) ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.h 2005-10-18 12:57:18.578249464 +0900 +@@ -0,0 +1,62 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QNoneInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include ++#include ++ ++ ++class QNoneInputContextPlugin : public QInputContextPlugin ++{ ++ Q_OBJECT ++public: ++ QNoneInputContextPlugin(); ++ ~QNoneInputContextPlugin(); ++ ++ QStringList keys() const; ++ QInputContext *create( const QString &key ); ++ QStringList languages( const QString &key ); ++ QString displayName( const QString &key ); ++ QString description( const QString &key ); ++}; ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/inputmethods.pro qt-x11-free-3.3.5/plugins/src/inputmethods/inputmethods.pro +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/inputmethods.pro 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/inputmethods.pro 2005-10-18 12:57:18.580249160 +0900 +@@ -0,0 +1,11 @@ ++TEMPLATE = subdirs ++ ++unix { ++ !embedded:!mac:CONFIG += x11 ++} ++# XIM should be enabled only for X11 platform, but following ++# configuration is not working properly yet ++#im:x11:SUBDIRS += xim ++ ++inputmethod:SUBDIRS += imsw-none imsw-multi simple ++inputmethod:SUBDIRS += xim +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/composetable.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/simple/composetable.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/composetable.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/composetable.cpp 2005-10-18 12:57:18.699231072 +0900 +@@ -0,0 +1,5605 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Compose table for QSimpleInputContext class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++// The compose table included in file is converted from a Compose file ++// of X.org's X11R6.7.0. Original header is follows ++ ++// UTF-8 (Unicode) compose sequence ++// David.Monniaux@ens.fr ++// ++// $XFree86: xc/nls/Compose/en_US.UTF-8,v 1.11 2004/01/06 13:14:04 pascal Exp $ ++ ++ ++#include "qsimpleinputcontext.h" ++ ++#include ++ ++static const QComposeTableElement defaultTable[] = { ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, 0x0000, 0x004f, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0x0055, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0x006f, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0000, 0x0075, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0041, 0, 0, 0, 0}, 0x00c1 }, // U00C1 # LATIN CAPITAL LETTER A WITH ACUTE ++// /* broken */ { {0x0000, 0x0041, 0, 0, 0, 0}, 0x00c0 }, // U00C0 # LATIN CAPITAL LETTER A WITH GRAVE ++// /* broken */ { {0x0000, 0x0041, 0, 0, 0, 0}, 0x00c3 }, // U00C3 # LATIN CAPITAL LETTER A WITH TILDE ++// /* broken */ { {0x0000, 0x0041, 0, 0, 0, 0}, 0x1ea2 }, // U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0041, 0, 0, 0, 0}, 0x1ea0 }, // U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0042, 0, 0, 0, 0}, 0x1e04 }, // U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0043, 0, 0, 0, 0}, 0x0106 }, // U0106 # LATIN CAPITAL LETTER C WITH ACUTE ++// /* broken */ { {0x0000, 0x0044, 0, 0, 0, 0}, 0x1e0c }, // U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0045, 0, 0, 0, 0}, 0x1ebc }, // U1EBC # LATIN CAPITAL LETTER E WITH TILDE ++// /* broken */ { {0x0000, 0x0045, 0, 0, 0, 0}, 0x1eb8 }, // U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0045, 0, 0, 0, 0}, 0x00c9 }, // U00C9 # LATIN CAPITAL LETTER E WITH ACUTE ++// /* broken */ { {0x0000, 0x0045, 0, 0, 0, 0}, 0x00c8 }, // U00C8 # LATIN CAPITAL LETTER E WITH GRAVE ++// /* broken */ { {0x0000, 0x0045, 0, 0, 0, 0}, 0x1eba }, // U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0047, 0, 0, 0, 0}, 0x01f4 }, // U01F4 # LATIN CAPITAL LETTER G WITH ACUTE ++// /* broken */ { {0x0000, 0x0048, 0, 0, 0, 0}, 0x1e24 }, // U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0049, 0, 0, 0, 0}, 0x00cd }, // U00CD # LATIN CAPITAL LETTER I WITH ACUTE ++// /* broken */ { {0x0000, 0x0049, 0, 0, 0, 0}, 0x00cc }, // U00CC # LATIN CAPITAL LETTER I WITH GRAVE ++// /* broken */ { {0x0000, 0x0049, 0, 0, 0, 0}, 0x1ec8 }, // U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0049, 0, 0, 0, 0}, 0x0128 }, // U0128 # LATIN CAPITAL LETTER I WITH TILDE ++// /* broken */ { {0x0000, 0x0049, 0, 0, 0, 0}, 0x1eca }, // U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004b, 0, 0, 0, 0}, 0x1e30 }, // U1E30 # LATIN CAPITAL LETTER K WITH ACUTE ++// /* broken */ { {0x0000, 0x004b, 0, 0, 0, 0}, 0x1e32 }, // U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004c, 0, 0, 0, 0}, 0x0139 }, // U0139 # LATIN CAPITAL LETTER L WITH ACUTE ++// /* broken */ { {0x0000, 0x004c, 0, 0, 0, 0}, 0x1e36 }, // U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004d, 0, 0, 0, 0}, 0x1e42 }, // U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004d, 0, 0, 0, 0}, 0x1e3e }, // U1E3E # LATIN CAPITAL LETTER M WITH ACUTE ++// /* broken */ { {0x0000, 0x004e, 0, 0, 0, 0}, 0x1e46 }, // U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004e, 0, 0, 0, 0}, 0x0143 }, // U0143 # LATIN CAPITAL LETTER N WITH ACUTE ++// /* broken */ { {0x0000, 0x004e, 0, 0, 0, 0}, 0x01f8 }, // U01F8 # LATIN CAPITAL LETTER N WITH GRAVE ++// /* broken */ { {0x0000, 0x004e, 0, 0, 0, 0}, 0x00d1 }, // U00D1 # LATIN CAPITAL LETTER N WITH TILDE ++// /* broken */ { {0x0000, 0x004f, 0, 0, 0, 0}, 0x00d5 }, // U00D5 # LATIN CAPITAL LETTER O WITH TILDE ++// /* broken */ { {0x0000, 0x004f, 0, 0, 0, 0}, 0x00d3 }, // U00D3 # LATIN CAPITAL LETTER O WITH ACUTE ++// /* broken */ { {0x0000, 0x004f, 0, 0, 0, 0}, 0x1ecc }, // U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW ++// /* broken */ { {0x0000, 0x004f, 0, 0, 0, 0}, 0x00d2 }, // U00D2 # LATIN CAPITAL LETTER O WITH GRAVE ++// /* broken */ { {0x0000, 0x004f, 0, 0, 0, 0}, 0x1ece }, // U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0050, 0, 0, 0, 0}, 0x1e54 }, // U1E54 # LATIN CAPITAL LETTER P WITH ACUTE ++// /* broken */ { {0x0000, 0x0052, 0, 0, 0, 0}, 0x1e5a }, // U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0052, 0, 0, 0, 0}, 0x0154 }, // U0154 # LATIN CAPITAL LETTER R WITH ACUTE ++// /* broken */ { {0x0000, 0x0053, 0, 0, 0, 0}, 0x015a }, // U015A # LATIN CAPITAL LETTER S WITH ACUTE ++// /* broken */ { {0x0000, 0x0053, 0, 0, 0, 0}, 0x1e62 }, // U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0054, 0, 0, 0, 0}, 0x1e6c }, // U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0055, 0, 0, 0, 0}, 0x00da }, // U00DA # LATIN CAPITAL LETTER U WITH ACUTE ++// /* broken */ { {0x0000, 0x0055, 0, 0, 0, 0}, 0x00d9 }, // U00D9 # LATIN CAPITAL LETTER U WITH GRAVE ++// /* broken */ { {0x0000, 0x0055, 0, 0, 0, 0}, 0x0168 }, // U0168 # LATIN CAPITAL LETTER U WITH TILDE ++// /* broken */ { {0x0000, 0x0055, 0, 0, 0, 0}, 0x1ee4 }, // U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0055, 0, 0, 0, 0}, 0x1ee6 }, // U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0056, 0, 0, 0, 0}, 0x1e7e }, // U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0056, 0, 0, 0, 0}, 0x1e7c }, // U1E7C # LATIN CAPITAL LETTER V WITH TILDE ++// /* broken */ { {0x0000, 0x0057, 0, 0, 0, 0}, 0x1e82 }, // U1E82 # LATIN CAPITAL LETTER W WITH ACUTE ++// /* broken */ { {0x0000, 0x0057, 0, 0, 0, 0}, 0x1e88 }, // U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0057, 0, 0, 0, 0}, 0x1e80 }, // U1E80 # LATIN CAPITAL LETTER W WITH GRAVE ++// /* broken */ { {0x0000, 0x0059, 0, 0, 0, 0}, 0x1ef8 }, // U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE ++// /* broken */ { {0x0000, 0x0059, 0, 0, 0, 0}, 0x1ef2 }, // U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE ++// /* broken */ { {0x0000, 0x0059, 0, 0, 0, 0}, 0x00dd }, // U00DD # LATIN CAPITAL LETTER Y WITH ACUTE ++// /* broken */ { {0x0000, 0x0059, 0, 0, 0, 0}, 0x1ef6 }, // U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0059, 0, 0, 0, 0}, 0x1ef4 }, // U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW ++// /* broken */ { {0x0000, 0x005a, 0, 0, 0, 0}, 0x0179 }, // U0179 # LATIN CAPITAL LETTER Z WITH ACUTE ++// /* broken */ { {0x0000, 0x005a, 0, 0, 0, 0}, 0x1e92 }, // U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0061, 0, 0, 0, 0}, 0x1ea1 }, // U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0061, 0, 0, 0, 0}, 0x1ea3 }, // U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0061, 0, 0, 0, 0}, 0x00e0 }, // U00E0 # LATIN SMALL LETTER A WITH GRAVE ++// /* broken */ { {0x0000, 0x0061, 0, 0, 0, 0}, 0x00e3 }, // U00E3 # LATIN SMALL LETTER A WITH TILDE ++// /* broken */ { {0x0000, 0x0061, 0, 0, 0, 0}, 0x00e1 }, // U00E1 # LATIN SMALL LETTER A WITH ACUTE ++// /* broken */ { {0x0000, 0x0062, 0, 0, 0, 0}, 0x1e05 }, // U1E05 # LATIN SMALL LETTER B WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0063, 0, 0, 0, 0}, 0x0107 }, // U0107 # LATIN SMALL LETTER C WITH ACUTE ++// /* broken */ { {0x0000, 0x0064, 0, 0, 0, 0}, 0x1e0d }, // U1E0D # LATIN SMALL LETTER D WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0065, 0, 0, 0, 0}, 0x00e8 }, // U00E8 # LATIN SMALL LETTER E WITH GRAVE ++// /* broken */ { {0x0000, 0x0065, 0, 0, 0, 0}, 0x1ebb }, // U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0065, 0, 0, 0, 0}, 0x1eb9 }, // U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0065, 0, 0, 0, 0}, 0x00e9 }, // U00E9 # LATIN SMALL LETTER E WITH ACUTE ++// /* broken */ { {0x0000, 0x0065, 0, 0, 0, 0}, 0x1ebd }, // U1EBD # LATIN SMALL LETTER E WITH TILDE ++// /* broken */ { {0x0000, 0x0067, 0, 0, 0, 0}, 0x01f5 }, // U01F5 # LATIN SMALL LETTER G WITH ACUTE ++// /* broken */ { {0x0000, 0x0068, 0, 0, 0, 0}, 0x1e25 }, // U1E25 # LATIN SMALL LETTER H WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0069, 0, 0, 0, 0}, 0x00ec }, // U00EC # LATIN SMALL LETTER I WITH GRAVE ++// /* broken */ { {0x0000, 0x0069, 0, 0, 0, 0}, 0x0129 }, // U0129 # LATIN SMALL LETTER I WITH TILDE ++// /* broken */ { {0x0000, 0x0069, 0, 0, 0, 0}, 0x1ecb }, // U1ECB # LATIN SMALL LETTER I WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0069, 0, 0, 0, 0}, 0x00ed }, // U00ED # LATIN SMALL LETTER I WITH ACUTE ++// /* broken */ { {0x0000, 0x0069, 0, 0, 0, 0}, 0x1ec9 }, // U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x006b, 0, 0, 0, 0}, 0x1e33 }, // U1E33 # LATIN SMALL LETTER K WITH DOT BELOW ++// /* broken */ { {0x0000, 0x006b, 0, 0, 0, 0}, 0x1e31 }, // U1E31 # LATIN SMALL LETTER K WITH ACUTE ++// /* broken */ { {0x0000, 0x006c, 0, 0, 0, 0}, 0x1e37 }, // U1E37 # LATIN SMALL LETTER L WITH DOT BELOW ++// /* broken */ { {0x0000, 0x006c, 0, 0, 0, 0}, 0x013a }, // U013A # LATIN SMALL LETTER L WITH ACUTE ++// /* broken */ { {0x0000, 0x006d, 0, 0, 0, 0}, 0x1e43 }, // U1E43 # LATIN SMALL LETTER M WITH DOT BELOW ++// /* broken */ { {0x0000, 0x006d, 0, 0, 0, 0}, 0x1e3f }, // U1E3F # LATIN SMALL LETTER M WITH ACUTE ++// /* broken */ { {0x0000, 0x006e, 0, 0, 0, 0}, 0x00f1 }, // U00F1 # LATIN SMALL LETTER N WITH TILDE ++// /* broken */ { {0x0000, 0x006e, 0, 0, 0, 0}, 0x0144 }, // U0144 # LATIN SMALL LETTER N WITH ACUTE ++// /* broken */ { {0x0000, 0x006e, 0, 0, 0, 0}, 0x01f9 }, // U01F9 # LATIN SMALL LETTER N WITH GRAVE ++// /* broken */ { {0x0000, 0x006e, 0, 0, 0, 0}, 0x1e47 }, // U1E47 # LATIN SMALL LETTER N WITH DOT BELOW ++// /* broken */ { {0x0000, 0x006f, 0, 0, 0, 0}, 0x00f5 }, // U00F5 # LATIN SMALL LETTER O WITH TILDE ++// /* broken */ { {0x0000, 0x006f, 0, 0, 0, 0}, 0x00f2 }, // U00F2 # LATIN SMALL LETTER O WITH GRAVE ++// /* broken */ { {0x0000, 0x006f, 0, 0, 0, 0}, 0x1ecf }, // U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x006f, 0, 0, 0, 0}, 0x00f3 }, // U00F3 # LATIN SMALL LETTER O WITH ACUTE ++// /* broken */ { {0x0000, 0x006f, 0, 0, 0, 0}, 0x1ecd }, // U1ECD # LATIN SMALL LETTER O WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0070, 0, 0, 0, 0}, 0x1e55 }, // U1E55 # LATIN SMALL LETTER P WITH ACUTE ++// /* broken */ { {0x0000, 0x0072, 0, 0, 0, 0}, 0x0155 }, // U0155 # LATIN SMALL LETTER R WITH ACUTE ++// /* broken */ { {0x0000, 0x0072, 0, 0, 0, 0}, 0x1e5b }, // U1E5B # LATIN SMALL LETTER R WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0073, 0, 0, 0, 0}, 0x1e63 }, // U1E63 # LATIN SMALL LETTER S WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0073, 0, 0, 0, 0}, 0x015b }, // U015B # LATIN SMALL LETTER S WITH ACUTE ++// /* broken */ { {0x0000, 0x0074, 0, 0, 0, 0}, 0x1e6d }, // U1E6D # LATIN SMALL LETTER T WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0075, 0, 0, 0, 0}, 0x0169 }, // U0169 # LATIN SMALL LETTER U WITH TILDE ++// /* broken */ { {0x0000, 0x0075, 0, 0, 0, 0}, 0x1ee7 }, // U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0075, 0, 0, 0, 0}, 0x00f9 }, // U00F9 # LATIN SMALL LETTER U WITH GRAVE ++// /* broken */ { {0x0000, 0x0075, 0, 0, 0, 0}, 0x00fa }, // U00FA # LATIN SMALL LETTER U WITH ACUTE ++// /* broken */ { {0x0000, 0x0075, 0, 0, 0, 0}, 0x1ee5 }, // U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0076, 0, 0, 0, 0}, 0x1e7d }, // U1E7D # LATIN SMALL LETTER V WITH TILDE ++// /* broken */ { {0x0000, 0x0076, 0, 0, 0, 0}, 0x1e7f }, // U1E7F # LATIN SMALL LETTER V WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0077, 0, 0, 0, 0}, 0x1e81 }, // U1E81 # LATIN SMALL LETTER W WITH GRAVE ++// /* broken */ { {0x0000, 0x0077, 0, 0, 0, 0}, 0x1e83 }, // U1E83 # LATIN SMALL LETTER W WITH ACUTE ++// /* broken */ { {0x0000, 0x0077, 0, 0, 0, 0}, 0x1e89 }, // U1E89 # LATIN SMALL LETTER W WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0079, 0, 0, 0, 0}, 0x1ef5 }, // U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW ++// /* broken */ { {0x0000, 0x0079, 0, 0, 0, 0}, 0x1ef9 }, // U1EF9 # LATIN SMALL LETTER Y WITH TILDE ++// /* broken */ { {0x0000, 0x0079, 0, 0, 0, 0}, 0x1ef7 }, // U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE ++// /* broken */ { {0x0000, 0x0079, 0, 0, 0, 0}, 0x1ef3 }, // U1EF3 # LATIN SMALL LETTER Y WITH GRAVE ++// /* broken */ { {0x0000, 0x0079, 0, 0, 0, 0}, 0x00fd }, // U00FD # LATIN SMALL LETTER Y WITH ACUTE ++// /* broken */ { {0x0000, 0x007a, 0, 0, 0, 0}, 0x1e93 }, // U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW ++// /* broken */ { {0x0000, 0x007a, 0, 0, 0, 0}, 0x017a }, // U017A # LATIN SMALL LETTER Z WITH ACUTE ++// /* broken */ { {0x0000, 0x00c2, 0, 0, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00c2, 0, 0, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00c2, 0, 0, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00c2, 0, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00c5, 0, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, 0x00c6, 0, 0, 0, 0}, 0x01fc }, // U01FC # LATIN CAPITAL LETTER AE WITH ACUTE ++// /* broken */ { {0x0000, 0x00c7, 0, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, 0x00ca, 0, 0, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00ca, 0, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00ca, 0, 0, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00ca, 0, 0, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00cf, 0, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, 0x00d4, 0, 0, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00d4, 0, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00d4, 0, 0, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00d4, 0, 0, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00d5, 0, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x00d8, 0, 0, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, 0x00dc, 0, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, 0x00dc, 0, 0, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, 0x00e2, 0, 0, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00e2, 0, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00e2, 0, 0, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00e2, 0, 0, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00e5, 0, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, 0x00e6, 0, 0, 0, 0}, 0x01fd }, // U01FD # LATIN SMALL LETTER AE WITH ACUTE ++// /* broken */ { {0x0000, 0x00e7, 0, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, 0x00ea, 0, 0, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00ea, 0, 0, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00ea, 0, 0, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00ea, 0, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00ef, 0, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, 0x00f4, 0, 0, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, 0x00f4, 0, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, 0x00f4, 0, 0, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x00f4, 0, 0, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, 0x00f5, 0, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x00f8, 0, 0, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, 0x00fc, 0, 0, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, 0x00fc, 0, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, 0x0102, 0, 0, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, 0x0102, 0, 0, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, 0x0102, 0, 0, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0102, 0, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, 0x0103, 0, 0, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, 0x0103, 0, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, 0x0103, 0, 0, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, 0x0103, 0, 0, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, 0x0112, 0, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, 0x0112, 0, 0, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, 0x0113, 0, 0, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, 0x0113, 0, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, 0x014c, 0, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, 0x014c, 0, 0, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, 0x014d, 0, 0, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, 0x014d, 0, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, 0x0168, 0, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0169, 0, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, 0x0313, 0x0391, 0, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x0391, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x0395, 0, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x0395, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x0397, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x0397, 0, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x0399, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x0399, 0, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x039f, 0, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x039f, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03a9, 0, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03a9, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03b1, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03b1, 0, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03b5, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03b5, 0, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03b7, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03b7, 0, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03b9, 0, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03b9, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03bf, 0, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03bf, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03c5, 0, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03c5, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0313, 0x03c9, 0, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x0313, 0x03c9, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x0391, 0, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x0391, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x0395, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x0395, 0, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x0397, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x0397, 0, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x0399, 0, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x0399, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x039f, 0, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x039f, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03a5, 0, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03a5, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03a9, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03a9, 0, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03b1, 0, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03b1, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03b5, 0, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03b5, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03b7, 0, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03b7, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03b9, 0, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03b9, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03bf, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03bf, 0, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03c5, 0, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03c5, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0314, 0x03c9, 0, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x0314, 0x03c9, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x0391, 0, 0, 0, 0}, 0x0386 }, // U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS ++// /* broken */ { {0x0000, 0x0391, 0, 0, 0, 0}, 0x1fba }, // U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA ++// /* broken */ { {0x0000, 0x0395, 0, 0, 0, 0}, 0x0388 }, // U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS ++// /* broken */ { {0x0000, 0x0395, 0, 0, 0, 0}, 0x1fc8 }, // U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA ++// /* broken */ { {0x0000, 0x0397, 0, 0, 0, 0}, 0x1fca }, // U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA ++// /* broken */ { {0x0000, 0x0397, 0, 0, 0, 0}, 0x0389 }, // U0389 # GREEK CAPITAL LETTER ETA WITH TONOS ++// /* broken */ { {0x0000, 0x0399, 0, 0, 0, 0}, 0x038a }, // U038A # GREEK CAPITAL LETTER IOTA WITH TONOS ++// /* broken */ { {0x0000, 0x0399, 0, 0, 0, 0}, 0x1fda }, // U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA ++// /* broken */ { {0x0000, 0x039f, 0, 0, 0, 0}, 0x038c }, // U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS ++// /* broken */ { {0x0000, 0x039f, 0, 0, 0, 0}, 0x1ff8 }, // U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA ++// /* broken */ { {0x0000, 0x03a5, 0, 0, 0, 0}, 0x038e }, // U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS ++// /* broken */ { {0x0000, 0x03a5, 0, 0, 0, 0}, 0x1fea }, // U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA ++// /* broken */ { {0x0000, 0x03a9, 0, 0, 0, 0}, 0x038f }, // U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS ++// /* broken */ { {0x0000, 0x03a9, 0, 0, 0, 0}, 0x1ffa }, // U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA ++// /* broken */ { {0x0000, 0x03b1, 0, 0, 0, 0}, 0x03ac }, // U03AC # GREEK SMALL LETTER ALPHA WITH TONOS ++// /* broken */ { {0x0000, 0x03b1, 0, 0, 0, 0}, 0x1f70 }, // U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA ++// /* broken */ { {0x0000, 0x03b5, 0, 0, 0, 0}, 0x03ad }, // U03AD # GREEK SMALL LETTER EPSILON WITH TONOS ++// /* broken */ { {0x0000, 0x03b5, 0, 0, 0, 0}, 0x1f72 }, // U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA ++// /* broken */ { {0x0000, 0x03b7, 0, 0, 0, 0}, 0x03ae }, // U03AE # GREEK SMALL LETTER ETA WITH TONOS ++// /* broken */ { {0x0000, 0x03b7, 0, 0, 0, 0}, 0x1f74 }, // U1F74 # GREEK SMALL LETTER ETA WITH VARIA ++// /* broken */ { {0x0000, 0x03b9, 0, 0, 0, 0}, 0x03af }, // U03AF # GREEK SMALL LETTER IOTA WITH TONOS ++// /* broken */ { {0x0000, 0x03b9, 0, 0, 0, 0}, 0x1f76 }, // U1F76 # GREEK SMALL LETTER IOTA WITH VARIA ++// /* broken */ { {0x0000, 0x03bf, 0, 0, 0, 0}, 0x03cc }, // U03CC # GREEK SMALL LETTER OMICRON WITH TONOS ++// /* broken */ { {0x0000, 0x03bf, 0, 0, 0, 0}, 0x1f78 }, // U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA ++// /* broken */ { {0x0000, 0x03c5, 0, 0, 0, 0}, 0x03cd }, // U03CD # GREEK SMALL LETTER UPSILON WITH TONOS ++// /* broken */ { {0x0000, 0x03c5, 0, 0, 0, 0}, 0x1f7a }, // U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA ++// /* broken */ { {0x0000, 0x03c9, 0, 0, 0, 0}, 0x03ce }, // U03CE # GREEK SMALL LETTER OMEGA WITH TONOS ++// /* broken */ { {0x0000, 0x03c9, 0, 0, 0, 0}, 0x1f7c }, // U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA ++// /* broken */ { {0x0000, 0x03ca, 0, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, 0x03ca, 0, 0, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, 0x03cb, 0, 0, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, 0x03cb, 0, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, 0x0413, 0, 0, 0, 0}, 0x0403 }, // U0403 # CYRILLIC CAPITAL LETTER GJE ++// /* broken */ { {0x0000, 0x0415, 0, 0, 0, 0}, 0x0400 }, // U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE ++// /* broken */ { {0x0000, 0x0418, 0, 0, 0, 0}, 0x040d }, // U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE ++// /* broken */ { {0x0000, 0x041a, 0, 0, 0, 0}, 0x040c }, // U040C # CYRILLIC CAPITAL LETTER KJE ++// /* broken */ { {0x0000, 0x0433, 0, 0, 0, 0}, 0x0453 }, // U0453 # CYRILLIC SMALL LETTER GJE ++// /* broken */ { {0x0000, 0x0435, 0, 0, 0, 0}, 0x0450 }, // U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE ++// /* broken */ { {0x0000, 0x0438, 0, 0, 0, 0}, 0x045d }, // U045D # CYRILLIC SMALL LETTER I WITH GRAVE ++// /* broken */ { {0x0000, 0x043a, 0, 0, 0, 0}, 0x045c }, // U045C # CYRILLIC SMALL LETTER KJE ++// /* broken */ { {0x0000, 0x1f00, 0, 0, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f00, 0, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f01, 0, 0, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f01, 0, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f08, 0, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f08, 0, 0, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f09, 0, 0, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f09, 0, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f10, 0, 0, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f10, 0, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f11, 0, 0, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f11, 0, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f18, 0, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f18, 0, 0, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f19, 0, 0, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f19, 0, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f20, 0, 0, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f20, 0, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f21, 0, 0, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f21, 0, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f28, 0, 0, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f28, 0, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f29, 0, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f29, 0, 0, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f30, 0, 0, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f30, 0, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f31, 0, 0, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f31, 0, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f38, 0, 0, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f38, 0, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f39, 0, 0, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f39, 0, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f40, 0, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f40, 0, 0, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f41, 0, 0, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f41, 0, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f48, 0, 0, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f48, 0, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f49, 0, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f49, 0, 0, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f50, 0, 0, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f50, 0, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f51, 0, 0, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f51, 0, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f59, 0, 0, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f59, 0, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f60, 0, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f60, 0, 0, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f61, 0, 0, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f61, 0, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, 0x1f68, 0, 0, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, 0x1f68, 0, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, 0x1f69, 0, 0, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, 0x1f69, 0, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0000, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0000, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0395, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x039f, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b5, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03bf, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0395, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x039f, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b5, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03bf, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002f, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x002f, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Multi_key), 0x00af, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Tilde), 0x0055, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Tilde), 0x0075, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0049, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0069, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Abovering), 0x0041, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Abovering), 0x0061, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Cedilla), 0x0043, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Cedilla), 0x0063, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {0x0000, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++ { {0x030f, 0x0041, 0, 0, 0, 0}, 0x0200 }, // U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE ++ { {0x030f, 0x0045, 0, 0, 0, 0}, 0x0204 }, // U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE ++ { {0x030f, 0x0049, 0, 0, 0, 0}, 0x0208 }, // U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE ++ { {0x030f, 0x004f, 0, 0, 0, 0}, 0x020c }, // U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE ++ { {0x030f, 0x0052, 0, 0, 0, 0}, 0x0210 }, // U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE ++ { {0x030f, 0x0055, 0, 0, 0, 0}, 0x0214 }, // U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE ++ { {0x030f, 0x0061, 0, 0, 0, 0}, 0x0201 }, // U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE ++ { {0x030f, 0x0065, 0, 0, 0, 0}, 0x0205 }, // U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE ++ { {0x030f, 0x0069, 0, 0, 0, 0}, 0x0209 }, // U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE ++ { {0x030f, 0x006f, 0, 0, 0, 0}, 0x020d }, // U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE ++ { {0x030f, 0x0072, 0, 0, 0, 0}, 0x0211 }, // U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE ++ { {0x030f, 0x0075, 0, 0, 0, 0}, 0x0215 }, // U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE ++ { {0x030f, 0x0474, 0, 0, 0, 0}, 0x0476 }, // U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT ++ { {0x030f, 0x0475, 0, 0, 0, 0}, 0x0477 }, // U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT ++ { {0x0311, 0x0041, 0, 0, 0, 0}, 0x0202 }, // U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE ++ { {0x0311, 0x0045, 0, 0, 0, 0}, 0x0206 }, // U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE ++ { {0x0311, 0x0049, 0, 0, 0, 0}, 0x020a }, // U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE ++ { {0x0311, 0x004f, 0, 0, 0, 0}, 0x020e }, // U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE ++ { {0x0311, 0x0052, 0, 0, 0, 0}, 0x0212 }, // U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE ++ { {0x0311, 0x0055, 0, 0, 0, 0}, 0x0216 }, // U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE ++ { {0x0311, 0x0061, 0, 0, 0, 0}, 0x0203 }, // U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE ++ { {0x0311, 0x0065, 0, 0, 0, 0}, 0x0207 }, // U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE ++ { {0x0311, 0x0069, 0, 0, 0, 0}, 0x020b }, // U020B # LATIN SMALL LETTER I WITH INVERTED BREVE ++ { {0x0311, 0x006f, 0, 0, 0, 0}, 0x020f }, // U020F # LATIN SMALL LETTER O WITH INVERTED BREVE ++ { {0x0311, 0x0072, 0, 0, 0, 0}, 0x0213 }, // U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE ++ { {0x0311, 0x0075, 0, 0, 0, 0}, 0x0217 }, // U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE ++ { {0x0313, 0x0391, 0, 0, 0, 0}, 0x1f08 }, // U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI ++ { {0x0313, 0x0395, 0, 0, 0, 0}, 0x1f18 }, // U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI ++ { {0x0313, 0x0397, 0, 0, 0, 0}, 0x1f28 }, // U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI ++ { {0x0313, 0x0399, 0, 0, 0, 0}, 0x1f38 }, // U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI ++ { {0x0313, 0x039f, 0, 0, 0, 0}, 0x1f48 }, // U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI ++ { {0x0313, 0x03a9, 0, 0, 0, 0}, 0x1f68 }, // U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI ++ { {0x0313, 0x03b1, 0, 0, 0, 0}, 0x1f00 }, // U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI ++ { {0x0313, 0x03b5, 0, 0, 0, 0}, 0x1f10 }, // U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI ++ { {0x0313, 0x03b7, 0, 0, 0, 0}, 0x1f20 }, // U1F20 # GREEK SMALL LETTER ETA WITH PSILI ++ { {0x0313, 0x03b9, 0, 0, 0, 0}, 0x1f30 }, // U1F30 # GREEK SMALL LETTER IOTA WITH PSILI ++ { {0x0313, 0x03bf, 0, 0, 0, 0}, 0x1f40 }, // U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI ++ { {0x0313, 0x03c1, 0, 0, 0, 0}, 0x1fe4 }, // U1FE4 # GREEK SMALL LETTER RHO WITH PSILI ++ { {0x0313, 0x03c5, 0, 0, 0, 0}, 0x1f50 }, // U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI ++ { {0x0313, 0x03c9, 0, 0, 0, 0}, 0x1f60 }, // U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI ++ { {0x0314, 0x0391, 0, 0, 0, 0}, 0x1f09 }, // U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA ++ { {0x0314, 0x0395, 0, 0, 0, 0}, 0x1f19 }, // U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA ++ { {0x0314, 0x0397, 0, 0, 0, 0}, 0x1f29 }, // U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA ++ { {0x0314, 0x0399, 0, 0, 0, 0}, 0x1f39 }, // U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA ++ { {0x0314, 0x039f, 0, 0, 0, 0}, 0x1f49 }, // U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA ++ { {0x0314, 0x03a1, 0, 0, 0, 0}, 0x1fec }, // U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA ++ { {0x0314, 0x03a5, 0, 0, 0, 0}, 0x1f59 }, // U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA ++ { {0x0314, 0x03a9, 0, 0, 0, 0}, 0x1f69 }, // U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA ++ { {0x0314, 0x03b1, 0, 0, 0, 0}, 0x1f01 }, // U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA ++ { {0x0314, 0x03b5, 0, 0, 0, 0}, 0x1f11 }, // U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA ++ { {0x0314, 0x03b7, 0, 0, 0, 0}, 0x1f21 }, // U1F21 # GREEK SMALL LETTER ETA WITH DASIA ++ { {0x0314, 0x03b9, 0, 0, 0, 0}, 0x1f31 }, // U1F31 # GREEK SMALL LETTER IOTA WITH DASIA ++ { {0x0314, 0x03bf, 0, 0, 0, 0}, 0x1f41 }, // U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA ++ { {0x0314, 0x03c1, 0, 0, 0, 0}, 0x1fe5 }, // U1FE5 # GREEK SMALL LETTER RHO WITH DASIA ++ { {0x0314, 0x03c5, 0, 0, 0, 0}, 0x1f51 }, // U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA ++ { {0x0314, 0x03c9, 0, 0, 0, 0}, 0x1f61 }, // U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA ++ { {0x0324, 0x0055, 0, 0, 0, 0}, 0x1e72 }, // U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW ++ { {0x0324, 0x0075, 0, 0, 0, 0}, 0x1e73 }, // U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW ++ { {0x0325, 0x0041, 0, 0, 0, 0}, 0x1e00 }, // U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW ++ { {0x0325, 0x0061, 0, 0, 0, 0}, 0x1e01 }, // U1E01 # LATIN SMALL LETTER A WITH RING BELOW ++ { {0x0326, 0x0053, 0, 0, 0, 0}, 0x0218 }, // U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW ++ { {0x0326, 0x0054, 0, 0, 0, 0}, 0x021a }, // U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW ++ { {0x0326, 0x0073, 0, 0, 0, 0}, 0x0219 }, // U0219 # LATIN SMALL LETTER S WITH COMMA BELOW ++ { {0x0326, 0x0074, 0, 0, 0, 0}, 0x021b }, // U021B # LATIN SMALL LETTER T WITH COMMA BELOW ++ { {0x032d, 0x0044, 0, 0, 0, 0}, 0x1e12 }, // U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0045, 0, 0, 0, 0}, 0x1e18 }, // U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x004c, 0, 0, 0, 0}, 0x1e3c }, // U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x004e, 0, 0, 0, 0}, 0x1e4a }, // U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0054, 0, 0, 0, 0}, 0x1e70 }, // U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0055, 0, 0, 0, 0}, 0x1e76 }, // U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0064, 0, 0, 0, 0}, 0x1e13 }, // U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0065, 0, 0, 0, 0}, 0x1e19 }, // U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x006c, 0, 0, 0, 0}, 0x1e3d }, // U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x006e, 0, 0, 0, 0}, 0x1e4b }, // U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0074, 0, 0, 0, 0}, 0x1e71 }, // U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW ++ { {0x032d, 0x0075, 0, 0, 0, 0}, 0x1e77 }, // U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW ++ { {0x032e, 0x0048, 0, 0, 0, 0}, 0x1e2a }, // U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW ++ { {0x032e, 0x0068, 0, 0, 0, 0}, 0x1e2b }, // U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW ++ { {0x0330, 0x0045, 0, 0, 0, 0}, 0x1e1a }, // U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW ++ { {0x0330, 0x0049, 0, 0, 0, 0}, 0x1e2c }, // U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW ++ { {0x0330, 0x0055, 0, 0, 0, 0}, 0x1e74 }, // U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW ++ { {0x0330, 0x0065, 0, 0, 0, 0}, 0x1e1b }, // U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW ++ { {0x0330, 0x0069, 0, 0, 0, 0}, 0x1e2d }, // U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW ++ { {0x0330, 0x0075, 0, 0, 0, 0}, 0x1e75 }, // U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW ++ { {0x0331, 0x0042, 0, 0, 0, 0}, 0x1e06 }, // U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW ++ { {0x0331, 0x0044, 0, 0, 0, 0}, 0x1e0e }, // U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW ++ { {0x0331, 0x004b, 0, 0, 0, 0}, 0x1e34 }, // U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW ++ { {0x0331, 0x004c, 0, 0, 0, 0}, 0x1e3a }, // U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW ++ { {0x0331, 0x004e, 0, 0, 0, 0}, 0x1e48 }, // U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW ++ { {0x0331, 0x0052, 0, 0, 0, 0}, 0x1e5e }, // U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW ++ { {0x0331, 0x0054, 0, 0, 0, 0}, 0x1e6e }, // U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW ++ { {0x0331, 0x005a, 0, 0, 0, 0}, 0x1e94 }, // U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW ++ { {0x0331, 0x0062, 0, 0, 0, 0}, 0x1e07 }, // U1E07 # LATIN SMALL LETTER B WITH LINE BELOW ++ { {0x0331, 0x0064, 0, 0, 0, 0}, 0x1e0f }, // U1E0F # LATIN SMALL LETTER D WITH LINE BELOW ++ { {0x0331, 0x0068, 0, 0, 0, 0}, 0x1e96 }, // U1E96 # LATIN SMALL LETTER H WITH LINE BELOW ++ { {0x0331, 0x006b, 0, 0, 0, 0}, 0x1e35 }, // U1E35 # LATIN SMALL LETTER K WITH LINE BELOW ++ { {0x0331, 0x006c, 0, 0, 0, 0}, 0x1e3b }, // U1E3B # LATIN SMALL LETTER L WITH LINE BELOW ++ { {0x0331, 0x006e, 0, 0, 0, 0}, 0x1e49 }, // U1E49 # LATIN SMALL LETTER N WITH LINE BELOW ++ { {0x0331, 0x0072, 0, 0, 0, 0}, 0x1e5f }, // U1E5F # LATIN SMALL LETTER R WITH LINE BELOW ++ { {0x0331, 0x0074, 0, 0, 0, 0}, 0x1e6f }, // U1E6F # LATIN SMALL LETTER T WITH LINE BELOW ++ { {0x0331, 0x007a, 0, 0, 0, 0}, 0x1e95 }, // U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW ++ { {0x0342, 0x0313, 0x0391, 0, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x0397, 0, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x0399, 0, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03a9, 0, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03b1, 0, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03b7, 0, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03b9, 0, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03c5, 0, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0313, 0x03c9, 0, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x0314, 0x0391, 0, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x0397, 0, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x0399, 0, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03a5, 0, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03a9, 0, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03b1, 0, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03b7, 0, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03b9, 0, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03c5, 0, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x0314, 0x03c9, 0, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x03b1, 0, 0, 0, 0}, 0x1fb6 }, // U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI ++ { {0x0342, 0x03b7, 0, 0, 0, 0}, 0x1fc6 }, // U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI ++ { {0x0342, 0x03b9, 0, 0, 0, 0}, 0x1fd6 }, // U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI ++ { {0x0342, 0x03c5, 0, 0, 0, 0}, 0x1fe6 }, // U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI ++ { {0x0342, 0x03c9, 0, 0, 0, 0}, 0x1ff6 }, // U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI ++ { {0x0342, 0x03ca, 0, 0, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {0x0342, 0x03cb, 0, 0, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {0x0342, 0x1f00, 0, 0, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f01, 0, 0, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f08, 0, 0, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f09, 0, 0, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f20, 0, 0, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f21, 0, 0, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f28, 0, 0, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f29, 0, 0, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f30, 0, 0, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f31, 0, 0, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f38, 0, 0, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f39, 0, 0, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f50, 0, 0, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f51, 0, 0, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f59, 0, 0, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f60, 0, 0, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f61, 0, 0, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, 0x1f68, 0, 0, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, 0x1f69, 0, 0, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {0x0342, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0044, 0, 0, 0}, 0x0110 }, // U0110 # LATIN CAPITAL LETTER D WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0047, 0, 0, 0}, 0x01e4 }, // U01E4 # LATIN CAPITAL LETTER G WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0048, 0, 0, 0}, 0x0126 }, // U0126 # LATIN CAPITAL LETTER H WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0049, 0, 0, 0}, 0x0197 }, // U0197 # LATIN CAPITAL LETTER I WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x004c, 0, 0, 0}, 0x0141 }, // U0141 # LATIN CAPITAL LETTER L WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x004f, 0, 0, 0}, 0x00d8 }, // U00D8 # LATIN CAPITAL LETTER O WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0054, 0, 0, 0}, 0x0166 }, // U0166 # LATIN CAPITAL LETTER T WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x005a, 0, 0, 0}, 0x01b5 }, // U01B5 # LATIN CAPITAL LETTER Z WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0062, 0, 0, 0}, 0x0180 }, // U0180 # LATIN SMALL LETTER B WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0064, 0, 0, 0}, 0x0111 }, // U0111 # LATIN SMALL LETTER D WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0067, 0, 0, 0}, 0x01e5 }, // U01E5 # LATIN SMALL LETTER G WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0068, 0, 0, 0}, 0x0127 }, // U0127 # LATIN SMALL LETTER H WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0069, 0, 0, 0}, 0x0268 }, // U0268 # LATIN SMALL LETTER I WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x006c, 0, 0, 0}, 0x0142 }, // U0142 # LATIN SMALL LETTER L WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x006f, 0, 0, 0}, 0x00f8 }, // U00F8 # LATIN SMALL LETTER O WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0074, 0, 0, 0}, 0x0167 }, // U0167 # LATIN SMALL LETTER T WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x007a, 0, 0, 0}, 0x01b6 }, // U01B6 # LATIN SMALL LETTER Z WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0294, 0, 0, 0}, 0x02a1 }, // U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0338, 0, 0, 0}, 0x2260 }, // U2260 # NOT EQUAL TO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0413, 0, 0, 0}, 0x0492 }, // U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x041a, 0, 0, 0}, 0x049e }, // U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x0433, 0, 0, 0}, 0x0493 }, // U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x043a, 0, 0, 0}, 0x049f }, // U049F # CYRILLIC SMALL LETTER KA WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x04ae, 0, 0, 0}, 0x04b0 }, // U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x04af, 0, 0, 0}, 0x04b1 }, // U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x2190, 0, 0, 0}, 0x219a }, // U219A # LEFTWARDS ARROW WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x2192, 0, 0, 0}, 0x219b }, // U219B # RIGHTWARDS ARROW WITH STROKE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0000, 0x2194, 0, 0, 0}, 0x21ae }, // U21AE # LEFT RIGHT ARROW WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x0020, 0, 0, 0}, 0x00a0 }, // nobreakspace # NO-BREAK SPACE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x0027, 0, 0, 0}, 0x0027 }, // apostrophe ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x002c, 0, 0, 0}, 0x00b8 }, // cedilla ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x002d, 0, 0, 0}, 0x007e }, // asciitilde ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x002e, 0, 0, 0}, 0x2008 }, // U2008 # PUNCTUATION SPACE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x003e, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x005e, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x0060, 0, 0, 0}, 0x0060 }, // grave ++ { {UNITIZE(Qt::Key_Multi_key), 0x0020, 0x007e, 0, 0, 0}, 0x007e }, // asciitilde ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0000, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0000, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0000, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0000, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0021, 0, 0, 0}, 0x00a1 }, // exclamdown ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x002b, 0x004f, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x002b, 0x0055, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x002b, 0x006f, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x002b, 0x0075, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0041, 0, 0, 0}, 0x1ea0 }, // U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0042, 0, 0, 0}, 0x1e04 }, // U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0044, 0, 0, 0}, 0x1e0c }, // U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0045, 0, 0, 0}, 0x1eb8 }, // U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0048, 0, 0, 0}, 0x1e24 }, // U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0049, 0, 0, 0}, 0x1eca }, // U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004b, 0, 0, 0}, 0x1e32 }, // U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004c, 0, 0, 0}, 0x1e36 }, // U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004d, 0, 0, 0}, 0x1e42 }, // U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004e, 0, 0, 0}, 0x1e46 }, // U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004f, 0, 0, 0}, 0x1ecc }, // U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0052, 0, 0, 0}, 0x1e5a }, // U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0053, 0, 0, 0}, 0x1e62 }, // U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0054, 0, 0, 0}, 0x1e6c }, // U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0055, 0, 0, 0}, 0x1ee4 }, // U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0056, 0, 0, 0}, 0x1e7e }, // U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0057, 0, 0, 0}, 0x1e88 }, // U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0059, 0, 0, 0}, 0x1ef4 }, // U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x005a, 0, 0, 0}, 0x1e92 }, // U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x005e, 0, 0, 0}, 0x00a6 }, // brokenbar ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0061, 0, 0, 0}, 0x1ea1 }, // U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0062, 0, 0, 0}, 0x1e05 }, // U1E05 # LATIN SMALL LETTER B WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0064, 0, 0, 0}, 0x1e0d }, // U1E0D # LATIN SMALL LETTER D WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0065, 0, 0, 0}, 0x1eb9 }, // U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0068, 0, 0, 0}, 0x1e25 }, // U1E25 # LATIN SMALL LETTER H WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0069, 0, 0, 0}, 0x1ecb }, // U1ECB # LATIN SMALL LETTER I WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006b, 0, 0, 0}, 0x1e33 }, // U1E33 # LATIN SMALL LETTER K WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006c, 0, 0, 0}, 0x1e37 }, // U1E37 # LATIN SMALL LETTER L WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006d, 0, 0, 0}, 0x1e43 }, // U1E43 # LATIN SMALL LETTER M WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006e, 0, 0, 0}, 0x1e47 }, // U1E47 # LATIN SMALL LETTER N WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006f, 0, 0, 0}, 0x1ecd }, // U1ECD # LATIN SMALL LETTER O WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0072, 0, 0, 0}, 0x1e5b }, // U1E5B # LATIN SMALL LETTER R WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0073, 0, 0, 0}, 0x1e63 }, // U1E63 # LATIN SMALL LETTER S WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0074, 0, 0, 0}, 0x1e6d }, // U1E6D # LATIN SMALL LETTER T WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0075, 0, 0, 0}, 0x1ee5 }, // U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0076, 0, 0, 0}, 0x1e7f }, // U1E7F # LATIN SMALL LETTER V WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0077, 0, 0, 0}, 0x1e89 }, // U1E89 # LATIN SMALL LETTER W WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0079, 0, 0, 0}, 0x1ef5 }, // U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, 0x007a, 0, 0, 0}, 0x1e93 }, // U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0021, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0000, 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0000, 0x004f, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0000, 0x006f, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0027, 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x002c, 0, 0, 0}, 0x201e }, // U201e # DOUBLE LOW-9 QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x002f, 0, 0, 0}, 0x301e }, // U301e # DOUBLE PRIME QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x003c, 0, 0, 0}, 0x201c }, // U201c # LEFT DOUBLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x003e, 0, 0, 0}, 0x201d }, // U201d # RIGHT DOUBLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0041, 0, 0, 0}, 0x00c4 }, // U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0045, 0, 0, 0}, 0x00cb }, // U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0048, 0, 0, 0}, 0x1e26 }, // U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0049, 0, 0, 0}, 0x00cf }, // U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x004f, 0, 0, 0}, 0x00d6 }, // U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0, 0}, 0x00dc }, // U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0057, 0, 0, 0}, 0x1e84 }, // U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0058, 0, 0, 0}, 0x1e8c }, // U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0059, 0, 0, 0}, 0x0178 }, // U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x005c, 0, 0, 0}, 0x301d }, // U301d # REVERSED DOUBLE PRIME QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x005f, 0x0055, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x005f, 0x0075, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0061, 0, 0, 0}, 0x00e4 }, // U00E4 # LATIN SMALL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0065, 0, 0, 0}, 0x00eb }, // U00EB # LATIN SMALL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0068, 0, 0, 0}, 0x1e27 }, // U1E27 # LATIN SMALL LETTER H WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0069, 0, 0, 0}, 0x00ef }, // U00EF # LATIN SMALL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x006f, 0, 0, 0}, 0x00f6 }, // U00F6 # LATIN SMALL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0074, 0, 0, 0}, 0x1e97 }, // U1E97 # LATIN SMALL LETTER T WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0, 0}, 0x00fc }, // U00FC # LATIN SMALL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0077, 0, 0, 0}, 0x1e85 }, // U1E85 # LATIN SMALL LETTER W WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0078, 0, 0, 0}, 0x1e8d }, // U1E8D # LATIN SMALL LETTER X WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0079, 0, 0, 0}, 0x00ff }, // U00FF # LATIN SMALL LETTER Y WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x007e, 0x004f, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x007e, 0x006f, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x00af, 0x0055, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x00af, 0x0075, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x00b4, 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x00d5, 0, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x00f5, 0, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x016a, 0, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x016b, 0, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0399, 0, 0, 0}, 0x03aa }, // U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03a5, 0, 0, 0}, 0x03ab }, // U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0, 0}, 0x03ca }, // U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0, 0}, 0x03cb }, // U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03d2, 0, 0, 0}, 0x03d4 }, // U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0406, 0, 0, 0}, 0x0407 }, // U0407 # CYRILLIC CAPITAL LETTER YI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0410, 0, 0, 0}, 0x04d2 }, // U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0415, 0, 0, 0}, 0x0401 }, // U0401 # CYRILLIC CAPITAL LETTER IO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0416, 0, 0, 0}, 0x04dc }, // U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0417, 0, 0, 0}, 0x04de }, // U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0418, 0, 0, 0}, 0x04e4 }, // U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x041e, 0, 0, 0}, 0x04e6 }, // U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0423, 0, 0, 0}, 0x04f0 }, // U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0427, 0, 0, 0}, 0x04f4 }, // U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x042b, 0, 0, 0}, 0x04f8 }, // U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x042d, 0, 0, 0}, 0x04ec }, // U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0430, 0, 0, 0}, 0x04d3 }, // U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0435, 0, 0, 0}, 0x0451 }, // U0451 # CYRILLIC SMALL LETTER IO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0436, 0, 0, 0}, 0x04dd }, // U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0437, 0, 0, 0}, 0x04df }, // U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0438, 0, 0, 0}, 0x04e5 }, // U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x043e, 0, 0, 0}, 0x04e7 }, // U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0443, 0, 0, 0}, 0x04f1 }, // U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0447, 0, 0, 0}, 0x04f5 }, // U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x044b, 0, 0, 0}, 0x04f9 }, // U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x044d, 0, 0, 0}, 0x04ed }, // U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0456, 0, 0, 0}, 0x0457 }, // U0457 # CYRILLIC SMALL LETTER YI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x04d8, 0, 0, 0}, 0x04da }, // U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x04d9, 0, 0, 0}, 0x04db }, // U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x04e8, 0, 0, 0}, 0x04ea }, // U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, 0x04e9, 0, 0, 0}, 0x04eb }, // U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, UNITIZE(Qt::Key_Dead_Acute), 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, UNITIZE(Qt::Key_Dead_Macron), 0x0055, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0022, UNITIZE(Qt::Key_Dead_Macron), 0x0075, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0023, 0x0023, 0, 0, 0}, 0x266f }, // U266f # MUSIC SHARP SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0023, 0x0062, 0, 0, 0}, 0x266d }, // U266d # MUSIC FLAT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0023, 0x0066, 0, 0, 0}, 0x266e }, // U266e # MUSIC NATURAL SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0025, 0x006f, 0, 0, 0}, 0x2030 }, // U2030 # PER MILLE SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0000, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0020, 0, 0, 0}, 0x0027 }, // apostrophe ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0022, 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002b, 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002b, 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002b, 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002b, 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002c, 0, 0, 0}, 0x201a }, // U201a # SINGLE LOW-9 QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002c, 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002c, 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002f, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x002f, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x003c, 0, 0, 0}, 0x2018 }, // U2018 # LEFT SINGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x003e, 0, 0, 0}, 0x2019 }, // U2019 # RIGHT SINGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0041, 0, 0, 0}, 0x00c1 }, // U00C1 # LATIN CAPITAL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0043, 0, 0, 0}, 0x0106 }, // U0106 # LATIN CAPITAL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0045, 0, 0, 0}, 0x00c9 }, // U00C9 # LATIN CAPITAL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0047, 0, 0, 0}, 0x01f4 }, // U01F4 # LATIN CAPITAL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0049, 0, 0, 0}, 0x00cd }, // U00CD # LATIN CAPITAL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x004b, 0, 0, 0}, 0x1e30 }, // U1E30 # LATIN CAPITAL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x004c, 0, 0, 0}, 0x0139 }, // U0139 # LATIN CAPITAL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x004d, 0, 0, 0}, 0x1e3e }, // U1E3E # LATIN CAPITAL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x004e, 0, 0, 0}, 0x0143 }, // U0143 # LATIN CAPITAL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x004f, 0, 0, 0}, 0x00d3 }, // U00D3 # LATIN CAPITAL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0050, 0, 0, 0}, 0x1e54 }, // U1E54 # LATIN CAPITAL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0052, 0, 0, 0}, 0x0154 }, // U0154 # LATIN CAPITAL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0053, 0, 0, 0}, 0x015a }, // U015A # LATIN CAPITAL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0055, 0, 0, 0}, 0x00da }, // U00DA # LATIN CAPITAL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0055, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0055, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0057, 0, 0, 0}, 0x1e82 }, // U1E82 # LATIN CAPITAL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0059, 0, 0, 0}, 0x00dd }, // U00DD # LATIN CAPITAL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005a, 0, 0, 0}, 0x0179 }, // U0179 # LATIN CAPITAL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005e, 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005f, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005f, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005f, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x005f, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0061, 0, 0, 0}, 0x00e1 }, // U00E1 # LATIN SMALL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0062, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0062, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0063, 0, 0, 0}, 0x0107 }, // U0107 # LATIN SMALL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0065, 0, 0, 0}, 0x00e9 }, // U00E9 # LATIN SMALL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0067, 0, 0, 0}, 0x01f5 }, // U01F5 # LATIN SMALL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0069, 0, 0, 0}, 0x00ed }, // U00ED # LATIN SMALL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x006b, 0, 0, 0}, 0x1e31 }, // U1E31 # LATIN SMALL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x006c, 0, 0, 0}, 0x013a }, // U013A # LATIN SMALL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x006d, 0, 0, 0}, 0x1e3f }, // U1E3F # LATIN SMALL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x006e, 0, 0, 0}, 0x0144 }, // U0144 # LATIN SMALL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x006f, 0, 0, 0}, 0x00f3 }, // U00F3 # LATIN SMALL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0070, 0, 0, 0}, 0x1e55 }, // U1E55 # LATIN SMALL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0072, 0, 0, 0}, 0x0155 }, // U0155 # LATIN SMALL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0073, 0, 0, 0}, 0x015b }, // U015B # LATIN SMALL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0075, 0, 0, 0}, 0x00fa }, // U00FA # LATIN SMALL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0077, 0, 0, 0}, 0x1e83 }, // U1E83 # LATIN SMALL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0079, 0, 0, 0}, 0x00fd }, // U00FD # LATIN SMALL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x007a, 0, 0, 0}, 0x017a }, // U017A # LATIN SMALL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x007e, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x007e, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x007e, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x007e, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00af, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00af, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00af, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00af, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00c2, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00c5, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00c6, 0, 0, 0}, 0x01fc }, // U01FC # LATIN CAPITAL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00c7, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00ca, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00cf, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00d4, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00d5, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00d8, 0, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00dc, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00e2, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00e5, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00e6, 0, 0, 0}, 0x01fd }, // U01FD # LATIN SMALL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00e7, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00ea, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00ef, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00f4, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00f5, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00f8, 0, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x00fc, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0102, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0103, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0112, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0113, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x014c, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x014d, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0168, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0169, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0391, 0, 0, 0}, 0x0386 }, // U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0395, 0, 0, 0}, 0x0388 }, // U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0397, 0, 0, 0}, 0x0389 }, // U0389 # GREEK CAPITAL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0399, 0, 0, 0}, 0x038a }, // U038A # GREEK CAPITAL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x039f, 0, 0, 0}, 0x038c }, // U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03a5, 0, 0, 0}, 0x038e }, // U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03a9, 0, 0, 0}, 0x038f }, // U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b1, 0, 0, 0}, 0x03ac }, // U03AC # GREEK SMALL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b5, 0, 0, 0}, 0x03ad }, // U03AD # GREEK SMALL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b7, 0, 0, 0}, 0x03ae }, // U03AE # GREEK SMALL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b9, 0, 0, 0}, 0x03af }, // U03AF # GREEK SMALL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03bf, 0, 0, 0}, 0x03cc }, // U03CC # GREEK SMALL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03c5, 0, 0, 0}, 0x03cd }, // U03CD # GREEK SMALL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03c9, 0, 0, 0}, 0x03ce }, // U03CE # GREEK SMALL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03ca, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03cb, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03d2, 0, 0, 0}, 0x03d3 }, // U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0413, 0, 0, 0}, 0x0403 }, // U0403 # CYRILLIC CAPITAL LETTER GJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x041a, 0, 0, 0}, 0x040c }, // U040C # CYRILLIC CAPITAL LETTER KJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0433, 0, 0, 0}, 0x0453 }, // U0453 # CYRILLIC SMALL LETTER GJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x043a, 0, 0, 0}, 0x045c }, // U045C # CYRILLIC SMALL LETTER KJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f00, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f01, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f08, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f09, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f10, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f11, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f18, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f19, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f20, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f21, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f28, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f29, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f30, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f31, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f38, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f39, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f40, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f41, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f48, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f49, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f50, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f51, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f59, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f60, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f61, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f68, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f69, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Tilde), 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Tilde), 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Abovering), 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Abovering), 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Cedilla), 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Cedilla), 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0027, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b2 }, // U32B2 # CIRCLED NUMBER THIRTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246d }, // U246D # CIRCLED NUMBER FOURTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32be }, // U32BE # CIRCLED NUMBER FORTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2470 }, // U2470 # CIRCLED NUMBER SEVENTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32bc }, // U32BC # CIRCLED NUMBER FORTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246f }, // U246F # CIRCLED NUMBER SIXTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32bb }, // U32BB # CIRCLED NUMBER FORTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b3 }, // U32B3 # CIRCLED NUMBER THIRTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b6 }, // U32B6 # CIRCLED NUMBER FORTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2469 }, // U2469 # CIRCLED NUMBER TEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325f }, // U325F # CIRCLED NUMBER THIRTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325e }, // U325E # CIRCLED NUMBER THIRTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b8 }, // U32B8 # CIRCLED NUMBER FORTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b1 }, // U32B1 # CIRCLED NUMBER THIRTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325d }, // U325D # CIRCLED NUMBER THIRTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2471 }, // U2471 # CIRCLED NUMBER EIGHTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325b }, // U325B # CIRCLED NUMBER THIRTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x2472 }, // U2472 # CIRCLED NUMBER NINETEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246c }, // U246C # CIRCLED NUMBER THIRTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b9 }, // U32B9 # CIRCLED NUMBER FORTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32ba }, // U32BA # CIRCLED NUMBER FORTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x325a }, // U325A # CIRCLED NUMBER THIRTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b5 }, // U32B5 # CIRCLED NUMBER FORTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32b4 }, // U32B4 # CIRCLED NUMBER THIRTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246a }, // U246A # CIRCLED NUMBER ELEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x246e }, // U246E # CIRCLED NUMBER FIFTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32bd }, // U32BD # CIRCLED NUMBER FORTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0000, 0x0029, 0}, 0x32bf }, // U32BF # CIRCLED NUMBER FIFTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2461 }, // U2461 # CIRCLED DIGIT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2461 }, // U2461 # CIRCLED DIGIT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2462 }, // U2462 # CIRCLED DIGIT THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2468 }, // U2468 # CIRCLED DIGIT NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2463 }, // U2463 # CIRCLED DIGIT FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2460 }, // U2460 # CIRCLED DIGIT ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2467 }, // U2467 # CIRCLED DIGIT EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x24ea }, // U24EA # CIRCLED DIGIT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2466 }, // U2466 # CIRCLED DIGIT SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2465 }, // U2465 # CIRCLED DIGIT SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0029, 0, 0}, 0x2464 }, // U2464 # CIRCLED DIGIT FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x32b5 }, // U32B5 # CIRCLED NUMBER FORTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x2469 }, // U2469 # CIRCLED NUMBER TEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x32bf }, // U32BF # CIRCLED NUMBER FIFTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x325a }, // U325A # CIRCLED NUMBER THIRTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0030, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0031, 0x0029, 0}, 0x32b6 }, // U32B6 # CIRCLED NUMBER FORTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0031, 0x0029, 0}, 0x246a }, // U246A # CIRCLED NUMBER ELEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0031, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0031, 0x0029, 0}, 0x325b }, // U325B # CIRCLED NUMBER THIRTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0031, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0032, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0032, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0032, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0032, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0032, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0033, 0x0029, 0}, 0x246c }, // U246C # CIRCLED NUMBER THIRTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0033, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0033, 0x0029, 0}, 0x325d }, // U325D # CIRCLED NUMBER THIRTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0033, 0x0029, 0}, 0x32b8 }, // U32B8 # CIRCLED NUMBER FORTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0033, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0034, 0x0029, 0}, 0x246d }, // U246D # CIRCLED NUMBER FOURTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0034, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0034, 0x0029, 0}, 0x32b9 }, // U32B9 # CIRCLED NUMBER FORTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0034, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0034, 0x0029, 0}, 0x325e }, // U325E # CIRCLED NUMBER THIRTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0035, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0035, 0x0029, 0}, 0x325f }, // U325F # CIRCLED NUMBER THIRTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0035, 0x0029, 0}, 0x32ba }, // U32BA # CIRCLED NUMBER FORTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0035, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0035, 0x0029, 0}, 0x246e }, // U246E # CIRCLED NUMBER FIFTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0036, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0036, 0x0029, 0}, 0x32bb }, // U32BB # CIRCLED NUMBER FORTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0036, 0x0029, 0}, 0x32b1 }, // U32B1 # CIRCLED NUMBER THIRTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0036, 0x0029, 0}, 0x246f }, // U246F # CIRCLED NUMBER SIXTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0036, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0037, 0x0029, 0}, 0x32bc }, // U32BC # CIRCLED NUMBER FORTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0037, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0037, 0x0029, 0}, 0x32b2 }, // U32B2 # CIRCLED NUMBER THIRTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0037, 0x0029, 0}, 0x2470 }, // U2470 # CIRCLED NUMBER SEVENTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0037, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0038, 0x0029, 0}, 0x2471 }, // U2471 # CIRCLED NUMBER EIGHTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0038, 0x0029, 0}, 0x32b3 }, // U32B3 # CIRCLED NUMBER THIRTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0038, 0x0029, 0}, 0x32bd }, // U32BD # CIRCLED NUMBER FORTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0038, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0038, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0039, 0x0029, 0}, 0x32b4 }, // U32B4 # CIRCLED NUMBER THIRTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0039, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0039, 0x0029, 0}, 0x32be }, // U32BE # CIRCLED NUMBER FORTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0039, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0000, 0x0039, 0x0029, 0}, 0x2472 }, // U2472 # CIRCLED NUMBER NINETEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0028, 0, 0, 0}, 0x005b }, // bracketleft ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x002d, 0, 0, 0}, 0x007b }, // braceleft ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0030, 0x0029, 0, 0}, 0x24ea }, // U24EA # CIRCLED DIGIT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x2472 }, // U2472 # CIRCLED NUMBER NINETEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246e }, // U246E # CIRCLED NUMBER FIFTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x2469 }, // U2469 # CIRCLED NUMBER TEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246c }, // U246C # CIRCLED NUMBER THIRTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x2470 }, // U2470 # CIRCLED NUMBER SEVENTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246a }, // U246A # CIRCLED NUMBER ELEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246d }, // U246D # CIRCLED NUMBER FOURTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x2471 }, // U2471 # CIRCLED NUMBER EIGHTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246f }, // U246F # CIRCLED NUMBER SIXTEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0000, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0029, 0, 0}, 0x2460 }, // U2460 # CIRCLED DIGIT ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0030, 0x0029, 0}, 0x2469 }, // U2469 # CIRCLED NUMBER TEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0031, 0x0029, 0}, 0x246a }, // U246A # CIRCLED NUMBER ELEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0032, 0x0029, 0}, 0x246b }, // U246B # CIRCLED NUMBER TWELVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0033, 0x0029, 0}, 0x246c }, // U246C # CIRCLED NUMBER THIRTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0034, 0x0029, 0}, 0x246d }, // U246D # CIRCLED NUMBER FOURTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0035, 0x0029, 0}, 0x246e }, // U246E # CIRCLED NUMBER FIFTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0036, 0x0029, 0}, 0x246f }, // U246F # CIRCLED NUMBER SIXTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0037, 0x0029, 0}, 0x2470 }, // U2470 # CIRCLED NUMBER SEVENTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0038, 0x0029, 0}, 0x2471 }, // U2471 # CIRCLED NUMBER EIGHTEEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0031, 0x0039, 0x0029, 0}, 0x2472 }, // U2472 # CIRCLED NUMBER NINETEEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0000, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0029, 0, 0}, 0x2461 }, // U2461 # CIRCLED DIGIT TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0030, 0x0029, 0}, 0x2473 }, // U2473 # CIRCLED NUMBER TWENTY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0031, 0x0029, 0}, 0x3251 }, // U3251 # CIRCLED NUMBER TWENTY ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0032, 0x0029, 0}, 0x3252 }, // U3252 # CIRCLED NUMBER TWENTY TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0033, 0x0029, 0}, 0x3253 }, // U3253 # CIRCLED NUMBER TWENTY THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0034, 0x0029, 0}, 0x3254 }, // U3254 # CIRCLED NUMBER TWENTY FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0035, 0x0029, 0}, 0x3255 }, // U3255 # CIRCLED NUMBER TWENTY FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0036, 0x0029, 0}, 0x3256 }, // U3256 # CIRCLED NUMBER TWENTY SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0037, 0x0029, 0}, 0x3257 }, // U3257 # CIRCLED NUMBER TWENTY SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0038, 0x0029, 0}, 0x3258 }, // U3258 # CIRCLED NUMBER TWENTY EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0032, 0x0039, 0x0029, 0}, 0x3259 }, // U3259 # CIRCLED NUMBER TWENTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x32b4 }, // U32B4 # CIRCLED NUMBER THIRTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325a }, // U325A # CIRCLED NUMBER THIRTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325b }, // U325B # CIRCLED NUMBER THIRTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x32b3 }, // U32B3 # CIRCLED NUMBER THIRTY EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x32b2 }, // U32B2 # CIRCLED NUMBER THIRTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325f }, // U325F # CIRCLED NUMBER THIRTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325e }, // U325E # CIRCLED NUMBER THIRTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x32b1 }, // U32B1 # CIRCLED NUMBER THIRTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0000, 0x0029, 0}, 0x325d }, // U325D # CIRCLED NUMBER THIRTY THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0029, 0, 0}, 0x2462 }, // U2462 # CIRCLED DIGIT THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0030, 0x0029, 0}, 0x325a }, // U325A # CIRCLED NUMBER THIRTY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0031, 0x0029, 0}, 0x325b }, // U325B # CIRCLED NUMBER THIRTY ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0032, 0x0029, 0}, 0x325c }, // U325C # CIRCLED NUMBER THIRTY TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0033, 0x0029, 0}, 0x325d }, // U325D # CIRCLED NUMBER THIRTY THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0034, 0x0029, 0}, 0x325e }, // U325E # CIRCLED NUMBER THIRTY FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0035, 0x0029, 0}, 0x325f }, // U325F # CIRCLED NUMBER THIRTY FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0036, 0x0029, 0}, 0x32b1 }, // U32B1 # CIRCLED NUMBER THIRTY SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0037, 0x0029, 0}, 0x32b2 }, // U32B2 # CIRCLED NUMBER THIRTY SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0038, 0x0029, 0}, 0x32b3 }, // U32B3 # CIRCLED NUMBER THIRTY EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0033, 0x0039, 0x0029, 0}, 0x32b4 }, // U32B4 # CIRCLED NUMBER THIRTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b5 }, // U32B5 # CIRCLED NUMBER FORTY ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b6 }, // U32B6 # CIRCLED NUMBER FORTY ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32bc }, // U32BC # CIRCLED NUMBER FORTY SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b9 }, // U32B9 # CIRCLED NUMBER FORTY FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32b8 }, // U32B8 # CIRCLED NUMBER FORTY THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32bb }, // U32BB # CIRCLED NUMBER FORTY SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32be }, // U32BE # CIRCLED NUMBER FORTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32ba }, // U32BA # CIRCLED NUMBER FORTY FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0000, 0x0029, 0}, 0x32bd }, // U32BD # CIRCLED NUMBER FORTY EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0029, 0, 0}, 0x2463 }, // U2463 # CIRCLED DIGIT FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0030, 0x0029, 0}, 0x32b5 }, // U32B5 # CIRCLED NUMBER FORTY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0031, 0x0029, 0}, 0x32b6 }, // U32B6 # CIRCLED NUMBER FORTY ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0032, 0x0029, 0}, 0x32b7 }, // U32B7 # CIRCLED NUMBER FORTY TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0033, 0x0029, 0}, 0x32b8 }, // U32B8 # CIRCLED NUMBER FORTY THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0034, 0x0029, 0}, 0x32b9 }, // U32B9 # CIRCLED NUMBER FORTY FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0035, 0x0029, 0}, 0x32ba }, // U32BA # CIRCLED NUMBER FORTY FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0036, 0x0029, 0}, 0x32bb }, // U32BB # CIRCLED NUMBER FORTY SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0037, 0x0029, 0}, 0x32bc }, // U32BC # CIRCLED NUMBER FORTY SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0038, 0x0029, 0}, 0x32bd }, // U32BD # CIRCLED NUMBER FORTY EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0034, 0x0039, 0x0029, 0}, 0x32be }, // U32BE # CIRCLED NUMBER FORTY NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0035, 0x0000, 0x0029, 0}, 0x32bf }, // U32BF # CIRCLED NUMBER FIFTY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0035, 0x0029, 0, 0}, 0x2464 }, // U2464 # CIRCLED DIGIT FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0035, 0x0030, 0x0029, 0}, 0x32bf }, // U32BF # CIRCLED NUMBER FIFTY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0036, 0x0029, 0, 0}, 0x2465 }, // U2465 # CIRCLED DIGIT SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0037, 0x0029, 0, 0}, 0x2466 }, // U2466 # CIRCLED DIGIT SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0038, 0x0029, 0, 0}, 0x2467 }, // U2467 # CIRCLED DIGIT EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0039, 0x0029, 0, 0}, 0x2468 }, // U2468 # CIRCLED DIGIT NINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0041, 0x0029, 0, 0}, 0x24b6 }, // U24B6 # CIRCLED LATIN CAPITAL LETTER A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0042, 0x0029, 0, 0}, 0x24b7 }, // U24B7 # CIRCLED LATIN CAPITAL LETTER B ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0043, 0x0029, 0, 0}, 0x24b8 }, // U24B8 # CIRCLED LATIN CAPITAL LETTER C ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0044, 0x0029, 0, 0}, 0x24b9 }, // U24B9 # CIRCLED LATIN CAPITAL LETTER D ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0045, 0x0029, 0, 0}, 0x24ba }, // U24BA # CIRCLED LATIN CAPITAL LETTER E ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0046, 0x0029, 0, 0}, 0x24bb }, // U24BB # CIRCLED LATIN CAPITAL LETTER F ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0047, 0x0029, 0, 0}, 0x24bc }, // U24BC # CIRCLED LATIN CAPITAL LETTER G ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0048, 0x0029, 0, 0}, 0x24bd }, // U24BD # CIRCLED LATIN CAPITAL LETTER H ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0049, 0x0029, 0, 0}, 0x24be }, // U24BE # CIRCLED LATIN CAPITAL LETTER I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004a, 0x0029, 0, 0}, 0x24bf }, // U24BF # CIRCLED LATIN CAPITAL LETTER J ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004b, 0x0029, 0, 0}, 0x24c0 }, // U24C0 # CIRCLED LATIN CAPITAL LETTER K ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004c, 0x0029, 0, 0}, 0x24c1 }, // U24C1 # CIRCLED LATIN CAPITAL LETTER L ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004d, 0x0029, 0, 0}, 0x24c2 }, // U24C2 # CIRCLED LATIN CAPITAL LETTER M ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004e, 0x0029, 0, 0}, 0x24c3 }, // U24C3 # CIRCLED LATIN CAPITAL LETTER N ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x004f, 0x0029, 0, 0}, 0x24c4 }, // U24C4 # CIRCLED LATIN CAPITAL LETTER O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0050, 0x0029, 0, 0}, 0x24c5 }, // U24C5 # CIRCLED LATIN CAPITAL LETTER P ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0051, 0x0029, 0, 0}, 0x24c6 }, // U24C6 # CIRCLED LATIN CAPITAL LETTER Q ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0052, 0x0029, 0, 0}, 0x24c7 }, // U24C7 # CIRCLED LATIN CAPITAL LETTER R ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0053, 0x0029, 0, 0}, 0x24c8 }, // U24C8 # CIRCLED LATIN CAPITAL LETTER S ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0054, 0x0029, 0, 0}, 0x24c9 }, // U24C9 # CIRCLED LATIN CAPITAL LETTER T ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0055, 0x0029, 0, 0}, 0x24ca }, // U24CA # CIRCLED LATIN CAPITAL LETTER U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0056, 0x0029, 0, 0}, 0x24cb }, // U24CB # CIRCLED LATIN CAPITAL LETTER V ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0057, 0x0029, 0, 0}, 0x24cc }, // U24CC # CIRCLED LATIN CAPITAL LETTER W ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0058, 0x0029, 0, 0}, 0x24cd }, // U24CD # CIRCLED LATIN CAPITAL LETTER X ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0059, 0x0029, 0, 0}, 0x24ce }, // U24CE # CIRCLED LATIN CAPITAL LETTER Y ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x005a, 0x0029, 0, 0}, 0x24cf }, // U24CF # CIRCLED LATIN CAPITAL LETTER Z ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0061, 0x0029, 0, 0}, 0x24d0 }, // U24D0 # CIRCLED LATIN SMALL LETTER A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0062, 0x0029, 0, 0}, 0x24d1 }, // U24D1 # CIRCLED LATIN SMALL LETTER B ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0063, 0x0029, 0, 0}, 0x24d2 }, // U24D2 # CIRCLED LATIN SMALL LETTER C ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0064, 0x0029, 0, 0}, 0x24d3 }, // U24D3 # CIRCLED LATIN SMALL LETTER D ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0065, 0x0029, 0, 0}, 0x24d4 }, // U24D4 # CIRCLED LATIN SMALL LETTER E ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0066, 0x0029, 0, 0}, 0x24d5 }, // U24D5 # CIRCLED LATIN SMALL LETTER F ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0067, 0x0029, 0, 0}, 0x24d6 }, // U24D6 # CIRCLED LATIN SMALL LETTER G ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0068, 0x0029, 0, 0}, 0x24d7 }, // U24D7 # CIRCLED LATIN SMALL LETTER H ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0069, 0x0029, 0, 0}, 0x24d8 }, // U24D8 # CIRCLED LATIN SMALL LETTER I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006a, 0x0029, 0, 0}, 0x24d9 }, // U24D9 # CIRCLED LATIN SMALL LETTER J ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006b, 0x0029, 0, 0}, 0x24da }, // U24DA # CIRCLED LATIN SMALL LETTER K ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006c, 0x0029, 0, 0}, 0x24db }, // U24DB # CIRCLED LATIN SMALL LETTER L ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006d, 0x0029, 0, 0}, 0x24dc }, // U24DC # CIRCLED LATIN SMALL LETTER M ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006e, 0x0029, 0, 0}, 0x24dd }, // U24DD # CIRCLED LATIN SMALL LETTER N ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x006f, 0x0029, 0, 0}, 0x24de }, // U24DE # CIRCLED LATIN SMALL LETTER O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0070, 0x0029, 0, 0}, 0x24df }, // U24DF # CIRCLED LATIN SMALL LETTER P ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0071, 0x0029, 0, 0}, 0x24e0 }, // U24E0 # CIRCLED LATIN SMALL LETTER Q ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0072, 0x0029, 0, 0}, 0x24e1 }, // U24E1 # CIRCLED LATIN SMALL LETTER R ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0073, 0x0029, 0, 0}, 0x24e2 }, // U24E2 # CIRCLED LATIN SMALL LETTER S ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0074, 0x0029, 0, 0}, 0x24e3 }, // U24E3 # CIRCLED LATIN SMALL LETTER T ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0075, 0x0029, 0, 0}, 0x24e4 }, // U24E4 # CIRCLED LATIN SMALL LETTER U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0076, 0x0029, 0, 0}, 0x24e5 }, // U24E5 # CIRCLED LATIN SMALL LETTER V ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0077, 0x0029, 0, 0}, 0x24e6 }, // U24E6 # CIRCLED LATIN SMALL LETTER W ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0078, 0x0029, 0, 0}, 0x24e7 }, // U24E7 # CIRCLED LATIN SMALL LETTER X ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0079, 0x0029, 0, 0}, 0x24e8 }, // U24E8 # CIRCLED LATIN SMALL LETTER Y ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x007a, 0x0029, 0, 0}, 0x24e9 }, // U24E9 # CIRCLED LATIN SMALL LETTER Z ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0, 0}, 0x1f09 }, // U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0395, 0, 0, 0}, 0x1f19 }, // U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0, 0}, 0x1f29 }, // U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0, 0}, 0x1f39 }, // U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x039f, 0, 0, 0}, 0x1f49 }, // U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a1, 0, 0, 0}, 0x1fec }, // U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0, 0}, 0x1f59 }, // U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0, 0}, 0x1f69 }, // U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0, 0}, 0x1f01 }, // U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b5, 0, 0, 0}, 0x1f11 }, // U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0, 0}, 0x1f21 }, // U1F21 # GREEK SMALL LETTER ETA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0, 0}, 0x1f31 }, // U1F31 # GREEK SMALL LETTER IOTA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03bf, 0, 0, 0}, 0x1f41 }, // U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c1, 0, 0, 0}, 0x1fe5 }, // U1FE5 # GREEK SMALL LETTER RHO WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0, 0}, 0x1f51 }, // U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0, 0}, 0x1f61 }, // U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1100, 0x0029, 0, 0}, 0x3260 }, // U3260 # CIRCLED HANGUL KIYEOK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1100, 0x1161, 0x0029, 0}, 0x326e }, // U326E # CIRCLED HANGUL KIYEOK A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1102, 0x0029, 0, 0}, 0x3261 }, // U3261 # CIRCLED HANGUL NIEUN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1102, 0x1161, 0x0029, 0}, 0x326f }, // U326F # CIRCLED HANGUL NIEUN A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1103, 0x0029, 0, 0}, 0x3262 }, // U3262 # CIRCLED HANGUL TIKEUT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1103, 0x1161, 0x0029, 0}, 0x3270 }, // U3270 # CIRCLED HANGUL TIKEUT A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1105, 0x0029, 0, 0}, 0x3263 }, // U3263 # CIRCLED HANGUL RIEUL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1105, 0x1161, 0x0029, 0}, 0x3271 }, // U3271 # CIRCLED HANGUL RIEUL A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1106, 0x0029, 0, 0}, 0x3264 }, // U3264 # CIRCLED HANGUL MIEUM ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1106, 0x1161, 0x0029, 0}, 0x3272 }, // U3272 # CIRCLED HANGUL MIEUM A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1107, 0x0029, 0, 0}, 0x3265 }, // U3265 # CIRCLED HANGUL PIEUP ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1107, 0x1161, 0x0029, 0}, 0x3273 }, // U3273 # CIRCLED HANGUL PIEUP A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1109, 0x0029, 0, 0}, 0x3266 }, // U3266 # CIRCLED HANGUL SIOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1109, 0x1161, 0x0029, 0}, 0x3274 }, // U3274 # CIRCLED HANGUL SIOS A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110b, 0x0029, 0, 0}, 0x3267 }, // U3267 # CIRCLED HANGUL IEUNG ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110b, 0x1161, 0x0029, 0}, 0x3275 }, // U3275 # CIRCLED HANGUL IEUNG A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110c, 0x0029, 0, 0}, 0x3268 }, // U3268 # CIRCLED HANGUL CIEUC ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110c, 0x1161, 0x0029, 0}, 0x3276 }, // U3276 # CIRCLED HANGUL CIEUC A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110e, 0x0029, 0, 0}, 0x3269 }, // U3269 # CIRCLED HANGUL CHIEUCH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110e, 0x1161, 0x0029, 0}, 0x3277 }, // U3277 # CIRCLED HANGUL CHIEUCH A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110f, 0x0029, 0, 0}, 0x326a }, // U326A # CIRCLED HANGUL KHIEUKH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x110f, 0x1161, 0x0029, 0}, 0x3278 }, // U3278 # CIRCLED HANGUL KHIEUKH A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1110, 0x0029, 0, 0}, 0x326b }, // U326B # CIRCLED HANGUL THIEUTH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1110, 0x1161, 0x0029, 0}, 0x3279 }, // U3279 # CIRCLED HANGUL THIEUTH A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1111, 0x0029, 0, 0}, 0x326c }, // U326C # CIRCLED HANGUL PHIEUPH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1111, 0x1161, 0x0029, 0}, 0x327a }, // U327A # CIRCLED HANGUL PHIEUPH A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1112, 0x0029, 0, 0}, 0x326d }, // U326D # CIRCLED HANGUL HIEUH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x1112, 0x1161, 0x0029, 0}, 0x327b }, // U327B # CIRCLED HANGUL HIEUH A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30a2, 0x0029, 0, 0}, 0x32d0 }, // U32D0 # CIRCLED KATAKANA A ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30a4, 0x0029, 0, 0}, 0x32d1 }, // U32D1 # CIRCLED KATAKANA I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30a6, 0x0029, 0, 0}, 0x32d2 }, // U32D2 # CIRCLED KATAKANA U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30a8, 0x0029, 0, 0}, 0x32d3 }, // U32D3 # CIRCLED KATAKANA E ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30aa, 0x0029, 0, 0}, 0x32d4 }, // U32D4 # CIRCLED KATAKANA O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ab, 0x0029, 0, 0}, 0x32d5 }, // U32D5 # CIRCLED KATAKANA KA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ad, 0x0029, 0, 0}, 0x32d6 }, // U32D6 # CIRCLED KATAKANA KI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30af, 0x0029, 0, 0}, 0x32d7 }, // U32D7 # CIRCLED KATAKANA KU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30b1, 0x0029, 0, 0}, 0x32d8 }, // U32D8 # CIRCLED KATAKANA KE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30b3, 0x0029, 0, 0}, 0x32d9 }, // U32D9 # CIRCLED KATAKANA KO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30b5, 0x0029, 0, 0}, 0x32da }, // U32DA # CIRCLED KATAKANA SA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30b7, 0x0029, 0, 0}, 0x32db }, // U32DB # CIRCLED KATAKANA SI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30b9, 0x0029, 0, 0}, 0x32dc }, // U32DC # CIRCLED KATAKANA SU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30bb, 0x0029, 0, 0}, 0x32dd }, // U32DD # CIRCLED KATAKANA SE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30bd, 0x0029, 0, 0}, 0x32de }, // U32DE # CIRCLED KATAKANA SO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30bf, 0x0029, 0, 0}, 0x32df }, // U32DF # CIRCLED KATAKANA TA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30c1, 0x0029, 0, 0}, 0x32e0 }, // U32E0 # CIRCLED KATAKANA TI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30c4, 0x0029, 0, 0}, 0x32e1 }, // U32E1 # CIRCLED KATAKANA TU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30c6, 0x0029, 0, 0}, 0x32e2 }, // U32E2 # CIRCLED KATAKANA TE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30c8, 0x0029, 0, 0}, 0x32e3 }, // U32E3 # CIRCLED KATAKANA TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ca, 0x0029, 0, 0}, 0x32e4 }, // U32E4 # CIRCLED KATAKANA NA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30cb, 0x0029, 0, 0}, 0x32e5 }, // U32E5 # CIRCLED KATAKANA NI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30cc, 0x0029, 0, 0}, 0x32e6 }, // U32E6 # CIRCLED KATAKANA NU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30cd, 0x0029, 0, 0}, 0x32e7 }, // U32E7 # CIRCLED KATAKANA NE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ce, 0x0029, 0, 0}, 0x32e8 }, // U32E8 # CIRCLED KATAKANA NO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30cf, 0x0029, 0, 0}, 0x32e9 }, // U32E9 # CIRCLED KATAKANA HA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30d2, 0x0029, 0, 0}, 0x32ea }, // U32EA # CIRCLED KATAKANA HI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30d5, 0x0029, 0, 0}, 0x32eb }, // U32EB # CIRCLED KATAKANA HU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30d8, 0x0029, 0, 0}, 0x32ec }, // U32EC # CIRCLED KATAKANA HE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30db, 0x0029, 0, 0}, 0x32ed }, // U32ED # CIRCLED KATAKANA HO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30de, 0x0029, 0, 0}, 0x32ee }, // U32EE # CIRCLED KATAKANA MA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30df, 0x0029, 0, 0}, 0x32ef }, // U32EF # CIRCLED KATAKANA MI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e0, 0x0029, 0, 0}, 0x32f0 }, // U32F0 # CIRCLED KATAKANA MU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e1, 0x0029, 0, 0}, 0x32f1 }, // U32F1 # CIRCLED KATAKANA ME ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e2, 0x0029, 0, 0}, 0x32f2 }, // U32F2 # CIRCLED KATAKANA MO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e4, 0x0029, 0, 0}, 0x32f3 }, // U32F3 # CIRCLED KATAKANA YA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e6, 0x0029, 0, 0}, 0x32f4 }, // U32F4 # CIRCLED KATAKANA YU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e8, 0x0029, 0, 0}, 0x32f5 }, // U32F5 # CIRCLED KATAKANA YO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30e9, 0x0029, 0, 0}, 0x32f6 }, // U32F6 # CIRCLED KATAKANA RA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ea, 0x0029, 0, 0}, 0x32f7 }, // U32F7 # CIRCLED KATAKANA RI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30eb, 0x0029, 0, 0}, 0x32f8 }, // U32F8 # CIRCLED KATAKANA RU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ec, 0x0029, 0, 0}, 0x32f9 }, // U32F9 # CIRCLED KATAKANA RE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ed, 0x0029, 0, 0}, 0x32fa }, // U32FA # CIRCLED KATAKANA RO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30ef, 0x0029, 0, 0}, 0x32fb }, // U32FB # CIRCLED KATAKANA WA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30f0, 0x0029, 0, 0}, 0x32fc }, // U32FC # CIRCLED KATAKANA WI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30f1, 0x0029, 0, 0}, 0x32fd }, // U32FD # CIRCLED KATAKANA WE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x30f2, 0x0029, 0, 0}, 0x32fe }, // U32FE # CIRCLED KATAKANA WO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e00, 0x0029, 0, 0}, 0x3280 }, // U3280 # CIRCLED IDEOGRAPH ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e03, 0x0029, 0, 0}, 0x3286 }, // U3286 # CIRCLED IDEOGRAPH SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e09, 0x0029, 0, 0}, 0x3282 }, // U3282 # CIRCLED IDEOGRAPH THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e0a, 0x0029, 0, 0}, 0x32a4 }, // U32A4 # CIRCLED IDEOGRAPH HIGH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e0b, 0x0029, 0, 0}, 0x32a6 }, // U32A6 # CIRCLED IDEOGRAPH LOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e2d, 0x0029, 0, 0}, 0x32a5 }, // U32A5 # CIRCLED IDEOGRAPH CENTRE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e5d, 0x0029, 0, 0}, 0x3288 }, // U3288 # CIRCLED IDEOGRAPH NINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e8c, 0x0029, 0, 0}, 0x3281 }, // U3281 # CIRCLED IDEOGRAPH TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4e94, 0x0029, 0, 0}, 0x3284 }, // U3284 # CIRCLED IDEOGRAPH FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4f01, 0x0029, 0, 0}, 0x32ad }, // U32AD # CIRCLED IDEOGRAPH ENTERPRISE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x4f11, 0x0029, 0, 0}, 0x32a1 }, // U32A1 # CIRCLED IDEOGRAPH REST ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x512a, 0x0029, 0, 0}, 0x329d }, // U329D # CIRCLED IDEOGRAPH EXCELLENT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x516b, 0x0029, 0, 0}, 0x3287 }, // U3287 # CIRCLED IDEOGRAPH EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x516d, 0x0029, 0, 0}, 0x3285 }, // U3285 # CIRCLED IDEOGRAPH SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5199, 0x0029, 0, 0}, 0x32a2 }, // U32A2 # CIRCLED IDEOGRAPH COPY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x52b4, 0x0029, 0, 0}, 0x3298 }, // U3298 # CIRCLED IDEOGRAPH LABOR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x533b, 0x0029, 0, 0}, 0x32a9 }, // U32A9 # CIRCLED IDEOGRAPH MEDICINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5341, 0x0029, 0, 0}, 0x3289 }, // U3289 # CIRCLED IDEOGRAPH TEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5354, 0x0029, 0, 0}, 0x32af }, // U32AF # CIRCLED IDEOGRAPH ALLIANCE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5370, 0x0029, 0, 0}, 0x329e }, // U329E # CIRCLED IDEOGRAPH PRINT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x53f3, 0x0029, 0, 0}, 0x32a8 }, // U32A8 # CIRCLED IDEOGRAPH RIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x540d, 0x0029, 0, 0}, 0x3294 }, // U3294 # CIRCLED IDEOGRAPH NAME ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x56db, 0x0029, 0, 0}, 0x3283 }, // U3283 # CIRCLED IDEOGRAPH FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x571f, 0x0029, 0, 0}, 0x328f }, // U328F # CIRCLED IDEOGRAPH EARTH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x591c, 0x0029, 0, 0}, 0x32b0 }, // U32B0 # CIRCLED IDEOGRAPH NIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5973, 0x0029, 0, 0}, 0x329b }, // U329B # CIRCLED IDEOGRAPH FEMALE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5b66, 0x0029, 0, 0}, 0x32ab }, // U32AB # CIRCLED IDEOGRAPH STUDY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5b97, 0x0029, 0, 0}, 0x32aa }, // U32AA # CIRCLED IDEOGRAPH RELIGION ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x5de6, 0x0029, 0, 0}, 0x32a7 }, // U32A7 # CIRCLED IDEOGRAPH LEFT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x65e5, 0x0029, 0, 0}, 0x3290 }, // U3290 # CIRCLED IDEOGRAPH SUN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6708, 0x0029, 0, 0}, 0x328a }, // U328A # CIRCLED IDEOGRAPH MOON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6709, 0x0029, 0, 0}, 0x3292 }, // U3292 # CIRCLED IDEOGRAPH HAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6728, 0x0029, 0, 0}, 0x328d }, // U328D # CIRCLED IDEOGRAPH WOOD ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x682a, 0x0029, 0, 0}, 0x3291 }, // U3291 # CIRCLED IDEOGRAPH STOCK ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6b63, 0x0029, 0, 0}, 0x32a3 }, // U32A3 # CIRCLED IDEOGRAPH CORRECT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6c34, 0x0029, 0, 0}, 0x328c }, // U328C # CIRCLED IDEOGRAPH WATER ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x6ce8, 0x0029, 0, 0}, 0x329f }, // U329F # CIRCLED IDEOGRAPH ATTENTION ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x706b, 0x0029, 0, 0}, 0x328b }, // U328B # CIRCLED IDEOGRAPH FIRE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x7279, 0x0029, 0, 0}, 0x3295 }, // U3295 # CIRCLED IDEOGRAPH SPECIAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x7537, 0x0029, 0, 0}, 0x329a }, // U329A # CIRCLED IDEOGRAPH MALE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x76e3, 0x0029, 0, 0}, 0x32ac }, // U32AC # CIRCLED IDEOGRAPH SUPERVISE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x793e, 0x0029, 0, 0}, 0x3293 }, // U3293 # CIRCLED IDEOGRAPH SOCIETY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x795d, 0x0029, 0, 0}, 0x3297 }, // U3297 # CIRCLED IDEOGRAPH CONGRATULATION ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x79d8, 0x0029, 0, 0}, 0x3299 }, // U3299 # CIRCLED IDEOGRAPH SECRET ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x8ca1, 0x0029, 0, 0}, 0x3296 }, // U3296 # CIRCLED IDEOGRAPH FINANCIAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x8cc7, 0x0029, 0, 0}, 0x32ae }, // U32AE # CIRCLED IDEOGRAPH RESOURCE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x9069, 0x0029, 0, 0}, 0x329c }, // U329C # CIRCLED IDEOGRAPH SUITABLE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x91d1, 0x0029, 0, 0}, 0x328e }, // U328E # CIRCLED IDEOGRAPH METAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x0028, 0x9805, 0x0029, 0, 0}, 0x32a0 }, // U32A0 # CIRCLED IDEOGRAPH ITEM ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0029, 0, 0, 0}, 0x005d }, // bracketright ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x002d, 0, 0, 0}, 0x007d }, // braceright ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0, 0}, 0x1f08 }, // U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0395, 0, 0, 0}, 0x1f18 }, // U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0, 0}, 0x1f28 }, // U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0, 0}, 0x1f38 }, // U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x039f, 0, 0, 0}, 0x1f48 }, // U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0, 0}, 0x1f68 }, // U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0, 0}, 0x1f00 }, // U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b5, 0, 0, 0}, 0x1f10 }, // U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0, 0}, 0x1f20 }, // U1F20 # GREEK SMALL LETTER ETA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0, 0}, 0x1f30 }, // U1F30 # GREEK SMALL LETTER IOTA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03bf, 0, 0, 0}, 0x1f40 }, // U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c1, 0, 0, 0}, 0x1fe4 }, // U1FE4 # GREEK SMALL LETTER RHO WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0, 0}, 0x1f50 }, // U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0, 0}, 0x1f60 }, // U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x002b, 0, 0, 0}, 0x0023 }, // numbersign ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x002d, 0, 0, 0}, 0x00b1 }, // plusminus ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0, 0}, 0x01a0 }, // U01A0 # LATIN CAPITAL LETTER O WITH HORN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0, 0}, 0x01af }, // U01AF # LATIN CAPITAL LETTER U WITH HORN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0, 0}, 0x01a1 }, // U01A1 # LATIN SMALL LETTER O WITH HORN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0, 0}, 0x01b0 }, // U01B0 # LATIN SMALL LETTER U WITH HORN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0020, 0, 0, 0}, 0x00b8 }, // cedilla ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0022, 0, 0, 0}, 0x201e }, // U201e # DOUBLE LOW-9 QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0027, 0, 0, 0}, 0x201a }, // U201a # SINGLE LOW-9 QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x002d, 0, 0, 0}, 0x00ac }, // U00AC # NOT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0043, 0, 0, 0}, 0x00c7 }, // U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0044, 0, 0, 0}, 0x1e10 }, // U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0045, 0, 0, 0}, 0x0228 }, // U0228 # LATIN CAPITAL LETTER E WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0047, 0, 0, 0}, 0x0122 }, // U0122 # LATIN CAPITAL LETTER G WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0048, 0, 0, 0}, 0x1e28 }, // U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x004b, 0, 0, 0}, 0x0136 }, // U0136 # LATIN CAPITAL LETTER K WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x004c, 0, 0, 0}, 0x013b }, // U013B # LATIN CAPITAL LETTER L WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x004e, 0, 0, 0}, 0x0145 }, // U0145 # LATIN CAPITAL LETTER N WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0052, 0, 0, 0}, 0x0156 }, // U0156 # LATIN CAPITAL LETTER R WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0053, 0, 0, 0}, 0x015e }, // U015E # LATIN CAPITAL LETTER S WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0054, 0, 0, 0}, 0x0162 }, // U0162 # LATIN CAPITAL LETTER T WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0063, 0, 0, 0}, 0x00e7 }, // U00E7 # LATIN SMALL LETTER C WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0064, 0, 0, 0}, 0x1e11 }, // U1E11 # LATIN SMALL LETTER D WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0065, 0, 0, 0}, 0x0229 }, // U0229 # LATIN SMALL LETTER E WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0067, 0, 0, 0}, 0x0123 }, // U0123 # LATIN SMALL LETTER G WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0068, 0, 0, 0}, 0x1e29 }, // U1E29 # LATIN SMALL LETTER H WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x006b, 0, 0, 0}, 0x0137 }, // U0137 # LATIN SMALL LETTER K WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x006c, 0, 0, 0}, 0x013c }, // U013C # LATIN SMALL LETTER L WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x006e, 0, 0, 0}, 0x0146 }, // U0146 # LATIN SMALL LETTER N WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0072, 0, 0, 0}, 0x0157 }, // U0157 # LATIN SMALL LETTER R WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0073, 0, 0, 0}, 0x015f }, // U015F # LATIN SMALL LETTER S WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0074, 0, 0, 0}, 0x0163 }, // U0163 # LATIN SMALL LETTER T WITH CEDILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x0020, 0, 0, 0}, 0x007e }, // asciitilde ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x0028, 0, 0, 0}, 0x007b }, // braceleft ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x0029, 0, 0, 0}, 0x007d }, // braceright ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x002c, 0, 0, 0}, 0x00ac }, // U00AC # NOT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x002d, 0x002d, 0, 0}, 0x2014 }, // U2014 # EM DASH ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x002d, 0x002e, 0, 0}, 0x2013 }, // U2013 # EN DASH ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x003a, 0, 0, 0}, 0x00f7 }, // U00F7 # DIVISION SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x0044, 0, 0, 0}, 0x0110 }, // Dstroke ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x004c, 0, 0, 0}, 0x00a3 }, // U00a3 # POUND SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002d, 0x0064, 0, 0, 0}, 0x0111 }, // dstroke ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0000, 0x0053, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0000, 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0000, 0x0073, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0000, 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0021, 0x0053, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0021, 0x0073, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0027, 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0027, 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x002e, 0, 0, 0}, 0x00b7 }, // U00B7 ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x003c, 0, 0, 0}, 0x2039 }, // U2039 ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x003e, 0, 0, 0}, 0x203a }, // U203a ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0041, 0, 0, 0}, 0x0226 }, // U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0042, 0, 0, 0}, 0x1e02 }, // U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0043, 0, 0, 0}, 0x010a }, // U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0044, 0, 0, 0}, 0x1e0a }, // U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0045, 0, 0, 0}, 0x0116 }, // U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0046, 0, 0, 0}, 0x1e1e }, // U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0047, 0, 0, 0}, 0x0120 }, // U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0048, 0, 0, 0}, 0x1e22 }, // U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0049, 0, 0, 0}, 0x0130 }, // U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x004d, 0, 0, 0}, 0x1e40 }, // U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x004e, 0, 0, 0}, 0x1e44 }, // U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x004f, 0, 0, 0}, 0x022e }, // U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0050, 0, 0, 0}, 0x1e56 }, // U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0052, 0, 0, 0}, 0x1e58 }, // U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0053, 0, 0, 0}, 0x1e60 }, // U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0054, 0, 0, 0}, 0x1e6a }, // U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0057, 0, 0, 0}, 0x1e86 }, // U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0058, 0, 0, 0}, 0x1e8a }, // U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0059, 0, 0, 0}, 0x1e8e }, // U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x005a, 0, 0, 0}, 0x017b }, // U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0061, 0, 0, 0}, 0x0227 }, // U0227 # LATIN SMALL LETTER A WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0062, 0, 0, 0}, 0x1e03 }, // U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0063, 0, 0, 0}, 0x010b }, // U010B # LATIN SMALL LETTER C WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0063, 0x0053, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0063, 0x0073, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0064, 0, 0, 0}, 0x1e0b }, // U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0065, 0, 0, 0}, 0x0117 }, // U0117 # LATIN SMALL LETTER E WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0066, 0, 0, 0}, 0x1e1f }, // U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0067, 0, 0, 0}, 0x0121 }, // U0121 # LATIN SMALL LETTER G WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0068, 0, 0, 0}, 0x1e23 }, // U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x006d, 0, 0, 0}, 0x1e41 }, // U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x006e, 0, 0, 0}, 0x1e45 }, // U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x006f, 0, 0, 0}, 0x022f }, // U022F # LATIN SMALL LETTER O WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0070, 0, 0, 0}, 0x1e57 }, // U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0072, 0, 0, 0}, 0x1e59 }, // U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0073, 0, 0, 0}, 0x1e61 }, // U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0074, 0, 0, 0}, 0x1e6b }, // U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0077, 0, 0, 0}, 0x1e87 }, // U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0078, 0, 0, 0}, 0x1e8b }, // U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0079, 0, 0, 0}, 0x1e8f }, // U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x007a, 0, 0, 0}, 0x017c }, // U017C # LATIN SMALL LETTER Z WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x00b4, 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x00b4, 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x015a, 0, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x015b, 0, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0160, 0, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0161, 0, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x017f, 0, 0, 0}, 0x1e9b }, // U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x1e62, 0, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, 0x1e63, 0, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Acute), 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Acute), 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Caron), 0x0053, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Caron), 0x0073, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0053, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0073, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x002f, 0, 0, 0}, 0x005c }, // backslash ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x003c, 0, 0, 0}, 0x005c }, // backslash ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0043, 0, 0, 0}, 0x20a1 }, // U20a1 # COLON SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0043, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0044, 0, 0, 0}, 0x0110 }, // U0110 # LATIN CAPITAL LETTER D WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0047, 0, 0, 0}, 0x01e4 }, // U01E4 # LATIN CAPITAL LETTER G WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0048, 0, 0, 0}, 0x0126 }, // U0126 # LATIN CAPITAL LETTER H WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0049, 0, 0, 0}, 0x0197 }, // U0197 # LATIN CAPITAL LETTER I WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x004c, 0, 0, 0}, 0x0141 }, // U0141 # LATIN CAPITAL LETTER L WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x004f, 0, 0, 0}, 0x00d8 }, // U00D8 # LATIN CAPITAL LETTER O WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0054, 0, 0, 0}, 0x0166 }, // U0166 # LATIN CAPITAL LETTER T WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x005a, 0, 0, 0}, 0x01b5 }, // U01B5 # LATIN CAPITAL LETTER Z WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x005e, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0062, 0, 0, 0}, 0x0180 }, // U0180 # LATIN SMALL LETTER B WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0063, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0064, 0, 0, 0}, 0x0111 }, // U0111 # LATIN SMALL LETTER D WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0067, 0, 0, 0}, 0x01e5 }, // U01E5 # LATIN SMALL LETTER G WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0068, 0, 0, 0}, 0x0127 }, // U0127 # LATIN SMALL LETTER H WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0069, 0, 0, 0}, 0x0268 }, // U0268 # LATIN SMALL LETTER I WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x006c, 0, 0, 0}, 0x0142 }, // U0142 # LATIN SMALL LETTER L WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x006d, 0, 0, 0}, 0x20a5 }, // U20a5 # MILL SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x006f, 0, 0, 0}, 0x00f8 }, // U00F8 # LATIN SMALL LETTER O WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0074, 0, 0, 0}, 0x0167 }, // U0167 # LATIN SMALL LETTER T WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x007a, 0, 0, 0}, 0x01b6 }, // U01B6 # LATIN SMALL LETTER Z WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0294, 0, 0, 0}, 0x02a1 }, // U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0413, 0, 0, 0}, 0x0492 }, // U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x041a, 0, 0, 0}, 0x049e }, // U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x0433, 0, 0, 0}, 0x0493 }, // U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x043a, 0, 0, 0}, 0x049f }, // U049F # CYRILLIC SMALL LETTER KA WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x04ae, 0, 0, 0}, 0x04b0 }, // U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x04af, 0, 0, 0}, 0x04b1 }, // U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x2190, 0, 0, 0}, 0x219a }, // U219A # LEFTWARDS ARROW WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x2192, 0, 0, 0}, 0x219b }, // U219B # RIGHTWARDS ARROW WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x002f, 0x2194, 0, 0, 0}, 0x21ae }, // U21AE # LEFT RIGHT ARROW WITH STROKE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0031, 0x0032, 0, 0, 0}, 0x00bd }, // U00BD # VULGAR FRACTION ONE HALF ++ { {UNITIZE(Qt::Key_Multi_key), 0x0031, 0x0034, 0, 0, 0}, 0x00bc }, // U00BC # VULGAR FRACTION ONE QUARTER ++ { {UNITIZE(Qt::Key_Multi_key), 0x0033, 0x0034, 0, 0, 0}, 0x00be }, // U00BE # VULGAR FRACTION THREE QUARTERS ++ { {UNITIZE(Qt::Key_Multi_key), 0x003a, 0x002d, 0, 0, 0}, 0x00f7 }, // U00F7 # DIVISION SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0041, 0, 0, 0}, 0x0104 }, // U0104 # LATIN CAPITAL LETTER A WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0045, 0, 0, 0}, 0x0118 }, // U0118 # LATIN CAPITAL LETTER E WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0049, 0, 0, 0}, 0x012e }, // U012E # LATIN CAPITAL LETTER I WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x004f, 0, 0, 0}, 0x01ea }, // U01EA # LATIN CAPITAL LETTER O WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0055, 0, 0, 0}, 0x0172 }, // U0172 # LATIN CAPITAL LETTER U WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0061, 0, 0, 0}, 0x0105 }, // U0105 # LATIN SMALL LETTER A WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0065, 0, 0, 0}, 0x0119 }, // U0119 # LATIN SMALL LETTER E WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0069, 0, 0, 0}, 0x012f }, // U012F # LATIN SMALL LETTER I WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x006f, 0, 0, 0}, 0x01eb }, // U01EB # LATIN SMALL LETTER O WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003b, 0x0075, 0, 0, 0}, 0x0173 }, // U0173 # LATIN SMALL LETTER U WITH OGONEK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x0022, 0, 0, 0}, 0x201c }, // U201c # LEFT DOUBLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x0027, 0, 0, 0}, 0x2018 }, // U2018 # LEFT SINGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x002f, 0, 0, 0}, 0x005c }, // backslash ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x003c, 0, 0, 0}, 0x00ab }, // guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x0338, 0, 0, 0}, 0x226e }, // U226E # NOT LESS-THAN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003c, 0x0338, 0, 0, 0}, 0x226e }, // U226E # NOT LESS-THAN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0043, 0, 0, 0}, 0x20ac }, // EuroSign # EURO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0045, 0, 0, 0}, 0x20ac }, // EuroSign # EURO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x004c, 0, 0, 0}, 0x20a4 }, // U20a4 # LIRA SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x004e, 0, 0, 0}, 0x20a6 }, // U20a6 # NAIRA SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x004f, 0, 0, 0}, 0x0150 }, // U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0055, 0, 0, 0}, 0x0170 }, // U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0057, 0, 0, 0}, 0x20a9 }, // U20a9 # WON SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0059, 0, 0, 0}, 0x00a5 }, // yen ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x006f, 0, 0, 0}, 0x0151 }, // U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0075, 0, 0, 0}, 0x0171 }, // U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0338, 0, 0, 0}, 0x2260 }, // U2260 # NOT EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0423, 0, 0, 0}, 0x04f2 }, // U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003d, 0x0443, 0, 0, 0}, 0x04f3 }, // U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x0020, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x0022, 0, 0, 0}, 0x201d }, // U201d # RIGHT DOUBLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x0027, 0, 0, 0}, 0x2019 }, // U2019 # RIGHT SINGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x003e, 0, 0, 0}, 0x00bb }, // guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x0338, 0, 0, 0}, 0x226f }, // U226F # NOT GREATER-THAN ++ { {UNITIZE(Qt::Key_Multi_key), 0x003e, 0x0338, 0, 0, 0}, 0x226f }, // U226F # NOT GREATER-THAN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0000, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0000, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0000, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0000, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x002b, 0x004f, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x002b, 0x0055, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x002b, 0x006f, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x002b, 0x0075, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x003f, 0, 0, 0}, 0x00bf }, // questiondown ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0041, 0, 0, 0}, 0x1ea2 }, // U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0045, 0, 0, 0}, 0x1eba }, // U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0049, 0, 0, 0}, 0x1ec8 }, // U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x004f, 0, 0, 0}, 0x1ece }, // U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0055, 0, 0, 0}, 0x1ee6 }, // U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0055, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0055, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0059, 0, 0, 0}, 0x1ef6 }, // U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x0041, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x0045, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x004f, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x0061, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x0065, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x005e, 0x006f, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0061, 0, 0, 0}, 0x1ea3 }, // U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0062, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0062, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0065, 0, 0, 0}, 0x1ebb }, // U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0069, 0, 0, 0}, 0x1ec9 }, // U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x006f, 0, 0, 0}, 0x1ecf }, // U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0075, 0, 0, 0}, 0x1ee7 }, // U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0079, 0, 0, 0}, 0x1ef7 }, // U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00c2, 0, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00ca, 0, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00d4, 0, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00e2, 0, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00ea, 0, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x00f4, 0, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0102, 0, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, 0x0103, 0, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x003f, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0041, 0x0045, 0, 0, 0}, 0x00c6 }, // AE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0041, 0x0054, 0, 0, 0}, 0x0040 }, // at ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x002f, 0, 0, 0}, 0x20a1 }, // U20a1 # COLON SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x002f, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x003d, 0, 0, 0}, 0x20ac }, // EuroSign # EURO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x0045, 0, 0, 0}, 0x20a0 }, // U20a0 # EURO-CURRENCY SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x0072, 0, 0, 0}, 0x20a2 }, // U20a2 # CRUZEIRO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0043, 0x007c, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0044, 0x0048, 0, 0, 0}, 0x00d0 }, // U00D0 # LATIN CAPITAL LETTER ETH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0045, 0x003d, 0, 0, 0}, 0x20ac }, // EuroSign # EURO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0046, 0x0072, 0, 0, 0}, 0x20a3 }, // U20a3 # FRENCH FRANC SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x004c, 0x002d, 0, 0, 0}, 0x00a3 }, // U00a3 # POUND SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x004c, 0x003d, 0, 0, 0}, 0x20a4 }, // U20a4 # LIRA SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x004c, 0x0056, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x004e, 0x003d, 0, 0, 0}, 0x20a6 }, // U20a6 # NAIRA SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x004e, 0x0047, 0, 0, 0}, 0x014a }, // U014A # LATIN CAPITAL LETTER ENG ++ { {UNITIZE(Qt::Key_Multi_key), 0x004f, 0x0043, 0, 0, 0}, 0x00a9 }, // copyright ++ { {UNITIZE(Qt::Key_Multi_key), 0x004f, 0x0045, 0, 0, 0}, 0x0152 }, // OE ++ { {UNITIZE(Qt::Key_Multi_key), 0x004f, 0x0052, 0, 0, 0}, 0x00ae }, // registered ++ { {UNITIZE(Qt::Key_Multi_key), 0x004f, 0x0063, 0, 0, 0}, 0x00a9 }, // copyright ++ { {UNITIZE(Qt::Key_Multi_key), 0x004f, 0x0072, 0, 0, 0}, 0x00ae }, // registered ++ { {UNITIZE(Qt::Key_Multi_key), 0x0050, 0x0021, 0, 0, 0}, 0x00b6 }, // paragraph ++ { {UNITIZE(Qt::Key_Multi_key), 0x0050, 0x0050, 0, 0, 0}, 0x00b6 }, // paragraph # PILCROW SIGN (PARAGRAPH SIGN) ++ { {UNITIZE(Qt::Key_Multi_key), 0x0050, 0x0074, 0, 0, 0}, 0x20a7 }, // U20a7 # PESETA SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0052, 0x0073, 0, 0, 0}, 0x20a8 }, // U20a8 # RUPEE SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0054, 0x0048, 0, 0, 0}, 0x00de }, // U00DE # LATIN CAPITAL LETTER THORN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0000, 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0000, 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0021, 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0021, 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x002c, 0x0045, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x002c, 0x0065, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0, 0}, 0x0102 }, // U0102 # LATIN CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0045, 0, 0, 0}, 0x0114 }, // U0114 # LATIN CAPITAL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0047, 0, 0, 0}, 0x011e }, // U011E # LATIN CAPITAL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0049, 0, 0, 0}, 0x012c }, // U012C # LATIN CAPITAL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x004f, 0, 0, 0}, 0x014e }, // U014E # LATIN CAPITAL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0055, 0, 0, 0}, 0x016c }, // U016C # LATIN CAPITAL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0, 0}, 0x0103 }, // U0103 # LATIN SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0065, 0, 0, 0}, 0x0115 }, // U0115 # LATIN SMALL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0067, 0, 0, 0}, 0x011f }, // U011F # LATIN SMALL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0069, 0, 0, 0}, 0x012d }, // U012D # LATIN SMALL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x006f, 0, 0, 0}, 0x014f }, // U014F # LATIN SMALL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0075, 0, 0, 0}, 0x016d }, // U016D # LATIN SMALL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0228, 0, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0229, 0, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0391, 0, 0, 0}, 0x1fb8 }, // U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0399, 0, 0, 0}, 0x1fd8 }, // U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x03a5, 0, 0, 0}, 0x1fe8 }, // U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x03b1, 0, 0, 0}, 0x1fb0 }, // U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x03b9, 0, 0, 0}, 0x1fd0 }, // U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x03c5, 0, 0, 0}, 0x1fe0 }, // U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0410, 0, 0, 0}, 0x04d0 }, // U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0415, 0, 0, 0}, 0x04d6 }, // U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0416, 0, 0, 0}, 0x04c1 }, // U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0418, 0, 0, 0}, 0x0419 }, // U0419 # CYRILLIC CAPITAL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0423, 0, 0, 0}, 0x040e }, // U040E # CYRILLIC CAPITAL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0430, 0, 0, 0}, 0x04d1 }, // U04D1 # CYRILLIC SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0435, 0, 0, 0}, 0x04d7 }, // U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0436, 0, 0, 0}, 0x04c2 }, // U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0438, 0, 0, 0}, 0x0439 }, // U0439 # CYRILLIC SMALL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0443, 0, 0, 0}, 0x045e }, // U045E # CYRILLIC SMALL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x1ea0, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, 0x1ea1, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, UNITIZE(Qt::Key_Dead_Cedilla), 0x0045, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, UNITIZE(Qt::Key_Dead_Cedilla), 0x0065, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0055, UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0056, 0x004c, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x0057, 0x003d, 0, 0, 0}, 0x20a9 }, // U20a9 # WON SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0059, 0x003d, 0, 0, 0}, 0x00a5 }, // yen ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2076 }, // U2076 # SUPERSCRIPT SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2070 }, // U2070 # SUPERSCRIPT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x00b9 }, // U00B9 # SUPERSCRIPT ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2078 }, // U2078 # SUPERSCRIPT EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2074 }, // U2074 # SUPERSCRIPT FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x00b3 }, // U00B3 # SUPERSCRIPT THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2077 }, // U2077 # SUPERSCRIPT SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x207c }, // U207C # SUPERSCRIPT EQUALS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x207a }, // U207A # SUPERSCRIPT PLUS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2079 }, // U2079 # SUPERSCRIPT NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0, 0, 0}, 0x2075 }, // U2075 # SUPERSCRIPT FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x0041, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x0045, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x004f, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x0061, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x0065, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0000, 0x006f, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0020, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x0041, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x0045, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x004f, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x0061, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x0065, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0021, 0x006f, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0028, 0, 0, 0}, 0x207d }, // U207D # SUPERSCRIPT LEFT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0029, 0, 0, 0}, 0x207e }, // U207E # SUPERSCRIPT RIGHT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x002b, 0, 0, 0}, 0x207a }, // U207A # SUPERSCRIPT PLUS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x002f, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0030, 0, 0, 0}, 0x2070 }, // U2070 # SUPERSCRIPT ZERO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0031, 0, 0, 0}, 0x00b9 }, // U00B9 # SUPERSCRIPT ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0032, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0033, 0, 0, 0}, 0x00b3 }, // U00B3 # SUPERSCRIPT THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0034, 0, 0, 0}, 0x2074 }, // U2074 # SUPERSCRIPT FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0035, 0, 0, 0}, 0x2075 }, // U2075 # SUPERSCRIPT FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0036, 0, 0, 0}, 0x2076 }, // U2076 # SUPERSCRIPT SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0037, 0, 0, 0}, 0x2077 }, // U2077 # SUPERSCRIPT SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0038, 0, 0, 0}, 0x2078 }, // U2078 # SUPERSCRIPT EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0039, 0, 0, 0}, 0x2079 }, // U2079 # SUPERSCRIPT NINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x003d, 0, 0, 0}, 0x207c }, // U207C # SUPERSCRIPT EQUALS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0, 0}, 0x00c2 }, // U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0043, 0, 0, 0}, 0x0108 }, // U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0, 0}, 0x00ca }, // U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0047, 0, 0, 0}, 0x011c }, // U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0048, 0, 0, 0}, 0x0124 }, // U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0049, 0, 0, 0}, 0x00ce }, // U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004a, 0, 0, 0}, 0x0134 }, // U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0, 0}, 0x00d4 }, // U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0053, 0, 0, 0}, 0x015c }, // U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0053, 0x004d, 0, 0}, 0x2120 }, // U2120 # SERVICE MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0054, 0x004d, 0, 0}, 0x2122 }, // U2122 # TRADE MARK SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0055, 0, 0, 0}, 0x00db }, // U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0057, 0, 0, 0}, 0x0174 }, // U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0059, 0, 0, 0}, 0x0176 }, // U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005a, 0, 0, 0}, 0x1e90 }, // U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0061, 0, 0}, 0x00aa }, // U00AA # FEMININE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0061, 0, 0}, 0x00aa }, // U00AA # FEMININE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0068, 0, 0}, 0x02b0 }, // U02B0 # MODIFIER LETTER SMALL H ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0068, 0, 0}, 0x02b0 }, // U02B0 # MODIFIER LETTER SMALL H ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0069, 0, 0}, 0x2071 }, // U2071 # SUPERSCRIPT LATIN SMALL LETTER I ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0069, 0, 0}, 0x2071 }, // U2071 # SUPERSCRIPT LATIN SMALL LETTER I ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006a, 0, 0}, 0x02b2 }, // U02B2 # MODIFIER LETTER SMALL J ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006a, 0, 0}, 0x02b2 }, // U02B2 # MODIFIER LETTER SMALL J ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006c, 0, 0}, 0x02e1 }, // U02E1 # MODIFIER LETTER SMALL L ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006c, 0, 0}, 0x02e1 }, // U02E1 # MODIFIER LETTER SMALL L ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006e, 0, 0}, 0x207f }, // U207F # SUPERSCRIPT LATIN SMALL LETTER N ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006e, 0, 0}, 0x207f }, // U207F # SUPERSCRIPT LATIN SMALL LETTER N ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006f, 0, 0}, 0x00ba }, // U00BA # MASCULINE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x006f, 0, 0}, 0x00ba }, // U00BA # MASCULINE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0072, 0, 0}, 0x02b3 }, // U02B3 # MODIFIER LETTER SMALL R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0072, 0, 0}, 0x02b3 }, // U02B3 # MODIFIER LETTER SMALL R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0073, 0, 0}, 0x02e2 }, // U02E2 # MODIFIER LETTER SMALL S ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0073, 0, 0}, 0x02e2 }, // U02E2 # MODIFIER LETTER SMALL S ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0077, 0, 0}, 0x02b7 }, // U02B7 # MODIFIER LETTER SMALL W ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0077, 0, 0}, 0x02b7 }, // U02B7 # MODIFIER LETTER SMALL W ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0078, 0, 0}, 0x02e3 }, // U02E3 # MODIFIER LETTER SMALL X ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0078, 0, 0}, 0x02e3 }, // U02E3 # MODIFIER LETTER SMALL X ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0079, 0, 0}, 0x02b8 }, // U02B8 # MODIFIER LETTER SMALL Y ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0079, 0, 0}, 0x02b8 }, // U02B8 # MODIFIER LETTER SMALL Y ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0263, 0, 0}, 0x02e0 }, // U02E0 # MODIFIER LETTER SMALL GAMMA ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0263, 0, 0}, 0x02e0 }, // U02E0 # MODIFIER LETTER SMALL GAMMA ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0266, 0, 0}, 0x02b1 }, // U02B1 # MODIFIER LETTER SMALL H WITH HOOK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0266, 0, 0}, 0x02b1 }, // U02B1 # MODIFIER LETTER SMALL H WITH HOOK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0279, 0, 0}, 0x02b4 }, // U02B4 # MODIFIER LETTER SMALL TURNED R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0279, 0, 0}, 0x02b4 }, // U02B4 # MODIFIER LETTER SMALL TURNED R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x027b, 0, 0}, 0x02b5 }, // U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x027b, 0, 0}, 0x02b5 }, // U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0281, 0, 0}, 0x02b6 }, // U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0281, 0, 0}, 0x02b6 }, // U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0295, 0, 0}, 0x02e4 }, // U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x005f, 0x0295, 0, 0}, 0x02e4 }, // U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0, 0}, 0x00e2 }, // U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0063, 0, 0, 0}, 0x0109 }, // U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0, 0}, 0x00ea }, // U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0067, 0, 0, 0}, 0x011d }, // U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0068, 0, 0, 0}, 0x0125 }, // U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0069, 0, 0, 0}, 0x00ee }, // U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006a, 0, 0, 0}, 0x0135 }, // U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0, 0}, 0x00f4 }, // U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0073, 0, 0, 0}, 0x015d }, // U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0075, 0, 0, 0}, 0x00fb }, // U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0077, 0, 0, 0}, 0x0175 }, // U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0079, 0, 0, 0}, 0x0177 }, // U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x007a, 0, 0, 0}, 0x1e91 }, // U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1ea0, 0, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1ea1, 0, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1eb8, 0, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1eb9, 0, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1ecc, 0, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x1ecd, 0, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x2212, 0, 0, 0}, 0x207b }, // U207B # SUPERSCRIPT MINUS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e00, 0, 0, 0}, 0x3192 }, // U3192 # IDEOGRAPHIC ANNOTATION ONE MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e01, 0, 0, 0}, 0x319c }, // U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e09, 0, 0, 0}, 0x3194 }, // U3194 # IDEOGRAPHIC ANNOTATION THREE MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e0a, 0, 0, 0}, 0x3196 }, // U3196 # IDEOGRAPHIC ANNOTATION TOP MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e0b, 0, 0, 0}, 0x3198 }, // U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e19, 0, 0, 0}, 0x319b }, // U319B # IDEOGRAPHIC ANNOTATION THIRD MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e2d, 0, 0, 0}, 0x3197 }, // U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e59, 0, 0, 0}, 0x319a }, // U319A # IDEOGRAPHIC ANNOTATION SECOND MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4e8c, 0, 0, 0}, 0x3193 }, // U3193 # IDEOGRAPHIC ANNOTATION TWO MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x4eba, 0, 0, 0}, 0x319f }, // U319F # IDEOGRAPHIC ANNOTATION MAN MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x56db, 0, 0, 0}, 0x3195 }, // U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x5730, 0, 0, 0}, 0x319e }, // U319E # IDEOGRAPHIC ANNOTATION EARTH MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x5929, 0, 0, 0}, 0x319d }, // U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, 0x7532, 0, 0, 0}, 0x3199 }, // U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0045, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x004f, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x0065, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x005e, UNITIZE(Qt::Key_Dead_Belowdot), 0x006f, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2085 }, // U2085 # SUBSCRIPT FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2087 }, // U2087 # SUBSCRIPT SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2085 }, // U2085 # SUBSCRIPT FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2084 }, // U2084 # SUBSCRIPT FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2084 }, // U2084 # SUBSCRIPT FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2086 }, // U2086 # SUBSCRIPT SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2081 }, // U2081 # SUBSCRIPT ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x208a }, // U208A # SUBSCRIPT PLUS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2088 }, // U2088 # SUBSCRIPT EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2087 }, // U2087 # SUBSCRIPT SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x208a }, // U208A # SUBSCRIPT PLUS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2080 }, // U2080 # SUBSCRIPT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2083 }, // U2083 # SUBSCRIPT THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2083 }, // U2083 # SUBSCRIPT THREE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2086 }, // U2086 # SUBSCRIPT SIX ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2088 }, // U2088 # SUBSCRIPT EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2089 }, // U2089 # SUBSCRIPT NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2089 }, // U2089 # SUBSCRIPT NINE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2080 }, // U2080 # SUBSCRIPT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2081 }, // U2081 # SUBSCRIPT ONE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x208c }, // U208C # SUBSCRIPT EQUALS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0, 0, 0}, 0x208c }, // U208C # SUBSCRIPT EQUALS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0000, 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0021, 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0021, 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0021, 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0021, 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x0041, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x004f, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x0055, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x0061, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x006f, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0022, 0x0075, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0028, 0, 0, 0}, 0x208d }, // U208D # SUBSCRIPT LEFT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0028, 0, 0, 0}, 0x208d }, // U208D # SUBSCRIPT LEFT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0029, 0, 0, 0}, 0x208e }, // U208E # SUBSCRIPT RIGHT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0029, 0, 0, 0}, 0x208e }, // U208E # SUBSCRIPT RIGHT PARENTHESIS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002b, 0, 0, 0}, 0x208a }, // U208A # SUBSCRIPT PLUS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002b, 0, 0, 0}, 0x208a }, // U208A # SUBSCRIPT PLUS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002e, 0x0041, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002e, 0x004f, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002e, 0x0061, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x002e, 0x006f, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0030, 0, 0, 0}, 0x2080 }, // U2080 # SUBSCRIPT ZERO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0030, 0, 0, 0}, 0x2080 }, // U2080 # SUBSCRIPT ZERO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0031, 0, 0, 0}, 0x2081 }, // U2081 # SUBSCRIPT ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0031, 0, 0, 0}, 0x2081 }, // U2081 # SUBSCRIPT ONE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0032, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0032, 0, 0, 0}, 0x2082 }, // U2082 # SUBSCRIPT TWO ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0033, 0, 0, 0}, 0x2083 }, // U2083 # SUBSCRIPT THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0033, 0, 0, 0}, 0x2083 }, // U2083 # SUBSCRIPT THREE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0034, 0, 0, 0}, 0x2084 }, // U2084 # SUBSCRIPT FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0034, 0, 0, 0}, 0x2084 }, // U2084 # SUBSCRIPT FOUR ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0035, 0, 0, 0}, 0x2085 }, // U2085 # SUBSCRIPT FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0035, 0, 0, 0}, 0x2085 }, // U2085 # SUBSCRIPT FIVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0036, 0, 0, 0}, 0x2086 }, // U2086 # SUBSCRIPT SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0036, 0, 0, 0}, 0x2086 }, // U2086 # SUBSCRIPT SIX ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0037, 0, 0, 0}, 0x2087 }, // U2087 # SUBSCRIPT SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0037, 0, 0, 0}, 0x2087 }, // U2087 # SUBSCRIPT SEVEN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0038, 0, 0, 0}, 0x2088 }, // U2088 # SUBSCRIPT EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0038, 0, 0, 0}, 0x2088 }, // U2088 # SUBSCRIPT EIGHT ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0039, 0, 0, 0}, 0x2089 }, // U2089 # SUBSCRIPT NINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0039, 0, 0, 0}, 0x2089 }, // U2089 # SUBSCRIPT NINE ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x003b, 0x004f, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x003b, 0x006f, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x003d, 0, 0, 0}, 0x208c }, // U208C # SUBSCRIPT EQUALS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x003d, 0, 0, 0}, 0x208c }, // U208C # SUBSCRIPT EQUALS SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0041, 0, 0, 0}, 0x0100 }, // U0100 # LATIN CAPITAL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0045, 0, 0, 0}, 0x0112 }, // U0112 # LATIN CAPITAL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0047, 0, 0, 0}, 0x1e20 }, // U1E20 # LATIN CAPITAL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0049, 0, 0, 0}, 0x012a }, // U012A # LATIN CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x004f, 0, 0, 0}, 0x014c }, // U014C # LATIN CAPITAL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0055, 0, 0, 0}, 0x016a }, // U016A # LATIN CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0059, 0, 0, 0}, 0x0232 }, // U0232 # LATIN CAPITAL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0061, 0, 0, 0}, 0x0101 }, // U0101 # LATIN SMALL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0065, 0, 0, 0}, 0x0113 }, // U0113 # LATIN SMALL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0067, 0, 0, 0}, 0x1e21 }, // U1E21 # LATIN SMALL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0069, 0, 0, 0}, 0x012b }, // U012B # LATIN SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0, 0}, 0x014d }, // U014D # LATIN SMALL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0075, 0, 0, 0}, 0x016b }, // U016B # LATIN SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0079, 0, 0, 0}, 0x0233 }, // U0233 # LATIN SMALL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x007e, 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x007e, 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00c4, 0, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00c6, 0, 0, 0}, 0x01e2 }, // U01E2 # LATIN CAPITAL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00d5, 0, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00d6, 0, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00dc, 0, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00e4, 0, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00e6, 0, 0, 0}, 0x01e3 }, // U01E3 # LATIN SMALL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00f5, 0, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00f6, 0, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x00fc, 0, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x01ea, 0, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x01eb, 0, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0226, 0, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0227, 0, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x022e, 0, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x022f, 0, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0391, 0, 0, 0}, 0x1fb9 }, // U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0399, 0, 0, 0}, 0x1fd9 }, // U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x03a5, 0, 0, 0}, 0x1fe9 }, // U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x03b1, 0, 0, 0}, 0x1fb1 }, // U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x03b9, 0, 0, 0}, 0x1fd1 }, // U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x03c5, 0, 0, 0}, 0x1fe1 }, // U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0418, 0, 0, 0}, 0x04e2 }, // U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0423, 0, 0, 0}, 0x04ee }, // U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0438, 0, 0, 0}, 0x04e3 }, // U04E3 # CYRILLIC SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0443, 0, 0, 0}, 0x04ef }, // U04EF # CYRILLIC SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x1e36, 0, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x1e37, 0, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x1e5a, 0, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x1e5b, 0, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x2212, 0, 0, 0}, 0x208b }, // U208B # SUBSCRIPT MINUS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, 0x2212, 0, 0, 0}, 0x208b }, // U208B # SUBSCRIPT MINUS ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Abovedot), 0x0041, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Abovedot), 0x004f, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Abovedot), 0x0061, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Abovedot), 0x006f, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0041, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x004f, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0061, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x006f, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Ogonek), 0x004f, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Ogonek), 0x006f, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Belowdot), 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Belowdot), 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Belowdot), 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x005f, UNITIZE(Qt::Key_Dead_Belowdot), 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0000, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0000, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0000, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0000, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0020, 0, 0, 0}, 0x0060 }, // grave ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0022, 0x0055, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0022, 0x0075, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0022, 0x03b9, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0022, 0x03c5, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0391, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0395, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0397, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0399, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x039f, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03a5, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03a9, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b1, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b5, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b7, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b9, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03bf, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03c5, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03c9, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0391, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0395, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0397, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0399, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x039f, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03a9, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b1, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b5, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b7, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b9, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03bf, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03c5, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03c9, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x002b, 0x004f, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x002b, 0x0055, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x002b, 0x006f, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x002b, 0x0075, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0041, 0, 0, 0}, 0x00c0 }, // U00C0 # LATIN CAPITAL LETTER A WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0045, 0, 0, 0}, 0x00c8 }, // U00C8 # LATIN CAPITAL LETTER E WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0049, 0, 0, 0}, 0x00cc }, // U00CC # LATIN CAPITAL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x004e, 0, 0, 0}, 0x01f8 }, // U01F8 # LATIN CAPITAL LETTER N WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x004f, 0, 0, 0}, 0x00d2 }, // U00D2 # LATIN CAPITAL LETTER O WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0055, 0, 0, 0}, 0x00d9 }, // U00D9 # LATIN CAPITAL LETTER U WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0055, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0055, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0057, 0, 0, 0}, 0x1e80 }, // U1E80 # LATIN CAPITAL LETTER W WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0059, 0, 0, 0}, 0x1ef2 }, // U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x0041, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x0045, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x004f, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x0061, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x0065, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005e, 0x006f, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005f, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005f, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005f, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x005f, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0061, 0, 0, 0}, 0x00e0 }, // U00E0 # LATIN SMALL LETTER A WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0062, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0062, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0065, 0, 0, 0}, 0x00e8 }, // U00E8 # LATIN SMALL LETTER E WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0069, 0, 0, 0}, 0x00ec }, // U00EC # LATIN SMALL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x006e, 0, 0, 0}, 0x01f9 }, // U01F9 # LATIN SMALL LETTER N WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x006f, 0, 0, 0}, 0x00f2 }, // U00F2 # LATIN SMALL LETTER O WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0075, 0, 0, 0}, 0x00f9 }, // U00F9 # LATIN SMALL LETTER U WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0077, 0, 0, 0}, 0x1e81 }, // U1E81 # LATIN SMALL LETTER W WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0079, 0, 0, 0}, 0x1ef3 }, // U1EF3 # LATIN SMALL LETTER Y WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00af, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00af, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00af, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00af, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00c2, 0, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00ca, 0, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00d4, 0, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00dc, 0, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00e2, 0, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00ea, 0, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00f4, 0, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x00fc, 0, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0102, 0, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0103, 0, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0112, 0, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0113, 0, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x014c, 0, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x014d, 0, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0391, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0395, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0397, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0399, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x039f, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03a9, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b1, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b5, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b7, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b9, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03bf, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03c5, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03c9, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0391, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0395, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0397, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0399, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x039f, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03a5, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03a9, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b1, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b5, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b7, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b9, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03bf, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03c5, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03c9, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0391, 0, 0, 0}, 0x1fba }, // U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0395, 0, 0, 0}, 0x1fc8 }, // U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0397, 0, 0, 0}, 0x1fca }, // U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0399, 0, 0, 0}, 0x1fda }, // U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x039f, 0, 0, 0}, 0x1ff8 }, // U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03a5, 0, 0, 0}, 0x1fea }, // U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03a9, 0, 0, 0}, 0x1ffa }, // U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b1, 0, 0, 0}, 0x1f70 }, // U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b5, 0, 0, 0}, 0x1f72 }, // U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b7, 0, 0, 0}, 0x1f74 }, // U1F74 # GREEK SMALL LETTER ETA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b9, 0, 0, 0}, 0x1f76 }, // U1F76 # GREEK SMALL LETTER IOTA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03bf, 0, 0, 0}, 0x1f78 }, // U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03c5, 0, 0, 0}, 0x1f7a }, // U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03c9, 0, 0, 0}, 0x1f7c }, // U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03ca, 0, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03cb, 0, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0415, 0, 0, 0}, 0x0400 }, // U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0418, 0, 0, 0}, 0x040d }, // U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0435, 0, 0, 0}, 0x0450 }, // U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0438, 0, 0, 0}, 0x045d }, // U045D # CYRILLIC SMALL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f00, 0, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f01, 0, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f08, 0, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f09, 0, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f10, 0, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f11, 0, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f18, 0, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f19, 0, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f20, 0, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f21, 0, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f28, 0, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f29, 0, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f30, 0, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f31, 0, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f38, 0, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f39, 0, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f40, 0, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f41, 0, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f48, 0, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f49, 0, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f50, 0, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f51, 0, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f59, 0, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f60, 0, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f61, 0, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f68, 0, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f69, 0, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0060, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0061, 0x0065, 0, 0, 0}, 0x00e6 }, // ae ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0000, 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0000, 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0021, 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0021, 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x002c, 0x0045, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x002c, 0x0065, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0, 0}, 0x0102 }, // U0102 # LATIN CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0045, 0, 0, 0}, 0x0114 }, // U0114 # LATIN CAPITAL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0047, 0, 0, 0}, 0x011e }, // U011E # LATIN CAPITAL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0049, 0, 0, 0}, 0x012c }, // U012C # LATIN CAPITAL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x004f, 0, 0, 0}, 0x014e }, // U014E # LATIN CAPITAL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0055, 0, 0, 0}, 0x016c }, // U016C # LATIN CAPITAL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0, 0}, 0x0103 }, // U0103 # LATIN SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0065, 0, 0, 0}, 0x0115 }, // U0115 # LATIN SMALL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0067, 0, 0, 0}, 0x011f }, // U011F # LATIN SMALL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0069, 0, 0, 0}, 0x012d }, // U012D # LATIN SMALL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x006f, 0, 0, 0}, 0x014f }, // U014F # LATIN SMALL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0075, 0, 0, 0}, 0x016d }, // U016D # LATIN SMALL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0228, 0, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0229, 0, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0391, 0, 0, 0}, 0x1fb8 }, // U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0399, 0, 0, 0}, 0x1fd8 }, // U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x03a5, 0, 0, 0}, 0x1fe8 }, // U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x03b1, 0, 0, 0}, 0x1fb0 }, // U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x03b9, 0, 0, 0}, 0x1fd0 }, // U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x03c5, 0, 0, 0}, 0x1fe0 }, // U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0410, 0, 0, 0}, 0x04d0 }, // U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0415, 0, 0, 0}, 0x04d6 }, // U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0416, 0, 0, 0}, 0x04c1 }, // U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0418, 0, 0, 0}, 0x0419 }, // U0419 # CYRILLIC CAPITAL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0423, 0, 0, 0}, 0x040e }, // U040E # CYRILLIC CAPITAL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0430, 0, 0, 0}, 0x04d1 }, // U04D1 # CYRILLIC SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0435, 0, 0, 0}, 0x04d7 }, // U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0436, 0, 0, 0}, 0x04c2 }, // U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0438, 0, 0, 0}, 0x0439 }, // U0439 # CYRILLIC SMALL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0443, 0, 0, 0}, 0x045e }, // U045E # CYRILLIC SMALL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x1ea0, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, 0x1ea1, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, UNITIZE(Qt::Key_Dead_Cedilla), 0x0045, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, UNITIZE(Qt::Key_Dead_Cedilla), 0x0065, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0062, UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0022, 0x0055, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0022, 0x0075, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x002f, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0041, 0, 0, 0}, 0x01cd }, // U01CD # LATIN CAPITAL LETTER A WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0043, 0, 0, 0}, 0x010c }, // U010C # LATIN CAPITAL LETTER C WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0044, 0, 0, 0}, 0x010e }, // U010E # LATIN CAPITAL LETTER D WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0045, 0, 0, 0}, 0x011a }, // U011A # LATIN CAPITAL LETTER E WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0047, 0, 0, 0}, 0x01e6 }, // U01E6 # LATIN CAPITAL LETTER G WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0048, 0, 0, 0}, 0x021e }, // U021E # LATIN CAPITAL LETTER H WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0049, 0, 0, 0}, 0x01cf }, // U01CF # LATIN CAPITAL LETTER I WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x004b, 0, 0, 0}, 0x01e8 }, // U01E8 # LATIN CAPITAL LETTER K WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x004c, 0, 0, 0}, 0x013d }, // U013D # LATIN CAPITAL LETTER L WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x004e, 0, 0, 0}, 0x0147 }, // U0147 # LATIN CAPITAL LETTER N WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x004f, 0, 0, 0}, 0x01d1 }, // U01D1 # LATIN CAPITAL LETTER O WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0052, 0, 0, 0}, 0x0158 }, // U0158 # LATIN CAPITAL LETTER R WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0053, 0, 0, 0}, 0x0160 }, // U0160 # LATIN CAPITAL LETTER S WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0054, 0, 0, 0}, 0x0164 }, // U0164 # LATIN CAPITAL LETTER T WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0055, 0, 0, 0}, 0x01d3 }, // U01D3 # LATIN CAPITAL LETTER U WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x005a, 0, 0, 0}, 0x017d }, // U017D # LATIN CAPITAL LETTER Z WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0061, 0, 0, 0}, 0x01ce }, // U01CE # LATIN SMALL LETTER A WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0063, 0, 0, 0}, 0x010d }, // U010D # LATIN SMALL LETTER C WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0064, 0, 0, 0}, 0x010f }, // U010F # LATIN SMALL LETTER D WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0065, 0, 0, 0}, 0x011b }, // U011B # LATIN SMALL LETTER E WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0067, 0, 0, 0}, 0x01e7 }, // U01E7 # LATIN SMALL LETTER G WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0068, 0, 0, 0}, 0x021f }, // U021F # LATIN SMALL LETTER H WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0069, 0, 0, 0}, 0x01d0 }, // U01D0 # LATIN SMALL LETTER I WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x006a, 0, 0, 0}, 0x01f0 }, // U01F0 # LATIN SMALL LETTER J WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x006b, 0, 0, 0}, 0x01e9 }, // U01E9 # LATIN SMALL LETTER K WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x006c, 0, 0, 0}, 0x013e }, // U013E # LATIN SMALL LETTER L WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x006e, 0, 0, 0}, 0x0148 }, // U0148 # LATIN SMALL LETTER N WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x006f, 0, 0, 0}, 0x01d2 }, // U01D2 # LATIN SMALL LETTER O WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0072, 0, 0, 0}, 0x0159 }, // U0159 # LATIN SMALL LETTER R WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0073, 0, 0, 0}, 0x0161 }, // U0161 # LATIN SMALL LETTER S WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0074, 0, 0, 0}, 0x0165 }, // U0165 # LATIN SMALL LETTER T WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0075, 0, 0, 0}, 0x01d4 }, // U01D4 # LATIN SMALL LETTER U WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x007a, 0, 0, 0}, 0x017e }, // U017E # LATIN SMALL LETTER Z WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x007c, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x00dc, 0, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x00fc, 0, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x01b7, 0, 0, 0}, 0x01ee }, // U01EE # LATIN CAPITAL LETTER EZH WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0292, 0, 0, 0}, 0x01ef }, // U01EF # LATIN SMALL LETTER EZH WITH CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0063, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Multi_key), 0x0064, 0x002d, 0, 0, 0}, 0x20ab }, // U20ab # DONG SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0064, 0x0068, 0, 0, 0}, 0x00f0 }, // U00F0 # LATIN SMALL LETTER ETH ++ { {UNITIZE(Qt::Key_Multi_key), 0x0065, 0x0065, 0, 0, 0}, 0x0259 }, // U0259 # LATIN SMALL LETTER SCHWA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0066, 0x0053, 0, 0, 0}, 0x017f }, // U017f # LONG S ++ { {UNITIZE(Qt::Key_Multi_key), 0x0066, 0x0073, 0, 0, 0}, 0x017f }, // U017f # LONG S ++ { {UNITIZE(Qt::Key_Multi_key), 0x0069, 0x002e, 0, 0, 0}, 0x0131 }, // U0131 # LATIN SMALL LETTER DOTLESS I ++ { {UNITIZE(Qt::Key_Multi_key), 0x006b, 0x006b, 0, 0, 0}, 0x0138 }, // U0138 # LATIN SMALL LETTER KRA ++ { {UNITIZE(Qt::Key_Multi_key), 0x006c, 0x0076, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x006d, 0x002f, 0, 0, 0}, 0x20a5 }, // U20a5 # MILL SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x006d, 0x0075, 0, 0, 0}, 0x00b5 }, // U00B5 # MICRO SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x006e, 0x0067, 0, 0, 0}, 0x014b }, // U014B # LATIN SMALL LETTER ENG ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0027, 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0027, 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0041, 0, 0, 0}, 0x00c5 }, // U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0043, 0, 0, 0}, 0x00a9 }, // copyright ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0052, 0, 0, 0}, 0x00ae }, // registered ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0055, 0, 0, 0}, 0x016e }, // U016E # LATIN CAPITAL LETTER U WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0061, 0, 0, 0}, 0x00e5 }, // U00E5 # LATIN SMALL LETTER A WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0063, 0, 0, 0}, 0x00a9 }, // copyright ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0065, 0, 0, 0}, 0x0153 }, // oe ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x006f, 0, 0, 0}, 0x00b0 }, // degree # ^0 already taken ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0072, 0, 0, 0}, 0x00ae }, // registered ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0073, 0, 0, 0}, 0x00a7 }, // section # SECTION SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0075, 0, 0, 0}, 0x016f }, // U016F # LATIN SMALL LETTER U WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0077, 0, 0, 0}, 0x1e98 }, // U1E98 # LATIN SMALL LETTER W WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0078, 0, 0, 0}, 0x00a4 }, // currency ++ { {UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0079, 0, 0, 0}, 0x1e99 }, // U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0070, 0x0021, 0, 0, 0}, 0x00b6 }, // paragraph ++ { {UNITIZE(Qt::Key_Multi_key), 0x0073, 0x006f, 0, 0, 0}, 0x00a7 }, // section # SECTION SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0073, 0x0073, 0, 0, 0}, 0x00df }, // ssharp ++ { {UNITIZE(Qt::Key_Multi_key), 0x0074, 0x0068, 0, 0, 0}, 0x00fe }, // U00FE # LATIN SMALL LETTER THORN ++ { {UNITIZE(Qt::Key_Multi_key), 0x0076, 0x006c, 0, 0, 0}, 0x007c }, // bar ++ { {UNITIZE(Qt::Key_Multi_key), 0x0078, 0x006f, 0, 0, 0}, 0x00a4 }, // currency ++ { {UNITIZE(Qt::Key_Multi_key), 0x0078, 0x0078, 0, 0, 0}, 0x00d7 }, // U00D7 # MULTIPLICATION SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x007c, 0x0043, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++ { {UNITIZE(Qt::Key_Multi_key), 0x007c, 0x0063, 0, 0, 0}, 0x00a2 }, // U00A2 # CENT SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0000, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0000, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0000, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0000, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0020, 0, 0, 0}, 0x007e }, // asciitilde ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0022, 0x03b9, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0022, 0x03c5, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x0391, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x0397, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x0399, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03a5, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03a9, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03b1, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03b7, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03b9, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03c5, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03c9, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x0391, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x0397, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x0399, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03a9, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03b1, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03b7, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03b9, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03c5, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03c9, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x002b, 0x004f, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x002b, 0x0055, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x002b, 0x006f, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x002b, 0x0075, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0041, 0, 0, 0}, 0x00c3 }, // U00C3 # LATIN CAPITAL LETTER A WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0045, 0, 0, 0}, 0x1ebc }, // U1EBC # LATIN CAPITAL LETTER E WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0049, 0, 0, 0}, 0x0128 }, // U0128 # LATIN CAPITAL LETTER I WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004e, 0, 0, 0}, 0x00d1 }, // U00D1 # LATIN CAPITAL LETTER N WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004f, 0, 0, 0}, 0x00d5 }, // U00D5 # LATIN CAPITAL LETTER O WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0055, 0, 0, 0}, 0x0168 }, // U0168 # LATIN CAPITAL LETTER U WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0055, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0055, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0056, 0, 0, 0}, 0x1e7c }, // U1E7C # LATIN CAPITAL LETTER V WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0059, 0, 0, 0}, 0x1ef8 }, // U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x0041, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x0045, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x004f, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x0061, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x0065, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x005e, 0x006f, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0061, 0, 0, 0}, 0x00e3 }, // U00E3 # LATIN SMALL LETTER A WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0062, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0062, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0065, 0, 0, 0}, 0x1ebd }, // U1EBD # LATIN SMALL LETTER E WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0069, 0, 0, 0}, 0x0129 }, // U0129 # LATIN SMALL LETTER I WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006e, 0, 0, 0}, 0x00f1 }, // U00F1 # LATIN SMALL LETTER N WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006f, 0, 0, 0}, 0x00f5 }, // U00F5 # LATIN SMALL LETTER O WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0075, 0, 0, 0}, 0x0169 }, // U0169 # LATIN SMALL LETTER U WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0076, 0, 0, 0}, 0x1e7d }, // U1E7D # LATIN SMALL LETTER V WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0079, 0, 0, 0}, 0x1ef9 }, // U1EF9 # LATIN SMALL LETTER Y WITH TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00c2, 0, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00ca, 0, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00d4, 0, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00e2, 0, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00ea, 0, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x00f4, 0, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0102, 0, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0103, 0, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x0391, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x0397, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x0399, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03a9, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03b1, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03b7, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03b9, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03c5, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03c9, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x0391, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x0397, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x0399, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03a5, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03a9, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03b1, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03b7, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03b9, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03c5, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03c9, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03b1, 0, 0, 0}, 0x1fb6 }, // U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03b7, 0, 0, 0}, 0x1fc6 }, // U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03b9, 0, 0, 0}, 0x1fd6 }, // U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03c5, 0, 0, 0}, 0x1fe6 }, // U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03c9, 0, 0, 0}, 0x1ff6 }, // U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03ca, 0, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03cb, 0, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f00, 0, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f01, 0, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f08, 0, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f09, 0, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f20, 0, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f21, 0, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f28, 0, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f29, 0, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f30, 0, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f31, 0, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f38, 0, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f39, 0, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f50, 0, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f51, 0, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f59, 0, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f60, 0, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f61, 0, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f68, 0, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f69, 0, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x007e, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x0000, 0, 0, 0}, 0x0385 }, // U0385 # GREEK DIALYTIKA TONOS ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x0000, 0, 0, 0}, 0x1fed }, // U1FED # GREEK DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x0027, 0, 0, 0}, 0x0385 }, // U0385 # GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x0060, 0, 0, 0}, 0x1fed }, // U1FED # GREEK DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x007e, 0, 0, 0}, 0x1fc1 }, // U1FC1 # GREEK DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x00b4, 0, 0, 0}, 0x0385 }, // U0385 # GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, 0x0342, 0, 0, 0}, 0x1fc1 }, // U1FC1 # GREEK DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, UNITIZE(Qt::Key_Dead_Grave), 0, 0, 0}, 0x1fed }, // U1FED # GREEK DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, UNITIZE(Qt::Key_Dead_Acute), 0, 0, 0}, 0x0385 }, // U0385 # GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00a8, UNITIZE(Qt::Key_Dead_Tilde), 0, 0, 0}, 0x1fc1 }, // U1FC1 # GREEK DIALYTIKA AND PERISPOMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0000, 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0021, 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0021, 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0021, 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0021, 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x0041, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x004f, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x0055, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x0061, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x006f, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0022, 0x0075, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x002e, 0x0041, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x002e, 0x004f, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x002e, 0x0061, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x002e, 0x006f, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x003b, 0x004f, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x003b, 0x006f, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0041, 0, 0, 0}, 0x0100 }, // U0100 # LATIN CAPITAL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0045, 0, 0, 0}, 0x0112 }, // U0112 # LATIN CAPITAL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0047, 0, 0, 0}, 0x1e20 }, // U1E20 # LATIN CAPITAL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0049, 0, 0, 0}, 0x012a }, // U012A # LATIN CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x004f, 0, 0, 0}, 0x014c }, // U014C # LATIN CAPITAL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0055, 0, 0, 0}, 0x016a }, // U016A # LATIN CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0059, 0, 0, 0}, 0x0232 }, // U0232 # LATIN CAPITAL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0061, 0, 0, 0}, 0x0101 }, // U0101 # LATIN SMALL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0065, 0, 0, 0}, 0x0113 }, // U0113 # LATIN SMALL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0067, 0, 0, 0}, 0x1e21 }, // U1E21 # LATIN SMALL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0069, 0, 0, 0}, 0x012b }, // U012B # LATIN SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x006f, 0, 0, 0}, 0x014d }, // U014D # LATIN SMALL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0075, 0, 0, 0}, 0x016b }, // U016B # LATIN SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0079, 0, 0, 0}, 0x0233 }, // U0233 # LATIN SMALL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x007e, 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x007e, 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00c4, 0, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00c6, 0, 0, 0}, 0x01e2 }, // U01E2 # LATIN CAPITAL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00d5, 0, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00d6, 0, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00dc, 0, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00e4, 0, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00e6, 0, 0, 0}, 0x01e3 }, // U01E3 # LATIN SMALL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00f5, 0, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00f6, 0, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x00fc, 0, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x01ea, 0, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x01eb, 0, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0226, 0, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0227, 0, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x022e, 0, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x022f, 0, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0391, 0, 0, 0}, 0x1fb9 }, // U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0399, 0, 0, 0}, 0x1fd9 }, // U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x03a5, 0, 0, 0}, 0x1fe9 }, // U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x03b1, 0, 0, 0}, 0x1fb1 }, // U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x03b9, 0, 0, 0}, 0x1fd1 }, // U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x03c5, 0, 0, 0}, 0x1fe1 }, // U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0418, 0, 0, 0}, 0x04e2 }, // U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0423, 0, 0, 0}, 0x04ee }, // U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0438, 0, 0, 0}, 0x04e3 }, // U04E3 # CYRILLIC SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0443, 0, 0, 0}, 0x04ef }, // U04EF # CYRILLIC SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x1e36, 0, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x1e37, 0, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x1e5a, 0, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, 0x1e5b, 0, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Abovedot), 0x0041, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Abovedot), 0x004f, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Abovedot), 0x0061, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Abovedot), 0x006f, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0041, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x004f, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0061, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x006f, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Ogonek), 0x004f, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Ogonek), 0x006f, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Belowdot), 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Belowdot), 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Belowdot), 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Multi_key), 0x00af, UNITIZE(Qt::Key_Dead_Belowdot), 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0000, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0022, 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002b, 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002b, 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002b, 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002b, 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002c, 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002c, 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002f, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x002f, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0041, 0, 0, 0}, 0x00c1 }, // U00C1 # LATIN CAPITAL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0043, 0, 0, 0}, 0x0106 }, // U0106 # LATIN CAPITAL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0045, 0, 0, 0}, 0x00c9 }, // U00C9 # LATIN CAPITAL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0047, 0, 0, 0}, 0x01f4 }, // U01F4 # LATIN CAPITAL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0049, 0, 0, 0}, 0x00cd }, // U00CD # LATIN CAPITAL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x004b, 0, 0, 0}, 0x1e30 }, // U1E30 # LATIN CAPITAL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x004c, 0, 0, 0}, 0x0139 }, // U0139 # LATIN CAPITAL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x004d, 0, 0, 0}, 0x1e3e }, // U1E3E # LATIN CAPITAL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x004e, 0, 0, 0}, 0x0143 }, // U0143 # LATIN CAPITAL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x004f, 0, 0, 0}, 0x00d3 }, // U00D3 # LATIN CAPITAL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0050, 0, 0, 0}, 0x1e54 }, // U1E54 # LATIN CAPITAL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0052, 0, 0, 0}, 0x0154 }, // U0154 # LATIN CAPITAL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0053, 0, 0, 0}, 0x015a }, // U015A # LATIN CAPITAL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0055, 0, 0, 0}, 0x00da }, // U00DA # LATIN CAPITAL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0055, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0055, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0057, 0, 0, 0}, 0x1e82 }, // U1E82 # LATIN CAPITAL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0059, 0, 0, 0}, 0x00dd }, // U00DD # LATIN CAPITAL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005a, 0, 0, 0}, 0x0179 }, // U0179 # LATIN CAPITAL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005e, 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005f, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005f, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005f, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x005f, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0061, 0, 0, 0}, 0x00e1 }, // U00E1 # LATIN SMALL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0062, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0062, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0063, 0, 0, 0}, 0x0107 }, // U0107 # LATIN SMALL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0065, 0, 0, 0}, 0x00e9 }, // U00E9 # LATIN SMALL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0067, 0, 0, 0}, 0x01f5 }, // U01F5 # LATIN SMALL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0069, 0, 0, 0}, 0x00ed }, // U00ED # LATIN SMALL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006b, 0, 0, 0}, 0x1e31 }, // U1E31 # LATIN SMALL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006c, 0, 0, 0}, 0x013a }, // U013A # LATIN SMALL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006d, 0, 0, 0}, 0x1e3f }, // U1E3F # LATIN SMALL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006e, 0, 0, 0}, 0x0144 }, // U0144 # LATIN SMALL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006f, 0, 0, 0}, 0x00f3 }, // U00F3 # LATIN SMALL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006f, 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x006f, 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0070, 0, 0, 0}, 0x1e55 }, // U1E55 # LATIN SMALL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0072, 0, 0, 0}, 0x0155 }, // U0155 # LATIN SMALL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0073, 0, 0, 0}, 0x015b }, // U015B # LATIN SMALL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0075, 0, 0, 0}, 0x00fa }, // U00FA # LATIN SMALL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0077, 0, 0, 0}, 0x1e83 }, // U1E83 # LATIN SMALL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0079, 0, 0, 0}, 0x00fd }, // U00FD # LATIN SMALL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x007a, 0, 0, 0}, 0x017a }, // U017A # LATIN SMALL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x007e, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x007e, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x007e, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x007e, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00af, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00af, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00af, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00af, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00c2, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00c5, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00c6, 0, 0, 0}, 0x01fc }, // U01FC # LATIN CAPITAL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00c7, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00ca, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00cf, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00d4, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00d5, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00d8, 0, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00dc, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00e2, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00e5, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00e6, 0, 0, 0}, 0x01fd }, // U01FD # LATIN SMALL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00e7, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00ea, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00ef, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00f4, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00f5, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00f8, 0, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x00fc, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0102, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0103, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0112, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0113, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x014c, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x014d, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0168, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0169, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0391, 0, 0, 0}, 0x0386 }, // U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0395, 0, 0, 0}, 0x0388 }, // U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0397, 0, 0, 0}, 0x0389 }, // U0389 # GREEK CAPITAL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0399, 0, 0, 0}, 0x038a }, // U038A # GREEK CAPITAL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x039f, 0, 0, 0}, 0x038c }, // U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03a5, 0, 0, 0}, 0x038e }, // U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03a9, 0, 0, 0}, 0x038f }, // U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b1, 0, 0, 0}, 0x03ac }, // U03AC # GREEK SMALL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b5, 0, 0, 0}, 0x03ad }, // U03AD # GREEK SMALL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b7, 0, 0, 0}, 0x03ae }, // U03AE # GREEK SMALL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b9, 0, 0, 0}, 0x03af }, // U03AF # GREEK SMALL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03bf, 0, 0, 0}, 0x03cc }, // U03CC # GREEK SMALL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03c5, 0, 0, 0}, 0x03cd }, // U03CD # GREEK SMALL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03c9, 0, 0, 0}, 0x03ce }, // U03CE # GREEK SMALL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03ca, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03cb, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03d2, 0, 0, 0}, 0x03d3 }, // U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0413, 0, 0, 0}, 0x0403 }, // U0403 # CYRILLIC CAPITAL LETTER GJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x041a, 0, 0, 0}, 0x040c }, // U040C # CYRILLIC CAPITAL LETTER KJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0433, 0, 0, 0}, 0x0453 }, // U0453 # CYRILLIC SMALL LETTER GJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x043a, 0, 0, 0}, 0x045c }, // U045C # CYRILLIC SMALL LETTER KJE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f00, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f01, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f08, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f09, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f10, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f11, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f18, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f19, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f20, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f21, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f28, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f29, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f30, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f31, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f38, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f39, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f40, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f41, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f48, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f49, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f50, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f51, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f59, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f60, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f61, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f68, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f69, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Tilde), 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Tilde), 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Abovering), 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Abovering), 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Cedilla), 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Cedilla), 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Multi_key), 0x00b4, UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0313, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x0314, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03b1, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03b7, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x03c9, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f00, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f01, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f08, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f09, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f20, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f21, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f28, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f29, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f60, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f61, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f68, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0000, 0x1f69, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0027, 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x0391, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x0397, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x03a9, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x03b1, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x03b7, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0028, 0x03c9, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x0391, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x0397, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x03a9, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x03b1, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x03b7, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0029, 0x03c9, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0313, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x0314, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x03b1, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x03b7, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x03c9, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f00, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f01, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f08, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f09, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f20, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f21, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f28, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f29, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f60, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f61, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f68, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0060, 0x1f69, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0313, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x0314, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x03b1, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x03b7, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x03c9, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f00, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f01, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f08, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f09, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f20, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f21, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f28, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f29, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f60, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f61, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f68, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x007e, 0x1f69, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x00b4, 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x0391, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x0397, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x03a9, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x03b1, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x03b7, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0313, 0x03c9, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x0391, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x0397, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x03a9, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x03b1, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x03b7, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0314, 0x03c9, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0313, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x0314, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x03b1, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x03b7, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x03c9, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f00, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f01, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f08, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f09, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f20, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f21, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f28, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f29, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f60, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f61, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f68, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0342, 0x1f69, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0391, 0, 0, 0}, 0x1fbc }, // U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x0397, 0, 0, 0}, 0x1fcc }, // U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03a9, 0, 0, 0}, 0x1ffc }, // U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03ac, 0, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03ae, 0, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03b1, 0, 0, 0}, 0x1fb3 }, // U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03b7, 0, 0, 0}, 0x1fc3 }, // U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03c9, 0, 0, 0}, 0x1ff3 }, // U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x03ce, 0, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f00, 0, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f01, 0, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f02, 0, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f03, 0, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f04, 0, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f05, 0, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f06, 0, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f07, 0, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f08, 0, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f09, 0, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0a, 0, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0b, 0, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0c, 0, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0d, 0, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0e, 0, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f0f, 0, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f20, 0, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f21, 0, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f22, 0, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f23, 0, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f24, 0, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f25, 0, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f26, 0, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f27, 0, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f28, 0, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f29, 0, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2a, 0, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2b, 0, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2c, 0, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2d, 0, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2e, 0, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f2f, 0, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f60, 0, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f61, 0, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f62, 0, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f63, 0, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f64, 0, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f65, 0, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f66, 0, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f67, 0, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f68, 0, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f69, 0, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6a, 0, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6b, 0, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6c, 0, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6d, 0, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6e, 0, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f6f, 0, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f70, 0, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f74, 0, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1f7c, 0, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1fb6, 0, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1fc6, 0, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, 0x1ff6, 0, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x03b1, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x03b7, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x03c9, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f00, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f01, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f08, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f09, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f20, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f21, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f28, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f29, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f60, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f61, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f68, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Grave), 0x1f69, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Acute), 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x03b1, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x03b7, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x03c9, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f00, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f01, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f08, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f09, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f20, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f21, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f28, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f29, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f60, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f61, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f68, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x03b9, UNITIZE(Qt::Key_Dead_Tilde), 0x1f69, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x05b4, 0x05d9, 0, 0, 0}, 0xfb1d }, // UFB1D # HEBREW LETTER YOD WITH HIRIQ ++ { {UNITIZE(Qt::Key_Multi_key), 0x05b7, 0x05d0, 0, 0, 0}, 0xfb2e }, // UFB2E # HEBREW LETTER ALEF WITH PATAH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05b7, 0x05f2, 0, 0, 0}, 0xfb1f }, // UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05b8, 0x05d0, 0, 0, 0}, 0xfb2f }, // UFB2F # HEBREW LETTER ALEF WITH QAMATS ++ { {UNITIZE(Qt::Key_Multi_key), 0x05b9, 0x05d5, 0, 0, 0}, 0xfb4b }, // UFB4B # HEBREW LETTER VAV WITH HOLAM ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d0, 0, 0, 0}, 0xfb30 }, // UFB30 # HEBREW LETTER ALEF WITH MAPIQ ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d1, 0, 0, 0}, 0xfb31 }, // UFB31 # HEBREW LETTER BET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d1, 0, 0, 0}, 0xfb31 }, // UFB31 # HEBREW LETTER BET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d2, 0, 0, 0}, 0xfb32 }, // UFB32 # HEBREW LETTER GIMEL WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d2, 0, 0, 0}, 0xfb32 }, // UFB32 # HEBREW LETTER GIMEL WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d3, 0, 0, 0}, 0xfb33 }, // UFB33 # HEBREW LETTER DALET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d3, 0, 0, 0}, 0xfb33 }, // UFB33 # HEBREW LETTER DALET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d4, 0, 0, 0}, 0xfb34 }, // UFB34 # HEBREW LETTER HE WITH MAPIQ ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d5, 0, 0, 0}, 0xfb35 }, // UFB35 # HEBREW LETTER VAV WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d6, 0, 0, 0}, 0xfb36 }, // UFB36 # HEBREW LETTER ZAYIN WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d6, 0, 0, 0}, 0xfb36 }, // UFB36 # HEBREW LETTER ZAYIN WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d8, 0, 0, 0}, 0xfb38 }, // UFB38 # HEBREW LETTER TET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d8, 0, 0, 0}, 0xfb38 }, // UFB38 # HEBREW LETTER TET WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05d9, 0, 0, 0}, 0xfb39 }, // UFB39 # HEBREW LETTER YOD WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05da, 0, 0, 0}, 0xfb3a }, // UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05db, 0, 0, 0}, 0xfb3b }, // UFB3B # HEBREW LETTER KAF WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05dc, 0, 0, 0}, 0xfb3c }, // UFB3C # HEBREW LETTER LAMED WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05de, 0, 0, 0}, 0xfb3e }, // UFB3E # HEBREW LETTER MEM WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e0, 0, 0, 0}, 0xfb40 }, // UFB40 # HEBREW LETTER NUN WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e1, 0, 0, 0}, 0xfb41 }, // UFB41 # HEBREW LETTER SAMEKH WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e1, 0, 0, 0}, 0xfb41 }, // UFB41 # HEBREW LETTER SAMEKH WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e3, 0, 0, 0}, 0xfb43 }, // UFB43 # HEBREW LETTER FINAL PE WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e4, 0, 0, 0}, 0xfb44 }, // UFB44 # HEBREW LETTER PE WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e6, 0, 0, 0}, 0xfb46 }, // UFB46 # HEBREW LETTER TSADI WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e6, 0, 0, 0}, 0xfb46 }, // UFB46 # HEBREW LETTER TSADI WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e7, 0, 0, 0}, 0xfb47 }, // UFB47 # HEBREW LETTER QOF WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e7, 0, 0, 0}, 0xfb47 }, // UFB47 # HEBREW LETTER QOF WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e8, 0, 0, 0}, 0xfb48 }, // UFB48 # HEBREW LETTER RESH WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05e9, 0, 0, 0}, 0xfb49 }, // UFB49 # HEBREW LETTER SHIN WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05ea, 0, 0, 0}, 0xfb4a }, // UFB4A # HEBREW LETTER TAV WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bc, 0x05ea, 0, 0, 0}, 0xfb4a }, // UFB4A # HEBREW LETTER TAV WITH DAGESH ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bf, 0x05d1, 0, 0, 0}, 0xfb4c }, // UFB4C # HEBREW LETTER BET WITH RAFE ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bf, 0x05d1, 0, 0, 0}, 0xfb4c }, // UFB4C # HEBREW LETTER BET WITH RAFE ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bf, 0x05db, 0, 0, 0}, 0xfb4d }, // UFB4D # HEBREW LETTER KAF WITH RAFE ++ { {UNITIZE(Qt::Key_Multi_key), 0x05bf, 0x05e4, 0, 0, 0}, 0xfb4e }, // UFB4E # HEBREW LETTER PE WITH RAFE ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c1, 0x05bc, 0x05e9, 0, 0}, 0xfb2c }, // UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c1, 0x05e9, 0, 0, 0}, 0xfb2a }, // UFB2A # HEBREW LETTER SHIN WITH SHIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c1, 0xfb49, 0, 0, 0}, 0xfb2c }, // UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c2, 0x05bc, 0x05e9, 0, 0}, 0xfb2d }, // UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c2, 0x05e9, 0, 0, 0}, 0xfb2b }, // UFB2B # HEBREW LETTER SHIN WITH SIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x05c2, 0xfb49, 0, 0, 0}, 0xfb2d }, // UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT ++ { {UNITIZE(Qt::Key_Multi_key), 0x0653, 0x0627, 0, 0, 0}, 0x0622 }, // U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x0627, 0, 0, 0}, 0x0623 }, // U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x0648, 0, 0, 0}, 0x0624 }, // U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x064a, 0, 0, 0}, 0x0626 }, // U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x06c1, 0, 0, 0}, 0x06c2 }, // U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x06d2, 0, 0, 0}, 0x06d3 }, // U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0654, 0x06d5, 0, 0, 0}, 0x06c0 }, // U06C0 # ARABIC LETTER HEH WITH YEH ABOVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0655, 0x0627, 0, 0, 0}, 0x0625 }, // U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0915, 0, 0, 0}, 0x0958 }, // U0958 # DEVANAGARI LETTER QA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0916, 0, 0, 0}, 0x0959 }, // U0959 # DEVANAGARI LETTER KHHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0917, 0, 0, 0}, 0x095a }, // U095A # DEVANAGARI LETTER GHHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x091c, 0, 0, 0}, 0x095b }, // U095B # DEVANAGARI LETTER ZA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0921, 0, 0, 0}, 0x095c }, // U095C # DEVANAGARI LETTER DDDHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0922, 0, 0, 0}, 0x095d }, // U095D # DEVANAGARI LETTER RHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0928, 0, 0, 0}, 0x0929 }, // U0929 # DEVANAGARI LETTER NNNA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x092b, 0, 0, 0}, 0x095e }, // U095E # DEVANAGARI LETTER FA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x092f, 0, 0, 0}, 0x095f }, // U095F # DEVANAGARI LETTER YYA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0930, 0, 0, 0}, 0x0931 }, // U0931 # DEVANAGARI LETTER RRA ++ { {UNITIZE(Qt::Key_Multi_key), 0x093c, 0x0933, 0, 0, 0}, 0x0934 }, // U0934 # DEVANAGARI LETTER LLLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x09bc, 0x09a1, 0, 0, 0}, 0x09dc }, // U09DC # BENGALI LETTER RRA ++ { {UNITIZE(Qt::Key_Multi_key), 0x09bc, 0x09a2, 0, 0, 0}, 0x09dd }, // U09DD # BENGALI LETTER RHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x09bc, 0x09af, 0, 0, 0}, 0x09df }, // U09DF # BENGALI LETTER YYA ++ { {UNITIZE(Qt::Key_Multi_key), 0x09c7, 0x09be, 0, 0, 0}, 0x09cb }, // U09CB # BENGALI VOWEL SIGN O ++ { {UNITIZE(Qt::Key_Multi_key), 0x09c7, 0x09d7, 0, 0, 0}, 0x09cc }, // U09CC # BENGALI VOWEL SIGN AU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a16, 0, 0, 0}, 0x0a59 }, // U0A59 # GURMUKHI LETTER KHHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a17, 0, 0, 0}, 0x0a5a }, // U0A5A # GURMUKHI LETTER GHHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a1c, 0, 0, 0}, 0x0a5b }, // U0A5B # GURMUKHI LETTER ZA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a2b, 0, 0, 0}, 0x0a5e }, // U0A5E # GURMUKHI LETTER FA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a32, 0, 0, 0}, 0x0a33 }, // U0A33 # GURMUKHI LETTER LLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0a3c, 0x0a38, 0, 0, 0}, 0x0a36 }, // U0A36 # GURMUKHI LETTER SHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0b3c, 0x0b21, 0, 0, 0}, 0x0b5c }, // U0B5C # ORIYA LETTER RRA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0b3c, 0x0b22, 0, 0, 0}, 0x0b5d }, // U0B5D # ORIYA LETTER RHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0b47, 0x0b3e, 0, 0, 0}, 0x0b4b }, // U0B4B # ORIYA VOWEL SIGN O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0b47, 0x0b56, 0, 0, 0}, 0x0b48 }, // U0B48 # ORIYA VOWEL SIGN AI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0b47, 0x0b57, 0, 0, 0}, 0x0b4c }, // U0B4C # ORIYA VOWEL SIGN AU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0bc6, 0x0bbe, 0, 0, 0}, 0x0bca }, // U0BCA # TAMIL VOWEL SIGN O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0bc6, 0x0bd7, 0, 0, 0}, 0x0bcc }, // U0BCC # TAMIL VOWEL SIGN AU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0bc7, 0x0bbe, 0, 0, 0}, 0x0bcb }, // U0BCB # TAMIL VOWEL SIGN OO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0bd7, 0x0b92, 0, 0, 0}, 0x0b94 }, // U0B94 # TAMIL LETTER AU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0c46, 0x0c56, 0, 0, 0}, 0x0c48 }, // U0C48 # TELUGU VOWEL SIGN AI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cbf, 0x0cd5, 0, 0, 0}, 0x0cc0 }, // U0CC0 # KANNADA VOWEL SIGN II ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cc6, 0x0cc2, 0, 0, 0}, 0x0cca }, // U0CCA # KANNADA VOWEL SIGN O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cc6, 0x0cc2, 0x0cd5, 0, 0}, 0x0ccb }, // U0CCB # KANNADA VOWEL SIGN OO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cc6, 0x0cd5, 0, 0, 0}, 0x0cc7 }, // U0CC7 # KANNADA VOWEL SIGN EE ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cc6, 0x0cd6, 0, 0, 0}, 0x0cc8 }, // U0CC8 # KANNADA VOWEL SIGN AI ++ { {UNITIZE(Qt::Key_Multi_key), 0x0cca, 0x0cd5, 0, 0, 0}, 0x0ccb }, // U0CCB # KANNADA VOWEL SIGN OO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0d46, 0x0d3e, 0, 0, 0}, 0x0d4a }, // U0D4A # MALAYALAM VOWEL SIGN O ++ { {UNITIZE(Qt::Key_Multi_key), 0x0d46, 0x0d57, 0, 0, 0}, 0x0d4c }, // U0D4C # MALAYALAM VOWEL SIGN AU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0d47, 0x0d3e, 0, 0, 0}, 0x0d4b }, // U0D4B # MALAYALAM VOWEL SIGN OO ++ { {UNITIZE(Qt::Key_Multi_key), 0x0dd9, 0x0dca, 0, 0, 0}, 0x0dda }, // U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0dd9, 0x0dcf, 0, 0, 0}, 0x0ddc }, // U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0dd9, 0x0dcf, 0x0dca, 0, 0}, 0x0ddd }, // U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0dd9, 0x0ddf, 0, 0, 0}, 0x0dde }, // U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0ddc, 0x0dca, 0, 0, 0}, 0x0ddd }, // U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f71, 0x0f72, 0, 0, 0}, 0x0f73 }, // U0F73 # TIBETAN VOWEL SIGN II ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f71, 0x0f74, 0, 0, 0}, 0x0f75 }, // U0F75 # TIBETAN VOWEL SIGN UU ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f71, 0x0f80, 0, 0, 0}, 0x0f81 }, // U0F81 # TIBETAN VOWEL SIGN REVERSED II ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f90, 0x0fb5, 0, 0, 0}, 0x0fb9 }, // U0FB9 # TIBETAN SUBJOINED LETTER KSSA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f92, 0x0fb7, 0, 0, 0}, 0x0f93 }, // U0F93 # TIBETAN SUBJOINED LETTER GHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0f9c, 0x0fb7, 0, 0, 0}, 0x0f9d }, // U0F9D # TIBETAN SUBJOINED LETTER DDHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fa1, 0x0fb7, 0, 0, 0}, 0x0fa2 }, // U0FA2 # TIBETAN SUBJOINED LETTER DHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fa6, 0x0fb7, 0, 0, 0}, 0x0fa7 }, // U0FA7 # TIBETAN SUBJOINED LETTER BHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fab, 0x0fb7, 0, 0, 0}, 0x0fac }, // U0FAC # TIBETAN SUBJOINED LETTER DZHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb2, 0x0f80, 0, 0, 0}, 0x0f76 }, // U0F76 # TIBETAN VOWEL SIGN VOCALIC R ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb3, 0x0f80, 0, 0, 0}, 0x0f78 }, // U0F78 # TIBETAN VOWEL SIGN VOCALIC L ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb5, 0x0f40, 0, 0, 0}, 0x0f69 }, // U0F69 # TIBETAN LETTER KSSA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb7, 0x0f42, 0, 0, 0}, 0x0f43 }, // U0F43 # TIBETAN LETTER GHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb7, 0x0f4c, 0, 0, 0}, 0x0f4d }, // U0F4D # TIBETAN LETTER DDHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb7, 0x0f51, 0, 0, 0}, 0x0f52 }, // U0F52 # TIBETAN LETTER DHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb7, 0x0f56, 0, 0, 0}, 0x0f57 }, // U0F57 # TIBETAN LETTER BHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x0fb7, 0x0f5b, 0, 0, 0}, 0x0f5c }, // U0F5C # TIBETAN LETTER DZHA ++ { {UNITIZE(Qt::Key_Multi_key), 0x102e, 0x1025, 0, 0, 0}, 0x1026 }, // U1026 # MYANMAR LETTER UU ++ { {UNITIZE(Qt::Key_Multi_key), 0x1100, 0x1100, 0, 0, 0}, 0x1101 }, // U1101 # àà àà = áà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1102, 0x1100, 0, 0, 0}, 0x1113 }, // U1113 # âà àà = óà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1102, 0x1102, 0, 0, 0}, 0x1114 }, // U1114 # âà âà = ôà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1102, 0x1103, 0, 0, 0}, 0x1115 }, // U1115 # âà ãà = õà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1102, 0x1107, 0, 0, 0}, 0x1116 }, // U1116 # âà çà = öà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1103, 0x1100, 0, 0, 0}, 0x1117 }, // U1117 # ãà àà = ÷à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1103, 0x1103, 0, 0, 0}, 0x1104 }, // U1104 # ãà ãà = äà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1105, 0x1102, 0, 0, 0}, 0x1118 }, // U1118 # åà âà = øà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1105, 0x1105, 0, 0, 0}, 0x1119 }, // U1119 # åà åà = ùà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1105, 0x110b, 0, 0, 0}, 0x111b }, // U111b # åà ëà = ûà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1105, 0x1112, 0, 0, 0}, 0x111a }, // U111a # åà òà = úà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1106, 0x1107, 0, 0, 0}, 0x111c }, // U111c # æà çà = üà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1106, 0x110b, 0, 0, 0}, 0x111d }, // U111d # æà ëà = ýà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1100, 0, 0, 0}, 0x111e }, // U111e # çà àà = þà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1102, 0, 0, 0}, 0x111f }, // U111f # çà âà = ÿà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1103, 0, 0, 0}, 0x1120 }, // U1120 # çà ãà =  à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1107, 0, 0, 0}, 0x1108 }, // U1108 # çà çà = èà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1107, 0x110b, 0, 0}, 0x112c }, // U112c # çà çà ëà = ¬à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0, 0, 0}, 0x1121 }, // U1121 # çà éà = ¡à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0x1100, 0, 0}, 0x1122 }, // U1122 # çà éà àà = ¢à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0x1103, 0, 0}, 0x1123 }, // U1123 # çà éà ãà = £à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0x1107, 0, 0}, 0x1124 }, // U1124 # çà éà çà = ¤à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0x1109, 0, 0}, 0x1125 }, // U1125 # çà éà éà = ¥à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1109, 0x110c, 0, 0}, 0x1126 }, // U1126 # çà éà ìà = ¦à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x110a, 0, 0, 0}, 0x1125 }, // U1125 # çà êà = ¥à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x110b, 0, 0, 0}, 0x112b }, // U112b # çà ëà = «à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x110c, 0, 0, 0}, 0x1127 }, // U1127 # çà ìà = §à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x110e, 0, 0, 0}, 0x1128 }, // U1128 # çà îà = ¨à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1110, 0, 0, 0}, 0x1129 }, // U1129 # çà ðà = ©à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1111, 0, 0, 0}, 0x112a }, // U112a # çà ñà = ªà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x112b, 0, 0, 0}, 0x112c }, // U112c # çà «à = ¬à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x112d, 0, 0, 0}, 0x1122 }, // U1122 # çà ­à = ¢à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x112f, 0, 0, 0}, 0x1123 }, // U1123 # çà ¯à = £à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1132, 0, 0, 0}, 0x1124 }, // U1124 # çà ²à = ¤à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1107, 0x1136, 0, 0, 0}, 0x1126 }, // U1126 # çà ¶à = ¦à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1108, 0x110b, 0, 0, 0}, 0x112c }, // U112c # èà ëà = ¬à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1100, 0, 0, 0}, 0x112d }, // U112d # éà àà = ­à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1102, 0, 0, 0}, 0x112e }, // U112e # éà âà = ®à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1103, 0, 0, 0}, 0x112f }, // U112f # éà ãà = ¯à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1105, 0, 0, 0}, 0x1130 }, // U1130 # éà åà = °à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1106, 0, 0, 0}, 0x1131 }, // U1131 # éà æà = ±à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1107, 0, 0, 0}, 0x1132 }, // U1132 # éà çà = ²à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1107, 0x1100, 0, 0}, 0x1133 }, // U1133 # éà çà àà = ³à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1109, 0, 0, 0}, 0x110a }, // U110a # éà éà = êà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1109, 0x1109, 0, 0}, 0x1134 }, // U1134 # éà éà éà = ´à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x110a, 0, 0, 0}, 0x1134 }, // U1134 # éà êà = ´à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x110b, 0, 0, 0}, 0x1135 }, // U1135 # éà ëà = µà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x110c, 0, 0, 0}, 0x1136 }, // U1136 # éà ìà = ¶à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x110e, 0, 0, 0}, 0x1137 }, // U1137 # éà îà = ·à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x110f, 0, 0, 0}, 0x1138 }, // U1138 # éà ïà = ¸à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1110, 0, 0, 0}, 0x1139 }, // U1139 # éà ðà = ¹à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1111, 0, 0, 0}, 0x113a }, // U113a # éà ñà = ºà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x1112, 0, 0, 0}, 0x113b }, // U113b # éà òà = »à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1109, 0x111e, 0, 0, 0}, 0x1133 }, // U1133 # éà þà = ³à ++ { {UNITIZE(Qt::Key_Multi_key), 0x110a, 0x1109, 0, 0, 0}, 0x1134 }, // U1134 # êà éà = ´à ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1100, 0, 0, 0}, 0x1141 }, // U1141 # ëà àà = Áà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1103, 0, 0, 0}, 0x1142 }, // U1142 # ëà ãà = Âà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1106, 0, 0, 0}, 0x1143 }, // U1143 # ëà æà = Ãà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1107, 0, 0, 0}, 0x1144 }, // U1144 # ëà çà = Äà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1109, 0, 0, 0}, 0x1145 }, // U1145 # ëà éà = Åà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x110b, 0, 0, 0}, 0x1147 }, // U1147 # ëà ëà = Çà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x110c, 0, 0, 0}, 0x1148 }, // U1148 # ëà ìà = Èà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x110e, 0, 0, 0}, 0x1149 }, // U1149 # ëà îà = Éà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1110, 0, 0, 0}, 0x114a }, // U114a # ëà ðà = Êà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1111, 0, 0, 0}, 0x114b }, // U114b # ëà ñà = Ëà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110b, 0x1140, 0, 0, 0}, 0x1146 }, // U1146 # ëà Àà = Æà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110c, 0x110b, 0, 0, 0}, 0x114d }, // U114d # ìà ëà = Íà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110c, 0x110c, 0, 0, 0}, 0x110d }, // U110d # ìà ìà = íà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110e, 0x110f, 0, 0, 0}, 0x1152 }, // U1152 # îà ïà = Òà ++ { {UNITIZE(Qt::Key_Multi_key), 0x110e, 0x1112, 0, 0, 0}, 0x1153 }, // U1153 # îà òà = Óà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1111, 0x1107, 0, 0, 0}, 0x1156 }, // U1156 # ñà çà = Öà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1111, 0x110b, 0, 0, 0}, 0x1157 }, // U1157 # ñà ëà = ×à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1112, 0x1112, 0, 0, 0}, 0x1158 }, // U1158 # òà òà = Øà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1121, 0x1100, 0, 0, 0}, 0x1122 }, // U1122 # ¡à àà = ¢à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1121, 0x1103, 0, 0, 0}, 0x1123 }, // U1123 # ¡à ãà = £à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1121, 0x1107, 0, 0, 0}, 0x1124 }, // U1124 # ¡à çà = ¤à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1121, 0x1109, 0, 0, 0}, 0x1125 }, // U1125 # ¡à éà = ¥à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1121, 0x110c, 0, 0, 0}, 0x1126 }, // U1126 # ¡à ìà = ¦à ++ { {UNITIZE(Qt::Key_Multi_key), 0x1132, 0x1100, 0, 0, 0}, 0x1133 }, // U1133 # ²à àà = ³à ++ { {UNITIZE(Qt::Key_Multi_key), 0x113c, 0x113c, 0, 0, 0}, 0x113d }, // U113d # ¼à ¼à = ½à ++ { {UNITIZE(Qt::Key_Multi_key), 0x113e, 0x113e, 0, 0, 0}, 0x113f }, // U113f # ¾à ¾à = ¿à ++ { {UNITIZE(Qt::Key_Multi_key), 0x114e, 0x114e, 0, 0, 0}, 0x114f }, // U114f # Îà Îà = Ïà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1150, 0x1150, 0, 0, 0}, 0x1151 }, // U1151 # Ðà Ðà = Ñà ++ { {UNITIZE(Qt::Key_Multi_key), 0x1161, 0x1169, 0, 0, 0}, 0x1176 }, // U1176 # ßá ßé = ßö ++ { {UNITIZE(Qt::Key_Multi_key), 0x1161, 0x116e, 0, 0, 0}, 0x1177 }, // U1177 # ßá ßî = ß÷ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1161, 0x1175, 0, 0, 0}, 0x1162 }, // U1162 # ßá ßõ = ßâ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1163, 0x1169, 0, 0, 0}, 0x1178 }, // U1178 # ßã ßé = ßø ++ { {UNITIZE(Qt::Key_Multi_key), 0x1163, 0x116d, 0, 0, 0}, 0x1179 }, // U1179 # ßã ßí = ßù ++ { {UNITIZE(Qt::Key_Multi_key), 0x1163, 0x1175, 0, 0, 0}, 0x1164 }, // U1164 # ßã ßõ = ßä ++ { {UNITIZE(Qt::Key_Multi_key), 0x1165, 0x1169, 0, 0, 0}, 0x117a }, // U117a # ßå ßé = ßú ++ { {UNITIZE(Qt::Key_Multi_key), 0x1165, 0x116e, 0, 0, 0}, 0x117b }, // U117b # ßå ßî = ßû ++ { {UNITIZE(Qt::Key_Multi_key), 0x1165, 0x1173, 0, 0, 0}, 0x117c }, // U117c # ßå ßó = ßü ++ { {UNITIZE(Qt::Key_Multi_key), 0x1165, 0x1175, 0, 0, 0}, 0x1166 }, // U1166 # ßå ßõ = ßæ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1167, 0x1169, 0, 0, 0}, 0x117d }, // U117d # ßç ßé = ßý ++ { {UNITIZE(Qt::Key_Multi_key), 0x1167, 0x116e, 0, 0, 0}, 0x117e }, // U117e # ßç ßî = ßþ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1167, 0x1175, 0, 0, 0}, 0x1168 }, // U1168 # ßç ßõ = ßè ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1161, 0, 0, 0}, 0x116a }, // U116a # ßé ßá = ßê ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1161, 0x1175, 0, 0}, 0x116b }, // U116b # ßé ßá ßõ = ßë ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1162, 0, 0, 0}, 0x116b }, // U116b # ßé ßâ = ßë ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1165, 0, 0, 0}, 0x117f }, // U117f # ßé ßå = ßÿ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1166, 0, 0, 0}, 0x1180 }, // U1180 # ßé ßæ = ß  ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1168, 0, 0, 0}, 0x1181 }, // U1181 # ßé ßè = ß¡ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1169, 0, 0, 0}, 0x1182 }, // U1182 # ßé ßé = ߢ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x116e, 0, 0, 0}, 0x1183 }, // U1183 # ßé ßî = ߣ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1169, 0x1175, 0, 0, 0}, 0x116c }, // U116c # ßé ßõ = ßì ++ { {UNITIZE(Qt::Key_Multi_key), 0x116a, 0x1175, 0, 0, 0}, 0x116b }, // U116b # ßê ßõ = ßë ++ { {UNITIZE(Qt::Key_Multi_key), 0x116d, 0x1163, 0, 0, 0}, 0x1184 }, // U1184 # ßí ßã = ߤ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116d, 0x1164, 0, 0, 0}, 0x1185 }, // U1185 # ßí ßä = ߥ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116d, 0x1167, 0, 0, 0}, 0x1186 }, // U1186 # ßí ßç = ߦ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116d, 0x1169, 0, 0, 0}, 0x1187 }, // U1187 # ßí ßé = ߧ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116d, 0x1175, 0, 0, 0}, 0x1188 }, // U1188 # ßí ßõ = ߨ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1161, 0, 0, 0}, 0x1189 }, // U1189 # ßî ßá = ß© ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1162, 0, 0, 0}, 0x118a }, // U118a # ßî ßâ = ߪ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1165, 0, 0, 0}, 0x116f }, // U116f # ßî ßå = ßï ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1165, 0x1173, 0, 0}, 0x118b }, // U118b # ßî ßå ßó = ß« ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1165, 0x1175, 0, 0}, 0x1170 }, // U1170 # ßî ßå ßõ = ßð ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1166, 0, 0, 0}, 0x1170 }, // U1170 # ßî ßæ = ßð ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1168, 0, 0, 0}, 0x118c }, // U118c # ßî ßè = ߬ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x116e, 0, 0, 0}, 0x118d }, // U118d # ßî ßî = ß­ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x1175, 0, 0, 0}, 0x1171 }, // U1171 # ßî ßõ = ßñ ++ { {UNITIZE(Qt::Key_Multi_key), 0x116e, 0x117c, 0, 0, 0}, 0x118b }, // U118b # ßî ßü = ß« ++ { {UNITIZE(Qt::Key_Multi_key), 0x116f, 0x1173, 0, 0, 0}, 0x118b }, // U118b # ßï ßó = ß« ++ { {UNITIZE(Qt::Key_Multi_key), 0x116f, 0x1175, 0, 0, 0}, 0x1170 }, // U1170 # ßï ßõ = ßð ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1161, 0, 0, 0}, 0x118e }, // U118e # ßò ßá = ß® ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1165, 0, 0, 0}, 0x118f }, // U118f # ßò ßå = ߯ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1166, 0, 0, 0}, 0x1190 }, // U1190 # ßò ßæ = ß° ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1167, 0, 0, 0}, 0x1191 }, // U1191 # ßò ßç = ß± ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1168, 0, 0, 0}, 0x1192 }, // U1192 # ßò ßè = ß² ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x116e, 0, 0, 0}, 0x1193 }, // U1193 # ßò ßî = ß³ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1172, 0x1175, 0, 0, 0}, 0x1194 }, // U1194 # ßò ßõ = ß´ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1173, 0x116e, 0, 0, 0}, 0x1195 }, // U1195 # ßó ßî = ßµ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1173, 0x1173, 0, 0, 0}, 0x1196 }, // U1196 # ßó ßó = ߶ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1173, 0x1175, 0, 0, 0}, 0x1174 }, // U1174 # ßó ßõ = ßô ++ { {UNITIZE(Qt::Key_Multi_key), 0x1174, 0x116e, 0, 0, 0}, 0x1197 }, // U1197 # ßô ßî = ß· ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x1161, 0, 0, 0}, 0x1198 }, // U1198 # ßõ ßá = ߸ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x1163, 0, 0, 0}, 0x1199 }, // U1199 # ßõ ßã = ß¹ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x1169, 0, 0, 0}, 0x119a }, // U119a # ßõ ßé = ߺ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x116e, 0, 0, 0}, 0x119b }, // U119b # ßõ ßî = ß» ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x1173, 0, 0, 0}, 0x119c }, // U119c # ßõ ßó = ß¼ ++ { {UNITIZE(Qt::Key_Multi_key), 0x1175, 0x119e, 0, 0, 0}, 0x119d }, // U119d # ßõ ß¾ = ß½ ++ { {UNITIZE(Qt::Key_Multi_key), 0x119e, 0x1165, 0, 0, 0}, 0x119f }, // U119f # ß¾ ßå = ß¿ ++ { {UNITIZE(Qt::Key_Multi_key), 0x119e, 0x116e, 0, 0, 0}, 0x11a0 }, // U11a0 # ß¾ ßî = ßÀ ++ { {UNITIZE(Qt::Key_Multi_key), 0x119e, 0x1175, 0, 0, 0}, 0x11a1 }, // U11a1 # ß¾ ßõ = ßÁ ++ { {UNITIZE(Qt::Key_Multi_key), 0x119e, 0x119e, 0, 0, 0}, 0x11a2 }, // U11a2 # ß¾ ß¾ = ß ++ { {UNITIZE(Qt::Key_Multi_key), 0x11a8, 0x11a8, 0, 0, 0}, 0x11a9 }, // U11a9 # ßàÈ ßàÈ = ßàÉ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11a8, 0x11af, 0, 0, 0}, 0x11c3 }, // U11c3 # ßàÈ ßàÏ = ßàã ++ { {UNITIZE(Qt::Key_Multi_key), 0x11a8, 0x11ba, 0, 0, 0}, 0x11aa }, // U11aa # ßàÈ ßàÚ = ßàÊ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11a8, 0x11ba, 0x11a8, 0, 0}, 0x11c4 }, // U11c4 # ßàÈ ßàÚ ßàÈ = ßàä ++ { {UNITIZE(Qt::Key_Multi_key), 0x11a8, 0x11e7, 0, 0, 0}, 0x11c4 }, // U11c4 # ßàÈ ßৠ= ßàä ++ { {UNITIZE(Qt::Key_Multi_key), 0x11aa, 0x11a8, 0, 0, 0}, 0x11c4 }, // U11c4 # ßàÊ ßàÈ = ßàä ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11a8, 0, 0, 0}, 0x11c5 }, // U11c5 # ßàË ßàÈ = ßàå ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11ae, 0, 0, 0}, 0x11c6 }, // U11c6 # ßàË ßàÎ = ßàæ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11ba, 0, 0, 0}, 0x11c7 }, // U11c7 # ßàË ßàÚ = ßàç ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11bd, 0, 0, 0}, 0x11ac }, // U11ac # ßàË ßàÝ = ßàÌ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11c0, 0, 0, 0}, 0x11c9 }, // U11c9 # ßàË ßàà = ßàé ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11c2, 0, 0, 0}, 0x11ad }, // U11ad # ßàË ßàâ = ßàÍ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ab, 0x11eb, 0, 0, 0}, 0x11c8 }, // U11c8 # ßàË ßà« = ßàè ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ae, 0x11a8, 0, 0, 0}, 0x11ca }, // U11ca # ßàÎ ßàÈ = ßàê ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ae, 0x11af, 0, 0, 0}, 0x11cb }, // U11cb # ßàÎ ßàÏ = ßàë ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11a8, 0, 0, 0}, 0x11b0 }, // U11b0 # ßàÏ ßàÈ = ßàÐ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11a8, 0x11ba, 0, 0}, 0x11cc }, // U11cc # ßàÏ ßàÈ ßàÚ = ßàì ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11aa, 0, 0, 0}, 0x11cc }, // U11cc # ßàÏ ßàÊ = ßàì ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11ab, 0, 0, 0}, 0x11cd }, // U11cd # ßàÏ ßàË = ßàí ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11ae, 0, 0, 0}, 0x11ce }, // U11ce # ßàÏ ßàÎ = ßàî ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11ae, 0x11c2, 0, 0}, 0x11cf }, // U11cf # ßàÏ ßàÎ ßàâ = ßàï ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11af, 0, 0, 0}, 0x11d0 }, // U11d0 # ßàÏ ßàÏ = ßàð ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b7, 0, 0, 0}, 0x11b1 }, // U11b1 # ßàÏ ßà× = ßàÑ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b7, 0x11a8, 0, 0}, 0x11d1 }, // U11d1 # ßàÏ ßà× ßàÈ = ßàñ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b7, 0x11ba, 0, 0}, 0x11d2 }, // U11d2 # ßàÏ ßà× ßàÚ = ßàò ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b8, 0, 0, 0}, 0x11b2 }, // U11b2 # ßàÏ ßàØ = ßàÒ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b8, 0x11ba, 0, 0}, 0x11d3 }, // U11d3 # ßàÏ ßàØ ßàÚ = ßàó ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b8, 0x11bc, 0, 0}, 0x11d5 }, // U11d5 # ßàÏ ßàØ ßàÜ = ßàõ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b8, 0x11c2, 0, 0}, 0x11d4 }, // U11d4 # ßàÏ ßàØ ßàâ = ßàô ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11b9, 0, 0, 0}, 0x11d3 }, // U11d3 # ßàÏ ßàÙ = ßàó ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11ba, 0, 0, 0}, 0x11b3 }, // U11b3 # ßàÏ ßàÚ = ßàÓ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11ba, 0x11ba, 0, 0}, 0x11d6 }, // U11d6 # ßàÏ ßàÚ ßàÚ = ßàö ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11bb, 0, 0, 0}, 0x11d6 }, // U11d6 # ßàÏ ßàÛ = ßàö ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11bf, 0, 0, 0}, 0x11d8 }, // U11d8 # ßàÏ ßàß = ßàø ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11c0, 0, 0, 0}, 0x11b4 }, // U11b4 # ßàÏ ßàà = ßàÔ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11c1, 0, 0, 0}, 0x11b5 }, // U11b5 # ßàÏ ßàá = ßàÕ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11c2, 0, 0, 0}, 0x11b6 }, // U11b6 # ßàÏ ßàâ = ßàÖ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11da, 0, 0, 0}, 0x11d1 }, // U11d1 # ßàÏ ßàú = ßàñ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11dd, 0, 0, 0}, 0x11d2 }, // U11d2 # ßàÏ ßàý = ßàò ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11e5, 0, 0, 0}, 0x11d4 }, // U11d4 # ßàÏ ßॠ= ßàô ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11e6, 0, 0, 0}, 0x11d5 }, // U11d5 # ßàÏ ßঠ= ßàõ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11eb, 0, 0, 0}, 0x11d7 }, // U11d7 # ßàÏ ßà« = ßà÷ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11af, 0x11f9, 0, 0, 0}, 0x11d9 }, // U11d9 # ßàÏ ß๠= ßàù ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b0, 0x11ba, 0, 0, 0}, 0x11cc }, // U11cc # ßàÐ ßàÚ = ßàì ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b1, 0x11a8, 0, 0, 0}, 0x11d1 }, // U11d1 # ßàÑ ßàÈ = ßàñ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b1, 0x11ba, 0, 0, 0}, 0x11d2 }, // U11d2 # ßàÑ ßàÚ = ßàò ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b2, 0x11ba, 0, 0, 0}, 0x11d3 }, // U11d3 # ßàÒ ßàÚ = ßàó ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b2, 0x11bc, 0, 0, 0}, 0x11d5 }, // U11d5 # ßàÒ ßàÜ = ßàõ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b2, 0x11c2, 0, 0, 0}, 0x11d4 }, // U11d4 # ßàÒ ßàâ = ßàô ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b3, 0x11ba, 0, 0, 0}, 0x11d6 }, // U11d6 # ßàÓ ßàÚ = ßàö ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11a8, 0, 0, 0}, 0x11da }, // U11da # ßà× ßàÈ = ßàú ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11af, 0, 0, 0}, 0x11db }, // U11db # ßà× ßàÏ = ßàû ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11b8, 0, 0, 0}, 0x11dc }, // U11dc # ßà× ßàØ = ßàü ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11ba, 0, 0, 0}, 0x11dd }, // U11dd # ßà× ßàÚ = ßàý ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11ba, 0x11ba, 0, 0}, 0x11de }, // U11de # ßà× ßàÚ ßàÚ = ßàþ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11bb, 0, 0, 0}, 0x11de }, // U11de # ßà× ßàÛ = ßàþ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11bc, 0, 0, 0}, 0x11e2 }, // U11e2 # ßà× ßàÜ = ßࢠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11be, 0, 0, 0}, 0x11e0 }, // U11e0 # ßà× ßàÞ = ßà  ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11c2, 0, 0, 0}, 0x11e1 }, // U11e1 # ßà× ßàâ = ßà¡ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b7, 0x11eb, 0, 0, 0}, 0x11df }, // U11df # ßà× ßà« = ßàÿ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b8, 0x11af, 0, 0, 0}, 0x11e3 }, // U11e3 # ßàØ ßàÏ = ß࣠++ { {UNITIZE(Qt::Key_Multi_key), 0x11b8, 0x11ba, 0, 0, 0}, 0x11b9 }, // U11b9 # ßàØ ßàÚ = ßàÙ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b8, 0x11bc, 0, 0, 0}, 0x11e6 }, // U11e6 # ßàØ ßàÜ = ßঠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b8, 0x11c1, 0, 0, 0}, 0x11e4 }, // U11e4 # ßàØ ßàá = ßठ++ { {UNITIZE(Qt::Key_Multi_key), 0x11b8, 0x11c2, 0, 0, 0}, 0x11e5 }, // U11e5 # ßàØ ßàâ = ßॠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ba, 0x11a8, 0, 0, 0}, 0x11e7 }, // U11e7 # ßàÚ ßàÈ = ßৠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ba, 0x11ae, 0, 0, 0}, 0x11e8 }, // U11e8 # ßàÚ ßàÎ = ßਠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ba, 0x11af, 0, 0, 0}, 0x11e9 }, // U11e9 # ßàÚ ßàÏ = ßà© ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ba, 0x11b8, 0, 0, 0}, 0x11ea }, // U11ea # ßàÚ ßàØ = ßઠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ba, 0x11ba, 0, 0, 0}, 0x11bb }, // U11bb # ßàÚ ßàÚ = ßàÛ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11bc, 0x11a8, 0, 0, 0}, 0x11ec }, // U11ec # ßàÜ ßàÈ = ßଠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11bc, 0x11a8, 0x11a8, 0, 0}, 0x11ed }, // U11ed # ßàÜ ßàÈ ßàÈ = ßà­ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11bc, 0x11a9, 0, 0, 0}, 0x11ed }, // U11ed # ßàÜ ßàÉ = ßà­ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11bc, 0x11bc, 0, 0, 0}, 0x11ee }, // U11ee # ßàÜ ßàÜ = ßà® ++ { {UNITIZE(Qt::Key_Multi_key), 0x11bc, 0x11bf, 0, 0, 0}, 0x11ef }, // U11ef # ßàÜ ßàß = ß௠++ { {UNITIZE(Qt::Key_Multi_key), 0x11c1, 0x11b8, 0, 0, 0}, 0x11f3 }, // U11f3 # ßàá ßàØ = ßà³ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11c1, 0x11bc, 0, 0, 0}, 0x11f4 }, // U11f4 # ßàá ßàÜ = ßà´ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11c2, 0x11ab, 0, 0, 0}, 0x11f5 }, // U11f5 # ßàâ ßàË = ßൠ++ { {UNITIZE(Qt::Key_Multi_key), 0x11c2, 0x11af, 0, 0, 0}, 0x11f6 }, // U11f6 # ßàâ ßàÏ = ßච++ { {UNITIZE(Qt::Key_Multi_key), 0x11c2, 0x11b7, 0, 0, 0}, 0x11f7 }, // U11f7 # ßàâ ßà× = ßà· ++ { {UNITIZE(Qt::Key_Multi_key), 0x11c2, 0x11b8, 0, 0, 0}, 0x11f8 }, // U11f8 # ßàâ ßàØ = ßภ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ce, 0x11c2, 0, 0, 0}, 0x11cf }, // U11cf # ßàî ßàâ = ßàï ++ { {UNITIZE(Qt::Key_Multi_key), 0x11dd, 0x11ba, 0, 0, 0}, 0x11de }, // U11de # ßàý ßàÚ = ßàþ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11ec, 0x11a8, 0, 0, 0}, 0x11ed }, // U11ed # ßଠßàÈ = ßà­ ++ { {UNITIZE(Qt::Key_Multi_key), 0x11f0, 0x11ba, 0, 0, 0}, 0x11f1 }, // U11f1 # ßà° ßàÚ = ßà± ++ { {UNITIZE(Qt::Key_Multi_key), 0x11f0, 0x11eb, 0, 0, 0}, 0x11f2 }, // U11f2 # ßà° ßà« = ßಠ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d157, 0x1d165, 0, 0, 0}, 0xd15e }, // U1D15E # MUSICAL SYMBOL HALF NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0, 0, 0}, 0xd15f }, // U1D15F # MUSICAL SYMBOL QUARTER NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0x1d16e, 0, 0}, 0xd160 }, // U1D160 # MUSICAL SYMBOL EIGHTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0x1d16f, 0, 0}, 0xd161 }, // U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0x1d170, 0, 0}, 0xd162 }, // U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0x1d171, 0, 0}, 0xd163 }, // U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d158, 0x1d165, 0x1d172, 0, 0}, 0xd164 }, // U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d15f, 0x1d16e, 0, 0, 0}, 0xd160 }, // U1D160 # MUSICAL SYMBOL EIGHTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d15f, 0x1d16f, 0, 0, 0}, 0xd161 }, // U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d15f, 0x1d170, 0, 0, 0}, 0xd162 }, // U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d15f, 0x1d171, 0, 0, 0}, 0xd163 }, // U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d15f, 0x1d172, 0, 0, 0}, 0xd164 }, // U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1b9, 0x1d165, 0, 0, 0}, 0xd1bb }, // U1D1BB # MUSICAL SYMBOL MINIMA ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1b9, 0x1d165, 0x1d16e, 0, 0}, 0xd1bd }, // U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1b9, 0x1d165, 0x1d16f, 0, 0}, 0xd1bf }, // U1D1BF # MUSICAL SYMBOL FUSA WHITE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1ba, 0x1d165, 0, 0, 0}, 0xd1bc }, // U1D1BC # MUSICAL SYMBOL MINIMA BLACK ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1ba, 0x1d165, 0x1d16e, 0, 0}, 0xd1be }, // U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1ba, 0x1d165, 0x1d16f, 0, 0}, 0xd1c0 }, // U1D1C0 # MUSICAL SYMBOL FUSA BLACK ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1bb, 0x1d16e, 0, 0, 0}, 0xd1bd }, // U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1bb, 0x1d16f, 0, 0, 0}, 0xd1bf }, // U1D1BF # MUSICAL SYMBOL FUSA WHITE ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1bc, 0x1d16e, 0, 0, 0}, 0xd1be }, // U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1d1bc, 0x1d16f, 0, 0, 0}, 0xd1c0 }, // U1D1C0 # MUSICAL SYMBOL FUSA BLACK ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x0000, 0, 0, 0}, 0x1fcd }, // U1FCD # GREEK PSILI AND VARIA ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x0000, 0, 0, 0}, 0x1fce }, // U1FCE # GREEK PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x0027, 0, 0, 0}, 0x1fce }, // U1FCE # GREEK PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x0060, 0, 0, 0}, 0x1fcd }, // U1FCD # GREEK PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x007e, 0, 0, 0}, 0x1fcf }, // U1FCF # GREEK PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x00b4, 0, 0, 0}, 0x1fce }, // U1FCE # GREEK PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, 0x0342, 0, 0, 0}, 0x1fcf }, // U1FCF # GREEK PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, UNITIZE(Qt::Key_Dead_Grave), 0, 0, 0}, 0x1fcd }, // U1FCD # GREEK PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, UNITIZE(Qt::Key_Dead_Acute), 0, 0, 0}, 0x1fce }, // U1FCE # GREEK PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1fbf, UNITIZE(Qt::Key_Dead_Tilde), 0, 0, 0}, 0x1fcf }, // U1FCF # GREEK PSILI AND PERISPOMENI ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x0000, 0, 0, 0}, 0x1fdd }, // U1FDD # GREEK DASIA AND VARIA ++// /* broken */ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x0000, 0, 0, 0}, 0x1fde }, // U1FDE # GREEK DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x0027, 0, 0, 0}, 0x1fde }, // U1FDE # GREEK DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x0060, 0, 0, 0}, 0x1fdd }, // U1FDD # GREEK DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x007e, 0, 0, 0}, 0x1fdf }, // U1FDF # GREEK DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x00b4, 0, 0, 0}, 0x1fde }, // U1FDE # GREEK DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, 0x0342, 0, 0, 0}, 0x1fdf }, // U1FDF # GREEK DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, UNITIZE(Qt::Key_Dead_Grave), 0, 0, 0}, 0x1fdd }, // U1FDD # GREEK DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, UNITIZE(Qt::Key_Dead_Acute), 0, 0, 0}, 0x1fde }, // U1FDE # GREEK DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Multi_key), 0x1ffe, UNITIZE(Qt::Key_Dead_Tilde), 0, 0, 0}, 0x1fdf }, // U1FDF # GREEK DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Multi_key), 0x2203, 0x0338, 0, 0, 0}, 0x2204 }, // U2204 # THERE DOES NOT EXIST ++ { {UNITIZE(Qt::Key_Multi_key), 0x2208, 0x0338, 0, 0, 0}, 0x2209 }, // U2209 # NOT AN ELEMENT OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x220b, 0x0338, 0, 0, 0}, 0x220c }, // U220C # DOES NOT CONTAIN AS MEMBER ++ { {UNITIZE(Qt::Key_Multi_key), 0x2223, 0x0338, 0, 0, 0}, 0x2224 }, // U2224 # DOES NOT DIVIDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x2225, 0x0338, 0, 0, 0}, 0x2226 }, // U2226 # NOT PARALLEL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x223c, 0x0338, 0, 0, 0}, 0x2241 }, // U2241 # NOT TILDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x223c, 0x0338, 0, 0, 0}, 0x2247 }, // U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2243, 0x0338, 0, 0, 0}, 0x2244 }, // U2244 # NOT ASYMPTOTICALLY EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2248, 0x0338, 0, 0, 0}, 0x2249 }, // U2249 # NOT ALMOST EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x224d, 0x0338, 0, 0, 0}, 0x226d }, // U226D # NOT EQUIVALENT TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2261, 0x0338, 0, 0, 0}, 0x2262 }, // U2262 # NOT IDENTICAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2264, 0x0338, 0, 0, 0}, 0x2270 }, // U2270 # NEITHER LESS-THAN NOR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2265, 0x0338, 0, 0, 0}, 0x2271 }, // U2271 # NEITHER GREATER-THAN NOR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2272, 0x0338, 0, 0, 0}, 0x2274 }, // U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2273, 0x0338, 0, 0, 0}, 0x2275 }, // U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2276, 0x0338, 0, 0, 0}, 0x2278 }, // U2278 # NEITHER LESS-THAN NOR GREATER-THAN ++ { {UNITIZE(Qt::Key_Multi_key), 0x2277, 0x0338, 0, 0, 0}, 0x2279 }, // U2279 # NEITHER GREATER-THAN NOR LESS-THAN ++ { {UNITIZE(Qt::Key_Multi_key), 0x227a, 0x0338, 0, 0, 0}, 0x2280 }, // U2280 # DOES NOT PRECEDE ++ { {UNITIZE(Qt::Key_Multi_key), 0x227b, 0x0338, 0, 0, 0}, 0x2281 }, // U2281 # DOES NOT SUCCEED ++ { {UNITIZE(Qt::Key_Multi_key), 0x227c, 0x0338, 0, 0, 0}, 0x22e0 }, // U22E0 # DOES NOT PRECEDE OR EQUAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x227d, 0x0338, 0, 0, 0}, 0x22e1 }, // U22E1 # DOES NOT SUCCEED OR EQUAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x2282, 0x0338, 0, 0, 0}, 0x2284 }, // U2284 # NOT A SUBSET OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x2282, 0x0338, 0, 0, 0}, 0x2284 }, // U2284 # NOT A SUBSET OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x2283, 0x0338, 0, 0, 0}, 0x2285 }, // U2285 # NOT A SUPERSET OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x2283, 0x0338, 0, 0, 0}, 0x2285 }, // U2285 # NOT A SUPERSET OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x2286, 0x0338, 0, 0, 0}, 0x2288 }, // U2288 # NEITHER A SUBSET OF NOR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2287, 0x0338, 0, 0, 0}, 0x2289 }, // U2289 # NEITHER A SUPERSET OF NOR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2291, 0x0338, 0, 0, 0}, 0x22e2 }, // U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x2292, 0x0338, 0, 0, 0}, 0x22e3 }, // U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x22a3, 0x0338, 0, 0, 0}, 0x22ac }, // U22AC # DOES NOT PROVE ++ { {UNITIZE(Qt::Key_Multi_key), 0x22a8, 0x0338, 0, 0, 0}, 0x22ad }, // U22AD # NOT TRUE ++ { {UNITIZE(Qt::Key_Multi_key), 0x22a9, 0x0338, 0, 0, 0}, 0x22ae }, // U22AE # DOES NOT FORCE ++ { {UNITIZE(Qt::Key_Multi_key), 0x22ab, 0x0338, 0, 0, 0}, 0x22af }, // U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE ++ { {UNITIZE(Qt::Key_Multi_key), 0x22b2, 0x0338, 0, 0, 0}, 0x22ea }, // U22EA # NOT NORMAL SUBGROUP OF ++ { {UNITIZE(Qt::Key_Multi_key), 0x22b3, 0x0338, 0, 0, 0}, 0x22eb }, // U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP ++ { {UNITIZE(Qt::Key_Multi_key), 0x22b4, 0x0338, 0, 0, 0}, 0x22ec }, // U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO ++ { {UNITIZE(Qt::Key_Multi_key), 0x22b5, 0x0338, 0, 0, 0}, 0x22ed }, // U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL ++ { {UNITIZE(Qt::Key_Multi_key), 0x2add, 0x0338, 0, 0, 0}, 0x2adc }, // U2ADC # FORKING ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Grave), 0x0000, 0, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Grave), 0x0000, 0, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Grave), 0x0000, 0, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Grave), 0x0000, 0, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0020, 0, 0, 0, 0}, 0x0060 }, // grave ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0041, 0, 0, 0, 0}, 0x00c0 }, // U00C0 # LATIN CAPITAL LETTER A WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0045, 0, 0, 0, 0}, 0x00c8 }, // U00C8 # LATIN CAPITAL LETTER E WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0049, 0, 0, 0, 0}, 0x00cc }, // U00CC # LATIN CAPITAL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x004e, 0, 0, 0, 0}, 0x01f8 }, // U01F8 # LATIN CAPITAL LETTER N WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x004f, 0, 0, 0, 0}, 0x00d2 }, // U00D2 # LATIN CAPITAL LETTER O WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0055, 0, 0, 0, 0}, 0x00d9 }, // U00D9 # LATIN CAPITAL LETTER U WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0057, 0, 0, 0, 0}, 0x1e80 }, // U1E80 # LATIN CAPITAL LETTER W WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0059, 0, 0, 0, 0}, 0x1ef2 }, // U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0061, 0, 0, 0, 0}, 0x00e0 }, // U00E0 # LATIN SMALL LETTER A WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0065, 0, 0, 0, 0}, 0x00e8 }, // U00E8 # LATIN SMALL LETTER E WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0069, 0, 0, 0, 0}, 0x00ec }, // U00EC # LATIN SMALL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x006e, 0, 0, 0, 0}, 0x01f9 }, // U01F9 # LATIN SMALL LETTER N WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x006f, 0, 0, 0, 0}, 0x00f2 }, // U00F2 # LATIN SMALL LETTER O WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0075, 0, 0, 0, 0}, 0x00f9 }, // U00F9 # LATIN SMALL LETTER U WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0077, 0, 0, 0, 0}, 0x1e81 }, // U1E81 # LATIN SMALL LETTER W WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0079, 0, 0, 0, 0}, 0x1ef3 }, // U1EF3 # LATIN SMALL LETTER Y WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00c2, 0, 0, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00ca, 0, 0, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00d4, 0, 0, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00dc, 0, 0, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00e2, 0, 0, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00ea, 0, 0, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00f4, 0, 0, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x00fc, 0, 0, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0102, 0, 0, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0103, 0, 0, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0112, 0, 0, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0113, 0, 0, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x014c, 0, 0, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x014d, 0, 0, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x01A0, 0, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x01A1, 0, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x01AF, 0, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x01B0, 0, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0391, 0, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0395, 0, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0397, 0, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0399, 0, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x039f, 0, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03a9, 0, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b1, 0, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b5, 0, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b7, 0, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b9, 0, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03bf, 0, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03c5, 0, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03c9, 0, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0391, 0, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0395, 0, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0397, 0, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0399, 0, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x039f, 0, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03a5, 0, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03a9, 0, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b1, 0, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b5, 0, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b7, 0, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b9, 0, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03bf, 0, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03c5, 0, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03c9, 0, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0391, 0, 0, 0, 0}, 0x1fba }, // U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0395, 0, 0, 0, 0}, 0x1fc8 }, // U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0397, 0, 0, 0, 0}, 0x1fca }, // U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0399, 0, 0, 0, 0}, 0x1fda }, // U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x039f, 0, 0, 0, 0}, 0x1ff8 }, // U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03a5, 0, 0, 0, 0}, 0x1fea }, // U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03a9, 0, 0, 0, 0}, 0x1ffa }, // U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03b1, 0, 0, 0, 0}, 0x1f70 }, // U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03b5, 0, 0, 0, 0}, 0x1f72 }, // U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03b7, 0, 0, 0, 0}, 0x1f74 }, // U1F74 # GREEK SMALL LETTER ETA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03b9, 0, 0, 0, 0}, 0x1f76 }, // U1F76 # GREEK SMALL LETTER IOTA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03bf, 0, 0, 0, 0}, 0x1f78 }, // U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03c5, 0, 0, 0, 0}, 0x1f7a }, // U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03c9, 0, 0, 0, 0}, 0x1f7c }, // U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03ca, 0, 0, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x03cb, 0, 0, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0415, 0, 0, 0, 0}, 0x0400 }, // U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0418, 0, 0, 0, 0}, 0x040d }, // U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0435, 0, 0, 0, 0}, 0x0450 }, // U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x0438, 0, 0, 0, 0}, 0x045d }, // U045D # CYRILLIC SMALL LETTER I WITH GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f00, 0, 0, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f01, 0, 0, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f08, 0, 0, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f09, 0, 0, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f10, 0, 0, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f11, 0, 0, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f18, 0, 0, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f19, 0, 0, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f20, 0, 0, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f21, 0, 0, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f28, 0, 0, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f29, 0, 0, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f30, 0, 0, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f31, 0, 0, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f38, 0, 0, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f39, 0, 0, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f40, 0, 0, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f41, 0, 0, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f48, 0, 0, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f49, 0, 0, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f50, 0, 0, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f51, 0, 0, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f59, 0, 0, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f60, 0, 0, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f61, 0, 0, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f68, 0, 0, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), 0x1f69, 0, 0, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0b }, // U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0395, 0, 0}, 0x1f1b }, // U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2b }, // U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3b }, // U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x039f, 0, 0}, 0x1f4b }, // U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5b }, // U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6b }, // U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f03 }, // U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b5, 0, 0}, 0x1f13 }, // U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f23 }, // U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f33 }, // U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03bf, 0, 0}, 0x1f43 }, // U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f53 }, // U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f63 }, // U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0a }, // U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0395, 0, 0}, 0x1f1a }, // U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2a }, // U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3a }, // U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x039f, 0, 0}, 0x1f4a }, // U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6a }, // U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f02 }, // U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b5, 0, 0}, 0x1f12 }, // U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f22 }, // U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f32 }, // U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03bf, 0, 0}, 0x1f42 }, // U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f52 }, // U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f62 }, // U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0045, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x004f, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0065, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x006f, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Grave), 0, 0, 0, 0}, 0x0060 }, // grave ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea6 }, // U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec0 }, // U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed2 }, // U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea7 }, // U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec1 }, // U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed3 }, // U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0, 0}, 0x1e14 }, // U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0, 0}, 0x1e50 }, // U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0, 0}, 0x1e15 }, // U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0, 0}, 0x1e51 }, // U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb0 }, // U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb1 }, // U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01db }, // U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01dc }, // U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x1fd2 }, // U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x1fe2 }, // U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1edc }, // U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eea }, // U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edd }, // U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE ++ { {UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eeb }, // U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0x004f, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0x0055, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0x006f, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), 0x0000, 0x0075, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0020, 0, 0, 0, 0}, 0x0027 }, // apostrophe ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0041, 0, 0, 0, 0}, 0x00c1 }, // U00C1 # LATIN CAPITAL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0043, 0, 0, 0, 0}, 0x0106 }, // U0106 # LATIN CAPITAL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0045, 0, 0, 0, 0}, 0x00c9 }, // U00C9 # LATIN CAPITAL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0047, 0, 0, 0, 0}, 0x01f4 }, // U01F4 # LATIN CAPITAL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0049, 0, 0, 0, 0}, 0x00cd }, // U00CD # LATIN CAPITAL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x004b, 0, 0, 0, 0}, 0x1e30 }, // U1E30 # LATIN CAPITAL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x004c, 0, 0, 0, 0}, 0x0139 }, // U0139 # LATIN CAPITAL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x004d, 0, 0, 0, 0}, 0x1e3e }, // U1E3E # LATIN CAPITAL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x004e, 0, 0, 0, 0}, 0x0143 }, // U0143 # LATIN CAPITAL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x004f, 0, 0, 0, 0}, 0x00d3 }, // U00D3 # LATIN CAPITAL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0050, 0, 0, 0, 0}, 0x1e54 }, // U1E54 # LATIN CAPITAL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0052, 0, 0, 0, 0}, 0x0154 }, // U0154 # LATIN CAPITAL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0053, 0, 0, 0, 0}, 0x015a }, // U015A # LATIN CAPITAL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0055, 0, 0, 0, 0}, 0x00da }, // U00DA # LATIN CAPITAL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0057, 0, 0, 0, 0}, 0x1e82 }, // U1E82 # LATIN CAPITAL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0059, 0, 0, 0, 0}, 0x00dd }, // U00DD # LATIN CAPITAL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x005a, 0, 0, 0, 0}, 0x0179 }, // U0179 # LATIN CAPITAL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0061, 0, 0, 0, 0}, 0x00e1 }, // U00E1 # LATIN SMALL LETTER A WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0063, 0, 0, 0, 0}, 0x0107 }, // U0107 # LATIN SMALL LETTER C WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0065, 0, 0, 0, 0}, 0x00e9 }, // U00E9 # LATIN SMALL LETTER E WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0067, 0, 0, 0, 0}, 0x01f5 }, // U01F5 # LATIN SMALL LETTER G WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0069, 0, 0, 0, 0}, 0x00ed }, // U00ED # LATIN SMALL LETTER I WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x006b, 0, 0, 0, 0}, 0x1e31 }, // U1E31 # LATIN SMALL LETTER K WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x006c, 0, 0, 0, 0}, 0x013a }, // U013A # LATIN SMALL LETTER L WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x006d, 0, 0, 0, 0}, 0x1e3f }, // U1E3F # LATIN SMALL LETTER M WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x006e, 0, 0, 0, 0}, 0x0144 }, // U0144 # LATIN SMALL LETTER N WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x006f, 0, 0, 0, 0}, 0x00f3 }, // U00F3 # LATIN SMALL LETTER O WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0070, 0, 0, 0, 0}, 0x1e55 }, // U1E55 # LATIN SMALL LETTER P WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0072, 0, 0, 0, 0}, 0x0155 }, // U0155 # LATIN SMALL LETTER R WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0073, 0, 0, 0, 0}, 0x015b }, // U015B # LATIN SMALL LETTER S WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0075, 0, 0, 0, 0}, 0x00fa }, // U00FA # LATIN SMALL LETTER U WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0077, 0, 0, 0, 0}, 0x1e83 }, // U1E83 # LATIN SMALL LETTER W WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0079, 0, 0, 0, 0}, 0x00fd }, // U00FD # LATIN SMALL LETTER Y WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x007a, 0, 0, 0, 0}, 0x017a }, // U017A # LATIN SMALL LETTER Z WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00c2, 0, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00c5, 0, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00c6, 0, 0, 0, 0}, 0x01fc }, // U01FC # LATIN CAPITAL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00c7, 0, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00ca, 0, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00cf, 0, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00d4, 0, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00d5, 0, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00d8, 0, 0, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00dc, 0, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00e2, 0, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00e5, 0, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00e6, 0, 0, 0, 0}, 0x01fd }, // U01FD # LATIN SMALL LETTER AE WITH ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00e7, 0, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00ea, 0, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00ef, 0, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00f4, 0, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00f5, 0, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00f8, 0, 0, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x00fc, 0, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0102, 0, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0103, 0, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0112, 0, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0113, 0, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x014c, 0, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x014d, 0, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0168, 0, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0169, 0, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x01A0, 0, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x01A1, 0, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x01AF, 0, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x01B0, 0, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0391, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0395, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0397, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0399, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x039f, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03a9, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b1, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b5, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b7, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b9, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03bf, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03c5, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03c9, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0391, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0395, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0397, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0399, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x039f, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03a5, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03a9, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b1, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b5, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b7, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b9, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03bf, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03c5, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03c9, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0391, 0, 0, 0, 0}, 0x0386 }, // U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0395, 0, 0, 0, 0}, 0x0388 }, // U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0397, 0, 0, 0, 0}, 0x0389 }, // U0389 # GREEK CAPITAL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0399, 0, 0, 0, 0}, 0x038a }, // U038A # GREEK CAPITAL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x039f, 0, 0, 0, 0}, 0x038c }, // U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03a5, 0, 0, 0, 0}, 0x038e }, // U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03a9, 0, 0, 0, 0}, 0x038f }, // U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03b1, 0, 0, 0, 0}, 0x03ac }, // U03AC # GREEK SMALL LETTER ALPHA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03b5, 0, 0, 0, 0}, 0x03ad }, // U03AD # GREEK SMALL LETTER EPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03b7, 0, 0, 0, 0}, 0x03ae }, // U03AE # GREEK SMALL LETTER ETA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03b9, 0, 0, 0, 0}, 0x03af }, // U03AF # GREEK SMALL LETTER IOTA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03bf, 0, 0, 0, 0}, 0x03cc }, // U03CC # GREEK SMALL LETTER OMICRON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03c5, 0, 0, 0, 0}, 0x03cd }, // U03CD # GREEK SMALL LETTER UPSILON WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03c9, 0, 0, 0, 0}, 0x03ce }, // U03CE # GREEK SMALL LETTER OMEGA WITH TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03ca, 0, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x03cb, 0, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0413, 0, 0, 0, 0}, 0x0403 }, // U0403 # CYRILLIC CAPITAL LETTER GJE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x041a, 0, 0, 0, 0}, 0x040c }, // U040C # CYRILLIC CAPITAL LETTER KJE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x0433, 0, 0, 0, 0}, 0x0453 }, // U0453 # CYRILLIC SMALL LETTER GJE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x043a, 0, 0, 0, 0}, 0x045c }, // U045C # CYRILLIC SMALL LETTER KJE ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f00, 0, 0, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f01, 0, 0, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f08, 0, 0, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f09, 0, 0, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f10, 0, 0, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f11, 0, 0, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f18, 0, 0, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f19, 0, 0, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f20, 0, 0, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f21, 0, 0, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f28, 0, 0, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f29, 0, 0, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f30, 0, 0, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f31, 0, 0, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f38, 0, 0, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f39, 0, 0, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f40, 0, 0, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f41, 0, 0, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f48, 0, 0, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f49, 0, 0, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f50, 0, 0, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f51, 0, 0, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f59, 0, 0, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f60, 0, 0, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f61, 0, 0, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f68, 0, 0, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), 0x1f69, 0, 0, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0000, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0000, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0049, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0069, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0d }, // U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0395, 0, 0}, 0x1f1d }, // U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2d }, // U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3d }, // U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x039f, 0, 0}, 0x1f4d }, // U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5d }, // U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6d }, // U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f05 }, // U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b5, 0, 0}, 0x1f15 }, // U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f25 }, // U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f35 }, // U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03bf, 0, 0}, 0x1f45 }, // U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f55 }, // U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f65 }, // U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0c }, // U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0395, 0, 0}, 0x1f1c }, // U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2c }, // U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3c }, // U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x039f, 0, 0}, 0x1f4c }, // U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6c }, // U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f04 }, // U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b5, 0, 0}, 0x1f14 }, // U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f24 }, // U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f34 }, // U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03bf, 0, 0}, 0x1f44 }, // U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f54 }, // U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f64 }, // U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0043, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0063, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002f, 0x004f, 0, 0}, 0x01fe }, // U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x002f, 0x006f, 0, 0}, 0x01ff }, // U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0041, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x006f, 0x0061, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004f, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0055, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006f, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0075, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0045, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x004f, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0065, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x006f, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Acute), 0, 0, 0, 0}, 0x00b4 }, // acute ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea4 }, // U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ebe }, // U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed0 }, // U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea5 }, // U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ebf }, // U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed1 }, // U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0, 0}, 0x1e4c }, // U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Tilde), 0x0055, 0, 0, 0}, 0x1e78 }, // U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0, 0}, 0x1e4d }, // U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Tilde), 0x0075, 0, 0, 0}, 0x1e79 }, // U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0, 0}, 0x1e16 }, // U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0, 0}, 0x1e52 }, // U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0, 0}, 0x1e17 }, // U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0, 0}, 0x1e53 }, // U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eae }, // U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eaf }, // U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0049, 0, 0, 0}, 0x1e2e }, // U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01d7 }, // U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0069, 0, 0, 0}, 0x1e2f }, // U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01d8 }, // U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x0390 }, // U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x03b0 }, // U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Abovering), 0x0041, 0, 0, 0}, 0x01fa }, // U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Abovering), 0x0061, 0, 0, 0}, 0x01fb }, // U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Cedilla), 0x0043, 0, 0, 0}, 0x1e08 }, // U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Cedilla), 0x0063, 0, 0, 0}, 0x1e09 }, // U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1eda }, // U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1ee8 }, // U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edb }, // U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE ++ { {UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1ee9 }, // U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x207a }, // U207A # SUPERSCRIPT PLUS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x207c }, // U207C # SUPERSCRIPT EQUALS SIGN ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2079 }, // U2079 # SUPERSCRIPT NINE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x00b3 }, // U00B3 # SUPERSCRIPT THREE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x00b9 }, // U00B9 # SUPERSCRIPT ONE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2070 }, // U2070 # SUPERSCRIPT ZERO ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2078 }, // U2078 # SUPERSCRIPT EIGHT ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2074 }, // U2074 # SUPERSCRIPT FOUR ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2075 }, // U2075 # SUPERSCRIPT FIVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2077 }, // U2077 # SUPERSCRIPT SEVEN ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0, 0, 0, 0}, 0x2076 }, // U2076 # SUPERSCRIPT SIX ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x0041, 0, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x0045, 0, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x004f, 0, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x0061, 0, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x0065, 0, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0000, 0x006f, 0, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0020, 0, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0028, 0, 0, 0, 0}, 0x207d }, // U207D # SUPERSCRIPT LEFT PARENTHESIS ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0029, 0, 0, 0, 0}, 0x207e }, // U207E # SUPERSCRIPT RIGHT PARENTHESIS ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x002b, 0, 0, 0, 0}, 0x207a }, // U207A # SUPERSCRIPT PLUS SIGN ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0030, 0, 0, 0, 0}, 0x2070 }, // U2070 # SUPERSCRIPT ZERO ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0031, 0, 0, 0, 0}, 0x00b9 }, // U00B9 # SUPERSCRIPT ONE ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0032, 0, 0, 0, 0}, 0x00b2 }, // U00B2 # SUPERSCRIPT TWO ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0033, 0, 0, 0, 0}, 0x00b3 }, // U00B3 # SUPERSCRIPT THREE ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0034, 0, 0, 0, 0}, 0x2074 }, // U2074 # SUPERSCRIPT FOUR ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0035, 0, 0, 0, 0}, 0x2075 }, // U2075 # SUPERSCRIPT FIVE ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0036, 0, 0, 0, 0}, 0x2076 }, // U2076 # SUPERSCRIPT SIX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0037, 0, 0, 0, 0}, 0x2077 }, // U2077 # SUPERSCRIPT SEVEN ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0038, 0, 0, 0, 0}, 0x2078 }, // U2078 # SUPERSCRIPT EIGHT ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0039, 0, 0, 0, 0}, 0x2079 }, // U2079 # SUPERSCRIPT NINE ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x003d, 0, 0, 0, 0}, 0x207c }, // U207C # SUPERSCRIPT EQUALS SIGN ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0, 0}, 0x00c2 }, // U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0043, 0, 0, 0, 0}, 0x0108 }, // U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0, 0}, 0x00ca }, // U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0047, 0, 0, 0, 0}, 0x011c }, // U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0048, 0, 0, 0, 0}, 0x0124 }, // U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0049, 0, 0, 0, 0}, 0x00ce }, // U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x004a, 0, 0, 0, 0}, 0x0134 }, // U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0, 0}, 0x00d4 }, // U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0053, 0, 0, 0, 0}, 0x015c }, // U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0055, 0, 0, 0, 0}, 0x00db }, // U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0057, 0, 0, 0, 0}, 0x0174 }, // U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0059, 0, 0, 0, 0}, 0x0176 }, // U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x005a, 0, 0, 0, 0}, 0x1e90 }, // U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0, 0}, 0x00e2 }, // U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0063, 0, 0, 0, 0}, 0x0109 }, // U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0, 0}, 0x00ea }, // U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0067, 0, 0, 0, 0}, 0x011d }, // U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0068, 0, 0, 0, 0}, 0x0125 }, // U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0069, 0, 0, 0, 0}, 0x00ee }, // U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x006a, 0, 0, 0, 0}, 0x0135 }, // U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0, 0}, 0x00f4 }, // U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0073, 0, 0, 0, 0}, 0x015d }, // U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0075, 0, 0, 0, 0}, 0x00fb }, // U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0077, 0, 0, 0, 0}, 0x0175 }, // U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x0079, 0, 0, 0, 0}, 0x0177 }, // U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x007a, 0, 0, 0, 0}, 0x1e91 }, // U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1ea0, 0, 0, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1ea1, 0, 0, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1eb8, 0, 0, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1eb9, 0, 0, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1ecc, 0, 0, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x1ecd, 0, 0, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x2212, 0, 0, 0, 0}, 0x207b }, // U207B # SUPERSCRIPT MINUS ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e00, 0, 0, 0, 0}, 0x3192 }, // U3192 # IDEOGRAPHIC ANNOTATION ONE MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e01, 0, 0, 0, 0}, 0x319c }, // U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e09, 0, 0, 0, 0}, 0x3194 }, // U3194 # IDEOGRAPHIC ANNOTATION THREE MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e0a, 0, 0, 0, 0}, 0x3196 }, // U3196 # IDEOGRAPHIC ANNOTATION TOP MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e0b, 0, 0, 0, 0}, 0x3198 }, // U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e19, 0, 0, 0, 0}, 0x319b }, // U319B # IDEOGRAPHIC ANNOTATION THIRD MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e2d, 0, 0, 0, 0}, 0x3197 }, // U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e59, 0, 0, 0, 0}, 0x319a }, // U319A # IDEOGRAPHIC ANNOTATION SECOND MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4e8c, 0, 0, 0, 0}, 0x3193 }, // U3193 # IDEOGRAPHIC ANNOTATION TWO MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x4eba, 0, 0, 0, 0}, 0x319f }, // U319F # IDEOGRAPHIC ANNOTATION MAN MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x56db, 0, 0, 0, 0}, 0x3195 }, // U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x5730, 0, 0, 0, 0}, 0x319e }, // U319E # IDEOGRAPHIC ANNOTATION EARTH MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x5929, 0, 0, 0, 0}, 0x319d }, // U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), 0x7532, 0, 0, 0, 0}, 0x3199 }, // U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0041, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0045, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004f, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0061, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0065, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006f, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0053, 0x004d, 0, 0}, 0x2120 }, // U2120 # SERVICE MARK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x0054, 0x004d, 0, 0}, 0x2122 }, // U2122 # TRADE MARK SIGN ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0061, 0, 0}, 0x00aa }, // U00AA # FEMININE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0061, 0, 0}, 0x00aa }, // U00AA # FEMININE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0068, 0, 0}, 0x02b0 }, // U02B0 # MODIFIER LETTER SMALL H ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0068, 0, 0}, 0x02b0 }, // U02B0 # MODIFIER LETTER SMALL H ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0069, 0, 0}, 0x2071 }, // U2071 # SUPERSCRIPT LATIN SMALL LETTER I ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0069, 0, 0}, 0x2071 }, // U2071 # SUPERSCRIPT LATIN SMALL LETTER I ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006a, 0, 0}, 0x02b2 }, // U02B2 # MODIFIER LETTER SMALL J ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006a, 0, 0}, 0x02b2 }, // U02B2 # MODIFIER LETTER SMALL J ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006c, 0, 0}, 0x02e1 }, // U02E1 # MODIFIER LETTER SMALL L ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006c, 0, 0}, 0x02e1 }, // U02E1 # MODIFIER LETTER SMALL L ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006e, 0, 0}, 0x207f }, // U207F # SUPERSCRIPT LATIN SMALL LETTER N ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006e, 0, 0}, 0x207f }, // U207F # SUPERSCRIPT LATIN SMALL LETTER N ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x00ba }, // U00BA # MASCULINE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x006f, 0, 0}, 0x00ba }, // U00BA # MASCULINE ORDINAL INDICATOR ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0072, 0, 0}, 0x02b3 }, // U02B3 # MODIFIER LETTER SMALL R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0072, 0, 0}, 0x02b3 }, // U02B3 # MODIFIER LETTER SMALL R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0073, 0, 0}, 0x02e2 }, // U02E2 # MODIFIER LETTER SMALL S ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0073, 0, 0}, 0x02e2 }, // U02E2 # MODIFIER LETTER SMALL S ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0077, 0, 0}, 0x02b7 }, // U02B7 # MODIFIER LETTER SMALL W ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0077, 0, 0}, 0x02b7 }, // U02B7 # MODIFIER LETTER SMALL W ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0078, 0, 0}, 0x02e3 }, // U02E3 # MODIFIER LETTER SMALL X ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0078, 0, 0}, 0x02e3 }, // U02E3 # MODIFIER LETTER SMALL X ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0079, 0, 0}, 0x02b8 }, // U02B8 # MODIFIER LETTER SMALL Y ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0079, 0, 0}, 0x02b8 }, // U02B8 # MODIFIER LETTER SMALL Y ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0263, 0, 0}, 0x02e0 }, // U02E0 # MODIFIER LETTER SMALL GAMMA ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0263, 0, 0}, 0x02e0 }, // U02E0 # MODIFIER LETTER SMALL GAMMA ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0266, 0, 0}, 0x02b1 }, // U02B1 # MODIFIER LETTER SMALL H WITH HOOK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0266, 0, 0}, 0x02b1 }, // U02B1 # MODIFIER LETTER SMALL H WITH HOOK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0279, 0, 0}, 0x02b4 }, // U02B4 # MODIFIER LETTER SMALL TURNED R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0279, 0, 0}, 0x02b4 }, // U02B4 # MODIFIER LETTER SMALL TURNED R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x027b, 0, 0}, 0x02b5 }, // U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x027b, 0, 0}, 0x02b5 }, // U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0281, 0, 0}, 0x02b6 }, // U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0281, 0, 0}, 0x02b6 }, // U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0295, 0, 0}, 0x02e4 }, // U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0295, 0, 0}, 0x02e4 }, // U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Circumflex), 0, 0, 0, 0}, 0x005e }, // asciicircum ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x0045, 0, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x004f, 0, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x0065, 0, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Circumflex), UNITIZE(Qt::Key_Dead_Belowdot), 0x006f, 0, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0000, 0, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0000, 0, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0000, 0, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0000, 0, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0020, 0, 0, 0, 0}, 0x007e }, // asciitilde ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0041, 0, 0, 0, 0}, 0x00c3 }, // U00C3 # LATIN CAPITAL LETTER A WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0045, 0, 0, 0, 0}, 0x1ebc }, // U1EBC # LATIN CAPITAL LETTER E WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0049, 0, 0, 0, 0}, 0x0128 }, // U0128 # LATIN CAPITAL LETTER I WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x004e, 0, 0, 0, 0}, 0x00d1 }, // U00D1 # LATIN CAPITAL LETTER N WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0, 0, 0}, 0x00d5 }, // U00D5 # LATIN CAPITAL LETTER O WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0055, 0, 0, 0, 0}, 0x0168 }, // U0168 # LATIN CAPITAL LETTER U WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0056, 0, 0, 0, 0}, 0x1e7c }, // U1E7C # LATIN CAPITAL LETTER V WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0059, 0, 0, 0, 0}, 0x1ef8 }, // U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0061, 0, 0, 0, 0}, 0x00e3 }, // U00E3 # LATIN SMALL LETTER A WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0065, 0, 0, 0, 0}, 0x1ebd }, // U1EBD # LATIN SMALL LETTER E WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0069, 0, 0, 0, 0}, 0x0129 }, // U0129 # LATIN SMALL LETTER I WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x006e, 0, 0, 0, 0}, 0x00f1 }, // U00F1 # LATIN SMALL LETTER N WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0, 0, 0}, 0x00f5 }, // U00F5 # LATIN SMALL LETTER O WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0075, 0, 0, 0, 0}, 0x0169 }, // U0169 # LATIN SMALL LETTER U WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0076, 0, 0, 0, 0}, 0x1e7d }, // U1E7D # LATIN SMALL LETTER V WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0079, 0, 0, 0, 0}, 0x1ef9 }, // U1EF9 # LATIN SMALL LETTER Y WITH TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00c2, 0, 0, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00ca, 0, 0, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00d4, 0, 0, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00e2, 0, 0, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00ea, 0, 0, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x00f4, 0, 0, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0102, 0, 0, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0103, 0, 0, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x01A0, 0, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x01A1, 0, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x01AF, 0, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x01B0, 0, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0391, 0, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0397, 0, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0399, 0, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03a9, 0, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b1, 0, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b7, 0, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b9, 0, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03c5, 0, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03c9, 0, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0391, 0, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0397, 0, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0399, 0, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03a5, 0, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03a9, 0, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b1, 0, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b7, 0, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b9, 0, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03c5, 0, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03c9, 0, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03b1, 0, 0, 0, 0}, 0x1fb6 }, // U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03b7, 0, 0, 0, 0}, 0x1fc6 }, // U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03b9, 0, 0, 0, 0}, 0x1fd6 }, // U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03c5, 0, 0, 0, 0}, 0x1fe6 }, // U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03c9, 0, 0, 0, 0}, 0x1ff6 }, // U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03ca, 0, 0, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x03cb, 0, 0, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f00, 0, 0, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f01, 0, 0, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f08, 0, 0, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f09, 0, 0, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f20, 0, 0, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f21, 0, 0, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f28, 0, 0, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f29, 0, 0, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f30, 0, 0, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f31, 0, 0, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f38, 0, 0, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f39, 0, 0, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f50, 0, 0, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f51, 0, 0, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f59, 0, 0, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f60, 0, 0, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f61, 0, 0, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f68, 0, 0, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), 0x1f69, 0, 0, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03b9, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x03c5, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f0f }, // U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f2f }, // U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0399, 0, 0}, 0x1f3f }, // U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a5, 0, 0}, 0x1f5f }, // U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1f6f }, // U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f07 }, // U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f27 }, // U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b9, 0, 0}, 0x1f37 }, // U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c5, 0, 0}, 0x1f57 }, // U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1f67 }, // U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f0e }, // U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f2e }, // U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0399, 0, 0}, 0x1f3e }, // U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1f6e }, // U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f06 }, // U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f26 }, // U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b9, 0, 0}, 0x1f36 }, // U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c5, 0, 0}, 0x1f56 }, // U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1f66 }, // U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1eaa }, // U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec4 }, // U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed6 }, // U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1eab }, // U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec5 }, // U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed7 }, // U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Tilde), 0, 0, 0, 0}, 0x007e }, // asciitilde ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb4 }, // U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb5 }, // U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0}, 0x1fd7 }, // U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0}, 0x1fe7 }, // U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ee0 }, // U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eee }, // U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1ee1 }, // U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE ++ { {UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eef }, // U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x004c, 0, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x004f, 0, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x0052, 0, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x006c, 0, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x006f, 0, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Macron), 0x0000, 0x0072, 0, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0020, 0, 0, 0, 0}, 0x00af }, // macron ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0041, 0, 0, 0, 0}, 0x0100 }, // U0100 # LATIN CAPITAL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0045, 0, 0, 0, 0}, 0x0112 }, // U0112 # LATIN CAPITAL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0047, 0, 0, 0, 0}, 0x1e20 }, // U1E20 # LATIN CAPITAL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0049, 0, 0, 0, 0}, 0x012a }, // U012A # LATIN CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x004f, 0, 0, 0, 0}, 0x014c }, // U014C # LATIN CAPITAL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0055, 0, 0, 0, 0}, 0x016a }, // U016A # LATIN CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0059, 0, 0, 0, 0}, 0x0232 }, // U0232 # LATIN CAPITAL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0061, 0, 0, 0, 0}, 0x0101 }, // U0101 # LATIN SMALL LETTER A WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0065, 0, 0, 0, 0}, 0x0113 }, // U0113 # LATIN SMALL LETTER E WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0067, 0, 0, 0, 0}, 0x1e21 }, // U1E21 # LATIN SMALL LETTER G WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0069, 0, 0, 0, 0}, 0x012b }, // U012B # LATIN SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x006f, 0, 0, 0, 0}, 0x014d }, // U014D # LATIN SMALL LETTER O WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0075, 0, 0, 0, 0}, 0x016b }, // U016B # LATIN SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0079, 0, 0, 0, 0}, 0x0233 }, // U0233 # LATIN SMALL LETTER Y WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00c4, 0, 0, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00c6, 0, 0, 0, 0}, 0x01e2 }, // U01E2 # LATIN CAPITAL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00d5, 0, 0, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00d6, 0, 0, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00dc, 0, 0, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00e4, 0, 0, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00e6, 0, 0, 0, 0}, 0x01e3 }, // U01E3 # LATIN SMALL LETTER AE WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00f5, 0, 0, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00f6, 0, 0, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x00fc, 0, 0, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x01ea, 0, 0, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x01eb, 0, 0, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0226, 0, 0, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0227, 0, 0, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x022e, 0, 0, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x022f, 0, 0, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0391, 0, 0, 0, 0}, 0x1fb9 }, // U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0399, 0, 0, 0, 0}, 0x1fd9 }, // U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x03a5, 0, 0, 0, 0}, 0x1fe9 }, // U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x03b1, 0, 0, 0, 0}, 0x1fb1 }, // U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x03b9, 0, 0, 0, 0}, 0x1fd1 }, // U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x03c5, 0, 0, 0, 0}, 0x1fe1 }, // U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0418, 0, 0, 0, 0}, 0x04e2 }, // U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0423, 0, 0, 0, 0}, 0x04ee }, // U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0438, 0, 0, 0, 0}, 0x04e3 }, // U04E3 # CYRILLIC SMALL LETTER I WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x0443, 0, 0, 0, 0}, 0x04ef }, // U04EF # CYRILLIC SMALL LETTER U WITH MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x1e36, 0, 0, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x1e37, 0, 0, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x1e5a, 0, 0, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), 0x1e5b, 0, 0, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x004c, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0052, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x006c, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0072, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0041, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x004f, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0061, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x006f, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0041, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x002e, 0x004f, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x002e, 0x0061, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x002e, 0x006f, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x003b, 0x004f, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x003b, 0x006f, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004f, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006f, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0, 0}, 0x022c }, // U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0, 0}, 0x022d }, // U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Macron), 0, 0, 0, 0}, 0x00af }, // macron ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Abovedot), 0x0041, 0, 0, 0}, 0x01e0 }, // U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Abovedot), 0x004f, 0, 0, 0}, 0x0230 }, // U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Abovedot), 0x0061, 0, 0, 0}, 0x01e1 }, // U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Abovedot), 0x006f, 0, 0, 0}, 0x0231 }, // U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0041, 0, 0, 0}, 0x01de }, // U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x004f, 0, 0, 0}, 0x022a }, // U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01d5 }, // U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0061, 0, 0, 0}, 0x01df }, // U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x006f, 0, 0, 0}, 0x022b }, // U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01d6 }, // U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Ogonek), 0x004f, 0, 0, 0}, 0x01ec }, // U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Ogonek), 0x006f, 0, 0, 0}, 0x01ed }, // U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Belowdot), 0x004c, 0, 0, 0}, 0x1e38 }, // U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Belowdot), 0x0052, 0, 0, 0}, 0x1e5c }, // U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Belowdot), 0x006c, 0, 0, 0}, 0x1e39 }, // U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON ++ { {UNITIZE(Qt::Key_Dead_Macron), UNITIZE(Qt::Key_Dead_Belowdot), 0x0072, 0, 0, 0}, 0x1e5d }, // U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Breve), 0x0000, 0x0041, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Breve), 0x0000, 0x0061, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0020, 0, 0, 0, 0}, 0x02d8 }, // breve ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0, 0}, 0x0102 }, // U0102 # LATIN CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0045, 0, 0, 0, 0}, 0x0114 }, // U0114 # LATIN CAPITAL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0047, 0, 0, 0, 0}, 0x011e }, // U011E # LATIN CAPITAL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0049, 0, 0, 0, 0}, 0x012c }, // U012C # LATIN CAPITAL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x004f, 0, 0, 0, 0}, 0x014e }, // U014E # LATIN CAPITAL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0055, 0, 0, 0, 0}, 0x016c }, // U016C # LATIN CAPITAL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0, 0}, 0x0103 }, // U0103 # LATIN SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0065, 0, 0, 0, 0}, 0x0115 }, // U0115 # LATIN SMALL LETTER E WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0067, 0, 0, 0, 0}, 0x011f }, // U011F # LATIN SMALL LETTER G WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0069, 0, 0, 0, 0}, 0x012d }, // U012D # LATIN SMALL LETTER I WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x006f, 0, 0, 0, 0}, 0x014f }, // U014F # LATIN SMALL LETTER O WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0075, 0, 0, 0, 0}, 0x016d }, // U016D # LATIN SMALL LETTER U WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0228, 0, 0, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0229, 0, 0, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0391, 0, 0, 0, 0}, 0x1fb8 }, // U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0399, 0, 0, 0, 0}, 0x1fd8 }, // U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x03a5, 0, 0, 0, 0}, 0x1fe8 }, // U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x03b1, 0, 0, 0, 0}, 0x1fb0 }, // U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x03b9, 0, 0, 0, 0}, 0x1fd0 }, // U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x03c5, 0, 0, 0, 0}, 0x1fe0 }, // U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0410, 0, 0, 0, 0}, 0x04d0 }, // U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0415, 0, 0, 0, 0}, 0x04d6 }, // U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0416, 0, 0, 0, 0}, 0x04c1 }, // U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0418, 0, 0, 0, 0}, 0x0419 }, // U0419 # CYRILLIC CAPITAL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0423, 0, 0, 0, 0}, 0x040e }, // U040E # CYRILLIC CAPITAL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0430, 0, 0, 0, 0}, 0x04d1 }, // U04D1 # CYRILLIC SMALL LETTER A WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0435, 0, 0, 0, 0}, 0x04d7 }, // U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0436, 0, 0, 0, 0}, 0x04c2 }, // U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0438, 0, 0, 0, 0}, 0x0439 }, // U0439 # CYRILLIC SMALL LETTER SHORT I ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x0443, 0, 0, 0, 0}, 0x045e }, // U045E # CYRILLIC SMALL LETTER SHORT U ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x1ea0, 0, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), 0x1ea1, 0, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0041, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0061, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0045, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Multi_key), 0x002c, 0x0065, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Dead_Breve), 0, 0, 0, 0}, 0x02d8 }, // breve ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Dead_Cedilla), 0x0045, 0, 0, 0}, 0x1e1c }, // U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Dead_Cedilla), 0x0065, 0, 0, 0}, 0x1e1d }, // U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Breve), UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0000, 0x0053, 0, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0000, 0x0053, 0, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0000, 0x0073, 0, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0000, 0x0073, 0, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0020, 0, 0, 0, 0}, 0x02d9 }, // abovedot ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0041, 0, 0, 0, 0}, 0x0226 }, // U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0042, 0, 0, 0, 0}, 0x1e02 }, // U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0043, 0, 0, 0, 0}, 0x010a }, // U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0044, 0, 0, 0, 0}, 0x1e0a }, // U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0045, 0, 0, 0, 0}, 0x0116 }, // U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0046, 0, 0, 0, 0}, 0x1e1e }, // U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0047, 0, 0, 0, 0}, 0x0120 }, // U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0048, 0, 0, 0, 0}, 0x1e22 }, // U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0049, 0, 0, 0, 0}, 0x0130 }, // U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x004d, 0, 0, 0, 0}, 0x1e40 }, // U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x004e, 0, 0, 0, 0}, 0x1e44 }, // U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x004f, 0, 0, 0, 0}, 0x022e }, // U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0050, 0, 0, 0, 0}, 0x1e56 }, // U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0052, 0, 0, 0, 0}, 0x1e58 }, // U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0053, 0, 0, 0, 0}, 0x1e60 }, // U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0054, 0, 0, 0, 0}, 0x1e6a }, // U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0057, 0, 0, 0, 0}, 0x1e86 }, // U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0058, 0, 0, 0, 0}, 0x1e8a }, // U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0059, 0, 0, 0, 0}, 0x1e8e }, // U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x005a, 0, 0, 0, 0}, 0x017b }, // U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0061, 0, 0, 0, 0}, 0x0227 }, // U0227 # LATIN SMALL LETTER A WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0062, 0, 0, 0, 0}, 0x1e03 }, // U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0063, 0, 0, 0, 0}, 0x010b }, // U010B # LATIN SMALL LETTER C WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0064, 0, 0, 0, 0}, 0x1e0b }, // U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0065, 0, 0, 0, 0}, 0x0117 }, // U0117 # LATIN SMALL LETTER E WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0066, 0, 0, 0, 0}, 0x1e1f }, // U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0067, 0, 0, 0, 0}, 0x0121 }, // U0121 # LATIN SMALL LETTER G WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0068, 0, 0, 0, 0}, 0x1e23 }, // U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0069, 0, 0, 0, 0}, 0x0131 }, // U0131 # LATIN SMALL LETTER DOTLESS I ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x006d, 0, 0, 0, 0}, 0x1e41 }, // U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x006e, 0, 0, 0, 0}, 0x1e45 }, // U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x006f, 0, 0, 0, 0}, 0x022f }, // U022F # LATIN SMALL LETTER O WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0070, 0, 0, 0, 0}, 0x1e57 }, // U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0072, 0, 0, 0, 0}, 0x1e59 }, // U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0073, 0, 0, 0, 0}, 0x1e61 }, // U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0074, 0, 0, 0, 0}, 0x1e6b }, // U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0077, 0, 0, 0, 0}, 0x1e87 }, // U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0078, 0, 0, 0, 0}, 0x1e8b }, // U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0079, 0, 0, 0, 0}, 0x1e8f }, // U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x007a, 0, 0, 0, 0}, 0x017c }, // U017C # LATIN SMALL LETTER Z WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x015a, 0, 0, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x015b, 0, 0, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0160, 0, 0, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x0161, 0, 0, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x017f, 0, 0, 0, 0}, 0x1e9b }, // U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x1e62, 0, 0, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), 0x1e63, 0, 0, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0053, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0021, 0x0073, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0053, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x0063, 0x0073, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0053, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0073, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Acute), 0x0053, 0, 0, 0}, 0x1e64 }, // U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Acute), 0x0073, 0, 0, 0}, 0x1e65 }, // U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Abovedot), 0, 0, 0, 0}, 0x02d9 }, // abovedot ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Caron), 0x0053, 0, 0, 0}, 0x1e66 }, // U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Caron), 0x0073, 0, 0, 0}, 0x1e67 }, // U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Belowdot), 0x0053, 0, 0, 0}, 0x1e68 }, // U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovedot), UNITIZE(Qt::Key_Dead_Belowdot), 0x0073, 0, 0, 0}, 0x1e69 }, // U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0000, 0x004f, 0, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0000, 0x006f, 0, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0020, 0, 0, 0, 0}, 0x005c }, // quotedbl ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0027, 0, 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0041, 0, 0, 0, 0}, 0x00c4 }, // U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0045, 0, 0, 0, 0}, 0x00cb }, // U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0048, 0, 0, 0, 0}, 0x1e26 }, // U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0049, 0, 0, 0, 0}, 0x00cf }, // U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x004f, 0, 0, 0, 0}, 0x00d6 }, // U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0, 0}, 0x00dc }, // U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0057, 0, 0, 0, 0}, 0x1e84 }, // U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0058, 0, 0, 0, 0}, 0x1e8c }, // U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0059, 0, 0, 0, 0}, 0x0178 }, // U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0061, 0, 0, 0, 0}, 0x00e4 }, // U00E4 # LATIN SMALL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0065, 0, 0, 0, 0}, 0x00eb }, // U00EB # LATIN SMALL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0068, 0, 0, 0, 0}, 0x1e27 }, // U1E27 # LATIN SMALL LETTER H WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0069, 0, 0, 0, 0}, 0x00ef }, // U00EF # LATIN SMALL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x006f, 0, 0, 0, 0}, 0x00f6 }, // U00F6 # LATIN SMALL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0074, 0, 0, 0, 0}, 0x1e97 }, // U1E97 # LATIN SMALL LETTER T WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0, 0}, 0x00fc }, // U00FC # LATIN SMALL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0077, 0, 0, 0, 0}, 0x1e85 }, // U1E85 # LATIN SMALL LETTER W WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0078, 0, 0, 0, 0}, 0x1e8d }, // U1E8D # LATIN SMALL LETTER X WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0079, 0, 0, 0, 0}, 0x00ff }, // U00FF # LATIN SMALL LETTER Y WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x00b4, 0, 0, 0, 0}, 0x0344 }, // U0344 # COMBINING GREEK DIALYTIKA TONOS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x00d5, 0, 0, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x00f5, 0, 0, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x016a, 0, 0, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x016b, 0, 0, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0399, 0, 0, 0, 0}, 0x03aa }, // U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x03a5, 0, 0, 0, 0}, 0x03ab }, // U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x03b9, 0, 0, 0, 0}, 0x03ca }, // U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x03c5, 0, 0, 0, 0}, 0x03cb }, // U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0406, 0, 0, 0, 0}, 0x0407 }, // U0407 # CYRILLIC CAPITAL LETTER YI ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0410, 0, 0, 0, 0}, 0x04d2 }, // U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0415, 0, 0, 0, 0}, 0x0401 }, // U0401 # CYRILLIC CAPITAL LETTER IO ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0416, 0, 0, 0, 0}, 0x04dc }, // U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0417, 0, 0, 0, 0}, 0x04de }, // U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0418, 0, 0, 0, 0}, 0x04e4 }, // U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x041e, 0, 0, 0, 0}, 0x04e6 }, // U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0423, 0, 0, 0, 0}, 0x04f0 }, // U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0427, 0, 0, 0, 0}, 0x04f4 }, // U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x042b, 0, 0, 0, 0}, 0x04f8 }, // U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x042d, 0, 0, 0, 0}, 0x04ec }, // U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0430, 0, 0, 0, 0}, 0x04d3 }, // U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0435, 0, 0, 0, 0}, 0x0451 }, // U0451 # CYRILLIC SMALL LETTER IO ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0436, 0, 0, 0, 0}, 0x04dd }, // U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0437, 0, 0, 0, 0}, 0x04df }, // U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0438, 0, 0, 0, 0}, 0x04e5 }, // U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x043e, 0, 0, 0, 0}, 0x04e7 }, // U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0443, 0, 0, 0, 0}, 0x04f1 }, // U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0447, 0, 0, 0, 0}, 0x04f5 }, // U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x044b, 0, 0, 0, 0}, 0x04f9 }, // U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x044d, 0, 0, 0, 0}, 0x04ed }, // U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x0456, 0, 0, 0, 0}, 0x0457 }, // U0457 # CYRILLIC SMALL LETTER YI ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x04d8, 0, 0, 0, 0}, 0x04da }, // U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x04d9, 0, 0, 0, 0}, 0x04db }, // U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x04e8, 0, 0, 0, 0}, 0x04ea }, // U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), 0x04e9, 0, 0, 0, 0}, 0x04eb }, // U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0055, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x005f, 0x0075, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x004f, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x006f, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0055, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Multi_key), 0x00af, 0x0075, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Dead_Tilde), 0x004f, 0, 0, 0}, 0x1e4e }, // U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Dead_Tilde), 0x006f, 0, 0, 0}, 0x1e4f }, // U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Dead_Macron), 0x0055, 0, 0, 0}, 0x1e7a }, // U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Dead_Macron), 0x0075, 0, 0, 0}, 0x1e7b }, // U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS ++ { {UNITIZE(Qt::Key_Dead_Diaeresis), UNITIZE(Qt::Key_Dead_Diaeresis), 0, 0, 0, 0}, 0x00a8 }, // diaeresis ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0020, 0, 0, 0, 0}, 0x00b0 }, // degree ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0041, 0, 0, 0, 0}, 0x00c5 }, // U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0055, 0, 0, 0, 0}, 0x016e }, // U016E # LATIN CAPITAL LETTER U WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0061, 0, 0, 0, 0}, 0x00e5 }, // U00E5 # LATIN SMALL LETTER A WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0075, 0, 0, 0, 0}, 0x016f }, // U016F # LATIN SMALL LETTER U WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0077, 0, 0, 0, 0}, 0x1e98 }, // U1E98 # LATIN SMALL LETTER W WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), 0x0079, 0, 0, 0, 0}, 0x1e99 }, // U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE ++ { {UNITIZE(Qt::Key_Dead_Abovering), UNITIZE(Qt::Key_Dead_Abovering), 0, 0, 0, 0}, 0x00b0 }, // degree ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x0020, 0, 0, 0, 0}, 0x02dd }, // U2dd ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x004f, 0, 0, 0, 0}, 0x0150 }, // U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x0055, 0, 0, 0, 0}, 0x0170 }, // U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x006f, 0, 0, 0, 0}, 0x0151 }, // U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x0075, 0, 0, 0, 0}, 0x0171 }, // U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x0423, 0, 0, 0, 0}, 0x04f2 }, // U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), 0x0443, 0, 0, 0, 0}, 0x04f3 }, // U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE ++ { {UNITIZE(Qt::Key_Dead_Doubleacute), UNITIZE(Qt::Key_Dead_Doubleacute), 0, 0, 0, 0}, 0x02dd }, // U2dd ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0020, 0, 0, 0, 0}, 0x02c7 }, // caron ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0041, 0, 0, 0, 0}, 0x01cd }, // U01CD # LATIN CAPITAL LETTER A WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0043, 0, 0, 0, 0}, 0x010c }, // U010C # LATIN CAPITAL LETTER C WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0044, 0, 0, 0, 0}, 0x010e }, // U010E # LATIN CAPITAL LETTER D WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0045, 0, 0, 0, 0}, 0x011a }, // U011A # LATIN CAPITAL LETTER E WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0047, 0, 0, 0, 0}, 0x01e6 }, // U01E6 # LATIN CAPITAL LETTER G WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0048, 0, 0, 0, 0}, 0x021e }, // U021E # LATIN CAPITAL LETTER H WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0049, 0, 0, 0, 0}, 0x01cf }, // U01CF # LATIN CAPITAL LETTER I WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x004b, 0, 0, 0, 0}, 0x01e8 }, // U01E8 # LATIN CAPITAL LETTER K WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x004c, 0, 0, 0, 0}, 0x013d }, // U013D # LATIN CAPITAL LETTER L WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x004e, 0, 0, 0, 0}, 0x0147 }, // U0147 # LATIN CAPITAL LETTER N WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x004f, 0, 0, 0, 0}, 0x01d1 }, // U01D1 # LATIN CAPITAL LETTER O WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0052, 0, 0, 0, 0}, 0x0158 }, // U0158 # LATIN CAPITAL LETTER R WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0053, 0, 0, 0, 0}, 0x0160 }, // U0160 # LATIN CAPITAL LETTER S WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0054, 0, 0, 0, 0}, 0x0164 }, // U0164 # LATIN CAPITAL LETTER T WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0055, 0, 0, 0, 0}, 0x01d3 }, // U01D3 # LATIN CAPITAL LETTER U WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x005a, 0, 0, 0, 0}, 0x017d }, // U017D # LATIN CAPITAL LETTER Z WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0061, 0, 0, 0, 0}, 0x01ce }, // U01CE # LATIN SMALL LETTER A WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0063, 0, 0, 0, 0}, 0x010d }, // U010D # LATIN SMALL LETTER C WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0064, 0, 0, 0, 0}, 0x010f }, // U010F # LATIN SMALL LETTER D WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0065, 0, 0, 0, 0}, 0x011b }, // U011B # LATIN SMALL LETTER E WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0067, 0, 0, 0, 0}, 0x01e7 }, // U01E7 # LATIN SMALL LETTER G WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0068, 0, 0, 0, 0}, 0x021f }, // U021F # LATIN SMALL LETTER H WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0069, 0, 0, 0, 0}, 0x01d0 }, // U01D0 # LATIN SMALL LETTER I WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x006a, 0, 0, 0, 0}, 0x01f0 }, // U01F0 # LATIN SMALL LETTER J WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x006b, 0, 0, 0, 0}, 0x01e9 }, // U01E9 # LATIN SMALL LETTER K WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x006c, 0, 0, 0, 0}, 0x013e }, // U013E # LATIN SMALL LETTER L WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x006e, 0, 0, 0, 0}, 0x0148 }, // U0148 # LATIN SMALL LETTER N WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x006f, 0, 0, 0, 0}, 0x01d2 }, // U01D2 # LATIN SMALL LETTER O WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0072, 0, 0, 0, 0}, 0x0159 }, // U0159 # LATIN SMALL LETTER R WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0073, 0, 0, 0, 0}, 0x0161 }, // U0161 # LATIN SMALL LETTER S WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0074, 0, 0, 0, 0}, 0x0165 }, // U0165 # LATIN SMALL LETTER T WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0075, 0, 0, 0, 0}, 0x01d4 }, // U01D4 # LATIN SMALL LETTER U WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x007a, 0, 0, 0, 0}, 0x017e }, // U017E # LATIN SMALL LETTER Z WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x00dc, 0, 0, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x00fc, 0, 0, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x01b7, 0, 0, 0, 0}, 0x01ee }, // U01EE # LATIN CAPITAL LETTER EZH WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), 0x0292, 0, 0, 0, 0}, 0x01ef }, // U01EF # LATIN SMALL LETTER EZH WITH CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0055, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), UNITIZE(Qt::Key_Multi_key), 0x0022, 0x0075, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0055, 0, 0, 0}, 0x01d9 }, // U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), UNITIZE(Qt::Key_Dead_Diaeresis), 0x0075, 0, 0, 0}, 0x01da }, // U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON ++ { {UNITIZE(Qt::Key_Dead_Caron), UNITIZE(Qt::Key_Dead_Caron), 0, 0, 0, 0}, 0x02c7 }, // caron ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0020, 0, 0, 0, 0}, 0x00b8 }, // cedilla ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0043, 0, 0, 0, 0}, 0x00c7 }, // U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0044, 0, 0, 0, 0}, 0x1e10 }, // U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0045, 0, 0, 0, 0}, 0x0228 }, // U0228 # LATIN CAPITAL LETTER E WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0047, 0, 0, 0, 0}, 0x0122 }, // U0122 # LATIN CAPITAL LETTER G WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0048, 0, 0, 0, 0}, 0x1e28 }, // U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x004b, 0, 0, 0, 0}, 0x0136 }, // U0136 # LATIN CAPITAL LETTER K WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x004c, 0, 0, 0, 0}, 0x013b }, // U013B # LATIN CAPITAL LETTER L WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x004e, 0, 0, 0, 0}, 0x0145 }, // U0145 # LATIN CAPITAL LETTER N WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0052, 0, 0, 0, 0}, 0x0156 }, // U0156 # LATIN CAPITAL LETTER R WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0053, 0, 0, 0, 0}, 0x015e }, // U015E # LATIN CAPITAL LETTER S WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0054, 0, 0, 0, 0}, 0x0162 }, // U0162 # LATIN CAPITAL LETTER T WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0063, 0, 0, 0, 0}, 0x00e7 }, // U00E7 # LATIN SMALL LETTER C WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0064, 0, 0, 0, 0}, 0x1e11 }, // U1E11 # LATIN SMALL LETTER D WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0065, 0, 0, 0, 0}, 0x0229 }, // U0229 # LATIN SMALL LETTER E WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0067, 0, 0, 0, 0}, 0x0123 }, // U0123 # LATIN SMALL LETTER G WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0068, 0, 0, 0, 0}, 0x1e29 }, // U1E29 # LATIN SMALL LETTER H WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x006b, 0, 0, 0, 0}, 0x0137 }, // U0137 # LATIN SMALL LETTER K WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x006c, 0, 0, 0, 0}, 0x013c }, // U013C # LATIN SMALL LETTER L WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x006e, 0, 0, 0, 0}, 0x0146 }, // U0146 # LATIN SMALL LETTER N WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0072, 0, 0, 0, 0}, 0x0157 }, // U0157 # LATIN SMALL LETTER R WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0073, 0, 0, 0, 0}, 0x015f }, // U015F # LATIN SMALL LETTER S WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), 0x0074, 0, 0, 0, 0}, 0x0163 }, // U0163 # LATIN SMALL LETTER T WITH CEDILLA ++ { {UNITIZE(Qt::Key_Dead_Cedilla), UNITIZE(Qt::Key_Dead_Cedilla), 0, 0, 0, 0}, 0x00b8 }, // cedilla ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0041, 0, 0, 0, 0}, 0x0104 }, // U0104 # LATIN CAPITAL LETTER A WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0045, 0, 0, 0, 0}, 0x0118 }, // U0118 # LATIN CAPITAL LETTER E WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0049, 0, 0, 0, 0}, 0x012e }, // U012E # LATIN CAPITAL LETTER I WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x004f, 0, 0, 0, 0}, 0x01ea }, // U01EA # LATIN CAPITAL LETTER O WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0055, 0, 0, 0, 0}, 0x0172 }, // U0172 # LATIN CAPITAL LETTER U WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0061, 0, 0, 0, 0}, 0x0105 }, // U0105 # LATIN SMALL LETTER A WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0065, 0, 0, 0, 0}, 0x0119 }, // U0119 # LATIN SMALL LETTER E WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0069, 0, 0, 0, 0}, 0x012f }, // U012F # LATIN SMALL LETTER I WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x006f, 0, 0, 0, 0}, 0x01eb }, // U01EB # LATIN SMALL LETTER O WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), 0x0075, 0, 0, 0, 0}, 0x0173 }, // U0173 # LATIN SMALL LETTER U WITH OGONEK ++ { {UNITIZE(Qt::Key_Dead_Ogonek), UNITIZE(Qt::Key_Dead_Ogonek), 0, 0, 0, 0}, 0x02db }, // ogonek ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Ogonek), dead_space, 0, 0, 0, 0}, 0x02db }, // ogonek ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x0391, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x0391, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x0397, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x0397, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03a9, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03a9, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03b1, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03b1, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03b7, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03b7, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03c9, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0313, 0x03c9, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x0391, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x0391, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x0397, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x0397, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03a9, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03a9, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03b1, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03b1, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03b7, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03b7, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03c9, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x0314, 0x03c9, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03b1, 0, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03b1, 0, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03b7, 0, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03b7, 0, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03c9, 0, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x03c9, 0, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f00, 0, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f00, 0, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f01, 0, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f01, 0, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f08, 0, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f08, 0, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f09, 0, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f09, 0, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f20, 0, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f20, 0, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f21, 0, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f21, 0, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f28, 0, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f28, 0, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f29, 0, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f29, 0, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f60, 0, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f60, 0, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f61, 0, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f61, 0, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f68, 0, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f68, 0, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f69, 0, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, 0x1f69, 0, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), 0x0000, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x0391, 0, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x0397, 0, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x03a9, 0, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x03b1, 0, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x03b7, 0, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0313, 0x03c9, 0, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x0391, 0, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x0397, 0, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x03a9, 0, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x03b1, 0, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x03b7, 0, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0314, 0x03c9, 0, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x0391, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x0397, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x03a9, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x03b1, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x03b7, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0313, 0x03c9, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x0391, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x0397, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x03a9, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x03b1, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x03b7, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x0314, 0x03c9, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x03b1, 0, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x03b7, 0, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x03c9, 0, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f00, 0, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f01, 0, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f08, 0, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f09, 0, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f20, 0, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f21, 0, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f28, 0, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f29, 0, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f60, 0, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f61, 0, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f68, 0, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, 0x1f69, 0, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0342, UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0391, 0, 0, 0, 0}, 0x1fbc }, // U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x0397, 0, 0, 0, 0}, 0x1fcc }, // U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03a9, 0, 0, 0, 0}, 0x1ffc }, // U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03ac, 0, 0, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03ae, 0, 0, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03b1, 0, 0, 0, 0}, 0x1fb3 }, // U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03b7, 0, 0, 0, 0}, 0x1fc3 }, // U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03c9, 0, 0, 0, 0}, 0x1ff3 }, // U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x03ce, 0, 0, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f00, 0, 0, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f01, 0, 0, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f02, 0, 0, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f03, 0, 0, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f04, 0, 0, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f05, 0, 0, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f06, 0, 0, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f07, 0, 0, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f08, 0, 0, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f09, 0, 0, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0a, 0, 0, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0b, 0, 0, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0c, 0, 0, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0d, 0, 0, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0e, 0, 0, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f0f, 0, 0, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f20, 0, 0, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f21, 0, 0, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f22, 0, 0, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f23, 0, 0, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f24, 0, 0, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f25, 0, 0, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f26, 0, 0, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f27, 0, 0, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f28, 0, 0, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f29, 0, 0, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2a, 0, 0, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2b, 0, 0, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2c, 0, 0, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2d, 0, 0, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2e, 0, 0, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f2f, 0, 0, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f60, 0, 0, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f61, 0, 0, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f62, 0, 0, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f63, 0, 0, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f64, 0, 0, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f65, 0, 0, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f66, 0, 0, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f67, 0, 0, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f68, 0, 0, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f69, 0, 0, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6a, 0, 0, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6b, 0, 0, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6c, 0, 0, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6d, 0, 0, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6e, 0, 0, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f6f, 0, 0, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f70, 0, 0, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f74, 0, 0, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1f7c, 0, 0, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1fb6, 0, 0, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1fc6, 0, 0, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), 0x1ff6, 0, 0, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0027, 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0, 0}, 0x1f89 }, // U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0, 0}, 0x1f99 }, // U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0, 0}, 0x1fa9 }, // U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0, 0}, 0x1f81 }, // U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0, 0}, 0x1f91 }, // U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0, 0}, 0x1fa1 }, // U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0, 0}, 0x1f88 }, // U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0, 0}, 0x1f98 }, // U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0, 0}, 0x1fa8 }, // U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0, 0}, 0x1f80 }, // U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0, 0}, 0x1f90 }, // U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0, 0}, 0x1fa0 }, // U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0313, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x0314, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b1, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03b7, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x03c9, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f00, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f01, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f08, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f09, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f20, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f21, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f28, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f29, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f60, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f61, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f68, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x0060, 0x1f69, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0313, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x0314, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03b1, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03b7, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x03c9, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f00, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f01, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f08, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f09, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f20, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f21, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f28, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f29, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f60, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f61, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f68, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x007e, 0x1f69, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0313, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x0314, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b1, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03b7, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x03c9, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f00, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f01, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f08, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f09, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f20, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f21, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f28, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f29, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f60, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f61, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f68, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Multi_key), 0x00b4, 0x1f69, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0391, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x0397, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03a9, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b1, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03b7, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0313, 0x03c9, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0391, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x0397, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03a9, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b1, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03b7, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x0314, 0x03c9, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x03b1, 0, 0, 0}, 0x1fb2 }, // U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x03b7, 0, 0, 0}, 0x1fc2 }, // U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x03c9, 0, 0, 0}, 0x1ff2 }, // U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f00, 0, 0, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f01, 0, 0, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f08, 0, 0, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f09, 0, 0, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f20, 0, 0, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f21, 0, 0, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f28, 0, 0, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f29, 0, 0, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f60, 0, 0, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f61, 0, 0, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f68, 0, 0, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), 0x1f69, 0, 0, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8b }, // U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9b }, // U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1fab }, // U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f83 }, // U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f93 }, // U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa3 }, // U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8a }, // U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9a }, // U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1faa }, // U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f82 }, // U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f92 }, // U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Grave), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa2 }, // U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0391, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x0397, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03a9, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b1, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03b7, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0313, 0x03c9, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0391, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x0397, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03a9, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b1, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03b7, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x0314, 0x03c9, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x03b1, 0, 0, 0}, 0x1fb4 }, // U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x03b7, 0, 0, 0}, 0x1fc4 }, // U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x03c9, 0, 0, 0}, 0x1ff4 }, // U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f00, 0, 0, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f01, 0, 0, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f08, 0, 0, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f09, 0, 0, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f20, 0, 0, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f21, 0, 0, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f28, 0, 0, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f29, 0, 0, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f60, 0, 0, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f61, 0, 0, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f68, 0, 0, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), 0x1f69, 0, 0, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8d }, // U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9d }, // U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1fad }, // U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f85 }, // U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f95 }, // U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa5 }, // U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8c }, // U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9c }, // U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1fac }, // U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f84 }, // U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f94 }, // U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Acute), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa4 }, // U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0391, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x0397, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03a9, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b1, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03b7, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0313, 0x03c9, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0391, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x0397, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03a9, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b1, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03b7, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x0314, 0x03c9, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x03b1, 0, 0, 0}, 0x1fb7 }, // U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x03b7, 0, 0, 0}, 0x1fc7 }, // U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x03c9, 0, 0, 0}, 0x1ff7 }, // U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f00, 0, 0, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f01, 0, 0, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f08, 0, 0, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f09, 0, 0, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f20, 0, 0, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f21, 0, 0, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f28, 0, 0, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f29, 0, 0, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f60, 0, 0, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f61, 0, 0, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f68, 0, 0, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), 0x1f69, 0, 0, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0391, 0}, 0x1f8f }, // U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x0397, 0}, 0x1f9f }, // U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03a9, 0}, 0x1faf }, // U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b1, 0}, 0x1f87 }, // U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03b7, 0}, 0x1f97 }, // U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0028, 0x03c9, 0}, 0x1fa7 }, // U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0391, 0}, 0x1f8e }, // U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x0397, 0}, 0x1f9e }, // U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03a9, 0}, 0x1fae }, // U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b1, 0}, 0x1f86 }, // U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03b7, 0}, 0x1f96 }, // U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Tilde), UNITIZE(Qt::Key_Multi_key), 0x0029, 0x03c9, 0}, 0x1fa6 }, // U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI ++ { {UNITIZE(Qt::Key_Dead_Iota), UNITIZE(Qt::Key_Dead_Iota), 0, 0, 0, 0}, 0x037a }, // U37a ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Iota), dead_space, 0, 0, 0, 0}, 0x037a }, // U37a ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3046, 0, 0, 0, 0}, 0x3094 }, // U3094 # HIRAGANA LETTER VU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x304b, 0, 0, 0, 0}, 0x304c }, // U304C # HIRAGANA LETTER GA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x304d, 0, 0, 0, 0}, 0x304e }, // U304E # HIRAGANA LETTER GI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x304f, 0, 0, 0, 0}, 0x3050 }, // U3050 # HIRAGANA LETTER GU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3051, 0, 0, 0, 0}, 0x3052 }, // U3052 # HIRAGANA LETTER GE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3053, 0, 0, 0, 0}, 0x3054 }, // U3054 # HIRAGANA LETTER GO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3055, 0, 0, 0, 0}, 0x3056 }, // U3056 # HIRAGANA LETTER ZA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3057, 0, 0, 0, 0}, 0x3058 }, // U3058 # HIRAGANA LETTER ZI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3059, 0, 0, 0, 0}, 0x305a }, // U305A # HIRAGANA LETTER ZU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x305b, 0, 0, 0, 0}, 0x305c }, // U305C # HIRAGANA LETTER ZE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x305d, 0, 0, 0, 0}, 0x305e }, // U305E # HIRAGANA LETTER ZO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x305f, 0, 0, 0, 0}, 0x3060 }, // U3060 # HIRAGANA LETTER DA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3061, 0, 0, 0, 0}, 0x3062 }, // U3062 # HIRAGANA LETTER DI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3064, 0, 0, 0, 0}, 0x3065 }, // U3065 # HIRAGANA LETTER DU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3066, 0, 0, 0, 0}, 0x3067 }, // U3067 # HIRAGANA LETTER DE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3068, 0, 0, 0, 0}, 0x3069 }, // U3069 # HIRAGANA LETTER DO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x306f, 0, 0, 0, 0}, 0x3070 }, // U3070 # HIRAGANA LETTER BA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3072, 0, 0, 0, 0}, 0x3073 }, // U3073 # HIRAGANA LETTER BI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3075, 0, 0, 0, 0}, 0x3076 }, // U3076 # HIRAGANA LETTER BU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x3078, 0, 0, 0, 0}, 0x3079 }, // U3079 # HIRAGANA LETTER BE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x307b, 0, 0, 0, 0}, 0x307c }, // U307C # HIRAGANA LETTER BO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x309d, 0, 0, 0, 0}, 0x309e }, // U309E # HIRAGANA VOICED ITERATION MARK ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30a6, 0, 0, 0, 0}, 0x30f4 }, // U30F4 # KATAKANA LETTER VU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30ab, 0, 0, 0, 0}, 0x30ac }, // U30AC # KATAKANA LETTER GA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30ad, 0, 0, 0, 0}, 0x30ae }, // U30AE # KATAKANA LETTER GI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30af, 0, 0, 0, 0}, 0x30b0 }, // U30B0 # KATAKANA LETTER GU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30b1, 0, 0, 0, 0}, 0x30b2 }, // U30B2 # KATAKANA LETTER GE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30b3, 0, 0, 0, 0}, 0x30b4 }, // U30B4 # KATAKANA LETTER GO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30b5, 0, 0, 0, 0}, 0x30b6 }, // U30B6 # KATAKANA LETTER ZA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30b7, 0, 0, 0, 0}, 0x30b8 }, // U30B8 # KATAKANA LETTER ZI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30b9, 0, 0, 0, 0}, 0x30ba }, // U30BA # KATAKANA LETTER ZU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30bb, 0, 0, 0, 0}, 0x30bc }, // U30BC # KATAKANA LETTER ZE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30bd, 0, 0, 0, 0}, 0x30be }, // U30BE # KATAKANA LETTER ZO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30bf, 0, 0, 0, 0}, 0x30c0 }, // U30C0 # KATAKANA LETTER DA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30c1, 0, 0, 0, 0}, 0x30c2 }, // U30C2 # KATAKANA LETTER DI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30c4, 0, 0, 0, 0}, 0x30c5 }, // U30C5 # KATAKANA LETTER DU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30c6, 0, 0, 0, 0}, 0x30c7 }, // U30C7 # KATAKANA LETTER DE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30c8, 0, 0, 0, 0}, 0x30c9 }, // U30C9 # KATAKANA LETTER DO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30cf, 0, 0, 0, 0}, 0x30d0 }, // U30D0 # KATAKANA LETTER BA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30d2, 0, 0, 0, 0}, 0x30d3 }, // U30D3 # KATAKANA LETTER BI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30d5, 0, 0, 0, 0}, 0x30d6 }, // U30D6 # KATAKANA LETTER BU ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30d8, 0, 0, 0, 0}, 0x30d9 }, // U30D9 # KATAKANA LETTER BE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30db, 0, 0, 0, 0}, 0x30dc }, // U30DC # KATAKANA LETTER BO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30ef, 0, 0, 0, 0}, 0x30f7 }, // U30F7 # KATAKANA LETTER VA ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30f0, 0, 0, 0, 0}, 0x30f8 }, // U30F8 # KATAKANA LETTER VI ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30f1, 0, 0, 0, 0}, 0x30f9 }, // U30F9 # KATAKANA LETTER VE ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30f2, 0, 0, 0, 0}, 0x30fa }, // U30FA # KATAKANA LETTER VO ++ { {UNITIZE(Qt::Key_Dead_Voiced_Sound), 0x30fd, 0, 0, 0, 0}, 0x30fe }, // U30FE # KATAKANA VOICED ITERATION MARK ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x306f, 0, 0, 0, 0}, 0x3071 }, // U3071 # HIRAGANA LETTER PA ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x3072, 0, 0, 0, 0}, 0x3074 }, // U3074 # HIRAGANA LETTER PI ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x3075, 0, 0, 0, 0}, 0x3077 }, // U3077 # HIRAGANA LETTER PU ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x3078, 0, 0, 0, 0}, 0x307a }, // U307A # HIRAGANA LETTER PE ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x307b, 0, 0, 0, 0}, 0x307d }, // U307D # HIRAGANA LETTER PO ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x30cf, 0, 0, 0, 0}, 0x30d1 }, // U30D1 # KATAKANA LETTER PA ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x30d2, 0, 0, 0, 0}, 0x30d4 }, // U30D4 # KATAKANA LETTER PI ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x30d5, 0, 0, 0, 0}, 0x30d7 }, // U30D7 # KATAKANA LETTER PU ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x30d8, 0, 0, 0, 0}, 0x30da }, // U30DA # KATAKANA LETTER PE ++ { {UNITIZE(Qt::Key_Dead_Semivoiced_Sound), 0x30db, 0, 0, 0, 0}, 0x30dd }, // U30DD # KATAKANA LETTER PO ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0000, 0, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0000, 0, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0000, 0, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0000, 0, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0041, 0, 0, 0, 0}, 0x1ea0 }, // U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0042, 0, 0, 0, 0}, 0x1e04 }, // U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0044, 0, 0, 0, 0}, 0x1e0c }, // U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0045, 0, 0, 0, 0}, 0x1eb8 }, // U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0048, 0, 0, 0, 0}, 0x1e24 }, // U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0049, 0, 0, 0, 0}, 0x1eca }, // U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x004b, 0, 0, 0, 0}, 0x1e32 }, // U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x004c, 0, 0, 0, 0}, 0x1e36 }, // U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x004d, 0, 0, 0, 0}, 0x1e42 }, // U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x004e, 0, 0, 0, 0}, 0x1e46 }, // U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x004f, 0, 0, 0, 0}, 0x1ecc }, // U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0052, 0, 0, 0, 0}, 0x1e5a }, // U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0053, 0, 0, 0, 0}, 0x1e62 }, // U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0054, 0, 0, 0, 0}, 0x1e6c }, // U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0055, 0, 0, 0, 0}, 0x1ee4 }, // U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0056, 0, 0, 0, 0}, 0x1e7e }, // U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0057, 0, 0, 0, 0}, 0x1e88 }, // U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0059, 0, 0, 0, 0}, 0x1ef4 }, // U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x005a, 0, 0, 0, 0}, 0x1e92 }, // U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0061, 0, 0, 0, 0}, 0x1ea1 }, // U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0062, 0, 0, 0, 0}, 0x1e05 }, // U1E05 # LATIN SMALL LETTER B WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0064, 0, 0, 0, 0}, 0x1e0d }, // U1E0D # LATIN SMALL LETTER D WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0065, 0, 0, 0, 0}, 0x1eb9 }, // U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0068, 0, 0, 0, 0}, 0x1e25 }, // U1E25 # LATIN SMALL LETTER H WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0069, 0, 0, 0, 0}, 0x1ecb }, // U1ECB # LATIN SMALL LETTER I WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x006b, 0, 0, 0, 0}, 0x1e33 }, // U1E33 # LATIN SMALL LETTER K WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x006c, 0, 0, 0, 0}, 0x1e37 }, // U1E37 # LATIN SMALL LETTER L WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x006d, 0, 0, 0, 0}, 0x1e43 }, // U1E43 # LATIN SMALL LETTER M WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x006e, 0, 0, 0, 0}, 0x1e47 }, // U1E47 # LATIN SMALL LETTER N WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x006f, 0, 0, 0, 0}, 0x1ecd }, // U1ECD # LATIN SMALL LETTER O WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0072, 0, 0, 0, 0}, 0x1e5b }, // U1E5B # LATIN SMALL LETTER R WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0073, 0, 0, 0, 0}, 0x1e63 }, // U1E63 # LATIN SMALL LETTER S WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0074, 0, 0, 0, 0}, 0x1e6d }, // U1E6D # LATIN SMALL LETTER T WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0075, 0, 0, 0, 0}, 0x1ee5 }, // U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0076, 0, 0, 0, 0}, 0x1e7f }, // U1E7F # LATIN SMALL LETTER V WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0077, 0, 0, 0, 0}, 0x1e89 }, // U1E89 # LATIN SMALL LETTER W WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0079, 0, 0, 0, 0}, 0x1ef5 }, // U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x007a, 0, 0, 0, 0}, 0x1e93 }, // U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00c2, 0, 0, 0, 0}, 0x1eac }, // U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00ca, 0, 0, 0, 0}, 0x1ec6 }, // U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00d4, 0, 0, 0, 0}, 0x1ed8 }, // U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00e2, 0, 0, 0, 0}, 0x1ead }, // U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00ea, 0, 0, 0, 0}, 0x1ec7 }, // U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x00f4, 0, 0, 0, 0}, 0x1ed9 }, // U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0102, 0, 0, 0, 0}, 0x1eb6 }, // U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x0103, 0, 0, 0, 0}, 0x1eb7 }, // U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x01A0, 0, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x01A1, 0, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x01AF, 0, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), 0x01B0, 0, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ee2 }, // U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1ef0 }, // U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1ee3 }, // U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW ++ { {UNITIZE(Qt::Key_Dead_Belowdot), UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1ef1 }, // U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Hook), 0x0000, 0, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Hook), 0x0000, 0, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Hook), 0x0000, 0, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++// /* broken */ { {UNITIZE(Qt::Key_Dead_Hook), 0x0000, 0, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0041, 0, 0, 0, 0}, 0x1ea2 }, // U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0045, 0, 0, 0, 0}, 0x1eba }, // U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0049, 0, 0, 0, 0}, 0x1ec8 }, // U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x004f, 0, 0, 0, 0}, 0x1ece }, // U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0055, 0, 0, 0, 0}, 0x1ee6 }, // U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0059, 0, 0, 0, 0}, 0x1ef6 }, // U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0061, 0, 0, 0, 0}, 0x1ea3 }, // U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0065, 0, 0, 0, 0}, 0x1ebb }, // U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0069, 0, 0, 0, 0}, 0x1ec9 }, // U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x006f, 0, 0, 0, 0}, 0x1ecf }, // U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0075, 0, 0, 0, 0}, 0x1ee7 }, // U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0079, 0, 0, 0, 0}, 0x1ef7 }, // U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00c2, 0, 0, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00ca, 0, 0, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00d4, 0, 0, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00e2, 0, 0, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00ea, 0, 0, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x00f4, 0, 0, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0102, 0, 0, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x0103, 0, 0, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x01A0, 0, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x01A1, 0, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x01AF, 0, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), 0x01B0, 0, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x004f, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0055, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x006f, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x002b, 0x0075, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x0055, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0041, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0045, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x004f, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0061, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x0065, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x005e, 0x006f, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0041, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Multi_key), 0x0062, 0x0061, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x0041, 0, 0, 0}, 0x1ea8 }, // U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x0045, 0, 0, 0}, 0x1ec2 }, // U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x004f, 0, 0, 0}, 0x1ed4 }, // U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x0061, 0, 0, 0}, 0x1ea9 }, // U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x0065, 0, 0, 0}, 0x1ec3 }, // U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Circumflex), 0x006f, 0, 0, 0}, 0x1ed5 }, // U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Breve), 0x0041, 0, 0, 0}, 0x1eb2 }, // U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Breve), 0x0061, 0, 0, 0}, 0x1eb3 }, // U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0}, 0x1ede }, // U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0}, 0x1eec }, // U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0}, 0x1edf }, // U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Hook), UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0}, 0x1eed }, // U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE ++ { {UNITIZE(Qt::Key_Dead_Horn), 0x004f, 0, 0, 0, 0}, 0x01a0 }, // U01A0 # LATIN CAPITAL LETTER O WITH HORN ++ { {UNITIZE(Qt::Key_Dead_Horn), 0x0055, 0, 0, 0, 0}, 0x01af }, // U01AF # LATIN CAPITAL LETTER U WITH HORN ++ { {UNITIZE(Qt::Key_Dead_Horn), 0x006f, 0, 0, 0, 0}, 0x01a1 }, // U01A1 # LATIN SMALL LETTER O WITH HORN ++ { {UNITIZE(Qt::Key_Dead_Horn), 0x0075, 0, 0, 0, 0}, 0x01b0 } // U01B0 # LATIN SMALL LETTER U WITH HORN ++}; ++ ++const QComposeTable QSimpleInputContext::defaultComposeTable = { ++ defaultTable, ++ ( sizeof(defaultTable) / sizeof(QComposeTableElement) ) ++}; +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2005-10-18 12:57:18.703230464 +0900 +@@ -0,0 +1,284 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QSimpleInputContext class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#include "qsimpleinputcontext.h" ++ ++#include ++#include ++#include ++ ++static const int ignoreKeys[] = { ++ Qt::Key_Shift, ++ Qt::Key_Control, ++ Qt::Key_Meta, ++ Qt::Key_Alt, ++ Qt::Key_CapsLock, ++ Qt::Key_Super_L, ++ Qt::Key_Super_R, ++ Qt::Key_Hyper_L, ++ Qt::Key_Hyper_R, ++ Qt::Key_Mode_switch ++}; ++ ++static const int composingKeys[] = { ++ Qt::Key_Multi_key, ++ Qt::Key_Dead_Grave, ++ Qt::Key_Dead_Acute, ++ Qt::Key_Dead_Circumflex, ++ Qt::Key_Dead_Tilde, ++ Qt::Key_Dead_Macron, ++ Qt::Key_Dead_Breve, ++ Qt::Key_Dead_Abovedot, ++ Qt::Key_Dead_Diaeresis, ++ Qt::Key_Dead_Abovering, ++ Qt::Key_Dead_Doubleacute, ++ Qt::Key_Dead_Caron, ++ Qt::Key_Dead_Cedilla, ++ Qt::Key_Dead_Ogonek, ++ Qt::Key_Dead_Iota, ++ Qt::Key_Dead_Voiced_Sound, ++ Qt::Key_Dead_Semivoiced_Sound, ++ Qt::Key_Dead_Belowdot, ++ Qt::Key_Dead_Hook, ++ Qt::Key_Dead_Horn ++}; ++ ++class Cmp ++{ ++public: ++ bool operator () (const QComposeTableElement &lhs, const QComposeTableElement &rhs) const { ++ for ( size_t i=0; i < QT_KEYSEQUENCE_MAX_LEN; i++ ) { ++ if ( lhs.keys[i] < rhs.keys[i] ) return TRUE; ++ else ++ if ( lhs.keys[i] > rhs.keys[i] ) return FALSE; ++ } ++ return FALSE; ++ } ++ ++ bool operator () (const QComposeTableElement &lhs, const uint rhs[QT_KEYSEQUENCE_MAX_LEN]) const { ++ for ( size_t i=0; i < QT_KEYSEQUENCE_MAX_LEN; i++ ) { ++ if ( lhs.keys[i] < rhs[i] ) return TRUE; ++ else ++ if ( lhs.keys[i] > rhs[i] ) return FALSE; ++ } ++ return FALSE; ++ } ++}; ++ ++QSimpleInputContext::QSimpleInputContext() ++ : QInputContext() ++{ ++ clearComposeBuffer(); ++} ++ ++QSimpleInputContext::~QSimpleInputContext() ++{ ++ clearComposeBuffer(); ++} ++ ++bool QSimpleInputContext::filterEvent( const QEvent *event ) ++{ ++ if ( event->type() != QEvent::KeyPress ) ++ return FALSE; ++ ++ QKeyEvent *keyevent = (QKeyEvent *)event; ++ int keyval = keyevent->key(); ++ int val = 0; ++ ++ if ( isIgnoreKeys( keyval ) ) ++ return FALSE; ++ ++ if ( isComposingKeys( keyval ) ) { ++ // If composing keys are pressed, use keyval directly ++ val = UNITIZE( keyval ); ++ } else { ++ QString text = keyevent->text(); ++ if ( text.isEmpty() ) ++ return FALSE; ++ ++ // If not composing keys are pressed, use the character's unicode value ++ // NOTE : The contents of QKeyEvent::text() is restricted to ++ // only one character. See description of ++ // QInputContext::filterEvent() about key compression. ++ val = text[0].unicode(); ++ qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); ++ } ++ ++ // Store value ++ int nCompose = 0; ++ while ( composeBuffer[nCompose] != 0 && nCompose < QT_KEYSEQUENCE_MAX_LEN ) ++ nCompose++; ++ ++ if ( nCompose == QT_KEYSEQUENCE_MAX_LEN ) { ++ clearComposeBuffer(); ++ nCompose = 0; ++ } ++ ++ composeBuffer[nCompose] = val; ++ ++ // check sequence ++ if( checkComposeTable( composeBuffer, &defaultComposeTable ) ) ++ return TRUE; ++ ++ return FALSE; ++} ++ ++void QSimpleInputContext::setFocus() ++{ ++ qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p", ++ this, focusWidget() ); ++} ++ ++void QSimpleInputContext::unsetFocus() ++{ ++ qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p", ++ this, focusWidget() ); ++ reset(); ++} ++ ++void QSimpleInputContext::setMicroFocus( int x, int y, int w, int h, QFont *f ) ++{ ++} ++ ++void QSimpleInputContext::mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState state ) ++{ ++ switch ( type ) { ++ case QEvent::MouseButtonPress: ++ case QEvent::MouseButtonRelease: ++ case QEvent::MouseButtonDblClick: ++ case QEvent::MouseMove: ++ qDebug( "QSimpleInputContext::mouseHandler: " ++ "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); ++ break; ++ default: ++ break; ++ } ++} ++ ++ ++void QSimpleInputContext::reset() ++{ ++ clearComposeBuffer(); ++ QInputContext::reset(); ++} ++ ++QString QSimpleInputContext::identifierName() ++{ ++ return "simple"; ++} ++ ++QString QSimpleInputContext::language() ++{ ++ return ""; // FIXME ++} ++ ++bool QSimpleInputContext::isIgnoreKeys( int keyval ) ++{ ++ for ( uint i = 0; i < (sizeof(ignoreKeys)/sizeof(ignoreKeys[0])); i++ ) ++ if ( keyval == ignoreKeys[i] ) ++ return TRUE; ++ ++ return FALSE; ++} ++ ++bool QSimpleInputContext::isComposingKeys( int keyval ) ++{ ++ for ( uint i = 0; i < (sizeof(composingKeys)/sizeof(composingKeys[0])); i++ ) ++ if ( keyval == composingKeys[i] ) ++ return TRUE; ++ ++ return FALSE; ++} ++ ++bool QSimpleInputContext::checkComposeTable( uint* composeBuffer, const QComposeTable *composeTable ) ++{ ++ const QComposeTableElement *p = std::lower_bound( composeTable->data, ++ composeTable->data + composeTable->size, ++ composeBuffer, ++ Cmp() ); ++ ++ // no entries were found ++ if ( p == composeTable->data + composeTable->size ) { ++ qDebug( "no match" ); ++ clearComposeBuffer(); ++ return FALSE; ++ } ++ ++ // check if compose buffer is matched ++ for ( int i=0; i < QT_KEYSEQUENCE_MAX_LEN; i++ ) { ++ ++ // check if partial match ++ if ( composeBuffer[i] == 0 && p->keys[i] ) { ++ qDebug("partial match"); ++ return TRUE; ++ } ++ ++ if ( composeBuffer[i] != p->keys[i] ) { ++ qDebug("different entry"); ++ clearComposeBuffer(); ++ return i!=0; ++ } ++ } ++ ++ qDebug("match exactly"); ++ ++ // match exactly ++ commitChar( p->value ); ++ clearComposeBuffer(); ++ ++ return TRUE; ++} ++ ++void QSimpleInputContext::commitChar( uint c ) ++{ ++ sendIMEvent( QEvent::IMStart ); ++ sendIMEvent( QEvent::IMEnd, QString(QChar(c)) ); ++} ++ ++void QSimpleInputContext::clearComposeBuffer(void) ++{ ++ for ( uint i=0; i < (sizeof(composeBuffer)/sizeof(int)); i++ ) ++ composeBuffer[i] = 0; ++} ++ +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.h qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.h 2005-10-18 12:57:18.705230160 +0900 +@@ -0,0 +1,93 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QSimpleInputContext class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QSIMPLEINPUT_CONTEXT_H ++#define QSIMPLEINPUT_CONTEXT_H ++ ++#include ++#include ++ ++#define QT_KEYSEQUENCE_MAX_LEN 6 ++#define UNITIZE(qkey) (0x02000000|qkey) ++ ++struct QComposeTableElement { ++ uint keys[QT_KEYSEQUENCE_MAX_LEN]; ++ uint value; ++}; ++ ++struct QComposeTable { ++ const QComposeTableElement *data; ++ uint size; ++}; ++ ++ ++class QSimpleInputContext : public QInputContext { ++ Q_OBJECT ++public: ++ QSimpleInputContext(); ++ ~QSimpleInputContext(); ++ ++ virtual QString identifierName(); ++ virtual QString language(); ++ ++ virtual bool filterEvent( const QEvent *event ); ++ virtual void reset(); ++ virtual void setFocus(); ++ virtual void unsetFocus(); ++ virtual void setMicroFocus( int x, int y, int w, int h, QFont *f = 0 ); ++ virtual void mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, Qt::ButtonState state ); ++ ++protected: ++ bool isIgnoreKeys(int keyval ); ++ bool isComposingKeys( int keyval ); ++ bool checkComposeTable( uint composeBuffer[], const QComposeTable *composeTable ); ++ void commitChar( uint c ); ++ ++ void clearComposeBuffer(void); ++ ++protected: ++ uint composeBuffer[QT_KEYSEQUENCE_MAX_LEN + 1]; ++ static const QComposeTable defaultComposeTable; ++}; ++ ++#endif // QSIMPLEINPUT_CONTEXT_H +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.cpp 2005-10-18 12:57:18.706230008 +0900 +@@ -0,0 +1,86 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QSimpleInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qsimpleinputcontext.h" ++#include "qsimpleinputcontextplugin.h" ++#include ++#include ++ ++ ++QSimpleInputContextPlugin::QSimpleInputContextPlugin() ++{ ++} ++ ++QSimpleInputContextPlugin::~QSimpleInputContextPlugin() ++{ ++} ++ ++QStringList QSimpleInputContextPlugin::keys() const ++{ ++ return QStringList( "simple" ); ++} ++ ++QInputContext *QSimpleInputContextPlugin::create( const QString & ) ++{ ++ return new QSimpleInputContext; ++} ++ ++QStringList QSimpleInputContextPlugin::languages( const QString & ) ++{ ++ return QStringList( "" ); ++} ++ ++QString QSimpleInputContextPlugin::displayName( const QString & ) ++{ ++ return tr( "Simple Composing Input Method" ); ++} ++ ++QString QSimpleInputContextPlugin::description( const QString & ) ++{ ++ return tr( "Simple composing input method" ); ++} ++ ++ ++Q_EXPORT_PLUGIN( QSimpleInputContextPlugin ) ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontextplugin.h 2005-10-18 12:57:18.708229704 +0900 +@@ -0,0 +1,63 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QSimpleInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qsimpleinputcontext.h" ++#include ++#include ++ ++ ++class QSimpleInputContextPlugin : public QInputContextPlugin ++{ ++ Q_OBJECT ++public: ++ QSimpleInputContextPlugin(); ++ ~QSimpleInputContextPlugin(); ++ ++ QStringList keys() const; ++ QInputContext *create( const QString &key ); ++ QStringList languages( const QString &key ); ++ QString displayName( const QString &key ); ++ QString description( const QString &key ); ++}; ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/simple.pro qt-x11-free-3.3.5/plugins/src/inputmethods/simple/simple.pro +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/simple.pro 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/simple.pro 2005-10-18 12:57:18.710229400 +0900 +@@ -0,0 +1,15 @@ ++TEMPLATE = lib ++TARGET = qsimple ++DESTDIR = ../../../inputmethods ++ ++INCLUDEPATH += . ++CONFIG += qt warn_on debug plugin ++target.path += $$plugins.path/inputmethods ++INSTALLS += target ++ ++# Input ++HEADERS += qsimpleinputcontext.h \ ++ qsimpleinputcontextplugin.h ++SOURCES += qsimpleinputcontext.cpp \ ++ qsimpleinputcontextplugin.cpp \ ++ composetable.cpp +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/xcompose2q.rb qt-x11-free-3.3.5/plugins/src/inputmethods/simple/xcompose2q.rb +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/xcompose2q.rb 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/xcompose2q.rb 2005-10-18 12:57:18.713228944 +0900 +@@ -0,0 +1,450 @@ ++#!/usr/bin/env ruby ++ ++# xcompose2q.rb: X Compose table to QSimpleInputContext table translator ++# Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++# ++# This file is written to contribute to Trolltech AS under their own ++# licence. You may use this file under your Qt license. Following ++# description is copied from their original file headers. Contact ++# immodule-qt@freedesktop.org if any conditions of this licensing are ++# not clear to you. ++ ++# This file may be distributed under the terms of the Q Public License ++# as defined by Trolltech AS of Norway and appearing in the file ++# LICENSE.QPL included in the packaging of this file. ++# ++# This file may be distributed and/or modified under the terms of the ++# GNU General Public License version 2 as published by the Free Software ++# Foundation and appearing in the file LICENSE.GPL included in the ++# packaging of this file. ++# ++# Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++# licenses may use this file in accordance with the Qt Commercial License ++# Agreement provided with the Software. ++# ++# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++# ++# See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++# information about Qt Commercial License Agreements. ++# See http://www.trolltech.com/qpl/ for QPL licensing information. ++# See http://www.trolltech.com/gpl/ for GPL licensing information. ++# ++# Contact info@trolltech.com if any conditions of this licensing are ++# not clear to you. ++ ++ ++# Usage: ++# xcompose2q.rb /usr/X11R6/lib/X11/locale/en_US.UTF-8/Compose ++ ++require 'uconv' ++ ++# translation table for lazy sorting ++raw2key = { ++ "0y1120" => "UNITIZE(Qt::Key_Multi_key)", ++ "0y1250" => "UNITIZE(Qt::Key_Dead_Grave)", ++ "0y1251" => "UNITIZE(Qt::Key_Dead_Acute)", ++ "0y1252" => "UNITIZE(Qt::Key_Dead_Circumflex)", ++ "0y1253" => "UNITIZE(Qt::Key_Dead_Tilde)", ++ "0y1254" => "UNITIZE(Qt::Key_Dead_Macron)", ++ "0y1255" => "UNITIZE(Qt::Key_Dead_Breve)", ++ "0y1256" => "UNITIZE(Qt::Key_Dead_Abovedot)", ++ "0y1257" => "UNITIZE(Qt::Key_Dead_Diaeresis)", ++ "0y1258" => "UNITIZE(Qt::Key_Dead_Abovering)", ++ "0y1259" => "UNITIZE(Qt::Key_Dead_Doubleacute)", ++ "0y125a" => "UNITIZE(Qt::Key_Dead_Caron)", ++ "0y125b" => "UNITIZE(Qt::Key_Dead_Cedilla)", ++ "0y125c" => "UNITIZE(Qt::Key_Dead_Ogonek)", ++ "0y125d" => "UNITIZE(Qt::Key_Dead_Iota)", ++ "0y125e" => "UNITIZE(Qt::Key_Dead_Voiced_Sound)", ++ "0y125f" => "UNITIZE(Qt::Key_Dead_Semivoiced_Sound)", ++ "0y1260" => "UNITIZE(Qt::Key_Dead_Belowdot)", ++ "0y1261" => "UNITIZE(Qt::Key_Dead_Hook)", ++ "0y1262" => "UNITIZE(Qt::Key_Dead_Horn)", ++} ++ ++# X's KeySym to Unicode translation table. The unicode value is ++# extracted from ++# QETWidget::translateKeyEventInternal(). Translation for some ++# keys are not available ++x2q = { ++ "Multi_key" => "0y1120", ++ "dead_grave" => "0y1250", ++ "dead_acute" => "0y1251", ++ "dead_circumflex" => "0y1252", ++ "dead_tilde" => "0y1253", ++ "dead_macron" => "0y1254", ++ "dead_breve" => "0y1255", ++ "dead_abovedot" => "0y1256", ++ "dead_diaeresis" => "0y1257", ++ "dead_abovering" => "0y1258", ++ "dead_doubleacute" => "0y1259", ++ "dead_caron" => "0y125a", ++ "dead_cedilla" => "0y125b", ++ "dead_ogonek" => "0y125c", ++ "dead_iota" => "0y125d", ++ "dead_voiced_sound" => "0y125e", ++ "dead_semivoiced_sound" => "0y125f", ++ "dead_belowdot" => "0y1260", ++ "dead_hook" => "0y1261", ++ "dead_horn" => "0y1262", ++ ++ "0" => "0x0030", ++ "1" => "0x0031", ++ "2" => "0x0032", ++ "3" => "0x0033", ++ "4" => "0x0034", ++ "5" => "0x0035", ++ "6" => "0x0036", ++ "7" => "0x0037", ++ "8" => "0x0038", ++ "9" => "0x0039", ++ "A" => "0x0041", ++ "AE" => "0x00c6", ++ "Abreve" => "0x0102", ++ "Acircumflex" => "0x00c2", ++ "Adiaeresis" => "0x00c4", ++ "Arabic_alef" => "0x0627", ++ "Arabic_waw" => "0x0648", ++ "Arabic_yeh" => "0x064a", ++ "Aring" => "0x00c5", ++ "B" => "0x0042", ++ "C" => "0x0043", ++ "Ccedilla" => "0x00c7", ++ "Cyrillic_A" => "0x0410", ++ "Cyrillic_CHE" => "0x0427", ++ "Cyrillic_E" => "0x042d", ++ "Cyrillic_GHE" => "0x0413", ++ "Cyrillic_I" => "0x0418", ++ "Cyrillic_IE" => "0x0415", ++ "Cyrillic_KA" => "0x041a", ++ "Cyrillic_O" => "0x041e", ++ "Cyrillic_U" => "0x0423", ++ "Cyrillic_YERU" => "0x042b", ++ "Cyrillic_ZE" => "0x0417", ++ "Cyrillic_ZHE" => "0x0416", ++ "Cyrillic_a" => "0x0430", ++ "Cyrillic_che" => "0x0447", ++ "Cyrillic_e" => "0x044d", ++ "Cyrillic_ghe" => "0x0433", ++ "Cyrillic_i" => "0x0438", ++ "Cyrillic_ie" => "0x0435", ++ "Cyrillic_ka" => "0x043a", ++ "Cyrillic_o" => "0x043e", ++ "Cyrillic_u" => "0x0443", ++ "Cyrillic_yeru" => "0x044b", ++ "Cyrillic_ze" => "0x0437", ++ "Cyrillic_zhe" => "0x0436", ++ "D" => "0x0044", ++ "E" => "0x0045", ++ "Ecircumflex" => "0x00ca", ++ "Emacron" => "0x0112", ++ "F" => "0x0046", ++ "G" => "0x0047", ++ "Greek_ALPHA" => "0x0391", ++ "Greek_EPSILON" => "0x0395", ++ "Greek_ETA" => "0x0397", ++ "Greek_IOTA" => "0x0399", ++ "Greek_OMEGA" => "0x03a9", ++ "Greek_OMICRON" => "0x039f", ++ "Greek_RHO" => "0x03a1", ++ "Greek_UPSILON" => "0x03a5", ++ "Greek_alpha" => "0x03b1", ++ "Greek_alphaaccent" => "0x03ac", ++ "Greek_epsilon" => "0x03b5", ++ "Greek_eta" => "0x03b7", ++ "Greek_etaaccent" => "0x03ae", ++ "Greek_iota" => "0x03b9", ++ "Greek_iotadieresis" => "0x03ca", ++ "Greek_omega" => "0x03c9", ++ "Greek_omegaaccent" => "0x03ce", ++ "Greek_omicron" => "0x03bf", ++ "Greek_rho" => "0x03c1", ++ "Greek_upsilon" => "0x03c5", ++ "Greek_upsilondieresis" => "0x03cb", ++ "H" => "0x0048", ++ "I" => "0x0049", ++ "Idiaeresis" => "0x00cf", ++ "J" => "0x004a", ++ "K" => "0x004b", ++ "KP_0" => "0x0000", ++ "KP_1" => "0x0000", ++ "KP_2" => "0x0000", ++ "KP_3" => "0x0000", ++ "KP_4" => "0x0000", ++ "KP_5" => "0x0000", ++ "KP_6" => "0x0000", ++ "KP_7" => "0x0000", ++ "KP_8" => "0x0000", ++ "KP_9" => "0x0000", ++ "KP_Add" => "0x0000", ++ "KP_Divide" => "0x0000", ++ "KP_Equal" => "0x0000", ++ "KP_Space" => "0x0000", ++ "L" => "0x004c", ++ "M" => "0x004d", ++ "N" => "0x004e", ++ "O" => "0x004f", ++ "Ocircumflex" => "0x00d4", ++ "Odiaeresis" => "0x00d6", ++ "Ohorn" => "0x0000", ++ "Omacron" => "0x014c", ++ "Ooblique" => "0x00d8", ++ "Otilde" => "0x00d5", ++ "P" => "0x0050", ++ "Q" => "0x0051", ++ "R" => "0x0052", ++ "S" => "0x0053", ++ "Sacute" => "0x015a", ++ "Scaron" => "0x0160", ++ "T" => "0x0054", ++ "U" => "0x0055", ++ "Udiaeresis" => "0x00dc", ++ "Uhorn" => "0x0000", ++ "Ukrainian_I" => "0x0406", ++ "Ukrainian_i" => "0x0456", ++ "Umacron" => "0x016a", ++ "Utilde" => "0x0168", ++ "V" => "0x0056", ++ "W" => "0x0057", ++ "X" => "0x0058", ++ "Y" => "0x0059", ++ "Z" => "0x005a", ++ "a" => "0x0061", ++ "abreve" => "0x0103", ++ "acircumflex" => "0x00e2", ++ "acute" => "0x00b4", ++ "adiaeresis" => "0x00e4", ++ "ae" => "0x00e6", ++ "ampersand" => "0x0026", ++ "apostrophe" => "0x0027", ++ "approximate" => "0x223c", ++ "aring" => "0x00e5", ++ "asciicircum" => "0x005e", ++ "asciitilde" => "0x007e", ++ "asterisk" => "0x002a", ++ "at" => "0x0040", ++ "b" => "0x0062", ++ "backslash" => "0x005c", ++ "bar" => "0x007c", ++ "braceleft" => "0x007b", ++ "braceright" => "0x007d", ++ "bracketleft" => "0x005b", ++ "bracketright" => "0x005d", ++ "c" => "0x0063", ++ "ccedilla" => "0x00e7", ++ "colon" => "0x003a", ++ "combining_acute" => "0x0000", ++ "combining_belowdot" => "0x0000", ++ "combining_grave" => "0x0000", ++ "combining_hook" => "0x0000", ++ "combining_tilde" => "0x0000", ++ "comma" => "0x002c", ++ "d" => "0x0064", ++ "diaeresis" => "0x00a8", ++ "dollar" => "0x0024", ++ "e" => "0x0065", ++ "ecircumflex" => "0x00ea", ++ "emacron" => "0x0113", ++ "equal" => "0x003d", ++ "exclam" => "0x0021", ++ "f" => "0x0066", ++ "g" => "0x0067", ++ "grave" => "0x0060", ++ "greater" => "0x003e", ++ "greaterthanequal" => "0x2265", ++ "h" => "0x0068", ++ "hebrew_aleph" => "0x05d0", ++ "hebrew_bet" => "0x05d1", ++ "hebrew_beth" => "0x05d1", ++ "hebrew_dalet" => "0x05d3", ++ "hebrew_daleth" => "0x05d3", ++ "hebrew_finalkaph" => "0x05da", ++ "hebrew_finalpe" => "0x05e3", ++ "hebrew_gimel" => "0x05d2", ++ "hebrew_gimmel" => "0x05d2", ++ "hebrew_he" => "0x05d4", ++ "hebrew_kaph" => "0x05db", ++ "hebrew_kuf" => "0x05e7", ++ "hebrew_lamed" => "0x05dc", ++ "hebrew_mem" => "0x05de", ++ "hebrew_nun" => "0x05e0", ++ "hebrew_pe" => "0x05e4", ++ "hebrew_qoph" => "0x05e7", ++ "hebrew_resh" => "0x05e8", ++ "hebrew_samech" => "0x05e1", ++ "hebrew_samekh" => "0x05e1", ++ "hebrew_shin" => "0x05e9", ++ "hebrew_taf" => "0x05ea", ++ "hebrew_taw" => "0x05ea", ++ "hebrew_tet" => "0x05d8", ++ "hebrew_teth" => "0x05d8", ++ "hebrew_waw" => "0x05d5", ++ "hebrew_yod" => "0x05d9", ++ "hebrew_zade" => "0x05e6", ++ "hebrew_zadi" => "0x05e6", ++ "hebrew_zain" => "0x05d6", ++ "hebrew_zayin" => "0x05d6", ++ "i" => "0x0069", ++ "identical" => "0x2261", ++ "idiaeresis" => "0x00ef", ++ "includedin" => "0x2282", ++ "includes" => "0x2283", ++ "j" => "0x006a", ++ "k" => "0x006b", ++ "kana_A" => "0x30a2", ++ "kana_CHI" => "0x30c1", ++ "kana_E" => "0x30a8", ++ "kana_FU" => "0x30d5", ++ "kana_HA" => "0x30cf", ++ "kana_HE" => "0x30d8", ++ "kana_HI" => "0x30d2", ++ "kana_HO" => "0x30db", ++ "kana_I" => "0x30a4", ++ "kana_KA" => "0x30ab", ++ "kana_KE" => "0x30b1", ++ "kana_KI" => "0x30ad", ++ "kana_KO" => "0x30b3", ++ "kana_KU" => "0x30af", ++ "kana_MA" => "0x30de", ++ "kana_ME" => "0x30e1", ++ "kana_MI" => "0x30df", ++ "kana_MO" => "0x30e2", ++ "kana_MU" => "0x30e0", ++ "kana_NA" => "0x30ca", ++ "kana_NE" => "0x30cd", ++ "kana_NI" => "0x30cb", ++ "kana_NO" => "0x30ce", ++ "kana_NU" => "0x30cc", ++ "kana_O" => "0x30aa", ++ "kana_RA" => "0x30e9", ++ "kana_RE" => "0x30ec", ++ "kana_RI" => "0x30ea", ++ "kana_RO" => "0x30ed", ++ "kana_RU" => "0x30eb", ++ "kana_SA" => "0x30b5", ++ "kana_SE" => "0x30bb", ++ "kana_SHI" => "0x30b7", ++ "kana_SO" => "0x30bd", ++ "kana_SU" => "0x30b9", ++ "kana_TA" => "0x30bf", ++ "kana_TE" => "0x30c6", ++ "kana_TO" => "0x30c8", ++ "kana_TSU" => "0x30c4", ++ "kana_U" => "0x30a6", ++ "kana_WA" => "0x30ef", ++ "kana_WO" => "0x30f2", ++ "kana_YA" => "0x30e4", ++ "kana_YO" => "0x30e8", ++ "kana_YU" => "0x30e6", ++ "l" => "0x006c", ++ "leftarrow" => "0x2190", ++ "leftcaret" => "0x003c", ++ "leftshoe" => "0x2282", ++ "less" => "0x003c", ++ "lessthanequal" => "0x2264", ++ "m" => "0x006d", ++ "macron" => "0x00af", ++ "minus" => "0x002d", ++ "n" => "0x006e", ++ "numbersign" => "0x0023", ++ "o" => "0x006f", ++ "ocircumflex" => "0x00f4", ++ "odiaeresis" => "0x00f6", ++ "ohorn" => "0x0000", ++ "omacron" => "0x014d", ++ "oslash" => "0x00f8", ++ "otilde" => "0x00f5", ++ "p" => "0x0070", ++ "parenleft" => "0x0028", ++ "parenright" => "0x0029", ++ "percent" => "0x0025", ++ "period" => "0x002e", ++ "plus" => "0x002b", ++ "q" => "0x0071", ++ "question" => "0x003f", ++ "quotedbl" => "0x0022", ++ "r" => "0x0072", ++ "rightarrow" => "0x2192", ++ "rightcaret" => "0x003e", ++ "rightshoe" => "0x2283", ++ "righttack" => "0x22a3", ++ "s" => "0x0073", ++ "sacute" => "0x015b", ++ "scaron" => "0x0161", ++ "semicolon" => "0x003b", ++ "slash" => "0x002f", ++ "space" => "0x0020", ++ "t" => "0x0074", ++ "u" => "0x0075", ++ "udiaeresis" => "0x00fc", ++ "uhorn" => "0x0000", ++ "umacron" => "0x016b", ++ "underbar" => "0x005f", ++ "underscore" => "0x005f", ++ "utilde" => "0x0169", ++ "v" => "0x0076", ++ "w" => "0x0077", ++ "x" => "0x0078", ++ "y" => "0x0079", ++ "z" => "0x007a", ++} ++ ++readlines.collect { ++ |line| ++ ++ broken = "" ++ seq = ["0", "0", "0", "0", "0", "0"] ++ index = 0 ++ rhs = "0x0000" ++ comment = "" ++ ++ case line ++ when /^(#|XCOMM)(.*)$/ ++ comment = "// #{$2}\n" ++ rhs = :isCommentLine ++ when /^$/ ++ comment = "\n" ++ rhs = :isCommentLine ++ else ++ line.scan(/<([^>]+)>/) { ++ |args| ++ keysym = args[0] ++ unit = x2q[keysym] || keysym.sub(/^U([\da-fA-F]{4,5})$/, "0x\\1") ++ if (/^(0x(0000|[\da-fA-F]{5,})|dead_space)$/ =~ unit) ++ broken = "// /* broken */" ++ end ++ seq[index] = unit ++ index += 1 ++ } ++ ++ Regexp.new(':\s+"(.+)"\s+(.+)$', nil, 'u') =~ line ++ rhs = Uconv::u8tou16($1).unpack('v')[0] ++ rhs = format("0x%04x", rhs) ++ comment = $2 ++ end ++ ++ entry = { ++ :broken => broken, ++ :seq => seq, ++ :rhs => rhs, ++ :comment => comment ++ } ++}.sort { ++ |entry_a, entry_b| ++ ++ entry_a[:seq] <=> entry_b[:seq] ++}.each { ++ |entry| ++ ++ broken, seq, rhs, comment = entry.values_at(:broken, :seq, :rhs, :comment) ++ if (rhs == :isCommentLine) ++ print comment ++ else ++ seq = seq.collect { ++ |unit| ++ raw2key[unit] || unit ++ } ++ print "#{broken} { {#{seq.join(", ")}}, #{rhs} }, // #{comment}\n" ++ end ++} +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontext.h qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext.h 2005-10-18 12:57:18.715228640 +0900 +@@ -0,0 +1,130 @@ ++/**************************************************************************** ++** $Id: qximinputcontext_p.h,v 1.6 2004/06/22 06:47:27 daisuke Exp $ ++** ++** Definition of QXIMInputContext ++** ++** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QXIMINPUTCONTEXT_H ++#define QXIMINPUTCONTEXT_H ++ ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of internal files. This header file may change from version to version ++// without notice, or even be removed. ++// ++// We mean it. ++// ++// ++ ++#if !defined(Q_NO_IM) ++ ++#include "qglobal.h" ++#include ++#include ++#include ++ ++class QKeyEvent; ++class QWidget; ++class QFont; ++class QString; ++ ++ ++#ifdef Q_WS_X11 ++#include "qarray.h" ++#include "qwindowdefs.h" ++#include ++#endif ++ ++class QXIMInputContext : public QInputContext ++{ ++ Q_OBJECT ++public: ++#ifdef Q_WS_X11 ++ QXIMInputContext(); ++ ~QXIMInputContext(); ++ ++ QString identifierName(); ++ QString language(); ++ ++ bool x11FilterEvent( QWidget *keywidget, XEvent *event ); ++ void reset(); ++ ++ void setFocus(); ++ void unsetFocus(); ++ void setMicroFocus( int x, int y, int w, int h, QFont *f = 0 ); ++ void mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, Qt::ButtonState state ); ++ bool isPreeditRelocationEnabled(); ++ ++ void setHolderWidget( QWidget *widget ); ++ ++ bool hasFocus() const; ++ void resetClientState(); ++ void close( const QString &errMsg ); ++ ++ void sendIMEvent( QEvent::Type type, ++ const QString &text = QString::null, ++ int cursorPosition = -1, int selLength = 0 ); ++ ++ static void init_xim(); ++ static void create_xim(); ++ static void close_xim(); ++ ++ void *ic; ++ QString composingText; ++ QFont font; ++ XFontSet fontset; ++ QMemArray selectedChars; ++ ++protected: ++ virtual bool isPreeditPreservationEnabled(); // not a QInputContext func ++ ++ QCString _language; ++ ++private: ++ void setComposePosition(int, int); ++ void setComposeArea(int, int, int, int); ++ void setXFontSet(const QFont &); ++ ++ int lookupString(XKeyEvent *, QCString &, KeySym *, Status *) const; ++ ++#endif // Q_WS_X11 ++}; ++ ++ ++#endif //Q_NO_IM ++ ++#endif // QXIMINPUTCONTEXT_H +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp 2005-10-18 12:58:02.200617856 +0900 +@@ -0,0 +1,930 @@ ++/**************************************************************************** ++** $Id: qximinputcontext_x11.cpp,v 1.10 2004/06/22 06:47:27 daisuke Exp $ ++** ++** Implementation of QXIMInputContext class ++** ++** Copyright (C) 2000-2003 Trolltech AS. All rights reserved. ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses for Unix/X11 may use this file in accordance with the Qt Commercial ++** License Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++ ++#include "qximinputcontext.h" ++ ++const int XKeyPress = KeyPress; ++const int XKeyRelease = KeyRelease; ++#undef KeyPress ++#undef KeyRelease ++ ++#if !defined(QT_NO_IM) ++ ++#include "qplatformdefs.h" ++ ++#include "qapplication.h" ++#include "qwidget.h" ++#include "qstring.h" ++#include "qptrlist.h" ++#include "qintdict.h" ++#include "qtextcodec.h" ++ ++#include ++#include ++ ++#if !defined(QT_NO_XIM) ++ ++#define XK_MISCELLANY ++#define XK_LATIN1 ++#include ++ ++// #define QT_XIM_DEBUG ++ ++// from qapplication_x11.cpp ++static XIM qt_xim = 0; ++extern XIMStyle qt_xim_style; ++extern XIMStyle qt_xim_preferred_style; ++extern char *qt_ximServer; ++static bool isInitXIM = FALSE; ++static QPtrList *ximContextList = 0; ++#endif ++extern int qt_ximComposingKeycode; ++extern QTextCodec * qt_input_mapper; ++ ++ ++#if !defined(QT_NO_XIM) ++ ++#if defined(Q_C_CALLBACKS) ++extern "C" { ++#endif // Q_C_CALLBACKS ++ ++#ifdef USE_X11R6_XIM ++ static void xim_create_callback(XIM /*im*/, ++ XPointer /*client_data*/, ++ XPointer /*call_data*/) ++ { ++ // qDebug("xim_create_callback"); ++ QXIMInputContext::create_xim(); ++ } ++ ++ static void xim_destroy_callback(XIM /*im*/, ++ XPointer /*client_data*/, ++ XPointer /*call_data*/) ++ { ++ // qDebug("xim_destroy_callback"); ++ QXIMInputContext::close_xim(); ++ Display *dpy = QPaintDevice::x11AppDisplay(); ++ XRegisterIMInstantiateCallback(dpy, 0, 0, 0, ++ (XIMProc) xim_create_callback, 0); ++ } ++ ++#endif // USE_X11R6_XIM ++ ++#if defined(Q_C_CALLBACKS) ++} ++#endif // Q_C_CALLBACKS ++ ++#endif // QT_NO_XIM ++ ++#ifndef QT_NO_XIM ++ ++/* The cache here is needed, as X11 leaks a few kb for every ++ XFreeFontSet call, so we avoid creating and deletion of fontsets as ++ much as possible ++*/ ++static XFontSet fontsetCache[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; ++static int fontsetRefCount = 0; ++ ++static const char * const fontsetnames[] = { ++ "-*-fixed-medium-r-*-*-16-*,-*-*-medium-r-*-*-16-*", ++ "-*-fixed-medium-i-*-*-16-*,-*-*-medium-i-*-*-16-*", ++ "-*-fixed-bold-r-*-*-16-*,-*-*-bold-r-*-*-16-*", ++ "-*-fixed-bold-i-*-*-16-*,-*-*-bold-i-*-*-16-*", ++ "-*-fixed-medium-r-*-*-24-*,-*-*-medium-r-*-*-24-*", ++ "-*-fixed-medium-i-*-*-24-*,-*-*-medium-i-*-*-24-*", ++ "-*-fixed-bold-r-*-*-24-*,-*-*-bold-r-*-*-24-*", ++ "-*-fixed-bold-i-*-*-24-*,-*-*-bold-i-*-*-24-*" ++}; ++ ++static XFontSet getFontSet( const QFont &f ) ++{ ++ int i = 0; ++ if (f.italic()) ++ i |= 1; ++ if (f.bold()) ++ i |= 2; ++ ++ if ( f.pointSize() > 20 ) ++ i += 4; ++ ++ if ( !fontsetCache[i] ) { ++ Display* dpy = QPaintDevice::x11AppDisplay(); ++ int missCount; ++ char** missList; ++ fontsetCache[i] = XCreateFontSet(dpy, fontsetnames[i], &missList, &missCount, 0); ++ if(missCount > 0) ++ XFreeStringList(missList); ++ if ( !fontsetCache[i] ) { ++ fontsetCache[i] = XCreateFontSet(dpy, "-*-fixed-*-*-*-*-16-*", &missList, &missCount, 0); ++ if(missCount > 0) ++ XFreeStringList(missList); ++ if ( !fontsetCache[i] ) ++ fontsetCache[i] = (XFontSet)-1; ++ } ++ } ++ return (fontsetCache[i] == (XFontSet)-1) ? 0 : fontsetCache[i]; ++} ++ ++ ++#ifdef Q_C_CALLBACKS ++extern "C" { ++#endif // Q_C_CALLBACKS ++ ++ // These static functions should be rewritten as member of ++ // QXIMInputContext ++ ++ static int xic_start_callback(XIC, XPointer client_data, XPointer) { ++ QXIMInputContext *qic = (QXIMInputContext *) client_data; ++ if (! qic) { ++#ifdef QT_XIM_DEBUG ++ qDebug("compose start: no qic"); ++#endif // QT_XIM_DEBUG ++ ++ return 0; ++ } ++ ++ qic->resetClientState(); ++ qic->sendIMEvent( QEvent::IMStart ); ++ ++#ifdef QT_XIM_DEBUG ++ qDebug("compose start"); ++#endif // QT_XIM_DEBUG ++ ++ return 0; ++ } ++ ++ static int xic_draw_callback(XIC, XPointer client_data, XPointer call_data) { ++ QXIMInputContext *qic = (QXIMInputContext *) client_data; ++ if (! qic) { ++#ifdef QT_XIM_DEBUG ++ qDebug("compose event: invalid compose event %p", qic); ++#endif // QT_XIM_DEBUG ++ ++ return 0; ++ } ++ ++ bool send_imstart = FALSE; ++ if( ! qic->isComposing() && qic->hasFocus() ) { ++ qic->resetClientState(); ++ send_imstart = TRUE; ++ } else if ( ! qic->isComposing() || ! qic->hasFocus() ) { ++#ifdef QT_XIM_DEBUG ++ qDebug( "compose event: invalid compose event composing=%d hasFocus=%d", ++ qic->isComposing(), qic->hasFocus() ); ++#endif // QT_XIM_DEBUG ++ ++ return 0; ++ } ++ ++ if ( send_imstart ) ++ qic->sendIMEvent( QEvent::IMStart ); ++ ++ XIMPreeditDrawCallbackStruct *drawstruct = ++ (XIMPreeditDrawCallbackStruct *) call_data; ++ XIMText *text = (XIMText *) drawstruct->text; ++ int cursor = drawstruct->caret, sellen = 0; ++ ++ if ( ! drawstruct->caret && ! drawstruct->chg_first && ++ ! drawstruct->chg_length && ! text ) { ++ if( qic->composingText.isEmpty() ) { ++#ifdef QT_XIM_DEBUG ++ qDebug( "compose emptied" ); ++#endif // QT_XIM_DEBUG ++ // if the composition string has been emptied, we need ++ // to send an IMEnd event ++ qic->sendIMEvent( QEvent::IMEnd ); ++ qic->resetClientState(); ++ // if the commit string has coming after here, IMStart ++ // will be sent dynamically ++ } ++ return 0; ++ } ++ ++ if (text) { ++ char *str = 0; ++ if (text->encoding_is_wchar) { ++ int l = wcstombs(NULL, text->string.wide_char, text->length); ++ if (l != -1) { ++ str = new char[l + 1]; ++ wcstombs(str, text->string.wide_char, l); ++ str[l] = 0; ++ } ++ } else ++ str = text->string.multi_byte; ++ ++ if (! str) ++ return 0; ++ ++ QString s = QString::fromLocal8Bit(str); ++ ++ if (text->encoding_is_wchar) ++ delete [] str; ++ ++ if (drawstruct->chg_length < 0) ++ qic->composingText.replace(drawstruct->chg_first, UINT_MAX, s); ++ else ++ qic->composingText.replace(drawstruct->chg_first, drawstruct->chg_length, s); ++ ++ if ( qic->selectedChars.size() < qic->composingText.length() ) { ++ // expand the selectedChars array if the compose string is longer ++ uint from = qic->selectedChars.size(); ++ qic->selectedChars.resize( qic->composingText.length() ); ++ for ( uint x = from; from < qic->selectedChars.size(); ++x ) ++ qic->selectedChars[x] = 0; ++ } ++ ++ uint x; ++ bool *p = qic->selectedChars.data() + drawstruct->chg_first; ++ // determine if the changed chars are selected based on text->feedback ++ for ( x = 0; x < s.length(); ++x ) ++ *p++ = ( text->feedback ? ( text->feedback[x] & XIMReverse ) : 0 ); ++ ++ // figure out where the selection starts, and how long it is ++ p = qic->selectedChars.data(); ++ bool started = FALSE; ++ for ( x = 0; x < QMIN(qic->composingText.length(), qic->selectedChars.size()); ++x ) { ++ if ( started ) { ++ if ( *p ) ++sellen; ++ else break; ++ } else { ++ if ( *p ) { ++ cursor = x; ++ started = TRUE; ++ sellen = 1; ++ } ++ } ++ ++p; ++ } ++ } else { ++ if (drawstruct->chg_length == 0) ++ drawstruct->chg_length = -1; ++ ++ qic->composingText.remove(drawstruct->chg_first, drawstruct->chg_length); ++ bool qt_compose_emptied = qic->composingText.isEmpty(); ++ if ( qt_compose_emptied ) { ++#ifdef QT_XIM_DEBUG ++ qDebug( "compose emptied" ); ++#endif // QT_XIM_DEBUG ++ // if the composition string has been emptied, we need ++ // to send an IMEnd event ++ qic->sendIMEvent( QEvent::IMEnd ); ++ qic->resetClientState(); ++ // if the commit string has coming after here, IMStart ++ // will be sent dynamically ++ return 0; ++ } ++ } ++ ++ qic->sendIMEvent( QEvent::IMCompose, ++ qic->composingText, cursor, sellen ); ++ ++ return 0; ++ } ++ ++ static int xic_done_callback(XIC, XPointer client_data, XPointer) { ++ QXIMInputContext *qic = (QXIMInputContext *) client_data; ++ if (! qic) ++ return 0; ++ ++ // Don't send IMEnd here. QXIMInputContext::x11FilterEvent() ++ // handles IMEnd with commit string. ++#if 0 ++ if ( qic->isComposing() ) ++ qic->sendIMEvent( QEvent::IMEnd ); ++ qic->resetClientState(); ++#endif ++ ++ return 0; ++ } ++ ++#ifdef Q_C_CALLBACKS ++} ++#endif // Q_C_CALLBACKS ++ ++#endif // !QT_NO_XIM ++ ++ ++ ++QXIMInputContext::QXIMInputContext() ++ : QInputContext(), ic(0), fontset(0) ++{ ++ if(!isInitXIM) ++ QXIMInputContext::init_xim(); ++} ++ ++ ++void QXIMInputContext::setHolderWidget( QWidget *widget ) ++{ ++ if ( ! widget ) ++ return; ++ ++ QInputContext::setHolderWidget( widget ); ++ ++#if !defined(QT_NO_XIM) ++ fontsetRefCount++; ++ if (! qt_xim) { ++ qWarning("QInputContext: no input method context available"); ++ return; ++ } ++ ++ if (! widget->isTopLevel()) { ++ qWarning("QInputContext: cannot create input context for non-toplevel widgets"); ++ return; ++ } ++ ++ XPoint spot; ++ XRectangle rect; ++ XVaNestedList preedit_attr = 0; ++ XIMCallback startcallback, drawcallback, donecallback; ++ ++ font = widget->font(); ++ fontset = getFontSet( font ); ++ ++ if (qt_xim_style & XIMPreeditArea) { ++ rect.x = 0; ++ rect.y = 0; ++ rect.width = widget->width(); ++ rect.height = widget->height(); ++ ++ preedit_attr = XVaCreateNestedList(0, ++ XNArea, &rect, ++ XNFontSet, fontset, ++ (char *) 0); ++ } else if (qt_xim_style & XIMPreeditPosition) { ++ spot.x = 1; ++ spot.y = 1; ++ ++ preedit_attr = XVaCreateNestedList(0, ++ XNSpotLocation, &spot, ++ XNFontSet, fontset, ++ (char *) 0); ++ } else if (qt_xim_style & XIMPreeditCallbacks) { ++ startcallback.client_data = (XPointer) this; ++ startcallback.callback = (XIMProc) xic_start_callback; ++ drawcallback.client_data = (XPointer) this; ++ drawcallback.callback = (XIMProc)xic_draw_callback; ++ donecallback.client_data = (XPointer) this; ++ donecallback.callback = (XIMProc) xic_done_callback; ++ ++ preedit_attr = XVaCreateNestedList(0, ++ XNPreeditStartCallback, &startcallback, ++ XNPreeditDrawCallback, &drawcallback, ++ XNPreeditDoneCallback, &donecallback, ++ (char *) 0); ++ } ++ ++ if (preedit_attr) { ++ ic = XCreateIC(qt_xim, ++ XNInputStyle, qt_xim_style, ++ XNClientWindow, widget->winId(), ++ XNPreeditAttributes, preedit_attr, ++ (char *) 0); ++ XFree(preedit_attr); ++ } else ++ ic = XCreateIC(qt_xim, ++ XNInputStyle, qt_xim_style, ++ XNClientWindow, widget->winId(), ++ (char *) 0); ++ ++ if (! ic) ++ qFatal("Failed to create XIM input context!"); ++ ++ // when resetting the input context, preserve the input state ++ (void) XSetICValues((XIC) ic, XNResetState, XIMPreserveState, (char *) 0); ++ ++ if( ! ximContextList ) ++ ximContextList = new QPtrList; ++ ximContextList->append( this ); ++#endif // !QT_NO_XIM ++} ++ ++ ++QXIMInputContext::~QXIMInputContext() ++{ ++ ++#if !defined(QT_NO_XIM) ++ if (ic) ++ XDestroyIC((XIC) ic); ++ ++ if ( --fontsetRefCount == 0 ) { ++ Display *dpy = QPaintDevice::x11AppDisplay(); ++ for ( int i = 0; i < 8; i++ ) { ++ if ( fontsetCache[i] && fontsetCache[i] != (XFontSet)-1 ) { ++ XFreeFontSet(dpy, fontsetCache[i]); ++ fontsetCache[i] = 0; ++ } ++ } ++ } ++ ++ if( ximContextList ) { ++ ximContextList->remove( this ); ++ if(ximContextList->isEmpty()) { ++ // Calling XCloseIM gives a Purify FMR error ++ // XCloseIM( qt_xim ); ++ // We prefer a less serious memory leak ++ if( qt_xim ) { ++ qt_xim = 0; ++ isInitXIM = FALSE; ++ } ++ ++ delete ximContextList; ++ ximContextList = 0; ++ } ++ } ++#endif // !QT_NO_XIM ++ ++ ic = 0; ++} ++ ++void QXIMInputContext::init_xim() ++{ ++#ifndef QT_NO_XIM ++ if(!isInitXIM) ++ isInitXIM = TRUE; ++ ++ qt_xim = 0; ++ QString ximServerName(qt_ximServer); ++ if (qt_ximServer) ++ ximServerName.prepend("@im="); ++ else ++ ximServerName = ""; ++ ++ if ( !XSupportsLocale() ) ++ qWarning("Qt: Locales not supported on X server"); ++ ++#ifdef USE_X11R6_XIM ++ else if ( XSetLocaleModifiers (ximServerName.ascii()) == 0 ) ++ qWarning( "Qt: Cannot set locale modifiers: %s", ++ ximServerName.ascii()); ++ else { ++ Display *dpy = QPaintDevice::x11AppDisplay(); ++ XWindowAttributes attr; // XIM unselects all events on the root window ++ XGetWindowAttributes( dpy, QPaintDevice::x11AppRootWindow(),&attr ); ++ XRegisterIMInstantiateCallback(dpy, 0, 0, 0, ++ (XIMProc) xim_create_callback, 0); ++ XSelectInput( dpy, QPaintDevice::x11AppRootWindow(), attr.your_event_mask ); ++ } ++#else // !USE_X11R6_XIM ++ else if ( XSetLocaleModifiers ("") == 0 ) ++ qWarning("Qt: Cannot set locale modifiers"); ++ else ++ QXIMInputContext::create_xim(); ++#endif // USE_X11R6_XIM ++#endif // QT_NO_XIM ++} ++ ++ ++/*! \internal ++ Creates the application input method. ++ */ ++void QXIMInputContext::create_xim() ++{ ++#ifndef QT_NO_XIM ++ Display *appDpy = QPaintDevice::x11AppDisplay(); ++ qt_xim = XOpenIM( appDpy, 0, 0, 0 ); ++ if ( qt_xim ) { ++ ++#ifdef USE_X11R6_XIM ++ XIMCallback destroy; ++ destroy.callback = (XIMProc) xim_destroy_callback; ++ destroy.client_data = 0; ++ if ( XSetIMValues( qt_xim, XNDestroyCallback, &destroy, (char *) 0 ) != 0 ) ++ qWarning( "Xlib doesn't support destroy callback"); ++#endif // USE_X11R6_XIM ++ ++ XIMStyles *styles = 0; ++ XGetIMValues(qt_xim, XNQueryInputStyle, &styles, (char *) 0, (char *) 0); ++ if ( styles ) { ++ int i; ++ for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { ++ if ( styles->supported_styles[i] == qt_xim_preferred_style ) { ++ qt_xim_style = qt_xim_preferred_style; ++ break; ++ } ++ } ++ // if the preferred input style couldn't be found, look for ++ // Nothing ++ for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { ++ if ( styles->supported_styles[i] == (XIMPreeditNothing | ++ XIMStatusNothing) ) { ++ qt_xim_style = XIMPreeditNothing | XIMStatusNothing; ++ break; ++ } ++ } ++ // ... and failing that, None. ++ for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { ++ if ( styles->supported_styles[i] == (XIMPreeditNone | ++ XIMStatusNone) ) { ++ qt_xim_style = XIMPreeditNone | XIMStatusNone; ++ break; ++ } ++ } ++ ++ // qDebug("QApplication: using im style %lx", qt_xim_style); ++ XFree( (char *)styles ); ++ } ++ ++ if ( qt_xim_style ) { ++ ++#ifdef USE_X11R6_XIM ++ XUnregisterIMInstantiateCallback(appDpy, 0, 0, 0, ++ (XIMProc) xim_create_callback, 0); ++#endif // USE_X11R6_XIM ++ ++ } else { ++ // Give up ++ qWarning( "No supported input style found." ++ " See InputMethod documentation."); ++ QXIMInputContext::close_xim(); ++ } ++ } ++#endif // QT_NO_XIM ++} ++ ++ ++/*! \internal ++ Closes the application input method. ++*/ ++void QXIMInputContext::close_xim() ++{ ++#ifndef QT_NO_XIM ++ QString errMsg( "QXIMInputContext::close_xim() has been called" ); ++ ++ // Calling XCloseIM gives a Purify FMR error ++ // XCloseIM( qt_xim ); ++ // We prefer a less serious memory leak ++ ++ qt_xim = 0; ++ if( ximContextList ) { ++ QPtrList contexts( *ximContextList ); ++ QPtrList::Iterator it = contexts.begin(); ++ while( it != contexts.end() ) { ++ (*it)->close( errMsg ); ++ ++it; ++ } ++ // ximContextList will be deleted in ~QXIMInputContext ++ } ++#endif // QT_NO_XIM ++} ++ ++ ++bool QXIMInputContext::x11FilterEvent( QWidget *keywidget, XEvent *event ) ++{ ++#ifndef QT_NO_XIM ++ int xkey_keycode = event->xkey.keycode; ++ if ( XFilterEvent( event, keywidget->topLevelWidget()->winId() ) ) { ++ qt_ximComposingKeycode = xkey_keycode; // ### not documented in xlib ++ ++ // Cancel of the composition is realizable even if ++ // follwing codes don't exist ++#if 0 ++ if ( event->type != XKeyPress || ! (qt_xim_style & XIMPreeditCallbacks) ) ++ return TRUE; ++ ++ /* ++ * The Solaris htt input method will transform a ClientMessage ++ * event into a filtered KeyPress event, in which case our ++ * keywidget is still zero. ++ */ ++ QETWidget *widget = (QETWidget*)QWidget::find( (WId)event->xany.window ); ++ if ( ! keywidget ) { ++ keywidget = (QETWidget*)QWidget::keyboardGrabber(); ++ if ( keywidget ) { ++ grabbed = TRUE; ++ } else { ++ if ( focus_widget ) ++ keywidget = (QETWidget*)focus_widget; ++ if ( !keywidget ) { ++ if ( qApp->inPopupMode() ) // no focus widget, see if we have a popup ++ keywidget = (QETWidget*) qApp->activePopupWidget(); ++ else if ( widget ) ++ keywidget = (QETWidget*)widget->topLevelWidget(); ++ } ++ } ++ } ++ ++ /* ++ if the composition string has been emptied, we need to send ++ an IMEnd event. however, we have no way to tell if the user ++ has cancelled input, or if the user has accepted the ++ composition. ++ ++ so, we have to look for the next keypress and see if it is ++ the 'commit' key press (keycode == 0). if it is, we deliver ++ an IMEnd event with the final text, otherwise we deliver an ++ IMEnd with empty text (meaning the user has cancelled the ++ input). ++ */ ++ if ( composing && focusWidget && qt_compose_emptied ) { ++ XEvent event2; ++ bool found = FALSE; ++ if ( XCheckTypedEvent( QPaintDevice::x11AppDisplay(), ++ XKeyPress, &event2 ) ) { ++ if ( event2.xkey.keycode == 0 ) { ++ // found a key event with the 'commit' string ++ found = TRUE; ++ XPutBackEvent( QPaintDevice::x11AppDisplay(), &event2 ); ++ } ++ } ++ ++ if ( !found ) { ++ // no key event, so the user must have cancelled the composition ++ QIMEvent endevent( QEvent::IMEnd, QString::null, -1 ); ++ QApplication::sendEvent( focusWidget, &endevent ); ++ ++ focusWidget = 0; ++ } ++ ++ qt_compose_emptied = FALSE; ++ } ++#endif ++ return TRUE; ++ } else if ( focusWidget() ) { ++ if ( event->type == XKeyPress && event->xkey.keycode == 0 ) { ++ // input method has sent us a commit string ++ QCString data(513); ++ KeySym sym; // unused ++ Status status; // unused ++ QString inputText; ++ int count = lookupString( &(event->xkey), data, &sym, &status ); ++ if ( count > 0 ) ++ inputText = qt_input_mapper->toUnicode( data, count ); ++ ++ if ( ! ( qt_xim_style & XIMPreeditCallbacks ) || ! isComposing() ) { ++ // there is no composing state ++ sendIMEvent( QEvent::IMStart ); ++ } ++ ++ sendIMEvent( QEvent::IMEnd, inputText ); ++ resetClientState(); ++ ++ return TRUE; ++ } ++ } ++#endif // !QT_NO_XIM ++ ++ return FALSE; ++} ++ ++ ++void QXIMInputContext::sendIMEvent( QEvent::Type type, const QString &text, ++ int cursorPosition, int selLength ) ++{ ++ QInputContext::sendIMEvent( type, text, cursorPosition, selLength ); ++ if ( type == QEvent::IMCompose ) ++ composingText = text; ++} ++ ++ ++void QXIMInputContext::reset() ++{ ++#if !defined(QT_NO_XIM) ++ if ( focusWidget() && isComposing() && ! composingText.isNull() ) { ++#ifdef QT_XIM_DEBUG ++ qDebug("QXIMInputContext::reset: composing - sending IMEnd (empty) to %p", ++ focusWidget() ); ++#endif // QT_XIM_DEBUG ++ ++ QInputContext::reset(); ++ resetClientState(); ++ ++ char *mb = XmbResetIC((XIC) ic); ++ if (mb) ++ XFree(mb); ++ } ++#endif // !QT_NO_XIM ++} ++ ++ ++void QXIMInputContext::resetClientState() ++{ ++#if !defined(QT_NO_XIM) ++ composingText = QString::null; ++ if ( selectedChars.size() < 128 ) ++ selectedChars.resize( 128 ); ++ selectedChars.fill( 0 ); ++#endif // !QT_NO_XIM ++} ++ ++ ++void QXIMInputContext::close( const QString &errMsg ) ++{ ++ qDebug( errMsg ); ++ emit deletionRequested(); ++} ++ ++ ++bool QXIMInputContext::hasFocus() const ++{ ++ return ( focusWidget() != 0 ); ++} ++ ++ ++void QXIMInputContext::setMicroFocus(int x, int y, int, int h, QFont *f) ++{ ++ QWidget *widget = focusWidget(); ++ if ( qt_xim && widget ) { ++ QPoint p( x, y ); ++ QPoint p2 = widget->mapTo( widget->topLevelWidget(), QPoint( 0, 0 ) ); ++ p = widget->topLevelWidget()->mapFromGlobal( p ); ++ setXFontSet( f ? *f : widget->font() ); ++ setComposePosition(p.x(), p.y() + h); ++ setComposeArea(p2.x(), p2.y(), widget->width(), widget->height()); ++ } ++ ++} ++ ++void QXIMInputContext::mouseHandler( int , QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState) ++{ ++ if ( type == QEvent::MouseButtonPress || ++ type == QEvent::MouseButtonDblClick ) { ++ // Don't reset Japanese input context here. Japanese input ++ // context sometimes contains a whole paragraph and has ++ // minutes of lifetime different to ephemeral one in other ++ // languages. The input context should be survived until ++ // focused again. ++ if ( ! isPreeditPreservationEnabled() ) ++ reset(); ++ } ++} ++ ++void QXIMInputContext::setComposePosition(int x, int y) ++{ ++#if !defined(QT_NO_XIM) ++ if (qt_xim && ic) { ++ XPoint point; ++ point.x = x; ++ point.y = y; ++ ++ XVaNestedList preedit_attr = ++ XVaCreateNestedList(0, ++ XNSpotLocation, &point, ++ ++ (char *) 0); ++ XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); ++ XFree(preedit_attr); ++ } ++#endif // !QT_NO_XIM ++} ++ ++ ++void QXIMInputContext::setComposeArea(int x, int y, int w, int h) ++{ ++#if !defined(QT_NO_XIM) ++ if (qt_xim && ic) { ++ XRectangle rect; ++ rect.x = x; ++ rect.y = y; ++ rect.width = w; ++ rect.height = h; ++ ++ XVaNestedList preedit_attr = XVaCreateNestedList(0, ++ XNArea, &rect, ++ ++ (char *) 0); ++ XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); ++ XFree(preedit_attr); ++ } ++#endif ++} ++ ++ ++void QXIMInputContext::setXFontSet(const QFont &f) ++{ ++#if !defined(QT_NO_XIM) ++ if (font == f) return; // nothing to do ++ font = f; ++ ++ XFontSet fs = getFontSet(font); ++ if (fontset == fs) return; // nothing to do ++ fontset = fs; ++ ++ XVaNestedList preedit_attr = XVaCreateNestedList(0, XNFontSet, fontset, (char *) 0); ++ XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); ++ XFree(preedit_attr); ++#else ++ Q_UNUSED( f ); ++#endif ++} ++ ++ ++int QXIMInputContext::lookupString(XKeyEvent *event, QCString &chars, ++ KeySym *key, Status *status) const ++{ ++ int count = 0; ++ ++#if !defined(QT_NO_XIM) ++ if (qt_xim && ic) { ++ count = XmbLookupString((XIC) ic, event, chars.data(), ++ chars.size(), key, status); ++ ++ if ((*status) == XBufferOverflow ) { ++ chars.resize(count + 1); ++ count = XmbLookupString((XIC) ic, event, chars.data(), ++ chars.size(), key, status); ++ } ++ } ++ ++#endif // QT_NO_XIM ++ ++ return count; ++} ++ ++void QXIMInputContext::setFocus() ++{ ++#if !defined(QT_NO_XIM) ++ if ( qt_xim && ic ) ++ XSetICFocus((XIC) ic); ++#endif // !QT_NO_XIM ++} ++ ++void QXIMInputContext::unsetFocus() ++{ ++#if !defined(QT_NO_XIM) ++ if (qt_xim && ic) ++ XUnsetICFocus((XIC) ic); ++#endif // !QT_NO_XIM ++ ++ // Don't reset Japanese input context here. Japanese input context ++ // sometimes contains a whole paragraph and has minutes of ++ // lifetime different to ephemeral one in other languages. The ++ // input context should be survived until focused again. ++ if ( ! isPreeditPreservationEnabled() ) ++ reset(); ++} ++ ++ ++bool QXIMInputContext::isPreeditRelocationEnabled() ++{ ++ return ( language() == "ja" ); ++} ++ ++ ++bool QXIMInputContext::isPreeditPreservationEnabled() ++{ ++ return ( language() == "ja" ); ++} ++ ++ ++QString QXIMInputContext::identifierName() ++{ ++ // the name should be "xim" rather than "XIM" to be consistent ++ // with corresponding immodule of GTK+ ++ return "xim"; ++} ++ ++ ++QString QXIMInputContext::language() ++{ ++#if !defined(QT_NO_XIM) ++ if ( qt_xim ) { ++ QString locale( XLocaleOfIM( qt_xim ) ); ++ ++ if ( locale.startsWith( "zh" ) ) { ++ // Chinese language should be formed as "zh_CN", "zh_TW", "zh_HK" ++ _language = locale.left( 5 ); ++ } else { ++ // other languages should be two-letter ISO 639 language code ++ _language = locale.left( 2 ); ++ } ++ } ++#endif ++ return _language; ++} ++ ++#endif //QT_NO_IM +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontextplugin.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontextplugin.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontextplugin.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontextplugin.cpp 2005-10-18 12:57:18.723227424 +0900 +@@ -0,0 +1,86 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Implementation of QXIMInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qximinputcontext.h" ++#include "qximinputcontextplugin.h" ++#include ++#include ++ ++ ++QXIMInputContextPlugin::QXIMInputContextPlugin() ++{ ++} ++ ++QXIMInputContextPlugin::~QXIMInputContextPlugin() ++{ ++} ++ ++QStringList QXIMInputContextPlugin::keys() const ++{ ++ return QStringList( "xim" ); ++} ++ ++QInputContext *QXIMInputContextPlugin::create( const QString & ) ++{ ++ return new QXIMInputContext; ++} ++ ++QStringList QXIMInputContextPlugin::languages( const QString & ) ++{ ++ return QStringList( "" ); ++} ++ ++QString QXIMInputContextPlugin::displayName( const QString & ) ++{ ++ return tr( "XIM" ); ++} ++ ++QString QXIMInputContextPlugin::description( const QString & ) ++{ ++ return tr( "XIM input method" ); ++} ++ ++ ++Q_EXPORT_PLUGIN( QXIMInputContextPlugin ) ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontextplugin.h qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontextplugin.h +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/qximinputcontextplugin.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontextplugin.h 2005-10-18 12:57:18.725227120 +0900 +@@ -0,0 +1,63 @@ ++/**************************************************************************** ++** $Id$ ++** ++** Definition of QXIMInputContextPlugin class ++** ++** Copyright (C) 2004 immodule for Qt Project. All rights reserved. ++** ++** This file is written to contribute to Trolltech AS under their own ++** licence. You may use this file under your Qt license. Following ++** description is copied from their original file headers. Contact ++** immodule-qt@freedesktop.org if any conditions of this licensing are ++** not clear to you. ++** ++** ++** This file is part of the input method module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QT_NO_IM ++#include "qximinputcontext.h" ++#include ++#include ++ ++ ++class QXIMInputContextPlugin : public QInputContextPlugin ++{ ++ Q_OBJECT ++public: ++ QXIMInputContextPlugin(); ++ ~QXIMInputContextPlugin(); ++ ++ QStringList keys() const; ++ QInputContext *create( const QString &key ); ++ QStringList languages( const QString &key ); ++ QString displayName( const QString &key ); ++ QString description( const QString &key ); ++}; ++ ++#endif +diff -urN qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/xim.pro qt-x11-free-3.3.5/plugins/src/inputmethods/xim/xim.pro +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/xim/xim.pro 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/xim.pro 2005-10-18 12:57:18.726226968 +0900 +@@ -0,0 +1,14 @@ ++TEMPLATE = lib ++TARGET = qxim ++DESTDIR = ../../../inputmethods ++ ++INCLUDEPATH += . ++CONFIG += qt warn_on debug plugin ++target.path += $$plugins.path/inputmethods ++INSTALLS += target ++ ++# Input ++HEADERS += qximinputcontext.h \ ++ qximinputcontextplugin.h ++SOURCES += qximinputcontext_x11.cpp \ ++ qximinputcontextplugin.cpp +diff -urN qt-x11-free-3.3.5.orig/plugins/src/src.pro qt-x11-free-3.3.5/plugins/src/src.pro +--- qt-x11-free-3.3.5.orig/plugins/src/src.pro 2003-10-31 23:36:28.000000000 +0900 ++++ qt-x11-free-3.3.5/plugins/src/src.pro 2005-10-18 12:57:18.728226664 +0900 +@@ -1,10 +1,10 @@ + TEMPLATE = subdirs + + shared { +- SUBDIRS *= accessible codecs imageformats sqldrivers styles ++ SUBDIRS *= accessible codecs imageformats inputmethods sqldrivers styles + embedded:SUBDIRS *= gfxdrivers + } + dll { +- SUBDIRS *= accessible codecs imageformats sqldrivers styles ++ SUBDIRS *= accessible codecs imageformats inputmethods sqldrivers styles + embedded:SUBDIRS *= gfxdrivers + } +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextfactory.cpp qt-x11-free-3.3.5/src/inputmethod/qinputcontextfactory.cpp +--- qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextfactory.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qinputcontextfactory.cpp 2005-10-18 12:57:18.731226208 +0900 +@@ -0,0 +1,185 @@ ++/**************************************************************************** ++** $Id: qinputcontextfactory.cpp,v 1.2 2004/06/20 18:43:11 daisuke Exp $ ++** ++** Implementation of QInputContextFactory class ++** ++** Created : 001103 ++** ++** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. ++** ++** This file is part of the widgets module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition licenses may use this ++** file in accordance with the Qt Commercial License Agreement provided ++** with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#include "qinputcontextinterface_p.h" // up here for GCC 2.7.* compatibility ++#include "qinputcontextfactory.h" ++#include "qinputcontext.h" ++ ++#ifndef QT_NO_IM ++ ++#include "qapplication.h" ++ ++#ifdef QT_THREAD_SUPPORT ++#include ++#endif // QT_THREAD_SUPPORT ++ ++#include ++ ++#include "qcleanuphandler.h" ++#include ++#ifndef QT_NO_COMPONENT ++ ++ ++static QPluginManager *manager = 0; ++static QSingleCleanupHandler< QPluginManager > cleanup_manager; ++ ++static void create_manager() ++{ ++ if( manager ) // already created ++ return; ++ ++#ifdef QT_THREAD_SUPPORT ++ // protect manager creation ++ QMutexLocker locker( qt_global_mutexpool ? ++ qt_global_mutexpool->get( &manager ) : 0); ++ ++ // we check the manager pointer again to make sure that another thread ++ // has not created the manager before us. ++ ++ if ( manager ) // already created ++ return; ++#endif ++ ++ manager = new QPluginManager( IID_QInputContextFactory, QApplication::libraryPaths(), "/inputmethods", FALSE ); ++ ++ Q_CHECK_PTR( manager ); ++ cleanup_manager.set( &manager ); ++} ++ ++#endif //QT_NO_COMPONENT ++ ++ ++/*! ++ This function generates the input context that has the identifier ++ name which is in agreement with \a key. \a widget is the client ++ widget of QInputContext. \a widget may be null. ++*/ ++QInputContext *QInputContextFactory::create( const QString& key, QWidget *widget ) ++{ ++ QInputContext *ret = 0; ++ QString inputcontext = key; ++#ifndef QT_NO_COMPONENT ++ // make sure the manager is created ++ create_manager(); ++ ++ QInterfacePtr iface; ++ manager->queryInterface( inputcontext, &iface ); ++ ++ if ( iface ) { ++ ret = iface->create( inputcontext ); ++#ifdef Q_WS_X11 ++ ret->setHolderWidget( widget ); ++#endif ++ } ++#endif ++ return ret; ++} ++ ++ ++/*! ++ This function returns the list of the names input methods. ++ Only input methods included in default and placed under ++ $QTDIR/plugins/inputmethods are listed. ++*/ ++QStringList QInputContextFactory::keys() ++{ ++ QStringList list; ++#ifndef QT_NO_COMPONENT ++ // make sure the manager is created ++ create_manager(); ++ ++ list = manager->featureList(); ++#endif //QT_NO_COMPONENT ++ ++ return list; ++} ++ ++ ++QStringList QInputContextFactory::languages( const QString &key ) ++{ ++ QStringList result; ++#ifndef QT_NO_COMPONENT ++ // make sure the manager is created ++ create_manager(); ++ ++ QInterfacePtr iface; ++ manager->queryInterface( key, &iface ); ++ ++ if ( iface ) ++ result = iface->languages( key ); ++#endif //QT_NO_COMPONENT ++ ++ return result; ++} ++ ++ ++QString QInputContextFactory::displayName( const QString &key ) ++{ ++ QString result( "" ); ++#ifndef QT_NO_COMPONENT ++ // make sure the manager is created ++ create_manager(); ++ ++ QInterfacePtr iface; ++ manager->queryInterface( key, &iface ); ++ ++ if ( iface ) ++ result = iface->displayName( key ); ++#endif //QT_NO_COMPONENT ++ ++ return result; ++} ++ ++ ++QString QInputContextFactory::description( const QString &key ) ++{ ++ QString result( "" ); ++#ifndef QT_NO_COMPONENT ++ // make sure the manager is created ++ create_manager(); ++ ++ QInterfacePtr iface; ++ manager->queryInterface( key, &iface ); ++ ++ if ( iface ) ++ result = iface->description( key ); ++#endif //QT_NO_COMPONENT ++ ++ return result; ++} ++ ++#endif // QT_NO_IM +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextfactory.h qt-x11-free-3.3.5/src/inputmethod/qinputcontextfactory.h +--- qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextfactory.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qinputcontextfactory.h 2005-10-18 12:57:18.733225904 +0900 +@@ -0,0 +1,59 @@ ++/**************************************************************************** ++** $Id: qinputcontextfactory.h,v 1.1.1.1 2004/05/11 11:16:49 daisuke Exp $ ++** ++** Definition of QInputContextFactory class ++** ++** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ++** ++** This file is part of the widgets module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QINPUTCONTEXTFACTORY_H ++#define QINPUTCONTEXTFACTORY_H ++ ++#ifndef QT_H ++#include "qstringlist.h" ++#endif // QT_H ++ ++#ifndef QT_NO_IM ++ ++class QInputContext; ++class QWidget; ++ ++class Q_EXPORT QInputContextFactory ++{ ++public: ++ static QStringList keys(); ++ static QInputContext *create( const QString &key, QWidget *widget ); // should be a toplevel widget ++ static QStringList languages( const QString &key ); ++ static QString displayName( const QString &key ); ++ static QString description( const QString &key ); ++}; ++#endif //QT_NO_IM ++ ++#endif //QINPUTCONTEXTFACTORY_H +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextinterface_p.h qt-x11-free-3.3.5/src/inputmethod/qinputcontextinterface_p.h +--- qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextinterface_p.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qinputcontextinterface_p.h 2005-10-18 12:57:18.734225752 +0900 +@@ -0,0 +1,87 @@ ++/**************************************************************************** ++** $Id: qinputcontextinterface_p.h,v 1.2 2004/06/20 18:43:11 daisuke Exp $ ++** ++** ... ++** ++** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ++** ++** This file is part of the widgets module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QINPUTCONTEXTINTERFACE_P_H ++#define QINPUTCONTEXTINTERFACE_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. This header file may ++// change from version to version without notice, or even be ++// removed. ++// ++// We mean it. ++// ++// ++ ++#ifndef QT_H ++#include ++#endif // QT_H ++ ++#ifndef QT_NO_IM ++#ifndef QT_NO_COMPONENT ++ ++class QWidget; ++class QInputContext; ++ ++// old version interface in qt-x11-immodule-bc-qt3.3.2-20040623.diff: ++// {6C2B9EDE-B63C-14c9-A729-3C7643739C4C} ++// ++// new version interface: ++// {a5f5c63d-e044-11d8-9718-000d6077a78d} ++// {b0bf3e59-e526-11d8-80da-000d6077a78d} ++// {9ef05c7f-0272-11d9-846c-000d6077a78d} ++ ++#ifndef IID_QInputContextFactory ++//#define IID_QInputContextFactory QUuid(0x6c2b9ede, 0xb63c, 0x14c9, 0xa7, 0x29, 0x3c, 0x76, 0x43, 0x73, 0x9c, 0x4c) ++//#define IID_QInputContextFactory QUuid(0xa5f5c63d, 0xe044, 0x11d8, 0x97, 0x18, 0x00, 0x0d, 0x60, 0x77, 0xa7, 0x8d) ++//#define IID_QInputContextFactory QUuid(0xb0bf3e59, 0xe526, 0x11d8, 0x80, 0xda, 0x00, 0x0d, 0x60, 0x77, 0xa7, 0x8d) ++#define IID_QInputContextFactory QUuid(0x9ef05c7f, 0x0272, 0x11d9, 0x84, 0x6c, 0x00, 0x0d, 0x60, 0x77, 0xa7, 0x8d) ++#endif ++ ++struct Q_EXPORT QInputContextFactoryInterface : public QFeatureListInterface ++{ ++ virtual QInputContext *create( const QString &key ) = 0; ++ virtual QStringList languages( const QString &key ) = 0; ++ virtual QString displayName( const QString &key ) = 0; ++ virtual QString description( const QString &key ) = 0; ++}; ++ ++#endif //QT_NO_COMPONENT ++#endif //QT_NO_IM ++ ++#endif //QINPUTCONTEXTINTERFACE_P_H +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextplugin.cpp qt-x11-free-3.3.5/src/inputmethod/qinputcontextplugin.cpp +--- qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextplugin.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qinputcontextplugin.cpp 2005-10-18 12:57:18.737225296 +0900 +@@ -0,0 +1,231 @@ ++/**************************************************************************** ++** $Id: qinputcontextplugin.cpp,v 1.2 2004/06/20 18:43:11 daisuke Exp $ ++** ++** Implementation of QInputContextPlugin class ++** ++** Created : 010920 ++** ++** Copyright (C) 2001 Trolltech AS. All rights reserved. ++** ++** This file is part of the widgets module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#include "qinputcontextplugin.h" ++ ++#ifndef QT_NO_IM ++#ifndef QT_NO_COMPONENT ++ ++#include "qinputcontextinterface_p.h" ++ ++/*! ++ \class QInputContextPlugin qinputcontextplugin.h ++ \brief The QInputContextPlugin class provides an abstract base for custom QInputContext plugins. ++ \reentrant ++ \ingroup plugins ++ ++ The input context plugin is a simple plugin interface that makes it ++ easy to create custom input contexts that can be loaded dynamically ++ into applications. ++ ++ Writing a input context plugin is achieved by subclassing this ++ base class, reimplementing the pure virtual functions keys(), ++ create(), languages(), displayName() description() and exporting ++ the class with the \c Q_EXPORT_PLUGIN macro. See the \link ++ plugins-howto.html Qt Plugins documentation \endlink for details. ++ ++ \sa QInputContext ++*/ ++ ++/*! ++ \fn QStringList QInputContextPlugin::keys() const ++ ++ Returns the list of QInputContext keys this plugin provides. ++ ++ These keys are usually the class names of the custom input context ++ that are implemented in the plugin. ++ ++ Return value is the names to identify and specify input methods ++ for the input method switching mechanism and so on. The names have ++ to be consistent with QInputContext::identifierName(). The names ++ have to consist of ASCII characters only. See also ++ QInputContext::identifierName() for further information. ++ ++ \sa create(), displayName(), QInputContext::identifierName() ++*/ ++ ++/*! ++ \fn QInputContext* QInputContextPlugin::create( const QString& key ) ++ ++ Creates and returns a QInputContext instance for the input context key \a key. ++ The input context key is usually the class name of the required input method. ++ ++ \sa keys() ++*/ ++ ++/*! ++ \fn QStringList languages( const QString &key ) ++ ++ Returns what languages are supported by the QInputContext instance ++ specified by \a key. ++ ++ The languages are expressed as language code (e.g. "zh_CN", ++ "zh_TW", "zh_HK", "ja", "ko", ...). An input context that suports ++ multiple languages can return all supported languages as ++ QStringList. The name has to be consistent with ++ QInputContextPlugin::language(). ++ ++ This information may be used to optimize user interface. ++ ++ \sa QInputContext::language() ++*/ ++ ++/*! ++ \fn QString displayName( const QString &key ) ++ ++ Returns a user friendly i18n-ized name of the QInputContext ++ instance specified by \a key. This string may be appeared in a ++ menu and so on for users. ++ ++ There are two different names with different responsibility in the ++ input method domain. This function returns one of them. Another ++ name is called 'identifier name' to identify and specify input ++ methods for the input method switching mechanism and so on. ++ ++ Although tr( identifierName ) can provide user friendly i18n-ized ++ name without this function, the message catalog have to be managed ++ by Qt in the case. However, some sophisticated input method ++ framework manages their own message catalogs to provide this ++ i18n-ized name string. So we need this function rather than just ++ call tr() for identifier name. ++ ++ \sa keys(), QInputContext::identifierName() ++*/ ++ ++/*! ++ \fn QString description( const QString &key ) ++ ++ Returns a i18n-ized brief description of the QInputContext ++ instance specified by \a key. This string may be appeared in some ++ user interfaces. ++*/ ++ ++ ++ ++class QInputContextPluginPrivate : public QInputContextFactoryInterface ++{ ++public: ++ QInputContextPluginPrivate( QInputContextPlugin *p ) ++ : plugin( p ) ++ { ++ } ++ ++ virtual ~QInputContextPluginPrivate(); ++ ++ QRESULT queryInterface( const QUuid &iid, QUnknownInterface **iface ); ++ Q_REFCOUNT; ++ ++ QStringList featureList() const; ++ QInputContext *create( const QString &key ); ++ QStringList languages( const QString &key ); ++ QString displayName( const QString &key ); ++ QString description( const QString &key ); ++ ++private: ++ QInputContextPlugin *plugin; ++}; ++ ++QRESULT QInputContextPluginPrivate::queryInterface( const QUuid &iid, QUnknownInterface **iface ) ++{ ++ *iface = 0; ++ ++ if ( iid == IID_QUnknown ) ++ *iface = this; ++ else if ( iid == IID_QFeatureList ) ++ *iface = this; ++ else if ( iid == IID_QInputContextFactory ) ++ *iface = this; ++ else ++ return QE_NOINTERFACE; ++ ++ (*iface)->addRef(); ++ return QS_OK; ++} ++ ++QInputContextPluginPrivate::~QInputContextPluginPrivate() ++{ ++ delete plugin; ++} ++ ++QStringList QInputContextPluginPrivate::featureList() const ++{ ++ return plugin->keys(); ++} ++ ++QInputContext *QInputContextPluginPrivate::create( const QString &key ) ++{ ++ return plugin->create( key ); ++} ++ ++QStringList QInputContextPluginPrivate::languages( const QString &key ) ++{ ++ return plugin->languages( key ); ++} ++ ++QString QInputContextPluginPrivate::displayName( const QString &key ) ++{ ++ return plugin->displayName( key ); ++} ++ ++QString QInputContextPluginPrivate::description( const QString &key ) ++{ ++ return plugin->description( key ); ++} ++ ++ ++/*! ++ Constructs a input context plugin. This is invoked automatically by the ++ \c Q_EXPORT_PLUGIN macro. ++*/ ++QInputContextPlugin::QInputContextPlugin() ++ : QGPlugin( d = new QInputContextPluginPrivate( this ) ) ++{ ++} ++ ++/*! ++ Destroys the input context plugin. ++ ++ You never have to call this explicitly. Qt destroys a plugin ++ automatically when it is no longer used. ++*/ ++QInputContextPlugin::~QInputContextPlugin() ++{ ++ // don't delete d, as this is deleted by d ++} ++ ++#endif // QT_NO_COMPONENT ++#endif // QT_NO_IM +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextplugin.h qt-x11-free-3.3.5/src/inputmethod/qinputcontextplugin.h +--- qt-x11-free-3.3.5.orig/src/inputmethod/qinputcontextplugin.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qinputcontextplugin.h 2005-10-18 12:57:18.739224992 +0900 +@@ -0,0 +1,67 @@ ++/**************************************************************************** ++** $Id: qinputcontextplugin.h,v 1.2 2004/06/20 18:43:11 daisuke Exp $ ++** ++** Definition of QInputContextPlugin class ++** ++** Created : 010920 ++** ++** Copyright (C) 2001 Trolltech AS. All rights reserved. ++** ++** This file is part of the tools module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QINPUTCONTEXTPLUGIN_H ++#define QINPUTCONTEXTPLUGIN_H ++ ++#ifndef QT_H ++#include "qgplugin.h" ++#include "qstringlist.h" ++#endif // QT_H ++ ++#ifndef QT_NO_IM ++class QInputContext; ++class QInputContextPluginPrivate; ++ ++class Q_EXPORT QInputContextPlugin : public QGPlugin ++{ ++ Q_OBJECT ++public: ++ QInputContextPlugin(); ++ ~QInputContextPlugin(); ++ ++ virtual QStringList keys() const = 0; ++ virtual QInputContext *create( const QString &key ) = 0; ++ virtual QStringList languages( const QString &key ) = 0; ++ virtual QString displayName( const QString &key ) = 0; ++ virtual QString description( const QString &key ) = 0; ++ ++private: ++ QInputContextPluginPrivate *d; ++}; ++#endif // QT_NO_IM ++#endif // QINPUTCONTEXTPLUGIN_H +diff -urN qt-x11-free-3.3.5.orig/src/inputmethod/qt_inputmethod.pri qt-x11-free-3.3.5/src/inputmethod/qt_inputmethod.pri +--- qt-x11-free-3.3.5.orig/src/inputmethod/qt_inputmethod.pri 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/inputmethod/qt_inputmethod.pri 2005-10-18 12:57:18.740224840 +0900 +@@ -0,0 +1,10 @@ ++# Qt inputmetod module ++ ++inputmethod { ++ INPUTMETHOD_P = inputmethod ++ HEADERS +=$$INPUTMETHOD_H/qinputcontextfactory.h \ ++ $$INPUTMETHOD_P/qinputcontextinterface_p.h \ ++ $$INPUTMETHOD_H/qinputcontextplugin.h ++ SOURCES +=$$INPUTMETHOD_CPP/qinputcontextfactory.cpp \ ++ $$INPUTMETHOD_CPP/qinputcontextplugin.cpp ++} +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qapplication.cpp qt-x11-free-3.3.5/src/kernel/qapplication.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qapplication.cpp 2005-09-02 21:43:06.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qapplication.cpp 2005-10-18 12:57:18.754222712 +0900 +@@ -3161,6 +3161,35 @@ + }; + } + ++#if !defined(QT_NO_IM) ++ // if this is one of the compressible IM events, do compression ++ else if ( event->type() == QEvent::IMCompose ) { ++ l->last(); ++ QPostEvent * cur = 0; ++ for ( ;; ) { ++ while ( (cur=l->current()) != 0 && ++ ( cur->receiver != receiver || ++ cur->event == 0 || ++ cur->event->type() != event->type() || ++ cur->event->type() != QEvent::IMStart ) ) ++ l->prev(); ++ if ( l->current() != 0 ) { ++ // IMCompose must not be compressed with another one ++ // beyond its IMStart boundary ++ if ( cur->event->type() == QEvent::IMStart ) { ++ break; ++ } else if ( cur->event->type() == QEvent::IMCompose ) { ++ QIMComposeEvent * e = (QIMComposeEvent *)(cur->event); ++ *e = *(QIMComposeEvent *)event; ++ delete event; ++ return; ++ } ++ } ++ break; ++ }; ++ } ++#endif ++ + // if no compression could be done, just append something + event->posted = TRUE; + QPostEvent * pe = new QPostEvent( receiver, event ); +@@ -3307,6 +3336,23 @@ + + void QApplication::removePostedEvents( QObject *receiver ) + { ++ removePostedEvents( receiver, 0 ); ++} ++ ++/*! ++ Removes all events that have the event type \a event_type posted ++ using postEvent() for \a receiver. ++ ++ The events are \e not dispatched, instead they are removed from the ++ queue. ++ ++ If \a event_type is 0, all the events are removed from the queue. ++ ++ \threadsafe ++*/ ++ ++void QApplication::removePostedEvents( QObject *receiver, int event_type ) ++{ + if ( !receiver ) + return; + +@@ -3325,18 +3371,24 @@ + // leave the QPostEvent objects; they'll be deleted by + // sendPostedEvents(). + QPostEventList * l = receiver->postedEvents; +- receiver->postedEvents = 0; + l->first(); + QPostEvent * pe; + while( (pe=l->current()) != 0 ) { +- if ( pe->event ) { +- pe->event->posted = FALSE; +- delete pe->event; +- pe->event = 0; ++ if ( !event_type || pe->event->type() == event_type ) { ++ if ( pe->event ) { ++ pe->event->posted = FALSE; ++ delete pe->event; ++ pe->event = 0; ++ } ++ l->remove(); ++ } else { ++ l->next(); + } +- l->remove(); + } +- delete l; ++ if ( !event_type || !l->count() ) { ++ receiver->postedEvents = 0; ++ delete l; ++ } + } + + +@@ -3521,6 +3573,8 @@ + focus_widget = 0; + #ifdef Q_WS_WIN + QInputContext::accept( tmp ); ++#elif defined(Q_WS_X11) ++ tmp->unfocusInputContext(); + #endif + QApplication::sendSpontaneousEvent( tmp, &out ); + } else if ( active_window ) { +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qapplication.h qt-x11-free-3.3.5/src/kernel/qapplication.h +--- qt-x11-free-3.3.5.orig/src/kernel/qapplication.h 2005-09-02 21:43:03.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qapplication.h 2005-10-18 12:57:18.768220584 +0900 +@@ -51,6 +51,9 @@ + class QStyle; + class QTranslator; + class QEventLoop; ++#if defined(Q_WS_X11) ++class QIMEvent; ++#endif + #if defined(Q_WS_QWS) + class QWSDecoration; + #endif +@@ -272,8 +275,19 @@ + virtual void saveState( QSessionManager& sm ); + #endif + #if defined(Q_WS_X11) ++#if !defined(QT_NO_IM_EXTENSIONS) ++ virtual QWidget *locateICHolderWidget( QWidget *w ); ++ virtual QWidgetList *icHolderWidgets(); ++ static void create_im(); ++ static void close_im(); ++#else ++ QWidget *locateICHolderWidget( QWidget *w ); ++ QWidgetList *icHolderWidgets(); + static void create_xim(); + static void close_xim(); ++#endif ++ static QString defaultInputMethod(); ++ void changeAllInputContext( const QString & ); + static bool x11_apply_settings(); + #endif + void wakeUpGuiThread(); +@@ -328,6 +342,12 @@ + friend void qt_init(int *, char **, QApplication::Type); + #endif + ++#if defined(Q_WS_X11) ++private slots: ++ void postIMEvent( QObject *receiver, QIMEvent *event ); ++#endif ++ ++private: + #ifdef QT_THREAD_SUPPORT + static QMutex *qt_mutex; + #endif // QT_THREAD_SUPPORT +@@ -377,9 +397,12 @@ + static QString* session_key; + bool is_session_restored; + #endif +-#if defined(Q_WS_X11) && !defined (QT_NO_STYLE ) ++#if defined(Q_WS_X11) ++#if !defined (QT_NO_STYLE) + static void x11_initialize_style(); + #endif ++ static QString defaultIM; // default input method's name in this application. ++#endif + + static QSize app_strut; + #ifndef QT_NO_COMPONENT +@@ -396,6 +419,7 @@ + + static bool sendSpontaneousEvent( QObject *receiver, QEvent *event ); + static void removePostedEvent( QEvent * ); ++ static void removePostedEvents( QObject *receiver, int event_type ); + + friend class QWidget; + friend class QETWidget; +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qapplication_x11.cpp qt-x11-free-3.3.5/src/kernel/qapplication_x11.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qapplication_x11.cpp 2005-09-02 21:42:59.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qapplication_x11.cpp 2005-10-18 12:57:18.791217088 +0900 +@@ -89,7 +89,9 @@ + #include "qfileinfo.h" + + // Input method stuff - UNFINISHED +-#include "qinputcontext_p.h" ++#ifndef QT_NO_IM ++#include "qinputcontext.h" ++#endif // QT_NO_IM + #include "qinternal_p.h" // shared double buffer cleanup + + #if defined(QT_THREAD_SUPPORT) +@@ -189,10 +191,9 @@ + static const char *mwGeometry = 0; // main widget geometry + static const char *mwTitle = 0; // main widget title + //Ming-Che 10/10 +-static char *ximServer = 0; // XIM Server will connect to ++char *qt_ximServer = 0; // XIM Server will connect to + static bool mwIconic = FALSE; // main widget iconified + //Ming-Che 10/10 +-static bool noxim = FALSE; // connect to xim or not + static Display *appDpy = 0; // X11 application display + static char *appDpyName = 0; // X11 display name + static bool appForeignDpy = FALSE; // we didn't create display +@@ -391,14 +392,14 @@ + + + #if !defined(QT_NO_XIM) +-XIM qt_xim = 0; ++//XIM qt_xim = 0; + XIMStyle qt_xim_style = 0; ++XIMStyle qt_xim_preferred_style = 0; + static XIMStyle xim_default_style = XIMPreeditCallbacks | XIMStatusNothing; +-static XIMStyle xim_preferred_style = 0; + #endif + +-static int composingKeycode=0; +-static QTextCodec * input_mapper = 0; ++int qt_ximComposingKeycode=0; ++QTextCodec * qt_input_mapper = 0; + + Q_EXPORT Time qt_x_time = CurrentTime; + Q_EXPORT Time qt_x_user_time = CurrentTime; +@@ -511,8 +512,7 @@ + void setWFlags( WFlags f ) { QWidget::setWFlags(f); } + void clearWFlags( WFlags f ) { QWidget::clearWFlags(f); } + bool translateMouseEvent( const XEvent * ); +- bool translateKeyEventInternal( const XEvent *, int& count, QString& text, int& state, char& ascii, int &code, +- QEvent::Type &type, bool willRepeat=FALSE ); ++ bool translateKeyEventInternal( const XEvent *, int& count, QString& text, int& state, char& ascii, int &code, QEvent::Type &type, bool willRepeat=FALSE, bool statefulTranslation=TRUE ); + bool translateKeyEvent( const XEvent *, bool grab ); + bool translatePaintEvent( const XEvent * ); + bool translateConfigEvent( const XEvent * ); +@@ -529,114 +529,120 @@ + + + // ************************************************************************ +-// X Input Method support ++// Input Method support + // ************************************************************************ + +-#if !defined(QT_NO_XIM) ++/*! ++ An identifier name of the default input method. ++*/ ++QString QApplication::defaultIM = "imsw-multi"; + +-#if defined(Q_C_CALLBACKS) +-extern "C" { +-#endif // Q_C_CALLBACKS + +-#ifdef USE_X11R6_XIM +- static void xim_create_callback(XIM /*im*/, +- XPointer /*client_data*/, +- XPointer /*call_data*/) +- { +- // qDebug("xim_create_callback"); +- QApplication::create_xim(); +- } ++/*! ++ This function handles the query about location of the widget ++ holding the QInputContext instance for widget \a w. + +- static void xim_destroy_callback(XIM /*im*/, +- XPointer /*client_data*/, +- XPointer /*call_data*/) +- { +- // qDebug("xim_destroy_callback"); +- QApplication::close_xim(); +- XRegisterIMInstantiateCallback(appDpy, 0, 0, 0, +- (XIMProc) xim_create_callback, 0); +- } ++ The input context is used for text input to widget \a w. By ++ default, it returns the top-level widget of \a w. + +-#endif // USE_X11R6_XIM ++ If you want to change the mapping of widget \w to QInputContext ++ instance, reimplement both this function and ++ QApplication::icHolderWidgets(). For example, suppose a tabbed web ++ browser. The browser should allocate a input context per tab ++ widget because users may switch the tabs and input a new text ++ during previous input contexts live. + +-#if defined(Q_C_CALLBACKS) ++ See also 'Sharing input context between text widgets' and 'Preedit ++ preservation' section of the class description of QInputContext. ++ ++ \sa QInputContext, icHolderWidgets() ++*/ ++QWidget *QApplication::locateICHolderWidget( QWidget *w ) ++{ ++ return w->topLevelWidget(); + } +-#endif // Q_C_CALLBACKS + +-#endif // QT_NO_XIM + ++/*! ++ This function returns all widgets holding QInputContext. + +-/*! \internal +- Creates the application input method. +- */ +-void QApplication::create_xim() ++ By default, This function returns top-level widgets. So if you ++ want to change the mapping of a widget to QInputContext instance, ++ you must override this function and locateICHolderWidget(). ++ ++ \sa locateICHolderWidget() ++*/ ++QWidgetList *QApplication::icHolderWidgets() + { +-#ifndef QT_NO_XIM +- qt_xim = XOpenIM( appDpy, 0, 0, 0 ); +- if ( qt_xim ) { ++ return QApplication::topLevelWidgets(); ++} + +-#ifdef USE_X11R6_XIM +- XIMCallback destroy; +- destroy.callback = (XIMProc) xim_destroy_callback; +- destroy.client_data = 0; +- if ( XSetIMValues( qt_xim, XNDestroyCallback, &destroy, (char *) 0 ) != 0 ) +- qWarning( "Xlib dosn't support destroy callback"); +-#endif // USE_X11R6_XIM +- +- XIMStyles *styles = 0; +- XGetIMValues(qt_xim, XNQueryInputStyle, &styles, (char *) 0, (char *) 0); +- if ( styles ) { +- int i; +- for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { +- if ( styles->supported_styles[i] == xim_preferred_style ) { +- qt_xim_style = xim_preferred_style; +- break; +- } +- } +- // if the preferred input style couldn't be found, look for +- // Nothing +- for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { +- if ( styles->supported_styles[i] == (XIMPreeditNothing | +- XIMStatusNothing) ) { +- qt_xim_style = XIMPreeditNothing | XIMStatusNothing; +- break; +- } +- } +- // ... and failing that, None. +- for ( i = 0; !qt_xim_style && i < styles->count_styles; i++ ) { +- if ( styles->supported_styles[i] == (XIMPreeditNone | +- XIMStatusNone) ) { +- qt_xim_style = XIMPreeditNone | XIMStatusNone; +- break; +- } +- } + +- // qDebug("QApplication: using im style %lx", qt_xim_style); +- XFree( (char *)styles ); +- } ++/*! ++ This function replaces all QInputContext instances in the ++ application. The function's argument is the identifier name of ++ the newly selected input method. ++*/ ++void QApplication::changeAllInputContext( const QString &identifierName ) ++{ ++ QWidgetList *list = qApp->icHolderWidgets(); ++ QWidgetListIt it(*list); ++ while(it.current()) { ++ it.current()->changeInputContext( identifierName ); ++ ++it; ++ } ++ delete list; ++ ++ // defaultIM = identifierName ; // Change of defaultIM -- default input method -- may be enabled. ++} + +- if ( qt_xim_style ) { + +-#ifdef USE_X11R6_XIM +- XUnregisterIMInstantiateCallback(appDpy, 0, 0, 0, +- (XIMProc) xim_create_callback, 0); +-#endif // USE_X11R6_XIM +- +- QWidgetList *list= qApp->topLevelWidgets(); +- QWidgetListIt it(*list); +- QWidget * w; +- while( (w=it.current()) != 0 ) { +- ++it; +- w->createTLSysExtra(); +- } +- delete list; +- } else { +- // Give up +- qWarning( "No supported input style found." +- " See InputMethod documentation."); +- close_xim(); +- } ++/*! ++ \internal ++ This is an internal function, you should never call this. ++ ++ \sa QInputContext::imEventGenerated() ++*/ ++void QApplication::postIMEvent( QObject *receiver, QIMEvent *event ) ++{ ++ if ( event->type() == QEvent::IMCompose ) { ++ // enable event compression to reduce preedit flicker on fast ++ // typing ++ postEvent( receiver, event ); ++ } else { ++ // cancel queued preedit update ++ if ( event->type() == QEvent::IMEnd ) ++ removePostedEvents( receiver, QEvent::IMCompose ); ++ ++ // to avoid event receiving order inversion between QKeyEvent ++ // and QIMEvent, we must send IMStart and IMEnd via ++ // sendEvent(). ++ sendEvent( receiver, event ); ++ delete event; + } ++} ++ ++ ++/*! ++ This function returns the identifier name of the default input ++ method in this Application. The value is identical to the value of ++ QApplication::defaultIM. ++*/ ++QString QApplication::defaultInputMethod() ++{ ++ return QApplication::defaultIM; ++} ++ ++ ++#if !defined(QT_NO_IM_EXTENSIONS) ++/*! \internal ++ Creates the application input method. ++*/ ++void QApplication::create_im() ++{ ++#ifndef QT_NO_XIM ++ if ( ! qt_xim_preferred_style ) // no configured input style, use the default ++ qt_xim_preferred_style = xim_default_style; + #endif // QT_NO_XIM + } + +@@ -644,6 +650,43 @@ + /*! \internal + Closes the application input method. + */ ++void QApplication::close_im() ++{ ++ QWidgetList *list = qApp->icHolderWidgets(); ++ QWidgetListIt it(*list); ++ while(it.current()) { ++ it.current()->destroyInputContext(); ++ ++it; ++ } ++ delete list; ++} ++ ++#else ++ ++/*! \internal ++ Creates the application input method. ++*/ ++void QApplication::create_xim() ++{ ++#ifndef QT_NO_XIM ++ if ( ! qt_xim_preferred_style ) // no configured input style, use the default ++ qt_xim_preferred_style = xim_default_style; ++#endif // QT_NO_XIM ++ ++ QWidgetList *list= qApp->topLevelWidgets(); ++ QWidgetListIt it(*list); ++ QWidget * w; ++ while( (w=it.current()) != 0 ) { ++ ++it; ++ w->createTLSysExtra(); ++ } ++ delete list; ++} ++ ++ ++ /*! \internal ++ Closes the application input method. ++ */ + void QApplication::close_xim() + { + #ifndef QT_NO_XIM +@@ -651,7 +694,10 @@ + // XCloseIM( qt_xim ); + // We prefer a less serious memory leak + +- qt_xim = 0; ++ // if ( qt_xim ) ++ // qt_xim = 0; ++ ++#endif // QT_NO_XIM + QWidgetList *list = qApp->topLevelWidgets(); + QWidgetListIt it(*list); + while(it.current()) { +@@ -659,9 +705,8 @@ + ++it; + } + delete list; +-#endif // QT_NO_XIM + } +- ++#endif + + /***************************************************************************** + Default X error handlers +@@ -1032,18 +1077,40 @@ + settings.readBoolEntry("/qt/useRtlExtensions", FALSE); + + #ifndef QT_NO_XIM +- if (xim_preferred_style == 0) { ++ if (qt_xim_preferred_style == 0) { + QString ximInputStyle = + settings.readEntry( "/qt/XIMInputStyle", + QObject::trUtf8( "On The Spot" ) ).lower(); + if ( ximInputStyle == "on the spot" ) +- xim_preferred_style = XIMPreeditCallbacks | XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditCallbacks | XIMStatusNothing; + else if ( ximInputStyle == "over the spot" ) +- xim_preferred_style = XIMPreeditPosition | XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditPosition | XIMStatusNothing; + else if ( ximInputStyle == "off the spot" ) +- xim_preferred_style = XIMPreeditArea | XIMStatusArea; ++ qt_xim_preferred_style = XIMPreeditArea | XIMStatusArea; + else if ( ximInputStyle == "root" ) +- xim_preferred_style = XIMPreeditNothing | XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditNothing | XIMStatusNothing; ++ } ++#endif ++ ++#ifndef QT_NO_IM ++ /* ++ The identifier name of an input method is acquired from the ++ configuration file as a default. If a environment variable ++ "QT_IM_SWITCHER" is not empty it will overwrite the ++ configuration file. The "imsw-multi" becomes the default if the entry ++ is not configured. ++ */ ++ if ( getenv( "QT_IM_SWITCHER" ) ) ++ defaultIM = getenv( "QT_IM_SWITCHER" ); ++#ifndef QT_NO_IM_EXTENSIONS ++ else ++ defaultIM = settings.readEntry( "/qt/DefaultInputMethodSwitcher", "imsw-multi" ); ++#endif ++ ++ // defaultIM is restricted to be an IM-switcher. An IM-switcher ++ // has a 'imsw-' prefix ++ if ( ! defaultIM.startsWith( "imsw-" ) ) { ++ defaultIM = "imsw-multi"; + } + #endif + +@@ -1079,19 +1146,19 @@ + // Always use the locale codec, since we have no examples of non-local + // XIMs, and since we cannot get a sensible answer about the encoding + // from the XIM. +- input_mapper = QTextCodec::codecForLocale(); ++ qt_input_mapper = QTextCodec::codecForLocale(); + + } else { + if ( !qstricmp( data, "locale" ) ) +- input_mapper = QTextCodec::codecForLocale(); ++ qt_input_mapper = QTextCodec::codecForLocale(); + else +- input_mapper = QTextCodec::codecForName( data ); ++ qt_input_mapper = QTextCodec::codecForName( data ); + // make sure we have an input codec +- if( !input_mapper ) +- input_mapper = QTextCodec::codecForName( "ISO 8859-1" ); ++ if( !qt_input_mapper ) ++ qt_input_mapper = QTextCodec::codecForName( "ISO 8859-1" ); + } +- if ( input_mapper->mibEnum() == 11 ) // 8859-8 +- input_mapper = QTextCodec::codecForName( "ISO 8859-8-I"); ++ if ( qt_input_mapper->mibEnum() == 11 ) // 8859-8 ++ qt_input_mapper = QTextCodec::codecForName( "ISO 8859-8-I"); + if( data ) + XFree( (char *)data ); + } +@@ -1529,6 +1596,8 @@ + + #define XK_MISCELLANY + #define XK_LATIN1 ++#define XK_KOREAN ++#define XK_XKB_KEYS + #include + + // ### This should be static but it isn't because of the friend declaration +@@ -1619,10 +1688,7 @@ + //Ming-Che 10/10 + } else if ( arg == "-im" ) { + if ( ++i < argc ) +- ximServer = argv[i]; +- } else if ( arg == "-noxim" ) { +- noxim=TRUE; +- // ++ qt_ximServer = argv[i]; + } else if ( arg == "-iconic" ) { + mwIconic = !mwIconic; + } else if ( arg == "-ncols" ) { // xv and netscape use this name +@@ -1642,17 +1708,17 @@ + if ( ++i < argc ) { + QCString s = QCString(argv[i]).lower(); + if ( s == "onthespot" ) +- xim_preferred_style = XIMPreeditCallbacks | +- XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditCallbacks | ++ XIMStatusNothing; + else if ( s == "overthespot" ) +- xim_preferred_style = XIMPreeditPosition | +- XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditPosition | ++ XIMStatusNothing; + else if ( s == "offthespot" ) +- xim_preferred_style = XIMPreeditArea | +- XIMStatusArea; ++ qt_xim_preferred_style = XIMPreeditArea | ++ XIMStatusArea; + else if ( s == "root" ) +- xim_preferred_style = XIMPreeditNothing | +- XIMStatusNothing; ++ qt_xim_preferred_style = XIMPreeditNothing | ++ XIMStatusNothing; + } + #endif + } else if ( arg == "-cmap" ) { // xv uses this name +@@ -2100,34 +2166,13 @@ + QApplication::setFont( f ); + } + +-#ifndef QT_NO_XIM +- if ( ! xim_preferred_style ) // no configured input style, use the default +- xim_preferred_style = xim_default_style; +- +- qt_xim = 0; +- QString ximServerName(ximServer); +- if (ximServer) +- ximServerName.prepend("@im="); +- else +- ximServerName = ""; +- +- if ( !XSupportsLocale() ) +- qWarning("Qt: Locales not supported on X server"); +- +-#ifdef USE_X11R6_XIM +- else if ( XSetLocaleModifiers (ximServerName.ascii()) == 0 ) +- qWarning( "Qt: Cannot set locale modifiers: %s", +- ximServerName.ascii()); +- else if (! noxim) +- XRegisterIMInstantiateCallback(appDpy, 0, 0, 0, +- (XIMProc) xim_create_callback, 0); +-#else // !USE_X11R6_XIM +- else if ( XSetLocaleModifiers ("") == 0 ) +- qWarning("Qt: Cannot set locale modifiers"); +- else if (! noxim) +- QApplication::create_xim(); +-#endif // USE_X11R6_XIM +-#endif // QT_NO_XIM ++#if !defined(QT_NO_IM) ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QApplication::create_im(); ++#else ++ QApplication::create_xim(); ++#endif ++#endif + + #if defined (QT_TABLET_SUPPORT) + int ndev, +@@ -2376,9 +2421,12 @@ + XCloseDevice( appDpy, devEraser ); + #endif + +-#if !defined(QT_NO_XIM) +- if ( qt_xim ) +- QApplication::close_xim(); ++#if !defined(QT_NO_IM) ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QApplication::close_im(); ++#else ++ QApplication::close_xim(); ++#endif + #endif + + if ( qt_is_gui_used ) { +@@ -3237,77 +3285,59 @@ + } + } + +- int xkey_keycode = event->xkey.keycode; +- if ( XFilterEvent( event, +- keywidget ? keywidget->topLevelWidget()->winId() : None ) ) { +- if ( keywidget ) +- composingKeycode = xkey_keycode; // ### not documented in xlib +- +-#ifndef QT_NO_XIM +- if ( event->type != XKeyPress || ! (qt_xim_style & XIMPreeditCallbacks) ) +- return 1; +- +- /* +- * The Solaris htt input method will transform a ClientMessage +- * event into a filtered KeyPress event, in which case our +- * keywidget is still zero. +- */ +- if ( ! keywidget ) { +- keywidget = (QETWidget*)QWidget::keyboardGrabber(); +- if ( keywidget ) { +- grabbed = TRUE; +- } else { +- if ( focus_widget ) +- keywidget = (QETWidget*)focus_widget; +- if ( !keywidget ) { +- if ( inPopupMode() ) // no focus widget, see if we have a popup +- keywidget = (QETWidget*) activePopupWidget(); +- else if ( widget ) +- keywidget = (QETWidget*)widget->topLevelWidget(); +- } +- } +- } ++#ifndef QT_NO_IM ++ // Filtering input events by the input context. It has to be taken ++ // place before any other key event consumers such as eventfilters ++ // and accelerators because some input methods require quite ++ // various key combination and sequences. It often conflicts with ++ // accelerators and so on, so we must give the input context the ++ // filtering opportunity first to ensure all input methods work ++ // properly regardless of application design. + +- /* +- if the composition string has been emptied, we need to send +- an IMEnd event. however, we have no way to tell if the user +- has cancelled input, or if the user has accepted the +- composition. +- +- so, we have to look for the next keypress and see if it is +- the 'commit' key press (keycode == 0). if it is, we deliver +- an IMEnd event with the final text, otherwise we deliver an +- IMEnd with empty text (meaning the user has cancelled the +- input). +- */ +- QInputContext *qic = +- (QInputContext *) keywidget->topLevelWidget()->topData()->xic; +- extern bool qt_compose_emptied; // qinputcontext_x11.cpp +- if ( qic && qic->composing && qic->focusWidget && qt_compose_emptied ) { +- XEvent event2; +- bool found = FALSE; +- if ( XCheckTypedEvent( QPaintDevice::x11AppDisplay(), +- XKeyPress, &event2 ) ) { +- if ( event2.xkey.keycode == 0 ) { +- // found a key event with the 'commit' string +- found = TRUE; +- XPutBackEvent( QPaintDevice::x11AppDisplay(), &event2 ); +- } +- } ++#ifndef QT_NO_IM_EXTENSIONS ++ if( keywidget && keywidget->isEnabled() && keywidget->isInputMethodEnabled() ) { ++#else ++ if( keywidget && keywidget->isEnabled() ) { ++#endif ++ if( ( event->type==XKeyPress || event->type==XKeyRelease ) && ++ sm_blockUserInput ) // block user interaction during session management ++ return TRUE; + +- if ( !found ) { +- // no key event, so the user must have cancelled the composition +- QIMEvent endevent( QEvent::IMEnd, QString::null, -1 ); +- QApplication::sendEvent( qic->focusWidget, &endevent ); ++ // for XIM handling ++ QInputContext *qic = keywidget->getInputContext(); ++ if( qic && qic->x11FilterEvent( keywidget, event ) ) ++ return TRUE; + +- qic->focusWidget = 0; +- } ++ // filterEvent() accepts QEvent *event rather than preexpanded key ++ // event attribute values. This is intended to pass other IM-related ++ // events in future. The IM-related events are supposed as ++ // QWheelEvent, QTabletEvent and so on. Other non IM-related events ++ // should not be forwarded to input contexts to prevent weird event ++ // handling. ++ if ( ( event->type == XKeyPress || event->type == XKeyRelease ) ) { ++ int code = -1; ++ int count = 0; ++ int state; ++ char ascii = 0; ++ QEvent::Type type; ++ QString text; ++ ++ keywidget->translateKeyEventInternal( event, count, text, ++ state, ascii, code, type, ++ FALSE, FALSE ); ++ ++ // both key press/release is required for some complex ++ // input methods. don't eliminate anything. ++ QKeyEvent keyevent( type, code, ascii, state, text, FALSE, count ); + +- qt_compose_emptied = FALSE; ++ if( qic && qic->filterEvent( &keyevent ) ) ++ return TRUE; + } +-#endif // QT_NO_XIM +- +- return 1; ++ } else ++#endif // QT_NO_IM ++ { ++ if ( XFilterEvent( event, None ) ) ++ return TRUE; + } + + if ( qt_x11EventFilter(event) ) // send through app filter +@@ -3458,34 +3488,8 @@ + case XKeyRelease: + { + if ( keywidget && keywidget->isEnabled() ) { // should always exist +-#ifndef QT_NO_XIM +- QInputContext *qic = +- (QInputContext *) keywidget->topLevelWidget()->topData()->xic; +- +- if ((qt_xim_style & XIMPreeditCallbacks) && event->xkey.keycode == 0 && +- qic && qic->composing && qic->focusWidget) { +- // input method has sent us a commit string +- QCString data(513); +- KeySym sym; // unused +- Status status; // unused +- QString text; +- int count = qic->lookupString( &(event->xkey), data, +- &sym, &status ); +- if ( count > 0 ) +- text = input_mapper->toUnicode( data, count ); +- +- // qDebug( "sending IMEnd with %d chars", text.length() ); +- QIMEvent endevent( QEvent::IMEnd, text, -1 ); +- QApplication::sendEvent( qic->focusWidget, &endevent ); +- +- qic->focusWidget = 0; +- qic->text = QString::null; +- } else +-#endif // !QT_NO_XIM +- { +- // qDebug( "sending key event" ); +- keywidget->translateKeyEvent( event, grabbed ); +- } ++ // qDebug( "sending key event" ); ++ keywidget->translateKeyEvent( event, grabbed ); + } + break; + } +@@ -4780,6 +4784,92 @@ + 0x1005FF10, Qt::Key_F11, // hardcoded Sun F36 (labeled F11) + 0x1005FF11, Qt::Key_F12, // hardcoded Sun F37 (labeled F12) + ++ // International input method support keys ++ ++ // International & multi-key character composition ++ XK_Multi_key, Qt::Key_Multi_key, ++ XK_Codeinput, Qt::Key_Codeinput, ++ XK_SingleCandidate, Qt::Key_SingleCandidate, ++ XK_MultipleCandidate, Qt::Key_MultipleCandidate, ++ XK_PreviousCandidate, Qt::Key_PreviousCandidate, ++ ++ // Misc Functions ++ XK_Mode_switch, Qt::Key_Mode_switch, ++ //XK_script_switch, Qt::Key_script_switch, ++ XK_script_switch, Qt::Key_Mode_switch, ++ ++ // Japanese keyboard support ++ XK_Kanji, Qt::Key_Kanji, ++ XK_Muhenkan, Qt::Key_Muhenkan, ++ //XK_Henkan_Mode, Qt::Key_Henkan_Mode, ++ XK_Henkan_Mode, Qt::Key_Henkan, ++ XK_Henkan, Qt::Key_Henkan, ++ XK_Romaji, Qt::Key_Romaji, ++ XK_Hiragana, Qt::Key_Hiragana, ++ XK_Katakana, Qt::Key_Katakana, ++ XK_Hiragana_Katakana, Qt::Key_Hiragana_Katakana, ++ XK_Zenkaku, Qt::Key_Zenkaku, ++ XK_Hankaku, Qt::Key_Hankaku, ++ XK_Zenkaku_Hankaku, Qt::Key_Zenkaku_Hankaku, ++ XK_Touroku, Qt::Key_Touroku, ++ XK_Massyo, Qt::Key_Massyo, ++ XK_Kana_Lock, Qt::Key_Kana_Lock, ++ XK_Kana_Shift, Qt::Key_Kana_Shift, ++ XK_Eisu_Shift, Qt::Key_Eisu_Shift, ++ XK_Eisu_toggle, Qt::Key_Eisu_toggle, ++ //XK_Kanji_Bangou, Qt::Key_Kanji_Bangou, ++ //XK_Zen_Koho, Qt::Key_Zen_Koho, ++ //XK_Mae_Koho, Qt::Key_Mae_Koho, ++ XK_Kanji_Bangou, Qt::Key_Codeinput, ++ XK_Zen_Koho, Qt::Key_MultipleCandidate, ++ XK_Mae_Koho, Qt::Key_PreviousCandidate, ++ ++#ifdef XK_KOREAN ++ // Korean keyboard support ++ XK_Hangul, Qt::Key_Hangul, ++ XK_Hangul_Start, Qt::Key_Hangul_Start, ++ XK_Hangul_End, Qt::Key_Hangul_End, ++ XK_Hangul_Hanja, Qt::Key_Hangul_Hanja, ++ XK_Hangul_Jamo, Qt::Key_Hangul_Jamo, ++ XK_Hangul_Romaja, Qt::Key_Hangul_Romaja, ++ //XK_Hangul_Codeinput, Qt::Key_Hangul_Codeinput, ++ XK_Hangul_Codeinput, Qt::Key_Codeinput, ++ XK_Hangul_Jeonja, Qt::Key_Hangul_Jeonja, ++ XK_Hangul_Banja, Qt::Key_Hangul_Banja, ++ XK_Hangul_PreHanja, Qt::Key_Hangul_PreHanja, ++ XK_Hangul_PostHanja, Qt::Key_Hangul_PostHanja, ++ //XK_Hangul_SingleCandidate, Qt::Key_Hangul_SingleCandidate, ++ //XK_Hangul_MultipleCandidate, Qt::Key_Hangul_MultipleCandidate, ++ //XK_Hangul_PreviousCandidate, Qt::Key_Hangul_PreviousCandidate, ++ XK_Hangul_SingleCandidate, Qt::Key_SingleCandidate, ++ XK_Hangul_MultipleCandidate, Qt::Key_MultipleCandidate, ++ XK_Hangul_PreviousCandidate, Qt::Key_PreviousCandidate, ++ XK_Hangul_Special, Qt::Key_Hangul_Special, ++ //XK_Hangul_switch, Qt::Key_Hangul_switch, ++ XK_Hangul_switch, Qt::Key_Mode_switch, ++#endif // XK_KOREAN ++ ++ // dead keys ++ XK_dead_grave, Qt::Key_Dead_Grave, ++ XK_dead_acute, Qt::Key_Dead_Acute, ++ XK_dead_circumflex, Qt::Key_Dead_Circumflex, ++ XK_dead_tilde, Qt::Key_Dead_Tilde, ++ XK_dead_macron, Qt::Key_Dead_Macron, ++ XK_dead_breve, Qt::Key_Dead_Breve, ++ XK_dead_abovedot, Qt::Key_Dead_Abovedot, ++ XK_dead_diaeresis, Qt::Key_Dead_Diaeresis, ++ XK_dead_abovering, Qt::Key_Dead_Abovering, ++ XK_dead_doubleacute, Qt::Key_Dead_Doubleacute, ++ XK_dead_caron, Qt::Key_Dead_Caron, ++ XK_dead_cedilla, Qt::Key_Dead_Cedilla, ++ XK_dead_ogonek, Qt::Key_Dead_Ogonek, ++ XK_dead_iota, Qt::Key_Dead_Iota, ++ XK_dead_voiced_sound, Qt::Key_Dead_Voiced_Sound, ++ XK_dead_semivoiced_sound, Qt::Key_Dead_Semivoiced_Sound, ++ XK_dead_belowdot, Qt::Key_Dead_Belowdot, ++ XK_dead_hook, Qt::Key_Dead_Hook, ++ XK_dead_horn, Qt::Key_Dead_Horn, ++ + // Special multimedia keys + // currently only tested with MS internet keyboard + +@@ -4997,9 +5087,9 @@ + bool QETWidget::translateKeyEventInternal( const XEvent *event, int& count, + QString& text, + int& state, +- char& ascii, int& code, QEvent::Type &type, bool willRepeat ) ++ char& ascii, int& code, QEvent::Type &type, bool willRepeat, bool statefulTranslation ) + { +- QTextCodec *mapper = input_mapper; ++ QTextCodec *mapper = qt_input_mapper; + // some XmbLookupString implementations don't return buffer overflow correctly, + // so we increase the input buffer to allow for long strings... + // 256 chars * 2 bytes + 1 null-term == 513 bytes +@@ -5046,6 +5136,11 @@ + + if ( type == QEvent::KeyPress ) { + bool mb=FALSE; ++ // commit string handling is done by ++ // QXIMInputContext::x11FilterEvent() and are passed to ++ // widgets via QIMEvent regardless of XIM style, so the ++ // following code is commented out. ++#if 0 + if ( qt_xim ) { + QTLWExtra* xd = tlw->topData(); + QInputContext *qic = (QInputContext *) xd->xic; +@@ -5054,13 +5149,14 @@ + count = qic->lookupString(&xkeyevent, chars, &key, &status); + } + } ++#endif + if ( !mb ) { + count = XLookupString( &xkeyevent, + chars.data(), chars.size(), &key, 0 ); + } + if ( count && !keycode ) { +- keycode = composingKeycode; +- composingKeycode = 0; ++ keycode = qt_ximComposingKeycode; ++ qt_ximComposingKeycode = 0; + } + if ( key ) + keyDict->replace( keycode, (void*)key ); +@@ -5137,15 +5233,18 @@ + state = translateButtonState( keystate ); + + static int directionKeyEvent = 0; +- if ( qt_use_rtl_extensions && type == QEvent::KeyRelease ) { ++ static unsigned int lastWinId = 0; ++ if ( qt_use_rtl_extensions && type == QEvent::KeyRelease && statefulTranslation ) { + if (directionKeyEvent == Key_Direction_R || directionKeyEvent == Key_Direction_L ) { + type = QEvent::KeyPress; + code = directionKeyEvent; + chars[0] = 0; + directionKeyEvent = 0; ++ lastWinId = 0; + return TRUE; + } else { + directionKeyEvent = 0; ++ lastWinId = 0; + } + } + +@@ -5155,10 +5254,14 @@ + // (to figure out whether the Ctrl modifier is held while Shift is pressed, + // or Shift is held while Ctrl is pressed) since the 'state' doesn't tell + // us whether the modifier held is Left or Right. +- if (qt_use_rtl_extensions && type == QEvent::KeyPress) ++ if ( qt_use_rtl_extensions && type == QEvent::KeyPress && statefulTranslation ) + if (key == XK_Control_L || key == XK_Control_R || key == XK_Shift_L || key == XK_Shift_R) { +- if (!directionKeyEvent) ++ if (!directionKeyEvent) { + directionKeyEvent = key; ++ // This code exists in order to check that ++ // the event is occurred in the same widget. ++ lastWinId = winId(); ++ } + } else { + // this can no longer be a direction-changing accel. + // if any other key was pressed. +@@ -5172,7 +5275,7 @@ + // Qt keycodes between 128 and 255, but should rather use the + // QKeyEvent::text(). + // +- if ( key < 128 || (key < 256 && (!input_mapper || input_mapper->mibEnum()==4)) ) { ++ if ( key < 128 || (key < 256 && (!qt_input_mapper || qt_input_mapper->mibEnum()==4)) ) { + code = isprint((int)key) ? toupper((int)key) : 0; // upper-case key, if known + } else if ( key >= XK_F1 && key <= XK_F35 ) { + code = Key_F1 + ((int)key - XK_F1); // function keys +@@ -5223,8 +5326,8 @@ + chars[0] = 0; + } + +- if ( qt_use_rtl_extensions && type == QEvent::KeyPress ) { +- if ( directionKeyEvent ) { ++ if ( qt_use_rtl_extensions && type == QEvent::KeyPress && statefulTranslation ) { ++ if ( directionKeyEvent && lastWinId == winId() ) { + if ( key == XK_Shift_L && directionKeyEvent == XK_Control_L || + key == XK_Control_L && directionKeyEvent == XK_Shift_L ) { + directionKeyEvent = Key_Direction_L; +@@ -5400,8 +5503,34 @@ + translateKeyEventInternal( event, count, text, state, ascii, code, type ); + } + ++#ifndef QT_NO_IM ++ QInputContext *qic = getInputContext(); ++#endif ++ + // compress keys + if ( !text.isEmpty() && testWState(WState_CompressKeys) && ++#ifndef QT_NO_IM ++ // Ordinary input methods require discrete key events to work ++ // properly, so key compression has to be disabled when input ++ // context exists. ++ // ++ // And further consideration, some complex input method ++ // require all key press/release events discretely even if ++ // the input method awares of key compression and compressed ++ // keys are ordinary alphabets. For example, the uim project ++ // is planning to implement "combinational shift" feature for ++ // a Japanese input method, uim-skk. It will work as follows. ++ // ++ // 1. press "r" ++ // 2. press "u" ++ // 3. release both "r" and "u" in arbitrary order ++ // 4. above key sequence generates "Ru" ++ // ++ // Of course further consideration about other participants ++ // such as key repeat mechanism is required to implement such ++ // feature. ++ ! qic && ++#endif // QT_NO_IM + // do not compress keys if the key event we just got above matches + // one of the key ranges used to compute stopCompression + ! ( ( code >= Key_Escape && code <= Key_SysReq ) || +@@ -5460,7 +5589,12 @@ + + // autorepeat compression makes sense for all widgets (Windows + // does it automatically .... ) +- if ( event->type == XKeyPress && text.length() <= 1 ) { ++ if ( event->type == XKeyPress && text.length() <= 1 ++#ifndef QT_NO_IM ++ // input methods need discrete key events ++ && ! qic ++#endif// QT_NO_IM ++ ) { + XEvent dummy; + + for (;;) { +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qevent.cpp qt-x11-free-3.3.5/src/kernel/qevent.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qevent.cpp 2005-09-02 21:43:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qevent.cpp 2005-10-18 12:57:18.799215872 +0900 +@@ -732,6 +732,10 @@ + the result of a known key (e.g. it may be the result of a compose + sequence or a keyboard macro, or due to key event compression). + ++ Applications should not use the Qt latin 1 keycodes between 128 ++ and 255, but should rather use the QKeyEvent::text(). This is ++ mainly for compatibility. ++ + \sa QWidget::setKeyCompression() + */ + +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp 2005-10-18 12:57:18.805214960 +0900 +@@ -0,0 +1,856 @@ ++/**************************************************************************** ++** $Id: qinputcontext.cpp,v 1.6 2004/06/22 06:47:30 daisuke Exp $ ++** ++** Implementation of QInputContext class ++** ++** Copyright (C) 2000-2003 Trolltech AS. All rights reserved. ++** ++** This file is part of the kernel module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses for Unix/X11 may use this file in accordance with the Qt Commercial ++** License Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++//#define QT_NO_IM_PREEDIT_RELOCATION ++ ++#include "qinputcontext.h" ++ ++#ifndef QT_NO_IM ++ ++#include "qplatformdefs.h" ++ ++#include "qapplication.h" ++#include "qwidget.h" ++#include "qpopupmenu.h" ++ ++#include ++#include ++ ++class QInputContextPrivate ++{ ++public: ++ QInputContextPrivate() ++ : holderWidget( 0 ), composingWidget( 0 ), hasFocus( FALSE ), ++ isComposing( FALSE ) ++#if !defined(QT_NO_IM_PREEDIT_RELOCATION) ++ , preeditString( QString::null ), ++ cursorPosition( -1 ), selLength ( 0 ) ++#endif ++ {} ++ ++ QWidget *holderWidget; // widget to which QInputContext instance belongs. ++ QWidget *composingWidget; ++ bool hasFocus; ++ bool isComposing; ++ ++ void updateComposingState( const QString &text, ++ int newCursorPosition, int newSelLength ) { ++#if !defined(QT_NO_IM_PREEDIT_RELOCATION) ++ preeditString = text; ++ cursorPosition = newCursorPosition; ++ selLength = newSelLength; ++#endif ++ } ++ ++ void resetComposingState() { ++ isComposing = FALSE; ++#if !defined(QT_NO_IM_PREEDIT_RELOCATION) ++ preeditString = QString::null; ++ cursorPosition = -1; ++ selLength = 0; ++#endif ++ } ++ ++#if !defined(QT_NO_IM_PREEDIT_RELOCATION) ++ QString preeditString; ++ int cursorPosition; ++ int selLength; ++#endif ++}; ++ ++ ++// UPDATED COMMENT REQUIRED -- 2004-07-08 YamaKen ++/*! ++ \class QInputContext qinputcontext.h ++ \brief The QInputContext class abstracts the input method dependent data and composing state. ++ ++ \ingroup i18n ++ ++ An input method is responsible to input complex text that cannot ++ be inputted via simple keymap. It converts a sequence of input ++ events (typically key events) into a text string through the input ++ method specific converting process. The class of the processes are ++ widely ranging from simple finite state machine to complex text ++ translator that pools a whole paragraph of a text with text ++ editing capability to perform grammar and semantic analysis. ++ ++ To abstract such different input method specific intermediate ++ information, Qt offers the QInputContext as base class. The ++ concept is well known as 'input context' in the input method ++ domain. an input context is created for a text widget in response ++ to a demand. It is ensured that an input context is prepared for ++ an input method before input to a text widget. ++ ++ Multiple input contexts that is belonging to a single input method ++ may concurrently coexist. Suppose multi-window text editor. Each ++ text widget of window A and B holds different QInputContext ++ instance which contains different state information such as ++ partially composed text. ++ ++ \section1 Groups of functions: ++ ++ \table ++ \header \i Context \i Functions ++ ++ \row \i Receiving information \i ++ x11FilterEvent(), ++ filterEvent(), ++ setMicroFocus(), ++ mouseHandler() ++ ++ \row \i Sending back composed text \i ++ sendIMEvent(), ++ ++ \row \i State change notification \i ++ setFocus(), ++ unsetFocus(), ++ reset() ++ ++ \row \i Context information \i ++ identifierName(), ++ language(), ++ font(), ++ isComposing(), ++ ++ \endtable ++ ++ ++ \section1 Sharing input context between text widgets ++ ++ Any input context can be shared between several text widgets to ++ reduce resource consumption. In ideal case, each text widgets ++ should be allocated dedicated input context. But some complex ++ input contexts require slightly heavy resource such as 100 ++ kilobytes of memory. It prevents quite many text widgets from ++ being used concurrently. ++ ++ To resolve such problem, we can share an input context. There is ++ one 'input context holder widget' per text widgets that shares ++ identical input context. In this model, the holder widget owns the ++ shared input context. Other text widgets access the input context ++ via QApplication::locateICHolderWidget(). But the access ++ convention is transparently hidden into QWidget, so developers are ++ not required to aware of it. ++ ++ What developer should know is only the mapping function ++ QApplication::locateICHolderWidget(). It accepts a widget as ++ argument and returns its holder widget. Default implementation ++ returns the top-level widget of the widget as reasonable ++ assumption. But some applications should reimplement the function ++ to fit application specific usability. See ++ QApplication::locateICHolderWidget() for further information. ++ ++ ++ \section1 Preedit preservation ++ ++ As described above, input contexts have wide variety of amount of ++ the state information in accordance with belonging input ++ method. It is ranging from 2-3 keystrokes of sequence in ++ deterministic input methods to hundreds of keystrokes with ++ semantic text refinement in complex input methods such as ordinary ++ Japanese input method. The difference requires the different reset ++ policies in losing input focus. ++ ++ The former simple input method case, users will prefer resetting ++ the context to back to the neutral state when something ++ happened. Suppose a web browsing. The user scroll the page by ++ scrollbar after he or she has typed a half of the valid key ++ sequence into a text widget. In the case, the input context should ++ be reset in losing focus when he or she has dragged the ++ scrollbar. He or she will be confused if the input context is ++ still preserved until focused back to the text widget because he ++ or she will restart typing with first key of the sequence as a ++ habitual operation. ++ ++ On the other hand, we should choose completely different policy ++ for the latter complex input method case. Suppose same situation ++ as above but he or she is using a complex input method. In the ++ case, he or she will be angry if the input context has been lost ++ when he or she has dragged the scrollbar because the input context ++ contained a valuably composed text made up by considerable input ++ cost. So we should not reset the input context in the case. And ++ the input context should be preserved until focused back to the ++ text widget. This behavior is named as 'preedit preservation'. ++ ++ The two policies can be switched by calling or not calling reset() ++ in unsetFocus(). Default implementation of unsetFocus() calls ++ reset() to fit the simple input methods. The implementation is ++ expressed as 'preedit preservation is disabled'. ++ ++ ++ \section1 Preedit relocation ++ ++ Although the most case of the preedit preservation problem for ++ complex input methods is resolved as described above, there is a ++ special case. Suppose the case that matches all of the following ++ conditions. ++ ++ \list ++ ++ \i a input focus has been moved from a text widget to another text ++ widget directly ++ ++ \i the input context is shared between the two text widgets ++ ++ \i preedit preservation is enabled for the input context ++ ++ \endlist ++ ++ In the case, there are the following two requirements that ++ contradicts each other. The input context sharing causes it. ++ ++ \list ++ ++ \i the input context has to be reset to prepare to input to the ++ newly focused text widget ++ ++ \i the input context has to be preserved until focused back to the ++ previous text widget ++ ++ \endlist ++ ++ A intrinsic feature named 'preedit relocation' is available to ++ compromise the requirements. If the feature is enabled for the ++ input context, it is simply moved to the new text widget with the ++ preedit string. The user continues the input on the new text ++ widget, or relocate it to another text widget. The preedit of ++ previous text widget is automatically cleared to back to the ++ neutral state of the widget. ++ ++ This strange behavior is just a compromise. As described in ++ previous section, complex input method user should not be exposed ++ to the risk losing the input context because it contains valuable ++ long text made up with considerable input cost. The user will ++ immediately focus back to the previous text widget to continue the ++ input in the correct text widget if the preedit relocation ++ occurred. The feature is mainly existing as safety. ++ ++ The feature properly works even if the focus is moved as ++ following. Input method developers are not required to be aware of ++ the relocation protocol since QInputContext transparently handles ++ it. ++ ++ a text widget -> a non-text widget -> another text widget ++ ++ To enable the preedit relocation feature, the input context class ++ have to reimplement isPreeditRelocationEnabled() as returns TRUE. ++ The implementation requires that the preedit preservation is also ++ enabled since preedit relocation is a special case of the preedit ++ preservation. If the preedit relocation is disabled, the input ++ context is simply reset in the relocation case. ++ ++ ++ \section1 Input context instanciation ++ \section1 Input method switching ++ ++ \section1 Text widget implementor's guide ++ ++ Add following code fragment into createPopupMenu() to add input ++ method dependent submenus. ++ ++ \code ++ #ifndef QT_NO_IM ++ QInputContext *qic = getInputContext(); ++ if ( qic ) ++ qic->addMenusTo( popup ); ++ #endif ++ \endcode ++ ++ \sa QInputContextPlugin, QInputContextFactory, QApplication::locateICHolderWidget(), QApplication::defaultInputMethod() ++*/ ++ ++ ++/*! ++ Constructs an input context. ++ ++ holderWidget is set immediately after this constructor has been ++ returned on the X11 platform. ++*/ ++QInputContext::QInputContext( QObject *parent ) ++ : QObject( parent ) ++{ ++ d = new QInputContextPrivate; ++} ++ ++ ++/*! ++ Destroys the input context. ++*/ ++QInputContext::~QInputContext() ++{ ++ delete d; ++} ++ ++#if defined(Q_WS_X11) ++/*! ++ \internal ++ Returns the owner of this input context. Ordinary input methods ++ should not call this function directly to keep platform ++ independence and flexible configuration possibility. ++ ++ The return value may differ from focusWidget() if the input ++ context is shared between several text widgets. ++ ++ \sa setHolderWidget(), focusWidget() ++*/ ++QWidget *QInputContext::holderWidget() const ++{ ++ return d->holderWidget; ++} ++ ++/*! ++ \internal ++ Sets the owner of this input context. Ordinary input methods ++ must not call this function directly. ++ ++ \sa holderWidget() ++*/ ++void QInputContext::setHolderWidget( QWidget *w ) ++{ ++ d->holderWidget = w; ++} ++ ++/*! ++ \internal ++ Returns the widget that has an input focus for this input ++ context. Ordinary input methods should not call this function ++ directly to keep platform independence and flexible configuration ++ possibility. ++ ++ The return value may differ from holderWidget() if the input ++ context is shared between several text widgets. ++ ++ \sa setFocusWidget(), holderWidget() ++*/ ++QWidget *QInputContext::focusWidget() const ++{ ++ return d->hasFocus ? d->composingWidget : 0; ++} ++ ++ ++/*! ++ \internal ++ Sets the widget that has an input focus for this input ++ context. Ordinary input methods must not call this function ++ directly. ++ ++ \sa focusWidget() ++*/ ++void QInputContext::setFocusWidget( QWidget *w ) ++{ ++ if ( w ) { ++ bool isFocusingBack = ( w == d->composingWidget ); ++ bool isPreeditRelocation = ( ! isFocusingBack && isComposing() && ++ d->composingWidget ); ++ // invoke sendIMEventInternal() rather than sendIMEvent() to ++ // avoid altering the composing state ++ if ( isPreeditRelocation == TRUE ) { ++ // clear preedit of previously focused text ++ // widget. preserved preedit may be exist even if ++ // isPreeditRelocationEnabled() == FALSE. ++ sendIMEventInternal( QEvent::IMEnd ); ++ } ++ d->composingWidget = w; // changes recipient of QIMEvent ++ if ( isPreeditRelocation == TRUE ) { ++#if !defined(QT_NO_IM_PREEDIT_RELOCATION) ++ if ( isPreeditRelocationEnabled() ) { ++ // copy preedit state to the widget that gaining focus ++ sendIMEventInternal( QEvent::IMStart ); ++ sendIMEventInternal( QEvent::IMCompose, d->preeditString, ++ d->cursorPosition, d->selLength ); ++ } else ++#endif ++ { ++ // reset input context when the shared context has ++ // focused on another text widget ++ reset(); ++ } ++ } ++ } ++ d->hasFocus = w ? TRUE : FALSE; ++} ++ ++ ++/*! ++ \internal ++ This function is called from QWidget to keep input state ++ consistency. Ordinary input method must not call this function ++ directly. ++*/ ++void QInputContext::releaseComposingWidget( QWidget *w ) ++{ ++ if ( d->composingWidget == w ) { ++ d->composingWidget = 0; ++ d->hasFocus = FALSE; ++ } ++} ++#endif // Q_WS_X11 ++ ++/*! ++ \internal ++ This function can be reimplemented in a subclass as returning TRUE ++ if you want making your input method enable the preedit ++ relocation. See the description for preedit relocation of ++ QInputContext. ++ ++ /sa QInputContext ++*/ ++bool QInputContext::isPreeditRelocationEnabled() ++{ ++ return FALSE; ++} ++ ++/*! ++ This function indicates whether IMStart event had been sent to the ++ text widget. It is ensured that an input context can send IMCompose ++ or IMEnd event safely if this function returned TRUE. ++ ++ The state is automatically being tracked through sendIMEvent(). ++ ++ \sa sendIMEvent() ++*/ ++bool QInputContext::isComposing() const ++{ ++ return d->isComposing; ++} ++ ++ ++/*! ++ This function can be reimplemented in a subclass to filter input ++ events. ++ ++ Return TRUE if the \a event has been consumed. Otherwise, the ++ unfiltered \a event will be forwarded to widgets as ordinary ++ way. Although the input events have accept() and ignore() ++ methods, leave it untouched. ++ ++ \a event is currently restricted to QKeyEvent. But some input ++ method related events such as QWheelEvent or QTabletEvent may be ++ added in future. ++ ++ The filtering opportunity is always given to the input context as ++ soon as possible. It has to be taken place before any other key ++ event consumers such as eventfilters and accelerators because some ++ input methods require quite various key combination and ++ sequences. It often conflicts with accelerators and so on, so we ++ must give the input context the filtering opportunity first to ++ ensure all input methods work properly regardless of application ++ design. ++ ++ Ordinary input methods require discrete key events to work ++ properly, so Qt's key compression is always disabled for any input ++ contexts. ++ ++ \sa QKeyEvent, x11FilterEvent() ++*/ ++bool QInputContext::filterEvent( const QEvent *event ) ++{ ++ return FALSE; ++} ++ ++ ++/*! ++ \fn void QInputContext::deletionRequested() ++ ++ Emit this signal when a fatal error has been caused in the input ++ context. The input context will be deleted by the owner which is ++ usually the holder widget. ++*/ ++ ++/*! ++ \fn void QInputContext::imEventGenerated( QObject *receiver, QIMEvent *e ) ++ ++ \internal ++ This signal is emitted when the user has sent a QIMEvent through ++ sendIMEvent(). Ordinary input methods should not emit this signal ++ directly. ++ ++ \a receiver is a platform dependent destination of the \a e. ++ ++ \sa QIMEvent, sendIMEvent(), sendIMEventInternal(), ++*/ ++ ++/*! ++ \internal ++ Sends a QIMEvent to the client via imEventGenerated() ++ signal. Ordinary input method should not call this function ++ directly. ++ ++ \sa QIMEvent, QIMComposeEvent, sendIMEvent(), imEventGenerated() ++*/ ++void QInputContext::sendIMEventInternal( QEvent::Type type, ++ const QString &text, ++ int cursorPosition, int selLength ) ++{ ++ QObject *receiver = 0; ++ QIMEvent *event = 0; ++ ++#if defined(Q_WS_X11) ++ receiver = d->composingWidget; ++#elif defined(Q_WS_QWS) ++ // just a placeholder ++#endif ++ if ( ! receiver ) ++ return; ++ ++ if ( type == QEvent::IMStart ) { ++ qDebug( "sending IMStart with %d chars to %p", ++ text.length(), receiver ); ++ event = new QIMEvent( type, text, cursorPosition ); ++ } else if ( type == QEvent::IMEnd ) { ++ qDebug( "sending IMEnd with %d chars to %p, text=%s", ++ text.length(), receiver, (const char*)text.local8Bit() ); ++ event = new QIMEvent( type, text, cursorPosition ); ++ } else if ( type == QEvent::IMCompose ) { ++ qDebug( "sending IMCompose to %p with %d chars, cpos=%d, sellen=%d, text=%s", ++ receiver, text.length(), cursorPosition, selLength, ++ (const char*)text.local8Bit() ); ++ event = new QIMComposeEvent( type, text, cursorPosition, selLength ); ++ } ++ ++ if ( event ) ++ emit imEventGenerated( receiver, event ); ++} ++ ++ ++/*! ++ Call this function to send QIMEvent to the text widget. This ++ function constructs a QIMEvent based on the arguments and send it ++ to the appropriate widget. Ordinary input method should not ++ reimplement this function. ++ ++ \a type is either \c QEvent::IMStart or \c QEvent::IMCompose or \c ++ QEvent::IMEnd. You have to send a \c QEvent::IMStart to start ++ composing, then send several \c QEvent::IMCompose to update the ++ preedit of the widget, and finalize the composition with sending ++ \c QEvent::IMEnd. ++ ++ \c QEvent::IMStart should always be sent without arguments as: ++ \code ++ sendIMEvent( QEvent::IMStart ) ++ \endcode ++ ++ And \c QEvent::IMCompose can be sent without cursor: ++ \code ++ sendIMEvent( QEvent::IMCompose, QString( "a text" ) ) ++ \endcode ++ ++ Or optionally with cursor with \a cursorPosition: ++ \code ++ sendIMEvent( QEvent::IMCompose, QString( "a text with cursor" ), 12 ) ++ \endcode ++ Note that \a cursorPosition also specifies microfocus position. ++ ++ Or optionally with selection text: ++ \code ++ sendIMEvent( QEvent::IMCompose, QString( "a text with selection" ), 12, 9 ) ++ \endcode ++ \a cursorPosition and \a selLength must be within the \a text. The ++ \a cursorPosition also specifies microfocus position in the case: ++ ++ \c QEvent::IMEnd can be sent without arguments to terminate the ++ composition with null string: ++ \code ++ sendIMEvent( QEvent::IMEnd ) ++ \endcode ++ ++ Or optionally accepts \a text to commit a string: ++ \code ++ sendIMEvent( QEvent::IMEnd, QString( "a text" ) ) ++ \endcode ++ ++ \sa QIMEvent, QIMComposeEvent, setMicroFocus() ++*/ ++void QInputContext::sendIMEvent( QEvent::Type type, const QString &text, ++ int cursorPosition, int selLength ) ++{ ++#if defined(Q_WS_X11) ++ if ( !focusWidget() ) ++ return; ++#endif ++ ++ if ( type == QEvent::IMStart ) { ++ sendIMEventInternal( type, text, cursorPosition, selLength ); ++ d->isComposing = TRUE; ++ } else if ( type == QEvent::IMEnd ) { ++ d->resetComposingState(); ++ sendIMEventInternal( type, text, cursorPosition, selLength ); ++ } else if ( type == QEvent::IMCompose ) { ++ d->updateComposingState( text, cursorPosition, selLength ); ++ sendIMEventInternal( type, text, cursorPosition, selLength ); ++ } ++} ++ ++ ++/*! ++ This function can be reimplemented in a subclass to detect ++ that the input context has been focused on. ++ ++ The input context will receive input events through ++ x11FilterEvent() and filterEvent() after setFocus() until ++ unsetFocus() has been called. ++ ++ an input context is ensured that setFocus() is called exactly once ++ until unsetFocus() has been called even if preedit relocation has ++ occurred. This means that an input focus will survive between ++ several widgets that sharing the input context. ++ ++ On the X11 platform, focusWidget is already set before this ++ function has been called. ++ ++ \sa unsetFocus() ++*/ ++void QInputContext::setFocus() ++{ ++} ++ ++ ++/*! ++ This function can be reimplemented in a subclass to detect ++ that the input context has lost the focus. ++ ++ an input context is ensured that unsetFocus() is not called during ++ preedit relocation. This means that an input focus will survive ++ between several widgets that sharing the input context. ++ ++ Default implementation that calls reset() is sufficient for simple ++ input methods. You can override this function to alter the ++ behavior. For example, most Japanese input contexts should not be ++ reset on losing focus. The context sometimes contains a whole ++ paragraph and has minutes of lifetime different to ephemeral one ++ in other languages. The piled input context should be survived ++ until focused again since Japanese user naturally expects so. ++ ++ On the X11 platform, focusWidget is valid until this function has ++ been returned. ++ ++ \sa setFocus() ++*/ ++void QInputContext::unsetFocus() ++{ ++ reset(); ++} ++ ++ ++/*! ++ This function can be implemented in a subclass to handle ++ microfocus changes. ++ ++ 'microfocus' stands for the input method focus point in the ++ preedit (XIM "spot" point) for complex language input handling. It ++ can be used to place auxiliary GUI widgets such as candidate ++ selection window. ++ ++ \a x, \a y, \a w and \a h represents the position and size of the ++ cursor in the preedit string. \a f is the font on the location of ++ the cursor. ++*/ ++void QInputContext::setMicroFocus( int x, int y, int w, int h, QFont *f ) ++{ ++} ++ ++ ++/*! ++ This function can be reimplemented in a subclass to handle mouse ++ presses/releases/doubleclicks/moves within the preedit text. You ++ can use the function to implement mouse-oriented user interface ++ such as text selection or popup menu for candidate selection. ++ ++ The parameter \a x is the offset within the string that was sent ++ with the IMCompose event. The alteration boundary of \a x is ++ ensured as character boundary of preedit string accurately. ++ ++ \a type is either \c QEvent::MouseButtonPress or \c ++ QEvent::MouseButtonRelease or \c QEvent::MouseButtonDblClick or \c ++ QEvent::MouseButtonMove. Refer \a button and \a state to determine ++ what operation has performed. ++ ++ The method interface is imported from ++ QWSInputMethod::mouseHandler() of Qt/Embedded 2.3.7 and extended ++ for desktop system. ++ */ ++void QInputContext::mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState state ) ++{ ++ // Default behavior for simple ephemeral input contexts. Some ++ // complex input contexts should not be reset here. ++ if ( type == QEvent::MouseButtonPress || ++ type == QEvent::MouseButtonDblClick ) ++ reset(); ++} ++ ++ ++/*! ++ Returns the font of the current input widget ++ */ ++QFont QInputContext::font() const ++{ ++ if ( !focusWidget() ) ++ return QApplication::font(); //### absolutely last resort ++ ++ return focusWidget()->font(); ++} ++ ++ ++/*! ++ This function can be reimplemented in a subclass to reset the ++ state of the input method. ++ ++ This function is called by several widgets to reset input ++ state. For example, a text widget call this function before ++ inserting a text to make widget ready to accept a text. ++ ++ Default implementation is sufficient for simple input method. You ++ can override this function to reset external input method engines ++ in complex input method. In the case, call QInputContext::reset() ++ to ensure proper termination of inputting. ++ ++ You must not send any QIMEvent except empty IMEnd event using ++ QInputContext::reset() at reimplemented reset(). It will break ++ input state consistency. ++*/ ++void QInputContext::reset() ++{ ++ if ( isComposing() ) ++ sendIMEvent( QEvent::IMEnd ); ++} ++ ++ ++/*! ++ This function must be implemented in any subclasses to return the ++ identifier name of the input method. ++ ++ Return value is the name to identify and specify input methods for ++ the input method switching mechanism and so on. The name has to be ++ consistent with QInputContextPlugin::keys(). The name has to ++ consist of ASCII characters only. ++ ++ There are two different names with different responsibility in the ++ input method domain. This function returns one of them. Another ++ name is called 'display name' that stands for the name for ++ endusers appeared in a menu and so on. ++ ++ \sa QInputContextPlugin::keys(), QInputContextPlugin::displayName() ++*/ ++QString QInputContext::identifierName() ++{ ++ return ""; ++} ++ ++ ++/*! ++ This function must be implemented in any subclasses to return a ++ language code (e.g. "zh_CN", "zh_TW", "zh_HK", "ja", "ko", ...) ++ of the input context. If the input context can handle multiple ++ languages, return the currently used one. The name has to be ++ consistent with QInputContextPlugin::language(). ++ ++ This information will be used by language tagging feature in ++ QIMEvent. It is required to distinguish unified han characters ++ correctly. It enables proper font and character code ++ handling. Suppose CJK-awared multilingual web browser ++ (that automatically modifies fonts in CJK-mixed text) and XML editor ++ (that automatically inserts lang attr). ++ ++ \sa QInputContextPlugin::language() ++*/ ++QString QInputContext::language() ++{ ++ return ""; ++} ++ ++ ++#if (QT_VERSION-0 >= 0x040000) ++/*! ++ This is a preliminary interface for Qt4 ++ */ ++QList QInputContext::actions() ++{ ++} ++#else ++/*! ++ This function can be reimplemented in a subclass to provide input ++ method dependent popup menus. Return 0 if the menus are ++ unnecessary. ++ ++ Ownership of the object and children are transferred to the ++ caller, and the result must not be called ++ setAutoDelete(). QInputContextMenu::title is used for label text ++ of the popup menu as submenu. ++ ++ \sa addMenusTo() ++*/ ++QPtrList *QInputContext::menus() ++{ ++ return 0; ++} ++#endif ++ ++/*! ++ Appends input method dependent submenus into \a popup. A separator ++ is also inserted into \a popup if \a action is InsertSeparator. ++ ++ This is an utility function only for convenience in limited ++ situation. This function is used by input context owner such as ++ text widgets to add the submenus to its own context menu. If you ++ want to insert the submenus in more flexible way, use ++ QInputContext::menus() manually. \a popup is not restricted to ++ context menu of a text widget. For example, the owner may be a ++ input method menu of Qtopia taskbar in Qt/Embedded platform. ++ ++ \sa menus(), QInputContextMenu::Action ++*/ ++void QInputContext::addMenusTo( QPopupMenu *popup, QInputContextMenu::Action action ) ++{ ++ if ( ! popup ) ++ return; ++ ++ QPtrList *imMenus = menus(); ++ if ( imMenus ) { ++ if ( action == QInputContextMenu::InsertSeparator ) ++ popup->insertSeparator(); ++ for ( QPtrList::Iterator it = imMenus->begin(); ++ it != imMenus->end(); ++ ++it ) { ++ QInputContextMenu *imMenu = *it; ++ popup->insertItem( imMenu->title, imMenu->popup ); ++ } ++ imMenus->clear(); ++ delete imMenus; ++ } ++} ++ ++#endif //Q_NO_IM +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.h qt-x11-free-3.3.5/src/kernel/qinputcontext.h +--- qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qinputcontext.h 2005-10-18 12:57:18.807214656 +0900 +@@ -0,0 +1,143 @@ ++/**************************************************************************** ++** $Id: qinputcontext.h,v 1.8 2004/06/22 06:47:30 daisuke Exp $ ++** ++** Definition of QInputContext ++** ++** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. ++** ++** This file is part of the kernel module of the Qt GUI Toolkit. ++** ++** This file may be distributed under the terms of the Q Public License ++** as defined by Trolltech AS of Norway and appearing in the file ++** LICENSE.QPL included in the packaging of this file. ++** ++** This file may be distributed and/or modified under the terms of the ++** GNU General Public License version 2 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. ++** ++** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ++** licenses may use this file in accordance with the Qt Commercial License ++** Agreement provided with the Software. ++** ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for ++** information about Qt Commercial License Agreements. ++** See http://www.trolltech.com/qpl/ for QPL licensing information. ++** See http://www.trolltech.com/gpl/ for GPL licensing information. ++** ++** Contact info@trolltech.com if any conditions of this licensing are ++** not clear to you. ++** ++**********************************************************************/ ++ ++#ifndef QINPUTCONTEXT_H ++#define QINPUTCONTEXT_H ++ ++#ifndef QT_NO_IM ++ ++#ifndef QT_H ++#include "qobject.h" ++#include "qglobal.h" ++#include "qevent.h" ++#include "qstring.h" ++#if (QT_VERSION-0 >= 0x040000) ++#include "qlist.h" ++#include "qaction.h" ++#else ++#include "qptrlist.h" ++#endif ++#endif ++ ++class QWidget; ++class QFont; ++class QPopupMenu; ++class QInputContextPrivate; ++ ++ ++struct QInputContextMenu { ++ enum Action { ++ NoSeparator, ++ InsertSeparator ++ }; ++#if !(QT_VERSION-0 >= 0x040000) ++ QString title; ++ QPopupMenu *popup; ++#endif ++}; ++ ++ ++class QInputContext : public QObject ++{ ++ Q_OBJECT ++public: ++ QInputContext( QObject *parent = 0 ); ++ virtual ~QInputContext(); ++ ++ virtual QString identifierName(); ++ virtual QString language(); ++ ++#if defined(Q_WS_X11) ++ virtual bool x11FilterEvent( QWidget *keywidget, XEvent *event ); ++#endif // Q_WS_X11 ++ virtual bool filterEvent( const QEvent *event ); ++ virtual void reset(); ++ ++ virtual void setFocus(); ++ virtual void unsetFocus(); ++ virtual void setMicroFocus( int x, int y, int w, int h, QFont *f = 0 ); ++ virtual void mouseHandler( int x, QEvent::Type type, ++ Qt::ButtonState button, Qt::ButtonState state ); ++ virtual QFont font() const; ++ virtual bool isComposing() const; ++ virtual bool isPreeditRelocationEnabled(); ++ ++#if (QT_VERSION-0 >= 0x040000) ++ virtual QList actions(); ++ void addActionsTo( QMenu *menu, QInputContextMenu::Action action = QInputContextMenu::InsertSeparator ); ++#else ++ virtual QPtrList *menus(); ++ void addMenusTo( QPopupMenu *popup, QInputContextMenu::Action action = QInputContextMenu::InsertSeparator ); ++#endif ++ ++#if defined(Q_WS_X11) ++ // these functions are not recommended for ordinary use ++ virtual QWidget *focusWidget() const; ++ virtual QWidget *holderWidget() const; ++ ++ // these functions must not be used by ordinary input method ++ virtual void setFocusWidget( QWidget *w ); ++ virtual void setHolderWidget( QWidget *w ); ++ virtual void releaseComposingWidget( QWidget *w ); ++#endif ++ ++signals: ++ void deletionRequested(); ++ void imEventGenerated( QObject *receiver, QIMEvent *e ); ++ ++protected: ++ virtual void sendIMEvent( QEvent::Type type, ++ const QString &text = QString::null, ++ int cursorPosition = -1, int selLength = 0 ); ++ ++private: ++ void sendIMEventInternal( QEvent::Type type, ++ const QString &text = QString::null, ++ int cursorPosition = -1, int selLength = 0 ); ++ ++ QInputContextPrivate *d; ++ ++ friend class QWidget; ++ friend class QInputContextFactory; ++ ++private: // Disabled copy constructor and operator= ++ QInputContext( const QInputContext & ); ++ QInputContext &operator=( const QInputContext & ); ++ ++}; ++ ++#endif //Q_NO_IM ++ ++#endif // QINPUTCONTEXT_H +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qinputcontext_x11.cpp qt-x11-free-3.3.5/src/kernel/qinputcontext_x11.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qinputcontext_x11.cpp 2005-09-02 21:43:04.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qinputcontext_x11.cpp 2005-10-18 12:57:18.811214048 +0900 +@@ -33,500 +33,38 @@ + ** + **********************************************************************/ + ++#include "qinputcontext.h" ++ ++#ifndef QT_NO_IM ++ + #include "qplatformdefs.h" + + #include "qapplication.h" + #include "qwidget.h" +-#include "qinputcontext_p.h" +- +-#include +-#include + ++#include "qt_x11_p.h" + +-bool qt_compose_emptied = FALSE; ++/*! ++ This function may be overridden only if input method is depending ++ on X11 and you need raw XEvent. Otherwise, this function must not. + +-#if !defined(QT_NO_XIM) ++ This function is designed to filter raw key events for XIM, but ++ other input methods may use this to implement some special ++ features such as distinguishing Shift_L and Shift_R. + +-#define XK_MISCELLANY +-#define XK_LATIN1 +-#include ++ Return TRUE if the \a event has been consumed. Otherwise, the ++ unfiltered \a event will be translated into QEvent and forwarded ++ to filterEvent(). Filtering at both x11FilterEvent() and ++ filterEvent() in single input method is allowed. + +-// #define QT_XIM_DEBUG ++ \a keywidget is a client widget into which a text is inputted. \a ++ event is inputted XEvent. + +-// from qapplication_x11.cpp +-extern XIM qt_xim; +-extern XIMStyle qt_xim_style; +- +-/* The cache here is needed, as X11 leaks a few kb for every +- XFreeFontSet call, so we avoid creating and deletion of fontsets as +- much as possible ++ \sa filterEvent() + */ +-static XFontSet fontsetCache[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +-static int fontsetRefCount = 0; +- +-static const char * const fontsetnames[] = { +- "-*-fixed-medium-r-*-*-16-*,-*-*-medium-r-*-*-16-*", +- "-*-fixed-medium-i-*-*-16-*,-*-*-medium-i-*-*-16-*", +- "-*-fixed-bold-r-*-*-16-*,-*-*-bold-r-*-*-16-*", +- "-*-fixed-bold-i-*-*-16-*,-*-*-bold-i-*-*-16-*", +- "-*-fixed-medium-r-*-*-24-*,-*-*-medium-r-*-*-24-*", +- "-*-fixed-medium-i-*-*-24-*,-*-*-medium-i-*-*-24-*", +- "-*-fixed-bold-r-*-*-24-*,-*-*-bold-r-*-*-24-*", +- "-*-fixed-bold-i-*-*-24-*,-*-*-bold-i-*-*-24-*" +-}; +- +-static XFontSet getFontSet( const QFont &f ) +-{ +- int i = 0; +- if (f.italic()) +- i |= 1; +- if (f.bold()) +- i |= 2; +- +- if ( f.pointSize() > 20 ) +- i += 4; +- +- if ( !fontsetCache[i] ) { +- Display* dpy = QPaintDevice::x11AppDisplay(); +- int missCount; +- char** missList; +- fontsetCache[i] = XCreateFontSet(dpy, fontsetnames[i], &missList, &missCount, 0); +- if(missCount > 0) +- XFreeStringList(missList); +- if ( !fontsetCache[i] ) { +- fontsetCache[i] = XCreateFontSet(dpy, "-*-fixed-*-*-*-*-16-*", &missList, &missCount, 0); +- if(missCount > 0) +- XFreeStringList(missList); +- if ( !fontsetCache[i] ) +- fontsetCache[i] = (XFontSet)-1; +- } +- } +- return (fontsetCache[i] == (XFontSet)-1) ? 0 : fontsetCache[i]; +-} +- +- +-#ifdef Q_C_CALLBACKS +-extern "C" { +-#endif // Q_C_CALLBACKS +- +- static int xic_start_callback(XIC, XPointer client_data, XPointer) { +- QInputContext *qic = (QInputContext *) client_data; +- if (! qic) { +-#ifdef QT_XIM_DEBUG +- qDebug("compose start: no qic"); +-#endif // QT_XIM_DEBUG +- +- return 0; +- } +- +- qic->composing = TRUE; +- qic->text = QString::null; +- qic->focusWidget = 0; +- +- if ( qic->selectedChars.size() < 128 ) +- qic->selectedChars.resize( 128 ); +- qic->selectedChars.fill( 0 ); +- +-#ifdef QT_XIM_DEBUG +- qDebug("compose start"); +-#endif // QT_XIM_DEBUG +- +- return 0; +- } +- +- static int xic_draw_callback(XIC, XPointer client_data, XPointer call_data) { +- QInputContext *qic = (QInputContext *) client_data; +- if (! qic) { +-#ifdef QT_XIM_DEBUG +- qDebug("compose event: invalid compose event %p", qic); +-#endif // QT_XIM_DEBUG +- +- return 0; +- } +- +- bool send_imstart = FALSE; +- if (qApp->focusWidget() != qic->focusWidget && qic->text.isEmpty()) { +- if (qic->focusWidget) { +-#ifdef QT_XIM_DEBUG +- qDebug( "sending IMEnd (empty) to %p", qic->focusWidget ); +-#endif // QT_XIM_DEBUG +- +- QIMEvent endevent(QEvent::IMEnd, QString::null, -1); +- QApplication::sendEvent(qic->focusWidget, &endevent); +- } +- +- qic->text = QString::null; +- qic->focusWidget = qApp->focusWidget(); +- qic->composing = FALSE; +- +- if ( qic->selectedChars.size() < 128 ) +- qic->selectedChars.resize( 128 ); +- qic->selectedChars.fill( 0 ); +- +- if (qic->focusWidget) { +- qic->composing = TRUE; +- send_imstart = TRUE; +- } +- } +- +- if (! qic->composing || ! qic->focusWidget) { +-#ifdef QT_XIM_DEBUG +- qDebug("compose event: invalid compose event %d %p", +- qic->composing, qic->focusWidget); +-#endif // QT_XIM_DEBUG +- +- return 0; +- } +- +- if ( send_imstart ) { +-#ifdef QT_XIM_DEBUG +- qDebug( "sending IMStart to %p", qic->focusWidget ); +-#endif // QT_XIM_DEBUG +- +- qt_compose_emptied = FALSE; +- QIMEvent startevent(QEvent::IMStart, QString::null, -1); +- QApplication::sendEvent(qic->focusWidget, &startevent); +- } +- +- XIMPreeditDrawCallbackStruct *drawstruct = +- (XIMPreeditDrawCallbackStruct *) call_data; +- XIMText *text = (XIMText *) drawstruct->text; +- int cursor = drawstruct->caret, sellen = 0; +- +- if ( ! drawstruct->caret && ! drawstruct->chg_first && +- ! drawstruct->chg_length && ! text ) { +- // nothing to do +- return 0; +- } +- +- if (text) { +- char *str = 0; +- if (text->encoding_is_wchar) { +- int l = wcstombs(NULL, text->string.wide_char, text->length); +- if (l != -1) { +- str = new char[l + 1]; +- wcstombs(str, text->string.wide_char, l); +- str[l] = 0; +- } +- } else +- str = text->string.multi_byte; +- +- if (! str) +- return 0; +- +- QString s = QString::fromLocal8Bit(str); +- +- if (text->encoding_is_wchar) +- delete [] str; +- +- if (drawstruct->chg_length < 0) +- qic->text.replace(drawstruct->chg_first, UINT_MAX, s); +- else +- qic->text.replace(drawstruct->chg_first, drawstruct->chg_length, s); +- +- if ( qic->selectedChars.size() < qic->text.length() ) { +- // expand the selectedChars array if the compose string is longer +- uint from = qic->selectedChars.size(); +- qic->selectedChars.resize( qic->text.length() ); +- for ( uint x = from; from < qic->selectedChars.size(); ++x ) +- qic->selectedChars[x] = 0; +- } +- +- uint x; +- bool *p = qic->selectedChars.data() + drawstruct->chg_first; +- // determine if the changed chars are selected based on text->feedback +- for ( x = 0; x < s.length(); ++x ) +- *p++ = ( text->feedback ? ( text->feedback[x] & XIMReverse ) : 0 ); +- +- // figure out where the selection starts, and how long it is +- p = qic->selectedChars.data(); +- bool started = FALSE; +- for ( x = 0; x < QMIN(qic->text.length(), qic->selectedChars.size()); ++x ) { +- if ( started ) { +- if ( *p ) ++sellen; +- else break; +- } else { +- if ( *p ) { +- cursor = x; +- started = TRUE; +- sellen = 1; +- } +- } +- ++p; +- } +- } else { +- if (drawstruct->chg_length == 0) +- drawstruct->chg_length = -1; +- +- qic->text.remove(drawstruct->chg_first, drawstruct->chg_length); +- qt_compose_emptied = qic->text.isEmpty(); +- if ( qt_compose_emptied ) { +-#ifdef QT_XIM_DEBUG +- qDebug( "compose emptied" ); +-#endif // QT_XIM_DEBUG +- +- // don't send an empty compose, since we will send an IMEnd with +- // either the correct compose text (or null text if the user has +- // cancelled the compose or deleted all chars). +- return 0; +- } +- } +- +-#ifdef QT_XIM_DEBUG +- qDebug( "sending IMCompose to %p with %d chars", +- qic->focusWidget, qic->text.length() ); +-#endif // QT_XIM_DEBUG +- +- QIMComposeEvent event( QEvent::IMCompose, qic->text, cursor, sellen ); +- QApplication::sendEvent(qic->focusWidget, &event); +- return 0; +- } +- +- static int xic_done_callback(XIC, XPointer client_data, XPointer) { +- QInputContext *qic = (QInputContext *) client_data; +- if (! qic) +- return 0; +- +- if (qic->composing && qic->focusWidget) { +-#ifdef QT_XIM_DEBUG +- qDebug( "sending IMEnd (empty) to %p", qic->focusWidget ); +-#endif // QT_XIM_DEBUG +- +- QIMEvent event(QEvent::IMEnd, QString::null, -1); +- QApplication::sendEvent(qic->focusWidget, &event); +- } +- +- qic->composing = FALSE; +- qic->focusWidget = 0; +- +- if ( qic->selectedChars.size() < 128 ) +- qic->selectedChars.resize( 128 ); +- qic->selectedChars.fill( 0 ); +- +- return 0; +- } +- +-#ifdef Q_C_CALLBACKS +-} +-#endif // Q_C_CALLBACKS +- +-#endif // !QT_NO_XIM +- +- +- +-QInputContext::QInputContext(QWidget *widget) +- : ic(0), focusWidget(0), composing(FALSE), fontset(0) +-{ +-#if !defined(QT_NO_XIM) +- fontsetRefCount++; +- if (! qt_xim) { +- qWarning("QInputContext: no input method context available"); +- return; +- } +- +- if (! widget->isTopLevel()) { +- qWarning("QInputContext: cannot create input context for non-toplevel widgets"); +- return; +- } +- +- XPoint spot; +- XRectangle rect; +- XVaNestedList preedit_attr = 0; +- XIMCallback startcallback, drawcallback, donecallback; +- +- font = widget->font(); +- fontset = getFontSet( font ); +- +- if (qt_xim_style & XIMPreeditArea) { +- rect.x = 0; +- rect.y = 0; +- rect.width = widget->width(); +- rect.height = widget->height(); +- +- preedit_attr = XVaCreateNestedList(0, +- XNArea, &rect, +- XNFontSet, fontset, +- (char *) 0); +- } else if (qt_xim_style & XIMPreeditPosition) { +- spot.x = 1; +- spot.y = 1; +- +- preedit_attr = XVaCreateNestedList(0, +- XNSpotLocation, &spot, +- XNFontSet, fontset, +- (char *) 0); +- } else if (qt_xim_style & XIMPreeditCallbacks) { +- startcallback.client_data = (XPointer) this; +- startcallback.callback = (XIMProc) xic_start_callback; +- drawcallback.client_data = (XPointer) this; +- drawcallback.callback = (XIMProc)xic_draw_callback; +- donecallback.client_data = (XPointer) this; +- donecallback.callback = (XIMProc) xic_done_callback; +- +- preedit_attr = XVaCreateNestedList(0, +- XNPreeditStartCallback, &startcallback, +- XNPreeditDrawCallback, &drawcallback, +- XNPreeditDoneCallback, &donecallback, +- (char *) 0); +- } +- +- if (preedit_attr) { +- ic = XCreateIC(qt_xim, +- XNInputStyle, qt_xim_style, +- XNClientWindow, widget->winId(), +- XNPreeditAttributes, preedit_attr, +- (char *) 0); +- XFree(preedit_attr); +- } else +- ic = XCreateIC(qt_xim, +- XNInputStyle, qt_xim_style, +- XNClientWindow, widget->winId(), +- (char *) 0); +- +- if (! ic) +- qFatal("Failed to create XIM input context!"); +- +- // when resetting the input context, preserve the input state +- (void) XSetICValues((XIC) ic, XNResetState, XIMPreserveState, (char *) 0); +-#endif // !QT_NO_XIM +-} +- +- +-QInputContext::~QInputContext() +-{ +- +-#if !defined(QT_NO_XIM) +- if (ic) +- XDestroyIC((XIC) ic); +- +- if ( --fontsetRefCount == 0 ) { +- Display *dpy = QPaintDevice::x11AppDisplay(); +- for ( int i = 0; i < 8; i++ ) { +- if ( fontsetCache[i] && fontsetCache[i] != (XFontSet)-1 ) { +- XFreeFontSet(dpy, fontsetCache[i]); +- fontsetCache[i] = 0; +- } +- } +- } +- +-#endif // !QT_NO_XIM +- +- ic = 0; +- focusWidget = 0; +- composing = FALSE; +-} +- +- +-void QInputContext::reset() +-{ +-#if !defined(QT_NO_XIM) +- if (focusWidget && composing && ! text.isNull()) { +-#ifdef QT_XIM_DEBUG +- qDebug("QInputContext::reset: composing - sending IMEnd (empty) to %p", +- focusWidget); +-#endif // QT_XIM_DEBUG +- +- QIMEvent endevent(QEvent::IMEnd, QString::null, -1); +- QApplication::sendEvent(focusWidget, &endevent); +- focusWidget = 0; +- text = QString::null; +- if ( selectedChars.size() < 128 ) +- selectedChars.resize( 128 ); +- selectedChars.fill( 0 ); +- +- char *mb = XmbResetIC((XIC) ic); +- if (mb) +- XFree(mb); +- } +-#endif // !QT_NO_XIM +-} +- +- +-void QInputContext::setComposePosition(int x, int y) +-{ +-#if !defined(QT_NO_XIM) +- if (qt_xim && ic) { +- XPoint point; +- point.x = x; +- point.y = y; +- +- XVaNestedList preedit_attr = +- XVaCreateNestedList(0, +- XNSpotLocation, &point, +- +- (char *) 0); +- XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); +- XFree(preedit_attr); +- } +-#endif // !QT_NO_XIM +-} +- +- +-void QInputContext::setComposeArea(int x, int y, int w, int h) ++bool QInputContext::x11FilterEvent( QWidget *keywidget, XEvent *event ) + { +-#if !defined(QT_NO_XIM) +- if (qt_xim && ic) { +- XRectangle rect; +- rect.x = x; +- rect.y = y; +- rect.width = w; +- rect.height = h; +- +- XVaNestedList preedit_attr = XVaCreateNestedList(0, +- XNArea, &rect, +- +- (char *) 0); +- XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); +- XFree(preedit_attr); +- } +-#endif ++ return FALSE; + } + +- +-int QInputContext::lookupString(XKeyEvent *event, QCString &chars, +- KeySym *key, Status *status) const +-{ +- int count = 0; +- +-#if !defined(QT_NO_XIM) +- if (qt_xim && ic) { +- count = XmbLookupString((XIC) ic, event, chars.data(), +- chars.size(), key, status); +- +- if ((*status) == XBufferOverflow ) { +- chars.resize(count + 1); +- count = XmbLookupString((XIC) ic, event, chars.data(), +- chars.size(), key, status); +- } +- } +- +-#endif // QT_NO_XIM +- +- return count; +-} +- +-void QInputContext::setFocus() +-{ +-#if !defined(QT_NO_XIM) +- if (qt_xim && ic) +- XSetICFocus((XIC) ic); +-#endif // !QT_NO_XIM +-} +- +-void QInputContext::setXFontSet(const QFont &f) +-{ +-#if !defined(QT_NO_XIM) +- if (font == f) return; // nothing to do +- font = f; +- +- XFontSet fs = getFontSet(font); +- if (fontset == fs) return; // nothing to do +- fontset = fs; +- +- XVaNestedList preedit_attr = XVaCreateNestedList(0, XNFontSet, fontset, (char *) 0); +- XSetICValues((XIC) ic, XNPreeditAttributes, preedit_attr, (char *) 0); +- XFree(preedit_attr); +-#else +- Q_UNUSED( f ); +-#endif +-} ++#endif //Q_NO_IM +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qnamespace.h qt-x11-free-3.3.5/src/kernel/qnamespace.h +--- qt-x11-free-3.3.5.orig/src/kernel/qnamespace.h 2005-09-02 21:43:04.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qnamespace.h 2005-10-18 12:57:18.815213440 +0900 +@@ -397,6 +397,87 @@ + Key_Help = 0x1058, + Key_Direction_L = 0x1059, + Key_Direction_R = 0x1060, ++ ++ // International input method support (X keycode - 0xEE00, the ++ // definition follows Qt/Embedded 2.3.7) Only interesting if ++ // you are writing your own input method ++ ++ // International & multi-key character composition ++ Key_Multi_key = 0x1120, // Multi-key character compose ++ Key_Codeinput = 0x1137, ++ Key_SingleCandidate = 0x113c, ++ Key_MultipleCandidate = 0x113d, ++ Key_PreviousCandidate = 0x113e, ++ ++ // Misc Functions ++ Key_Mode_switch = 0x117e, // Character set switch ++ //Key_script_switch = 0x117e, // Alias for mode_switch ++ ++ // Japanese keyboard support ++ Key_Kanji = 0x1121, // Kanji, Kanji convert ++ Key_Muhenkan = 0x1122, // Cancel Conversion ++ //Key_Henkan_Mode = 0x1123, // Start/Stop Conversion ++ Key_Henkan = 0x1123, // Alias for Henkan_Mode ++ Key_Romaji = 0x1124, // to Romaji ++ Key_Hiragana = 0x1125, // to Hiragana ++ Key_Katakana = 0x1126, // to Katakana ++ Key_Hiragana_Katakana = 0x1127, // Hiragana/Katakana toggle ++ Key_Zenkaku = 0x1128, // to Zenkaku ++ Key_Hankaku = 0x1129, // to Hankaku ++ Key_Zenkaku_Hankaku = 0x112a, // Zenkaku/Hankaku toggle ++ Key_Touroku = 0x112b, // Add to Dictionary ++ Key_Massyo = 0x112c, // Delete from Dictionary ++ Key_Kana_Lock = 0x112d, // Kana Lock ++ Key_Kana_Shift = 0x112e, // Kana Shift ++ Key_Eisu_Shift = 0x112f, // Alphanumeric Shift ++ Key_Eisu_toggle = 0x1130, // Alphanumeric toggle ++ //Key_Kanji_Bangou = 0x1137, // Codeinput ++ //Key_Zen_Koho = 0x113d, // Multiple/All Candidate(s) ++ //Key_Mae_Koho = 0x113e, // Previous Candidate ++ ++ // Korean keyboard support ++ // ++ // In fact, many Korean users need only 2 keys, Key_Hangul and ++ // Key_Hangul_Hanja. But rest of the keys are good for future. ++ ++ Key_Hangul = 0x1131, // Hangul start/stop(toggle) ++ Key_Hangul_Start = 0x1132, // Hangul start ++ Key_Hangul_End = 0x1133, // Hangul end, English start ++ Key_Hangul_Hanja = 0x1134, // Start Hangul->Hanja Conversion ++ Key_Hangul_Jamo = 0x1135, // Hangul Jamo mode ++ Key_Hangul_Romaja = 0x1136, // Hangul Romaja mode ++ //Key_Hangul_Codeinput = 0x1137, // Hangul code input mode ++ Key_Hangul_Jeonja = 0x1138, // Jeonja mode ++ Key_Hangul_Banja = 0x1139, // Banja mode ++ Key_Hangul_PreHanja = 0x113a, // Pre Hanja conversion ++ Key_Hangul_PostHanja = 0x113b, // Post Hanja conversion ++ //Key_Hangul_SingleCandidate = 0x113c, // Single candidate ++ //Key_Hangul_MultipleCandidate = 0x113d, // Multiple candidate ++ //Key_Hangul_PreviousCandidate = 0x113e, // Previous candidate ++ Key_Hangul_Special = 0x113f, // Special symbols ++ //Key_Hangul_switch = 0x117e, // Alias for mode_switch ++ ++ // dead keys (X keycode - 0xED00 to avoid the conflict) ++ Key_Dead_Grave = 0x1250, ++ Key_Dead_Acute = 0x1251, ++ Key_Dead_Circumflex = 0x1252, ++ Key_Dead_Tilde = 0x1253, ++ Key_Dead_Macron = 0x1254, ++ Key_Dead_Breve = 0x1255, ++ Key_Dead_Abovedot = 0x1256, ++ Key_Dead_Diaeresis = 0x1257, ++ Key_Dead_Abovering = 0x1258, ++ Key_Dead_Doubleacute = 0x1259, ++ Key_Dead_Caron = 0x125a, ++ Key_Dead_Cedilla = 0x125b, ++ Key_Dead_Ogonek = 0x125c, ++ Key_Dead_Iota = 0x125d, ++ Key_Dead_Voiced_Sound = 0x125e, ++ Key_Dead_Semivoiced_Sound = 0x125f, ++ Key_Dead_Belowdot = 0x1260, ++ Key_Dead_Hook = 0x1261, ++ Key_Dead_Horn = 0x1262, ++ + Key_Space = 0x20, // 7 bit printable ASCII + Key_Any = Key_Space, + Key_Exclam = 0x21, +@@ -469,6 +550,11 @@ + Key_AsciiTilde = 0x7e, + + // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06 ++ // ++ // This is mainly for compatibility - applications and input ++ // methods should not use the Qt keycodes between 128 and 255, ++ // but should rather use the QKeyEvent::text(). See ++ // QETWidget::translateKeyEventInternal() for more details. + + Key_nobreakspace = 0x0a0, + Key_exclamdown = 0x0a1, +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qrichtext.cpp qt-x11-free-3.3.5/src/kernel/qrichtext.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qrichtext.cpp 2005-09-02 21:43:01.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qrichtext.cpp 2005-10-18 12:57:18.846208728 +0900 +@@ -662,7 +662,7 @@ + pop(); + } + +-bool QTextCursor::place( const QPoint &p, QTextParagraph *s, bool link ) ++bool QTextCursor::place( const QPoint &p, QTextParagraph *s, bool link, bool loosePlacing, bool matchBetweenCharacters ) + { + QPoint pos( p ); + QRect r; +@@ -680,7 +680,7 @@ + str = s; + if ( pos.y() >= r.y() && pos.y() <= r.y() + r.height() ) + break; +- if ( !s->next() ) { ++ if ( loosePlacing == TRUE && !s->next() ) { + #ifdef Q_WS_MACX + pos.setX( s->rect().x() + s->rect().width() ); + #endif +@@ -721,7 +721,7 @@ + if ( pos.x() < x ) + pos.setX( x + 1 ); + int cw; +- int curpos = s->length()-1; ++ int curpos = -1; + int dist = 10000000; + bool inCustom = FALSE; + while ( i < nextLine ) { +@@ -743,14 +743,21 @@ + cpos += cw; + int d = cpos - pos.x(); + bool dm = d < 0 ? !chr->rightToLeft : chr->rightToLeft; +- if ( (QABS( d ) < dist || (dist == d && dm == TRUE )) && para->string()->validCursorPosition( i ) ) { ++ if ( ( matchBetweenCharacters == TRUE && (QABS( d ) < dist || (dist == d && dm == TRUE )) && para->string()->validCursorPosition( i ) ) || ++ ( matchBetweenCharacters == FALSE && ( d == 0 || dm == TRUE ) ) ) { + dist = QABS( d ); +- if ( !link || pos.x() >= x + chr->x ) ++ if ( !link || ( pos.x() >= x + chr->x && ( loosePlacing == TRUE || pos.x() < cpos ) ) ) + curpos = i; + } + } + i++; + } ++ if ( curpos == -1 ) { ++ if ( loosePlacing == TRUE ) ++ curpos = s->length()-1; ++ else ++ return FALSE; ++ } + setIndex( curpos ); + + #ifndef QT_NO_TEXTCUSTOMITEM +@@ -4872,6 +4879,9 @@ + tmpw = fullSelectionWidth - xleft; + painter.fillRect( xleft, y, tmpw, h, color ); + painter.drawText( xstart, y + baseLine, str, start, len, dir ); ++ // draw preedit's underline ++ if (selection == QTextDocument::IMCompositionText) ++ painter.drawLine(xstart, y + baseLine + 1, xstart + w, y + baseLine + 1); + if (selStart != start || selEnd != start + len || selWrap) + painter.restore(); + } +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qrichtext_p.h qt-x11-free-3.3.5/src/kernel/qrichtext_p.h +--- qt-x11-free-3.3.5.orig/src/kernel/qrichtext_p.h 2005-09-02 21:43:02.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qrichtext_p.h 2005-10-18 12:57:18.852207816 +0900 +@@ -362,7 +362,8 @@ + int totalOffsetY() const; // total document offset + + bool place( const QPoint &pos, QTextParagraph *s ) { return place( pos, s, FALSE ); } +- bool place( const QPoint &pos, QTextParagraph *s, bool link ); ++ bool place( const QPoint &pos, QTextParagraph *s, bool link ) { return place( pos, s, link, TRUE, TRUE ); } ++ bool place( const QPoint &pos, QTextParagraph *s, bool link, bool loosePlacing, bool matchBetweenCharacters ); + void restoreState(); + + +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qt_kernel.pri qt-x11-free-3.3.5/src/kernel/qt_kernel.pri +--- qt-x11-free-3.3.5.orig/src/kernel/qt_kernel.pri 2003-12-08 23:44:24.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qt_kernel.pri 2005-10-18 12:57:18.855207360 +0900 +@@ -34,7 +34,6 @@ + $$KERNEL_H/qimage.h \ + $$KERNEL_P/qimageformatinterface_p.h \ + $$KERNEL_H/qimageformatplugin.h \ +- $$KERNEL_P/qinputcontext_p.h \ + $$KERNEL_H/qkeycode.h \ + $$KERNEL_H/qkeysequence.h \ + $$KERNEL_H/qlayout.h \ +@@ -99,6 +98,12 @@ + $$KERNEL_CPP/qfontengine_p.h \ + $$KERNEL_CPP/qtextlayout_p.h + ++ unix:x11 { ++ HEADERS += $$KERNEL_H/qinputcontext.h ++ } else { ++ HEADERS += $$KERNEL_P/qinputcontext_p.h ++ } ++ + win32:SOURCES += $$KERNEL_CPP/qapplication_win.cpp \ + $$KERNEL_CPP/qclipboard_win.cpp \ + $$KERNEL_CPP/qcolor_win.cpp \ +@@ -130,6 +135,7 @@ + $$KERNEL_CPP/qdesktopwidget_x11.cpp \ + $$KERNEL_CPP/qeventloop_x11.cpp \ + $$KERNEL_CPP/qfont_x11.cpp \ ++ $$KERNEL_CPP/qinputcontext.cpp \ + $$KERNEL_CPP/qinputcontext_x11.cpp \ + $$KERNEL_CPP/qmotifdnd_x11.cpp \ + $$KERNEL_CPP/qpixmap_x11.cpp \ +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qwidget.cpp qt-x11-free-3.3.5/src/kernel/qwidget.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qwidget.cpp 2005-09-02 21:43:03.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qwidget.cpp 2005-10-18 12:57:18.871204928 +0900 +@@ -3282,8 +3282,24 @@ + if ( isActiveWindow() ) { + QWidget * prev = qApp->focus_widget; + if ( prev ) { +- if ( prev != this ) ++ // This part is never executed when Q_WS_X11? Preceding XFocusOut ++ // had already reset focus_widget when received XFocusIn ++ ++ // Don't reset input context explicitly here. Whether reset or not ++ // when focusing out is a responsibility of input methods. For ++ // example, Japanese input context should not be reset here. The ++ // context sometimes contains a whole paragraph and has minutes of ++ // lifetime different to ephemeral one in other languages. The ++ // input context should be survived until focused again. So we ++ // delegate the responsibility to input context via ++ // unfocusInputContext(). ++ if ( prev != this && prev->isInputMethodEnabled() ) { ++#if 0 + prev->resetInputContext(); ++#else ++ prev->unfocusInputContext(); ++#endif ++ } + } + #if defined(Q_WS_WIN) + else { +@@ -3291,9 +3307,8 @@ + } + #endif + qApp->focus_widget = this; +-#if defined(Q_WS_X11) +- focusInputContext(); +-#endif ++ if( isInputMethodEnabled() ) ++ focusInputContext(); + + #if defined(Q_WS_WIN) + if ( !topLevelWidget()->isPopup() ) +@@ -3341,7 +3356,11 @@ + focusProxy()->clearFocus(); + return; + } else if ( hasFocus() ) { ++#if !defined(Q_WS_X11) + resetInputContext(); ++#else ++ unfocusInputContext(); ++#endif + QWidget* w = qApp->focusWidget(); + // clear active focus + qApp->focus_widget = 0; +@@ -4667,7 +4686,13 @@ + break; + + case QEvent::MouseButtonPress: ++ // Don't reset input context here. Whether reset or not is ++ // a responsibility of input method. reset() will be ++ // called by mouseHandler() of input method if necessary ++ // via mousePressEvent() of text widgets. ++#if 0 + resetInputContext(); ++#endif + mousePressEvent( (QMouseEvent*)e ); + if ( ! ((QMouseEvent*)e)->isAccepted() ) + return FALSE; +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qwidget.h qt-x11-free-3.3.5/src/kernel/qwidget.h +--- qt-x11-free-3.3.5.orig/src/kernel/qwidget.h 2005-09-02 21:43:02.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qwidget.h 2005-10-18 12:57:18.875204320 +0900 +@@ -49,6 +49,10 @@ + #include "qsizepolicy.h" + #endif // QT_H + ++#if defined(Q_WS_X11) && !defined(QT_NO_IM) ++class QInputContext; ++#endif ++ + class QLayout; + struct QWExtra; + struct QTLWExtra; +@@ -535,6 +539,18 @@ + + int metric( int ) const; + ++#if defined(Q_WS_X11) ++#if !defined(QT_NO_IM_EXTENSIONS) ++ virtual QWidget *icHolderWidget(); ++#else ++ QWidget *icHolderWidget(); ++#endif ++ QInputContext *getInputContext(); ++ void changeInputContext( const QString & ); ++ void sendMouseEventToInputContext( int x, QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState state ); ++#endif + void resetInputContext(); + + virtual void create( WId = 0, bool initializeWindow = TRUE, +@@ -566,13 +582,16 @@ + + private slots: + void focusProxyDestroyed(); ++#if defined(Q_WS_X11) ++ void destroyInputContext(); ++#endif + + private: + void setFontSys( QFont *f = 0 ); + #if defined(Q_WS_X11) + void createInputContext(); +- void destroyInputContext(); + void focusInputContext(); ++ void unfocusInputContext(); + void checkChildrenDnd(); + #elif defined(Q_WS_MAC) + uint own_id : 1, macDropEnabled : 1; +@@ -644,6 +663,9 @@ + #ifndef QT_NO_LAYOUT + QLayout *lay_out; + #endif ++#if defined(Q_WS_X11) && !defined(QT_NO_IM) && !defined(QT_NO_IM_EXTENSIONS) ++ QInputContext *ic; // Input Context ++#endif + QWExtra *extra; + #if defined(Q_WS_QWS) + QRegion req_region; // Requested region +@@ -949,7 +971,9 @@ + uint dnd : 1; // DND properties installed + uint uspos : 1; // User defined position + uint ussize : 1; // User defined size +- void *xic; // XIM Input Context ++#if defined(QT_NO_IM_EXTENSIONS) ++ void *xic; // Input Context ++#endif + #endif + #if defined(Q_WS_MAC) + WindowGroupRef group; +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qwidget_x11.cpp qt-x11-free-3.3.5/src/kernel/qwidget_x11.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qwidget_x11.cpp 2005-09-02 21:43:03.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qwidget_x11.cpp 2005-10-18 12:57:18.885202800 +0900 +@@ -61,11 +61,9 @@ + bool qt_wstate_iconified( WId ); + void qt_updated_rootinfo(); + +-#ifndef QT_NO_XIM +-#include "qinputcontext_p.h" +- +-extern XIM qt_xim; +-extern XIMStyle qt_xim_style; ++#ifndef QT_NO_IM ++#include "qinputcontext.h" ++#include "qinputcontextfactory.h" + #endif + + // Paint event clipping magic +@@ -688,6 +686,10 @@ + + if ( destroyw ) + qt_XDestroyWindow( this, dpy, destroyw ); ++ ++#if !defined(QT_NO_IM_EXTENSIONS) ++ ic = 0; ++#endif + } + + +@@ -751,6 +753,16 @@ + extern void qPRCleanup( QWidget *widget ); // from qapplication_x11.cpp + if ( testWState(WState_Reparented) ) + qPRCleanup(this); ++ ++ if( this == icHolderWidget() ) { ++ destroyInputContext(); ++ } else { ++ // release previous focus information participating with ++ // preedit preservation of qic ++ QInputContext *qic = getInputContext(); ++ if ( qic ) ++ qic->releaseComposingWidget( this ); ++ } + } + } + +@@ -787,11 +799,11 @@ + XReparentWindow( x11Display(), old_winid, + RootWindow( x11Display(), x11Screen() ), 0, 0 ); + +- if ( isTopLevel() ) { +- // input contexts are associated with toplevel widgets, so we need +- // destroy the context here. if we are reparenting back to toplevel, +- // then we will have another context created, otherwise we will +- // use our new toplevel's context ++ if ( this == icHolderWidget() ) { ++ // input contexts are sometimes associated with toplevel widgets, so ++ // we need destroy the context here. if we are reparenting back to ++ // toplevel, then we may have another context created, otherwise we ++ // will use our new ic holder's context + destroyInputContext(); + } + +@@ -947,7 +959,8 @@ + language input systems. + + In the X11 version of Qt, if \a text is TRUE, this method sets the +- XIM "spot" point for complex language input handling. ++ input method focus point in the preedit (XIM "spot" point) for ++ complex language input handling. + + The font \a f is a rendering hint to the currently active input method. + If \a f is 0 the widget's font is used. +@@ -957,22 +970,15 @@ + void QWidget::setMicroFocusHint(int x, int y, int width, int height, + bool text, QFont *f ) + { +-#ifndef QT_NO_XIM ++#ifndef QT_NO_IM + if ( text ) { +- QWidget* tlw = topLevelWidget(); +- QTLWExtra *topdata = tlw->topData(); +- + // trigger input context creation if it hasn't happened already + createInputContext(); +- QInputContext *qic = (QInputContext *) topdata->xic; + +- if ( qt_xim && qic ) { +- QPoint p( x, y ); +- QPoint p2 = mapTo( topLevelWidget(), QPoint( 0, 0 ) ); +- p = mapTo( topLevelWidget(), p); +- qic->setXFontSet( f ? *f : fnt ); +- qic->setComposePosition(p.x(), p.y() + height); +- qic->setComposeArea(p2.x(), p2.y(), this->width(), this->height()); ++ QInputContext *qic = getInputContext(); ++ if(qic) { ++ QPoint gp = mapToGlobal( QPoint( x, y ) ); ++ qic->setMicroFocus(gp.x(), gp.y(), width, height, f); + } + } + #endif +@@ -1442,16 +1448,8 @@ + QWidget *tlw = topLevelWidget(); + if ( tlw->isVisible() && !tlw->topData()->embedded && !qt_deferred_map_contains(tlw) ) { + XSetInputFocus( x11Display(), tlw->winId(), RevertToNone, qt_x_time); +- +-#ifndef QT_NO_XIM +- // trigger input context creation if it hasn't happened already +- createInputContext(); +- +- if (tlw->topData()->xic) { +- QInputContext *qic = (QInputContext *) tlw->topData()->xic; +- qic->setFocus(); +- } +-#endif ++ // tlw->focusInputContext(); ++ focusInputContext(); + } + } + +@@ -2430,13 +2428,16 @@ + + void QWidget::createTLSysExtra() + { ++#if defined(QT_NO_IM_EXTENSIONS) + // created lazily + extra->topextra->xic = 0; ++#endif + } + + void QWidget::deleteTLSysExtra() + { +- destroyInputContext(); ++ // don't destroy input context here. it will be destroyed in ++ // QWidget::destroy() destroyInputContext(); + } + + /* +@@ -2668,74 +2669,251 @@ + } + + ++/*! ++ This function returns the widget holding the QInputContext ++ instance for this widget. The instance is used for text input to ++ this widget, switching input method, etc. ++ ++ By default, this function delegates the role of returning input ++ context holder widget to QApplication::locateICHolderWidget(). ++ ++ This definition enables application developer to change the ++ mapping of widgets to QInputContext instance simply by overriding ++ QApplication::locateICHolderWidget(). ++ ++ \sa QApplication::locateICHolderWidget() ++*/ ++QWidget *QWidget::icHolderWidget() ++{ ++ return qApp->locateICHolderWidget(this); ++} ++ ++ ++/*! ++ This function returns the QInputContext instance for this widget. ++ This instance is used for text input to this widget, etc. ++ It is simply the accessor function. ++*/ ++QInputContext *QWidget::getInputContext() ++{ ++ QInputContext *qic = 0; ++ ++#if !defined(QT_NO_IM_EXTENSIONS) ++ if ( isInputMethodEnabled() ) { ++ qic = icHolderWidget()->ic; ++#else ++ { ++ // icHolderWidget is always topLevelWidget ++ QTLWExtra *topdata = icHolderWidget()->topData(); ++ qic = (QInputContext *)topdata->xic; ++#endif ++ } ++ ++ return qic; ++} ++ ++ ++/*! ++ This function replaces the QInputContext instance used for text ++ input to this widget. The \a identifierName is the identifier name ++ of newly choosed input method. ++*/ ++void QWidget::changeInputContext( const QString& identifierName ) ++{ ++ QWidget *icWidget = icHolderWidget(); ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QInputContext **qicp = &icWidget->ic; ++#else ++ QInputContext **qicp = (QInputContext **)&icWidget->topData()->xic; ++#endif ++ ++ if( *qicp ) ++ delete *qicp; ++ // an input context that has the identifierName is generated. ++ QInputContext *qic = QInputContextFactory::create( identifierName, icWidget ); ++ *qicp = qic; ++ if ( qic ) { ++ QObject::connect( qic, SIGNAL(imEventGenerated(QObject *,QIMEvent *)), ++ qApp, SLOT(postIMEvent(QObject *,QIMEvent *)) ); ++ QObject::connect( qic, SIGNAL(deletionRequested()), ++ icWidget, SLOT(destroyInputContext()) ); ++ } ++} ++ ++ ++/*! ++ \internal ++ This is an internal function, you should never call this. ++ ++ This function is called to generate an input context ++ according to a configuration for default input method ++ ++ When QT_NO_IM_EXTENSIONS is not set, input context is ++ generated only when isInputMethodEnabled() returns TRUE. ++*/ + void QWidget::createInputContext() + { +- QWidget *tlw = topLevelWidget(); +- QTLWExtra *topdata = tlw->topData(); ++#if !defined(QT_NO_IM_EXTENSIONS) ++ if( !isInputMethodEnabled() ) ++ return; ++#endif + +-#ifndef QT_NO_XIM +- if (qt_xim) { +- if (! topdata->xic) { +- QInputContext *qic = new QInputContext(tlw); +- topdata->xic = (void *) qic; +- } +- } else +-#endif // QT_NO_XIM +- { +- // qDebug("QWidget::createInputContext: no xim"); +- topdata->xic = 0; +- } ++ QWidget *icWidget = icHolderWidget(); ++#ifndef QT_NO_IM ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QInputContext **qicp = &icWidget->ic; ++#else ++ QInputContext **qicp = (QInputContext **)&icWidget->topData()->xic; ++#endif ++ ++ if ( ! *qicp ) { ++ // an input context of the default input method is generated. ++ QInputContext *qic = QInputContextFactory::create( QApplication::defaultInputMethod(), icWidget ); ++ ++ *qicp = qic; ++ if ( qic ) { ++ QObject::connect( qic, SIGNAL(imEventGenerated(QObject *,QIMEvent *)), ++ qApp, SLOT(postIMEvent(QObject *,QIMEvent *)) ); ++ QObject::connect( qic, SIGNAL(deletionRequested()), ++ icWidget, SLOT(destroyInputContext()) ); ++ } ++ } ++#endif // QT_NO_IM + } + + ++/*! ++ \internal ++ ++ This slot is used to destroy the input context that belonging ++ to the widget itself, so icHolderWidget()->ic is not fetched. ++ ++ \sa QInputContext::deletionRequested() ++*/ + void QWidget::destroyInputContext() + { +-#ifndef QT_NO_XIM +- QInputContext *qic = (QInputContext *) extra->topextra->xic; +- delete qic; +-#endif // QT_NO_XIM +- extra->topextra->xic = 0; ++#ifndef QT_NO_IM ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QInputContext **qicp = ⁣ ++#else ++ if ( ! extra || ! extra->topextra ) ++ return; ++ ++ QInputContext **qicp = (QInputContext **)&extra->topextra->xic; ++#endif ++ ++ if( *qicp ) ++ delete *qicp; ++ ++ *qicp = 0; ++#endif // QT_NO_IM + } + + + /*! +- This function is called when the user finishes input composition, +- e.g. changes focus to another widget, moves the cursor, etc. ++ This function is called when text widgets need to be neutral state to ++ execute text operations properly. See qlineedit.cpp and qtextedit.cpp as ++ example. ++ ++ Ordinary reset that along with changing focus to another widget, ++ moving the cursor, etc, is implicitly handled via ++ unfocusInputContext() because whether reset or not when such ++ situation is a responsibility of input methods. So we delegate the ++ responsibility to the input context via unfocusInputContext(). See ++ 'Preedit preservation' section of the class description of ++ QInputContext for further information. ++ ++ \sa QInputContext, unfocusInputContext(), QInputContext::unsetFocus() + */ + void QWidget::resetInputContext() + { +-#ifndef QT_NO_XIM +- if ((qt_xim_style & XIMPreeditCallbacks) && hasFocus()) { +- QWidget *tlw = topLevelWidget(); +- QTLWExtra *topdata = tlw->topData(); ++#ifndef QT_NO_IM ++ // trigger input context creation if it hasn't happened already ++ createInputContext(); ++ ++ QInputContext *qic = getInputContext(); ++ if( qic ) ++ qic->reset(); ++#endif // QT_NO_IM ++} + +- // trigger input context creation if it hasn't happened already +- createInputContext(); + +- if (topdata->xic) { +- QInputContext *qic = (QInputContext *) topdata->xic; +- qic->reset(); ++/*! ++ \internal ++ This is an internal function, you should never call this. ++ ++ This function is called to focus associated input context. The ++ code intends to eliminate duplicate focus for the context even if ++ the context is shared between widgets ++ ++ \sa QInputContext::setFocus() ++ */ ++void QWidget::focusInputContext() ++{ ++#ifndef QT_NO_IM ++ // trigger input context creation if it hasn't happened already ++ createInputContext(); ++ ++ QInputContext *qic = getInputContext(); ++ if ( qic ) { ++ if( qic->focusWidget() != this ) { ++ qic->setFocusWidget( this ); ++ qic->setFocus(); + } + } +-#endif // QT_NO_XIM ++#endif // QT_NO_IM + } + + +-void QWidget::focusInputContext() +-{ +-#ifndef QT_NO_XIM +- QWidget *tlw = topLevelWidget(); +- QTLWExtra *topdata = tlw->topData(); ++/*! ++ \internal ++ This is an internal function, you should never call this. + ++ This function is called to remove focus from associated input ++ context. ++ ++ \sa QInputContext::unsetFocus() ++ */ ++void QWidget::unfocusInputContext() ++{ ++#ifndef QT_NO_IM + // trigger input context creation if it hasn't happened already + createInputContext(); + +- if (topdata->xic) { +- QInputContext *qic = (QInputContext *) topdata->xic; +- qic->setFocus(); ++ QInputContext *qic = getInputContext(); ++ if ( qic ) { ++ // may be caused reset() in some input methods ++ qic->unsetFocus(); ++ qic->setFocusWidget( 0 ); ++ } ++#endif // QT_NO_IM ++} ++ ++ ++/*! ++ This function is called to send mouse event to associated input ++ context by derived text widgets. A derived text widget must be ++ calculate \a x as character offset at the mouse cursor in the ++ preedit. ++ ++ \sa QInputContext::mouseHandler() ++ */ ++void QWidget::sendMouseEventToInputContext( int x, QEvent::Type type, ++ Qt::ButtonState button, ++ Qt::ButtonState state ) ++{ ++#ifndef QT_NO_IM ++ // trigger input context creation if it hasn't happened already ++ createInputContext(); ++ ++ QInputContext *qic = getInputContext(); ++ if ( qic ) { ++ // may be causing reset() in some input methods ++ qic->mouseHandler( x, type, button, state ); + } +-#endif // QT_NO_XIM ++#endif // QT_NO_IM + } ++ + + void QWidget::setWindowOpacity(double) + { +diff -urN qt-x11-free-3.3.5.orig/src/kernel/qwidget_x11.cpp.flc qt-x11-free-3.3.5/src/kernel/qwidget_x11.cpp.flc +--- qt-x11-free-3.3.5.orig/src/kernel/qwidget_x11.cpp.flc 1970-01-01 09:00:00.000000000 +0900 ++++ qt-x11-free-3.3.5/src/kernel/qwidget_x11.cpp.flc 2005-10-18 12:57:18.890202040 +0900 +@@ -0,0 +1,16 @@ ++ ++(fast-lock-cache-data 3 (quote (16892 . 56601)) (quote nil) (quote nil) (quote (t ("^#[ ]*error[ ]+\\(.+\\)" (1 font-lock-warning-face prepend)) ("^#[ ]*\\(import\\|include\\)[ ]*\\(<[^>\" ++]*>?\\)" (2 font-lock-string-face)) ("^#[ ]*define[ ]+\\(\\sw+\\)(" (1 font-lock-function-name-face)) ("^#[ ]*\\(elif\\|if\\)\\>" ("\\<\\(defined\\)\\>[ ]*(?\\(\\sw+\\)?" nil nil (1 font-lock-builtin-face) (2 font-lock-variable-name-face nil t))) ("^#[ ]*\\(define\\|e\\(?:l\\(?:if\\|se\\)\\|ndif\\|rror\\)\\|file\\|i\\(?:f\\(?:n?def\\)?\\|nclude\\)\\|line\\|pragma\\|undef\\)\\>[ !]*\\(\\sw+\\)?" (1 font-lock-builtin-face) (2 font-lock-variable-name-face nil t)) ("^\\(\\sw+\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*[ ]*(" (1 (if (or (match-beginning 2) (match-beginning 4)) font-lock-type-face font-lock-function-name-face)) (3 font-lock-type-face nil t) (5 font-lock-function-name-face nil t)) ("\\<\\(bool\\|c\\(?:har\\|omplex\\)\\|double\\|float\\|int\\|long\\|s\\(?:hort\\|igned\\)\\|\\(?:unsigne\\|voi\\)d\\|\\sw+_t\\|string\\|rope\\|list\\|slist\\|deque\\|vector\\|bit_vector\\|set\\|multiset\\|map\\|multimap\\|stack\\|queue\\|priority_queue\\|type_info\\|fstream\\|i\\(?:fstream\\|os\\(?:_base\\|tream\\)?\\|str\\(?:\\(?:ingstr\\)?eam\\)\\)\\|\\(?:o\\(?:f\\|string\\)?\\|string\\)stream\\|hash\\(?:_\\(?:m\\(?:ap\\|ulti\\(?:map\\|set\\)\\)\\|set\\)\\)?\\|allocator_type\\|const_\\(?:iterator\\|pointer\\|re\\(?:ference\\|verse_iterator\\)\\)\\|difference_type\\|iterator\\|pointer\\|re\\(?:ference\\|verse_iterator\\)\\|size_type\\)\\>" (0 font-lock-type-face)) ("\\<\\(operator\\)\\>[ ]*\\(!=\\|%=\\|&[&=]\\|()\\|\\*=\\|\\+[+=]\\|-\\(?:>\\*\\|[=>-]\\)\\|/=\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\[\\]\\|\\^=\\||[=|]\\|[!%&*+,/<=>|~^-]\\)?" (1 font-lock-keyword-face) (2 font-lock-builtin-face nil t)) ("\\<\\(case\\|goto\\)\\>" (1 font-lock-keyword-face) ("\\(-[0-9]+\\|\\sw+\\)[ ]*\\(::\\)?" (save-excursion (while (progn (skip-chars-forward "^: ++") (looking-at "::")) (forward-char 2)) (point)) nil (1 (if (match-beginning 2) font-lock-type-face font-lock-constant-face) nil t))) (":" ("^[ ]*\\(\\sw+\\)[ ]*:\\($\\|[^:]\\)" (beginning-of-line) (end-of-line) (1 font-lock-constant-face))) ("\\<\\(a\\(?:nd\\(?:_eq\\)?\\|sm\\|uto\\)\\|b\\(?:it\\(?:and\\|or\\)\\|reak\\)\\|c\\(?:atch\\|o\\(?:mpl\\|n\\(?:st\\|tinue\\)\\)\\)\\|d\\(?:elete\\|o\\)\\|e\\(?:lse\\|x\\(?:p\\(?:\\(?:lici\\|or\\)t\\)\\|tern\\)\\)\\|f\\(?:or\\|riend\\)\\|i\\(?:f\\|nline\\)\\|mutable\\|n\\(?:ew\\|ot\\(?:_eq\\)?\\)\\|or\\(?:_eq\\)?\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:izeof\\|tatic\\|witch\\)\\|t\\(?:emplate\\|h\\(?:is\\|row\\)\\|ry\\|ype\\(?:def\\|id\\)\\)\\|v\\(?:irtual\\|olatile\\)\\|while\\|xor\\(?:_eq\\)?\\|\\(c\\(?:lass\\|onst_cast\\)\\|dynamic_cast\\|enum\\|namespace\\|p\\(?:r\\(?:ivate\\|otected\\)\\|ublic\\)\\|reinterpret_cast\\|st\\(?:\\(?:atic_cas\\|ruc\\)t\\)\\|typename\\|u\\(?:nion\\|sing\\)\\)\\)\\>" (0 font-lock-keyword-face)) ("\\<\\(false\\|true\\)\\>" (0 font-lock-constant-face)) ("\\<\\(bool\\|c\\(?:har\\|omplex\\)\\|double\\|float\\|int\\|long\\|s\\(?:hort\\|igned\\)\\|\\(?:unsigne\\|voi\\)d\\|\\sw+_t\\|string\\|rope\\|list\\|slist\\|deque\\|vector\\|bit_vector\\|set\\|multiset\\|map\\|multimap\\|stack\\|queue\\|priority_queue\\|type_info\\|fstream\\|i\\(?:fstream\\|os\\(?:_base\\|tream\\)?\\|str\\(?:\\(?:ingstr\\)?eam\\)\\)\\|\\(?:o\\(?:f\\|string\\)?\\|string\\)stream\\|hash\\(?:_\\(?:m\\(?:ap\\|ulti\\(?:map\\|set\\)\\)\\|set\\)\\)?\\|allocator_type\\|const_\\(?:iterator\\|pointer\\|re\\(?:ference\\|verse_iterator\\)\\)\\|difference_type\\|iterator\\|pointer\\|re\\(?:ference\\|verse_iterator\\)\\|size_type\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*\\([ *&]+\\(\\sw+\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*\\)*" (3 font-lock-type-face nil t) (font-lock-match-c++-style-declaration-item-and-skip-to-next (prog1 (progn (skip-chars-forward "^;{}") (point)) (goto-char (or (match-beginning 6) (match-end 1)))) (goto-char (match-end 1)) (1 (cond ((or (match-beginning 2) (match-beginning 4)) font-lock-type-face) ((and (match-beginning 6) (c-at-toplevel-p)) font-lock-function-name-face) (t font-lock-variable-name-face))) (3 font-lock-type-face nil t) (5 (if (match-beginning 6) font-lock-function-name-face font-lock-variable-name-face) nil t))) ("\\<\\(c\\(?:lass\\|onst_cast\\)\\|dynamic_cast\\|enum\\|namespace\\|p\\(?:r\\(?:ivate\\|otected\\)\\|ublic\\)\\|reinterpret_cast\\|st\\(?:\\(?:atic_cas\\|ruc\\)t\\)\\|typename\\|u\\(?:nion\\|sing\\)\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*[ ]*\\(\\(\\sw+\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*\\)?" (3 (quote font-lock-type-face) nil t) (7 font-lock-type-face nil t) (font-lock-match-c++-style-declaration-item-and-skip-to-next (save-excursion (skip-chars-forward "^;{}") (point)) nil (1 (cond ((or (match-beginning 2) (match-beginning 4)) font-lock-type-face) ((and (match-beginning 6) (c-at-toplevel-p)) font-lock-function-name-face) (t font-lock-variable-name-face))) (3 font-lock-type-face nil t) (5 (if (match-beginning 6) font-lock-function-name-face font-lock-variable-name-face) nil t))) ("\\(}\\)[ *]*\\sw" (font-lock-match-c++-style-declaration-item-and-skip-to-next (prog1 (progn (skip-chars-forward "^;{}") (point)) (goto-char (match-end 1))) nil (1 font-lock-type-face))) ("^\\(\\(\\sw+\\)\\>\\([ ]*<\\(\\(?:[^<> ++]\\|<[^> ++]+>\\)+\\)[ *&]*>\\)?\\([ ]*::[ *~]*\\(\\sw+\\)\\)*[ *&]*\\)+" (font-lock-match-c++-style-declaration-item-and-skip-to-next (prog1 (progn (skip-chars-forward "^;{}") (point)) (goto-char (match-beginning 1))) (goto-char (match-end 1)) (1 (cond ((or (match-beginning 2) (match-beginning 4)) font-lock-type-face) ((match-beginning 6) font-lock-function-name-face) (t font-lock-variable-name-face))) (3 font-lock-type-face nil t) (5 (if (match-beginning 6) font-lock-function-name-face font-lock-variable-name-face) nil t))) (font-lock-match-c++-structor-declaration (3 font-lock-function-name-face t)) ("^\\s(" (0 (if (memq (get-text-property (1- (point)) (quote face)) (quote (font-lock-string-face font-lock-doc-face font-lock-comment-face))) font-lock-warning-face) prepend)))) (quote ((font-lock-constant-face 71339 71346 71295 71303 71221 71233 71085 71096 70953 70963 70855 70870 70815 70822 70717 70732 70677 70684) (font-lock-doc-face 83690 83950 83152 83352 82518 82818 81591 82273 81068 81267 79917 80234 79015 79195 78485 78663 77855 78398 75459 75583 75006 75070 74295 74752 73759 74139 72977 73447 70196 70362 69566 70000 69431 69564 67231 67434 66515 67154 66187 66349 65581 65895 65412 65579 65324 65410 64888 65045 64539 64653 63292 63466 62479 62647 57500 57664 57043 57267 56615 56814 55932 55995 53969 54032 49636 49889 48625 49302 47077 47902 46974 47075 46870 46972 46368 46868 45100 45960 44197 44888 42948 43898 42675 42881 42411 42614 42162 42253 41272 41920 41008 41099 39804 40202 38117 39023 32893 33156 30119 31021 29707 29840 29182 29430 22527 22932 8627 9245) (font-lock-function-name-face 84450 84463 84404 84420 83965 83993 83367 83386 82833 82850 82288 82305 81282 81301 80249 80267 79210 79228 78688 78703 78417 78431 75599 75615 75225 75232 75086 75095 74768 74775 74155 74162 73538 73552 73462 73473 72233 72249 71793 71809 71663 71679 71627 71641 71493 71507 70377 70383 70016 70024 67449 67455 67170 67176 66365 66370 65911 65916 65060 65071 64668 64684 63481 63495 62663 62677 59749 59768 58453 58466 57679 57689 57283 57288 56830 56835 56011 56021 54048 54058 49905 49919 49318 49325 47918 47925 45976 45982 44904 44910 43914 43929 42901 42916 42634 42646 42269 42284 41936 41948 41115 41127 40218 40227 39039 39048 37085 37101 36635 36646 35668 35675 35169 35179 33953 33967 33726 33737 33414 33423 33295 33319 33171 33189 31959 31984 31641 31665 31584 31594 31036 31053 29858 29871 29448 29459 24525 24536 22948 22955 9261 9267 6947 6969 6375 6401 5807 5828 5709 5726 5512 5534 5265 5281 4371 4386 2676 2700 2630 2650 2585 2604 2524 2533 2474 2487 2429 2457 2346 2372 2194 2213 2161 2180 2130 2142 2088 2101 2013 2043) (font-lock-type-face 84441 84448 84434 84440 84421 84427 84395 84402 84390 84394 84002 84008 83995 83998 83956 83963 83951 83955 83358 83365 83353 83357 82824 82831 82819 82823 82279 82286 82274 82278 81273 81280 81268 81272 80240 80247 80235 80239 79201 79208 79196 79200 78679 78686 78408 78415 76867 76870 76689 76692 75954 75958 75945 75953 75925 75929 75916 75924 75904 75907 75895 75903 75877 75880 75590 75597 75585 75589 75417 75421 75408 75416 75240 75244 75216 75223 75211 75215 75077 75084 75072 75076 74759 74766 74754 74758 74146 74153 74141 74145 73554 73558 73529 73536 73524 73528 73453 73460 73448 73452 72465 72469 72224 72231 72219 72223 71784 71791 71779 71783 71654 71661 71649 71653 71618 71625 71613 71617 71484 71491 71479 71483 71274 71293 71200 71219 71064 71083 70932 70951 70834 70853 70794 70813 70696 70715 70656 70675 70607 70610 70405 70408 70385 70388 70368 70375 70364 70367 70033 70036 70026 70029 70007 70014 70002 70006 69142 69145 68892 68895 68821 68825 67761 67764 67600 67604 67565 67569 67465 67468 67457 67460 67440 67447 67435 67439 67186 67189 67178 67181 67161 67168 67156 67160 66406 66410 66356 66363 66351 66355 65960 65964 65939 65942 65932 65935 65925 65928 65918 65921 65902 65909 65897 65901 65084 65087 65073 65076 65051 65058 65046 65050 64693 64696 64686 64689 64659 64666 64654 64658 64268 64272 63507 63510 63497 63500 63472 63479 63467 63471 63021 63025 62689 62692 62679 62682 62654 62661 62649 62653 60874 60878 59798 59802 59791 59794 59784 59787 59777 59780 59770 59773 59740 59747 59735 59739 58448 58452 58394 58397 58128 58133 58073 58078 58045 58050 58031 58036 57670 57677 57665 57669 57274 57281 57269 57273 56821 56828 56816 56820 56002 56009 55997 56001 54595 54599 54586 54594 54428 54432 54165 54169 54039 54046 54034 54038 49941 49945 49896 49903 49891 49895 49347 49351 49309 49316 49304 49308 47955 47959 47948 47951 47941 47944 47934 47937 47927 47930 47909 47916 47904 47908 46005 46008 45998 46001 45991 45994 45984 45987 45967 45974 45962 45966 44895 44902 44890 44894 43905 43912 43900 43904 42892 42899 42625 42632 42260 42267 42255 42259 41927 41934 41922 41926 41106 41113 41101 41105 40678 40682 40358 40361 40209 40216 40204 40208 39481 39485 39171 39174 39030 39037 39025 39029 37123 37127 37103 37107 37076 37083 37071 37075 37007 37011 36998 37006 36626 36633 36621 36625 36529 36533 36255 36259 35659 35666 35654 35658 35514 35518 35505 35513 35160 35167 35155 35159 34422 34426 34341 34344 34047 34051 33717 33724 33712 33716 33405 33412 33400 33404 33286 33293 33281 33285 33162 33169 33157 33161 31950 31957 31945 31949 31915 31918 31632 31639 31627 31631 31575 31582 31570 31574 31095 31099 31079 31082 31068 31071 31061 31064 31054 31057 31027 31034 31022 31026 29905 29908 29849 29856 29493 29496 29439 29446 26195 26199 24993 24997 24878 24882 24711 24715 24609 24613 24582 24586 24516 24523 24511 24515 24102 24106 23828 23832 22977 22981 22957 22961 22939 22946 22934 22938 21738 21742 21729 21737 21572 21576 21563 21571 21314 21318 21305 21313 21200 21204 21071 21075 21062 21070 20812 20816 20803 20811 20564 20568 20555 20563 20010 20013 19765 19769 19700 19704 14822 14830 14777 14781 14687 14690 14637 14641 14585 14588 14533 14537 12601 12604 11640 11643 11604 11607 11531 11534 9906 9910 9540 9544 9496 9500 9454 9458 9304 9308 9281 9285 9252 9259 9247 9251 8273 8276 8138 8141 8106 8109 7719 7723 7710 7718 7693 7697 7684 7692 7659 7662 7321 7324 6993 6996 6988 6992 6942 6946 6370 6374 5802 5806 5704 5708 5643 5646 5620 5623 5613 5616 5399 5402 5382 5385 5355 5358 5348 5351 4652 4655 4618 4621 4410 4414 4401 4409 4366 4370 4304 4308 2921 2924 2903 2907 2671 2675 2625 2629 2580 2584 2519 2523 2501 2505 2469 2473 2424 2428 2341 2345 2189 2193 2156 2160 2125 2128 2118 2121 2113 2116 2083 2087 2008 2012) (font-lock-variable-name-face 84097 84105 84010 84014 83999 84000 83399 83407 82863 82871 82318 82326 81336 81355 81314 81322 80429 80448 80407 80415 80285 80304 79319 79338 78750 78769 76879 76885 76871 76877 76693 76694 75959 75967 75931 75939 75908 75910 75881 75889 75246 75250 73559 73561 72470 72486 71696 71715 71371 71385 70611 70614 70409 70412 70389 70390 70037 70038 70030 70031 69146 69147 68896 68897 68826 68845 67795 67796 67781 67782 67777 67779 67773 67775 67769 67771 67765 67767 67605 67616 67570 67580 67469 67471 67461 67463 67190 67192 67182 67184 66411 66426 65965 65978 65943 65944 65936 65937 65929 65930 65922 65923 65088 65093 65077 65082 64697 64698 64690 64691 64273 64280 63532 63546 63511 63515 63501 63505 63026 63033 62714 62728 62693 62697 62683 62687 60879 60887 59803 59809 59795 59796 59788 59789 59781 59782 59774 59775 59621 59642 58398 58419 54170 54179 49946 49954 49352 49357 47960 47965 47952 47953 47945 47946 47938 47939 47931 47932 46009 46010 46002 46003 45995 45996 45988 45989 40684 40685 40634 40648 40362 40368 40341 40355 39487 39488 39437 39451 39175 39181 39154 39168 37811 37828 37128 37131 37108 37114 36260 36269 34594 34602 34428 34430 34345 34352 34052 34061 33938 33951 31919 31937 31127 31135 31106 31111 31100 31104 31083 31089 31072 31077 31065 31066 31058 31059 29915 29916 29912 29913 29503 29504 29500 29501 26204 26210 24998 25012 24883 24895 24716 24723 24614 24623 24587 24593 24107 24117 23709 23726 22982 22999 22962 22975 22483 22502 21205 21213 20014 20015 19816 19832 14782 14792 14691 14704 14642 14655 14589 14601 14538 14550 14269 14286 12605 12606 11644 11646 11608 11610 11535 11538 9911 9919 9545 9552 9501 9507 9459 9464 9309 9325 9286 9302 8113 8114 8110 8111 7736 7741 7724 7730 7699 7703 7675 7681 7663 7669 7008 7012 6998 7002 5684 5689 5670 5675 5647 5658 5635 5639 5627 5631 5624 5625 5617 5618 5469 5489 5452 5457 5432 5438 5414 5418 5403 5408 5386 5397 5370 5374 5362 5366 5359 5360 5352 5353 5024 5043 4698 4716 4656 4677 4622 4643 4589 4606 4548 4565 4518 4527 4491 4500 4456 4473 4416 4440 4309 4321 4275 4295 4237 4261 4204 4223 4177 4190 4133 4163 4091 4119 4048 4077 4008 4034 3965 3994 3923 3951 3881 3909 3846 3867 3804 3832 3769 3790 3729 3755 3694 3715 3659 3680 3624 3645 3595 3610 3562 3581 3534 3548 3500 3520 3472 3486 3436 3458 3408 3422 3379 3394 3351 3365 3318 3337 3288 3304 3255 3274 3223 3241 3198 3209 2925 2956 2908 2918 2851 2865 2828 2837 2763 2774 2730 2738 2506 2508 2226 2234 1976 1999) (font-lock-keyword-face 84478 84484 84466 84471 84251 84253 83551 83553 83090 83094 83055 83059 83029 83031 83015 83017 82470 82472 81538 81544 81525 81527 81436 81442 81399 81401 80780 80782 80584 80586 80341 80347 80310 80312 79669 79671 79485 79491 79472 79474 79230 79235 78999 79005 78775 78777 78474 78478 78440 78446 76920 76922 76796 76801 76750 76752 76705 76710 76611 76613 76606 76610 76596 76601 76557 76559 76312 76314 76162 76168 76081 76083 76047 76049 75974 75979 75745 75751 75669 75671 75658 75662 75618 75623 75289 75291 75234 75239 74832 74834 74777 74782 74164 74169 73691 73695 73649 73651 73629 73633 73609 73611 73570 73572 73488 73494 73476 73481 72679 72684 72632 72634 72586 72591 72529 72531 72372 72377 72346 72351 72319 72324 72286 72291 72276 72280 71464 71470 71327 71332 71269 71273 71257 71262 71195 71199 71183 71188 71059 71063 71047 71052 70927 70931 70915 70920 70829 70833 70789 70793 70777 70782 70691 70695 70651 70655 70631 70637 70569 70573 70495 70497 70490 70494 70418 70420 70393 70398 70134 70138 70067 70069 70040 70045 69393 69397 69292 69296 69185 69187 69129 69131 69043 69047 68935 68937 68879 68881 68862 68866 68745 68751 68725 68727 68599 68601 68527 68532 68500 68508 68391 68393 68195 68197 68068 68074 68041 68043 67986 67990 67927 67929 67873 67877 67814 67816 67670 67672 67553 67559 67496 67498 67473 67478 66499 66503 66438 66443 66399 66405 66372 66377 66156 66160 66116 66118 66074 66076 66032 66034 65990 65995 65953 65959 65306 65310 65256 65258 65200 65206 65153 65155 64870 64874 64820 64822 64774 64780 64737 64739 64499 64503 64449 64451 64366 64368 64224 64226 64164 64170 64113 64115 63858 63860 63552 63554 63252 63256 63202 63204 63119 63121 62977 62979 62917 62923 62866 62868 62734 62736 62430 62433 62415 62419 62369 62371 62295 62298 62289 62293 62203 62207 62163 62166 62157 62161 62063 62065 62023 62025 62015 62019 61994 61998 61772 61774 61749 61753 61607 61611 61588 61592 61459 61461 61419 61421 61397 61399 61340 61342 61335 61339 61217 61221 61082 61084 61065 61067 61039 61043 60979 60981 60937 60939 60914 60916 60846 60852 60808 60810 60551 60553 60507 60509 60349 60351 60227 60231 60077 60079 59926 59928 59898 59900 59886 59892 59852 59854 59394 59396 59293 59295 58978 58980 58799 58801 58649 58651 58539 58541 58441 58447 58006 58010 57910 57914 57820 57822 57808 57814 57795 57799 57742 57744 57384 57388 57330 57332 56931 56935 56877 56879 56522 56524 56514 56518 56150 56152 56141 56145 56096 56098 55870 55876 55858 55862 55714 55716 55700 55706 55229 55233 55054 55058 54843 54845 54829 54835 54816 54820 54629 54631 54442 54444 54398 54400 54191 54193 54067 54069 53955 53959 53836 53838 53808 53810 53734 53736 53663 53665 53592 53594 53415 53419 52863 52865 52842 52844 52769 52771 52613 52617 52325 52330 52315 52319 52250 52255 52134 52136 52041 52045 51943 51945 51869 51873 51768 51773 51463 51468 51408 51410 51358 51362 51274 51278 51198 51200 51123 51125 51025 51029 50943 50945 50648 50653 50638 50642 50573 50578 50528 50530 50480 50485 50394 50396 50353 50355 50348 50352 50247 50251 50134 50136 50061 50063 50003 50005 49582 49586 49538 49542 49520 49522 49506 49510 49366 49368 49327 49332 48571 48575 48516 48520 48509 48513 48404 48406 48364 48366 48352 48356 48300 48302 48246 48252 48222 48224 48160 48162 48117 48119 48108 48114 48056 48058 47974 47976 46261 46264 46253 46257 46199 46201 46156 46158 46113 46115 46019 46021 45032 45035 45026 45030 44919 44921 43975 43977 42925 42931 42655 42661 42329 42333 42293 42295 42147 42151 41980 41982 41957 41959 41169 41173 41136 41138 40993 40997 40672 40677 40651 40653 40282 40284 40259 40261 40229 40234 39789 39793 39475 39480 39454 39456 39095 39097 39057 39059 37968 37970 37832 37834 37719 37723 37643 37647 37510 37512 37412 37414 37365 37369 37311 37313 37239 37245 37178 37180 36725 36731 36680 36682 36648 36653 36606 36610 36503 36505 36284 36286 36106 36108 35991 35993 35938 35941 35897 35899 35806 35810 35742 35748 35707 35709 35677 35682 35639 35643 35250 35256 35212 35214 35181 35186 35140 35146 34731 34737 34698 34700 34605 34607 34362 34364 34280 34285 34273 34279 34187 34189 34168 34170 34040 34046 33994 34000 33969 33974 33931 33937 33892 33896 33810 33812 33762 33768 33746 33748 33673 33677 33584 33587 33549 33555 33455 33457 33425 33430 32799 32801 32624 32627 32582 32586 32559 32565 32524 32526 32361 32363 32336 32338 32306 32310 32251 32257 32214 32216 32090 32092 32033 32035 31986 31991 31908 31914 31779 31785 31715 31717 31667 31672 31423 31425 31285 31287 31140 31142 30093 30099 29893 29898 29873 29878 29681 29687 29481 29486 29461 29466 29123 29125 29037 29041 28973 28977 28924 28926 28872 28874 28771 28773 28743 28747 28706 28708 28679 28681 28581 28583 28453 28457 28271 28276 28091 28093 28020 28024 27947 27949 27924 27928 27838 27841 27072 27074 27067 27071 26930 26932 26868 26870 26832 26837 26746 26748 26702 26707 26551 26553 26177 26181 26108 26110 26099 26103 26028 26030 25998 26000 25879 25881 25559 25563 25554 25556 25187 25189 24760 24762 24625 24630 24602 24608 24565 24570 24491 24495 24449 24451 24294 24298 24234 24238 24230 24232 24221 24225 24168 24170 24095 24101 24045 24049 24003 24005 23991 23995 23973 23977 23935 23937 23895 23897 23814 23818 23748 23750 23728 23730 23692 23696 23638 23640 23633 23637 23624 23628 23541 23543 23532 23536 23485 23487 23453 23457 23433 23435 23404 23408 23387 23389 23269 23271 23197 23202 23169 23177 23108 23110 23039 23041 22446 22450 22410 22412 22391 22395 22339 22341 22270 22272 22265 22269 22212 22214 21899 21901 21782 21786 21118 21122 20954 20956 20857 20861 20690 20692 20595 20599 20396 20398 20233 20235 19493 19495 18957 18962 18814 18818 18753 18755 18672 18674 18633 18635 18537 18539 18532 18536 18356 18358 18351 18355 18293 18295 18152 18154 18144 18148 18045 18047 17932 17934 17675 17677 17497 17499 17278 17280 17116 17118 17111 17115 16986 16988 16981 16985 16860 16862 16659 16661 16523 16527 16390 16392 16385 16389 16292 16294 16179 16181 16076 16078 15978 15980 15881 15883 15685 15687 15676 15680 15506 15508 15373 15375 15287 15291 15105 15107 15058 15060 14995 14997 14715 14721 14368 14370 14291 14293 13997 14001 13807 13811 13613 13617 13522 13524 13514 13518 13477 13481 13239 13241 13093 13095 13088 13092 12721 12726 12659 12661 12609 12612 12390 12394 12320 12322 12125 12127 12078 12080 11914 11918 11811 11813 11806 11810 11678 11680 10761 10763 10756 10760 10075 10077 10029 10031 9857 9859 9732 9734 9611 9613 9383 9389 9333 9335 8595 8597 8572 8578 8497 8501 8359 8361 8322 8324 8285 8287 8269 8271 8162 8164 8121 8124 8083 8086 8040 8044 7935 7937 7633 7637 7028 7030 6970 6975 6935 6941 6818 6820 6702 6708 6672 6674 6664 6669 6582 6584 6493 6498 6292 6296 6131 6135 6031 6033 6026 6030 5946 5948 5850 5852 5728 5733 5536 5541 5283 5288 5013 5018 4687 4692 4645 4651 4611 4617 4570 4576 4529 4535 4502 4508 4475 4481 4394 4400 4359 4365 4297 4303 4263 4269 4225 4231 4192 4198 4165 4171 4121 4127 4079 4085 4036 4042 3996 4002 3953 3959 3911 3917 3869 3875 3834 3840 3792 3798 3757 3763 3717 3723 3682 3688 3647 3653 3612 3618 3583 3589 3550 3556 3522 3528 3488 3494 3460 3466 3424 3430 3396 3402 3367 3373 3339 3345 3306 3312 3276 3282 3243 3249 3211 3217 3186 3192 2896 2902 2839 2845 2816 2822 2747 2753 2714 2720 2664 2670 2618 2624 2573 2579 2512 2518 2462 2468 2417 2423 2393 2398 2334 2340 2001 2007 1962 1968) (font-lock-string-face 76106 76154 71399 71440 63987 63996 63959 63977 63898 63956 63706 63715 63658 63695 63620 63655 62772 62833 40929 40964 40907 40912 40874 40895 40825 40841 40772 40792 40718 40739 39725 39760 39703 39708 39677 39698 39628 39644 39575 39595 39521 39542 34637 34668 16999 17009 16873 16885 2271 2295 2244 2261 1899 1909 1877 1889 1856 1867 1833 1846 1809 1823 1788 1799 1763 1778 1742 1753 1720 1732 1687 1710 1663 1677 1635 1653 1609 1625) (font-lock-builtin-face 84366 84371 84090 84096 83666 83671 83392 83398 83130 83135 82856 82862 82496 82501 82311 82317 81569 81574 81514 81519 81390 81394 81328 81335 81324 81326 81307 81313 81046 81051 80571 80576 80493 80497 80421 80428 80417 80419 80400 80406 80350 80355 80277 80284 80273 80275 79461 79466 79383 79387 79311 79318 79307 79309 78982 78987 78837 78841 78742 78749 78738 78740 71770 71775 71688 71695 71685 71687 71445 71450 71363 71370 71360 71362 64084 64089 63524 63531 63521 63523 62837 62842 62706 62713 62703 62705 40975 40980 40626 40633 40623 40625 40372 40377 40333 40340 40330 40332 39771 39776 39429 39436 39426 39428 39185 39190 39146 39153 39143 39145 38101 38106 37802 37809 37799 37801 34682 34687 34586 34593 34583 34585 31412 31417 31120 31126 23866 23871 23702 23708 22517 22522 22475 22482 22471 22473 14477 14482 14262 14268 4680 4685 4447 4454 4444 4446 2297 2302 2263 2270 2236 2243 2219 2225 1891 1898 1869 1876 1848 1855 1825 1832 1801 1808 1780 1787 1755 1762 1734 1741 1712 1719 1679 1686 1655 1662 1627 1634 1601 1608) (font-lock-comment-face 84372 84384 84265 84313 84110 84174 83672 83684 83565 83612 83412 83476 83136 83148 82876 82940 82502 82514 82331 82395 81575 81587 81052 81064 80602 80664 79503 79565 78849 78892 77664 77674 77600 77663 77520 77599 77444 77519 77365 77443 77286 77364 76841 76863 76253 76296 76175 76252 75822 75858 75197 75210 72415 72463 71931 72218 71883 71928 71818 71879 71721 71739 69409 69427 68758 68817 68545 68566 68426 68445 68169 68191 66456 66478 66006 66028 64418 64439 63171 63192 62210 62262 62087 62130 61796 61883 61616 61668 61485 61528 61227 61279 61107 61150 60756 60804 60690 60752 60523 60539 60367 60393 60242 60260 59589 59617 59564 59585 59060 59090 58890 58916 58685 58711 58145 58392 56537 56562 56360 56402 56165 56190 55579 55658 55494 55533 55068 55139 52644 52673 52192 52224 51646 51676 51038 51067 50434 50460 48254 48271 44136 44165 37448 37467 36057 36076 35013 35134 34966 35009 34902 34962 34122 34164 34070 34118 32832 32855 31748 31778 31612 31623 31155 31219 29091 29119 28849 28868 28119 28182 27220 27689 26765 26786 26640 26697 26396 26411 26227 26246 26125 26151 26048 26070 25910 25957 25797 25837 25728 25796 25659 25727 25589 25658 25329 25402 25260 25325 24947 24989 24825 24874 24368 24399 24306 24363 24138 24167 23872 23893 23572 23603 23228 23259 22290 22306 22184 22208 21926 21955 21849 21869 21790 21848 21610 21640 21429 21480 21339 21408 21180 21199 20925 20953 20662 20689 20371 20388 20199 20232 20127 20165 20060 20091 19786 19807 19720 19740 19364 19388 18893 18956 18822 18843 18617 18632 18567 18587 18373 18389 18321 18345 17820 17844 17743 17779 17480 17496 17385 17416 17290 17311 17184 17206 17019 17041 16895 16914 16823 16859 16629 16654 16257 16279 16154 16176 16055 16073 15956 15975 15852 15874 15791 15811 15547 15604 15475 15500 14917 14934 14612 14633 14509 14529 14483 14504 14225 14254 13457 13474 13393 13422 13338 13370 13209 13238 13152 13172 13112 13130 12566 12600 12479 12520 12097 12124 11925 11941 11831 11860 11743 11768 11698 11716 11473 11494 11402 11469 10833 10896 10187 10251 10004 10025 9829 9853 9700 9728 9587 9607 9396 9416 7049 7066 6757 6774 6710 6741 6206 6226 6143 6201 5183 5256 5048 5064 4721 4737 4324 4359 3151 3186 2964 3149 2868 2896 2781 2816 2538 2573 2304 2334 2048 2083 1927 1962 1911 1926 1 1598)))) +diff -urN qt-x11-free-3.3.5.orig/src/qt.pro qt-x11-free-3.3.5/src/qt.pro +--- qt-x11-free-3.3.5.orig/src/qt.pro 2005-03-19 00:38:19.000000000 +0900 ++++ qt-x11-free-3.3.5/src/qt.pro 2005-10-18 12:57:18.893201584 +0900 +@@ -37,6 +37,7 @@ + TOOLS_CPP = tools + CODECS_CPP = codecs + WORKSPACE_CPP = workspace ++INPUTMETHOD_CPP = inputmethod + XML_CPP = xml + STYLES_CPP = styles + EMBEDDED_CPP = embedded +@@ -54,6 +55,7 @@ + TOOLS_H = $$TOOLS_CPP + CODECS_H = $$CODECS_CPP + WORKSPACE_H = $$WORKSPACE_CPP ++ #INPUTMETHOD_H = $$INPUTMETHOD_CPP + XML_H = $$XML_CPP + CANVAS_H = $$CANVAS_CPP + STYLES_H = $$STYLES_CPP +@@ -70,6 +72,7 @@ + TOOLS_H = $$WIN_ALL_H + CODECS_H = $$WIN_ALL_H + WORKSPACE_H = $$WIN_ALL_H ++ #INPUTMETHOD_H = $$WIN_ALL_H + XML_H = $$WIN_ALL_H + CANVAS_H = $$WIN_ALL_H + STYLES_H = $$WIN_ALL_H +@@ -98,6 +101,7 @@ + TOOLS_H = $$TOOLS_CPP + CODECS_H = $$CODECS_CPP + WORKSPACE_H = $$WORKSPACE_CPP ++ INPUTMETHOD_H = $$INPUTMETHOD_CPP + XML_H = $$XML_CPP + STYLES_H = $$STYLES_CPP + !embedded:!mac:CONFIG += x11 x11inc +@@ -112,7 +116,7 @@ + EMBEDDED_H = $$EMBEDDED_CPP + } + +-DEPENDPATH += ;$$NETWORK_H;$$KERNEL_H;$$WIDGETS_H;$$SQL_H;$$TABLE_H;$$DIALOGS_H; ++DEPENDPATH += ;$$NETWORK_H;$$KERNEL_H;$$WIDGETS_H;$$INPUTMETHOD_H;$$SQL_H;$$TABLE_H;$$DIALOGS_H; + DEPENDPATH += $$ICONVIEW_H;$$OPENGL_H;$$TOOLS_H;$$CODECS_H;$$WORKSPACE_H;$$XML_H; + DEPENDPATH += $$CANVAS_H;$$STYLES_H + embedded:DEPENDPATH += ;$$EMBEDDED_H +@@ -147,6 +151,7 @@ + include($$DIALOGS_CPP/qt_dialogs.pri) + include($$ICONVIEW_CPP/qt_iconview.pri) + include($$WORKSPACE_CPP/qt_workspace.pri) ++include($$INPUTMETHOD_CPP/qt_inputmethod.pri) + include($$NETWORK_CPP/qt_network.pri) + include($$CANVAS_CPP/qt_canvas.pri) + include($$TABLE_CPP/qt_table.pri) +diff -urN qt-x11-free-3.3.5.orig/src/tools/qfeatures.h qt-x11-free-3.3.5/src/tools/qfeatures.h +--- qt-x11-free-3.3.5.orig/src/tools/qfeatures.h 2003-09-08 17:54:33.000000000 +0900 ++++ qt-x11-free-3.3.5/src/tools/qfeatures.h 2005-10-18 12:57:18.896201128 +0900 +@@ -982,3 +982,13 @@ + #define QT_NO_WORKSPACE + #endif + ++// Input method ++#if !defined(QT_NO_IM) && (defined(QT_NO_STRINGLIST)) ++#define QT_NO_IM ++#endif ++ ++// Input method extensions ++#if !defined(QT_NO_IM_EXTENSIONS) && (defined(QT_NO_IM) || defined(QT_NO_STRINGLIST)) ++#define QT_NO_IM_EXTENSIONS ++#endif ++ +diff -urN qt-x11-free-3.3.5.orig/src/widgets/qlineedit.cpp qt-x11-free-3.3.5/src/widgets/qlineedit.cpp +--- qt-x11-free-3.3.5.orig/src/widgets/qlineedit.cpp 2005-09-02 21:43:15.000000000 +0900 ++++ qt-x11-free-3.3.5/src/widgets/qlineedit.cpp 2005-10-18 12:57:18.906199608 +0900 +@@ -37,6 +37,12 @@ + + #include "qlineedit.h" + #ifndef QT_NO_LINEEDIT ++ ++// Keep this position to avoid patch rejection ++#ifndef QT_NO_IM ++#include "qinputcontext.h" ++#endif ++ + #include "qpainter.h" + #include "qdrawutil.h" + #include "qfontmetrics.h" +@@ -245,12 +251,17 @@ + + // input methods + int imstart, imend, imselstart, imselend; ++ bool composeMode() const { return preeditLength(); } ++ bool hasIMSelection() const { return imSelectionLength(); } ++ int preeditLength() const { return ( imend - imstart ); } ++ int imSelectionLength() const { return ( imselend - imselstart ); } + + // complex text layout + QTextLayout textLayout; + void updateTextLayout(); + void moveCursor( int pos, bool mark = FALSE ); + void setText( const QString& txt ); ++ int xToPosInternal( int x, QTextItem::CursorPosition ) const; + int xToPos( int x, QTextItem::CursorPosition = QTextItem::BetweenCharacters ) const; + inline int visualAlignment() const { return alignment ? alignment : int( isRightToLeft() ? AlignRight : AlignLeft ); } + QRect cursorRect() const; +@@ -588,6 +599,7 @@ + return; + d->echoMode = mode; + d->updateTextLayout(); ++ setInputMethodEnabled( mode == Normal ); + update(); + } + +@@ -1416,6 +1428,8 @@ + */ + void QLineEdit::mousePressEvent( QMouseEvent* e ) + { ++ if ( sendMouseEventToInputContext( e ) ) ++ return; + if ( e->button() == RightButton ) + return; + if ( d->tripleClickTimer && ( e->pos() - d->tripleClick ).manhattanLength() < +@@ -1445,7 +1459,8 @@ + */ + void QLineEdit::mouseMoveEvent( QMouseEvent * e ) + { +- ++ if ( sendMouseEventToInputContext( e ) ) ++ return; + #ifndef QT_NO_CURSOR + if ( ( e->state() & MouseButtonMask ) == 0 ) { + if ( !d->readOnly && d->dragEnabled +@@ -1474,6 +1489,8 @@ + */ + void QLineEdit::mouseReleaseEvent( QMouseEvent* e ) + { ++ if ( sendMouseEventToInputContext( e ) ) ++ return; + #ifndef QT_NO_DRAGANDDROP + if ( e->button() == LeftButton ) { + if ( d->dndTimer ) { +@@ -1500,6 +1517,8 @@ + */ + void QLineEdit::mouseDoubleClickEvent( QMouseEvent* e ) + { ++ if ( sendMouseEventToInputContext( e ) ) ++ return; + if ( e->button() == Qt::LeftButton ) { + deselect(); + d->cursor = d->xToPos( e->pos().x() ); +@@ -1769,6 +1788,33 @@ + e->ignore(); + } + ++ ++/*! ++ This function is not intended as polymorphic usage. Just a shared code ++ fragment that calls QWidget::sendMouseEventToInputContext() easily for this ++ class. ++ */ ++bool QLineEdit::sendMouseEventToInputContext( QMouseEvent *e ) ++{ ++#ifndef QT_NO_IM ++ if ( d->composeMode() ) { ++ int cursor = d->xToPosInternal( e->pos().x(), QTextItem::OnCharacters ); ++ int mousePos = cursor - d->imstart; ++ if ( mousePos >= 0 && mousePos < d->preeditLength() ) { ++ QWidget::sendMouseEventToInputContext( mousePos, e->type(), ++ e->button(), e->state() ); ++ } else if ( e->type() != QEvent::MouseMove ) { ++ // send button events on out of preedit ++ QWidget::sendMouseEventToInputContext( -1, e->type(), ++ e->button(), e->state() ); ++ } ++ return TRUE; ++ } ++#endif ++ return FALSE; ++} ++ ++ + /*! \reimp + */ + void QLineEdit::imStartEvent( QIMEvent *e ) +@@ -1794,7 +1840,16 @@ + d->imend = d->imstart + e->text().length(); + d->imselstart = d->imstart + e->cursorPos(); + d->imselend = d->imselstart + e->selectionLength(); ++#if 0 + d->cursor = d->imstart + e->cursorPos(); ++#else ++ // Cursor placement code is changed for Asian input method that ++ // shows candidate window. This behavior is same as Qt/E 2.3.7 ++ // which supports Asian input methods. Asian input methods need ++ // start point of IM selection text to place candidate window as ++ // adjacent to the selection text. ++ d->cursor = d->imselstart; ++#endif + d->updateTextLayout(); + update(); + } +@@ -1828,6 +1883,8 @@ + } + if( !hasSelectedText() || style().styleHint( QStyle::SH_BlinkCursorWhenTextSelected ) ) + d->setCursorVisible( TRUE ); ++ if ( d->hasIMSelection() ) ++ d->cursor = d->imselstart; + d->updateMicroFocusHint(); + } + +@@ -1912,6 +1969,14 @@ + } else if (d->hscroll < 0) { + d->hscroll = 0; + } ++ // This updateMicroFocusHint() is corresponding to update() at ++ // IMCompose event. Although the function is invoked from various ++ // other points, some situations such as "candidate selection on ++ // AlignHCenter'ed text" need this invocation because ++ // updateMicroFocusHint() requires updated contentsRect(), and ++ // there are no other chances in such situation that invoke the ++ // function. ++ d->updateMicroFocusHint(); + // the y offset is there to keep the baseline constant in case we have script changes in the text. + QPoint topLeft = lineRect.topLeft() - QPoint(d->hscroll, d->ascent-fm.ascent()); + +@@ -1952,7 +2017,7 @@ + } + + // input method edit area +- if ( d->imstart < d->imend && (last >= d->imstart && first < d->imend ) ) { ++ if ( d->composeMode() && (last >= d->imstart && first < d->imend ) ) { + QRect highlight = QRect( QPoint( tix + ti.cursorToX( QMAX( d->imstart - first, 0 ) ), lineRect.top() ), + QPoint( tix + ti.cursorToX( QMIN( d->imend - first, last - first + 1 ) )-1, lineRect.bottom() ) ).normalize(); + p->save(); +@@ -1965,11 +2030,16 @@ + imCol.setHsv( h1, s1, ( v1 + v2 ) / 2 ); + p->fillRect( highlight, imCol ); + p->drawTextItem( topLeft, ti, textflags ); ++ // draw preedit's underline ++ if (d->imend - d->imstart > 0) { ++ p->setPen( cg.text() ); ++ p->drawLine( highlight.bottomLeft(), highlight.bottomRight() ); ++ } + p->restore(); + } + + // input method selection +- if ( d->imselstart < d->imselend && (last >= d->imselstart && first < d->imselend ) ) { ++ if ( d->hasIMSelection() && (last >= d->imselstart && first < d->imselend ) ) { + QRect highlight = QRect( QPoint( tix + ti.cursorToX( QMAX( d->imselstart - first, 0 ) ), lineRect.top() ), + QPoint( tix + ti.cursorToX( QMIN( d->imselend - first, last - first + 1 ) )-1, lineRect.bottom() ) ).normalize(); + p->save(); +@@ -1996,7 +2066,11 @@ + } + + // draw cursor +- if ( d->cursorVisible && !supressCursor ) { ++ // ++ // Asian users regard IM selection text as cursor on candidate ++ // selection phase of input method, so ordinary cursor should be ++ // invisible if IM selection text exists. ++ if ( d->cursorVisible && !supressCursor && !d->hasIMSelection() ) { + QPoint from( topLeft.x() + cix, lineRect.top() ); + QPoint to = from + QPoint( 0, lineRect.height() ); + p->drawLine( from, to ); +@@ -2111,6 +2185,10 @@ + void QLineEdit::contextMenuEvent( QContextMenuEvent * e ) + { + #ifndef QT_NO_POPUPMENU ++#ifndef QT_NO_IM ++ if ( d->composeMode() ) ++ return; ++#endif + d->separate(); + QPopupMenu *menu = createPopupMenu(); + if (!menu) +@@ -2164,6 +2242,13 @@ + + ACCEL_KEY( A ) + #endif + ); ++ ++#ifndef QT_NO_IM ++ QInputContext *qic = getInputContext(); ++ if ( qic ) ++ qic->addMenusTo( popup ); ++#endif ++ + popup->setItemEnabled( id - IdUndo, d->isUndoAvailable() ); + popup->setItemEnabled( id - IdRedo, d->isRedoAvailable() ); + #ifndef QT_NO_CLIPBOARD +@@ -2297,7 +2382,7 @@ + textLayout.endLine(0, 0, Qt::AlignLeft|Qt::SingleLine, &ascent); + } + +-int QLineEditPrivate::xToPos( int x, QTextItem::CursorPosition betweenOrOn ) const ++int QLineEditPrivate::xToPosInternal( int x, QTextItem::CursorPosition betweenOrOn ) const + { + x-= q->contentsRect().x() - hscroll + innerMargin; + for ( int i = 0; i < textLayout.numItems(); ++i ) { +@@ -2306,7 +2391,13 @@ + if ( x >= tir.left() && x <= tir.right() ) + return ti.xToCursor( x - tir.x(), betweenOrOn ) + ti.from(); + } +- return x < 0 ? 0 : text.length(); ++ return x < 0 ? -1 : text.length(); ++} ++ ++int QLineEditPrivate::xToPos( int x, QTextItem::CursorPosition betweenOrOn ) const ++{ ++ int pos = xToPosInternal( x, betweenOrOn ); ++ return ( pos < 0 ) ? 0 : pos; + } + + +@@ -2327,9 +2418,19 @@ + + void QLineEditPrivate::updateMicroFocusHint() + { ++ // To reduce redundant microfocus update notification, we remember ++ // the old rect and update the microfocus if actual update is ++ // required. The rect o is intentionally static because some ++ // notifyee requires the microfocus information as global update ++ // rather than per notifyee update to place shared widget around ++ // microfocus. ++ static QRect o; + if ( q->hasFocus() ) { +- QRect r = cursorRect(); +- q->setMicroFocusHint( r.x(), r.y(), r.width(), r.height() ); ++ QRect r = cursorRect(); ++ if ( o != r ) { ++ o = r; ++ q->setMicroFocusHint( r.x(), r.y(), r.width(), r.height() ); ++ } + } + } + +diff -urN qt-x11-free-3.3.5.orig/src/widgets/qlineedit.h qt-x11-free-3.3.5/src/widgets/qlineedit.h +--- qt-x11-free-3.3.5.orig/src/widgets/qlineedit.h 2005-09-02 21:43:14.000000000 +0900 ++++ qt-x11-free-3.3.5/src/widgets/qlineedit.h 2005-10-18 12:57:18.908199304 +0900 +@@ -196,6 +196,7 @@ + void dropEvent( QDropEvent * ); + #endif + void contextMenuEvent( QContextMenuEvent * ); ++ bool sendMouseEventToInputContext( QMouseEvent *e ); + virtual QPopupMenu *createPopupMenu(); + void windowActivationChange( bool ); + #ifndef QT_NO_COMPAT +diff -urN qt-x11-free-3.3.5.orig/src/widgets/qtextedit.cpp qt-x11-free-3.3.5/src/widgets/qtextedit.cpp +--- qt-x11-free-3.3.5.orig/src/widgets/qtextedit.cpp 2005-09-02 21:43:14.000000000 +0900 ++++ qt-x11-free-3.3.5/src/widgets/qtextedit.cpp 2005-10-18 12:57:18.930195960 +0900 +@@ -39,6 +39,11 @@ + + #ifndef QT_NO_TEXTEDIT + ++// Keep this position to avoid patch rejection ++#ifndef QT_NO_IM ++#include "qinputcontext.h" ++#endif ++ + #include "../kernel/qrichtext_p.h" + #include "qpainter.h" + #include "qpen.h" +@@ -108,6 +113,8 @@ + int id[ 7 ]; + int preeditStart; + int preeditLength; ++ bool composeMode() const { return ( preeditLength > 0 ); } ++ + uint ensureCursorVisibleInShowEvent : 1; + uint tabChangesFocus : 1; + QString scrollToAnchor; // used to deferr scrollToAnchor() until the show event when we are resized +@@ -1078,6 +1085,10 @@ + l += v; + } + } ++ ++ // This invocation is required to follow dragging of active window ++ // by the showed candidate window. ++ updateMicroFocusHint(); + } + + /*! +@@ -1553,6 +1564,35 @@ + } + + /*! ++ This function is not intended as polymorphic usage. Just a shared code ++ fragment that calls QWidget::sendMouseEventToInputContext() easily for this ++ class. ++ */ ++bool QTextEdit::sendMouseEventToInputContext( QMouseEvent *e ) ++{ ++#ifndef QT_NO_IM ++ if ( d->composeMode() ) { ++ QTextCursor c( doc ); ++ if ( c.place( e->pos(), doc->firstParagraph(), FALSE, FALSE, FALSE ) ) { ++ int mousePos = c.index() - d->preeditStart; ++ if ( cursor->globalY() == c.globalY() && ++ mousePos >= 0 && mousePos < d->preeditLength ) { ++ QWidget::sendMouseEventToInputContext( mousePos, e->type(), ++ e->button(), e->state() ); ++ } ++ } else if ( e->type() != QEvent::MouseMove ) { ++ // send button events on out of preedit ++ QWidget::sendMouseEventToInputContext( -1, e->type(), ++ e->button(), e->state() ); ++ } ++ return TRUE; ++ } ++#endif ++ return FALSE; ++} ++ ++ ++/*! + \reimp + */ + void QTextEdit::imStartEvent( QIMEvent *e ) +@@ -1582,11 +1622,17 @@ + doc->removeSelection( QTextDocument::IMCompositionText ); + doc->removeSelection( QTextDocument::IMSelectionText ); + +- if ( d->preeditLength > 0 && cursor->paragraph() ) ++ if ( d->composeMode() && cursor->paragraph() ) + cursor->paragraph()->remove( d->preeditStart, d->preeditLength ); + cursor->setIndex( d->preeditStart ); + d->preeditLength = e->text().length(); +- insert( e->text() ); ++ ++ int sellen = e->selectionLength(); ++ uint insertionFlags = CheckNewLines | RemoveSelected | AsIMCompositionText; ++ if ( sellen > 0 ) { ++ insertionFlags |= WithIMSelection; ++ } ++ insert( e->text(), insertionFlags ); + // insert can trigger an imEnd event as it emits a textChanged signal, so better + // be careful + if(d->preeditStart != -1) { +@@ -1598,14 +1644,20 @@ + + cursor->setIndex( d->preeditStart + e->cursorPos() ); + +- int sellen = e->selectionLength(); + if ( sellen > 0 ) { + cursor->setIndex( d->preeditStart + e->cursorPos() + sellen ); + c = *cursor; + cursor->setIndex( d->preeditStart + e->cursorPos() ); + doc->setSelectionStart( QTextDocument::IMSelectionText, *cursor ); + doc->setSelectionEnd( QTextDocument::IMSelectionText, c ); ++#if 0 ++ // Disabled for Asian input method that shows candidate ++ // window. This behavior is same as Qt/E 2.3.7 which supports ++ // Asian input methods. Asian input methods need start point ++ // of IM selection text to place candidate window as adjacent ++ // to the selection text. + cursor->setIndex( d->preeditStart + d->preeditLength ); ++#endif + } + } + +@@ -1628,11 +1685,12 @@ + if (undoRedoInfo.type == UndoRedoInfo::IME) + undoRedoInfo.type = UndoRedoInfo::Invalid; + +- if ( d->preeditLength > 0 && cursor->paragraph() ) ++ if ( d->composeMode() && cursor->paragraph() ) + cursor->paragraph()->remove( d->preeditStart, d->preeditLength ); + if ( d->preeditStart >= 0 ) { + cursor->setIndex( d->preeditStart ); +- insert( e->text() ); ++ //TODO: Qt 4 we should use the new virtual insert function ++ insert( e->text(), FALSE ); + } + d->preeditStart = d->preeditLength = -1; + +@@ -2122,6 +2180,13 @@ + isReadOnly() ) + return; + ++ // Asian users regard selection text as cursor on candidate ++ // selection phase of input method, so ordinary cursor should be ++ // invisible if IM selection text exists. ++ if ( doc->hasSelection( QTextDocument::IMSelectionText ) ) { ++ visible = FALSE; ++ } ++ + QPainter p( viewport() ); + QRect r( cursor->topParagraph()->rect() ); + cursor->paragraph()->setChanged( TRUE ); +@@ -2196,6 +2261,9 @@ + } + #endif + ++ if ( sendMouseEventToInputContext( e ) ) ++ return; ++ + if ( d->trippleClickTimer->isActive() && + ( e->globalPos() - d->trippleClickPoint ).manhattanLength() < + QApplication::startDragDistance() ) { +@@ -2301,7 +2369,9 @@ + return; + } + #endif +- if ( mousePressed ) { ++ if ( sendMouseEventToInputContext( e ) ) { ++ // don't return from here to avoid cursor vanishing ++ } else if ( mousePressed ) { + #ifndef QT_NO_DRAGANDDROP + if ( mightStartDrag ) { + dragStartTimer->stop(); +@@ -2358,7 +2428,7 @@ + + void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) + { +- if ( !inDoubleClick ) { // could be the release of a dblclick ++ if ( !inDoubleClick && !d->composeMode() ) { // could be the release of a dblclick + int para = 0; + int index = charAt( e->pos(), ¶ ); + emit clicked( para, index ); +@@ -2369,6 +2439,8 @@ + return; + } + #endif ++ if ( sendMouseEventToInputContext( e ) ) ++ return; + QTextCursor oldCursor = *cursor; + if ( scrollTimer->isActive() ) + scrollTimer->stop(); +@@ -2462,7 +2534,7 @@ + + void QTextEdit::contentsMouseDoubleClickEvent( QMouseEvent * e ) + { +- if ( e->button() != Qt::LeftButton ) { ++ if ( e->button() != Qt::LeftButton && !d->composeMode() ) { + e->ignore(); + return; + } +@@ -2493,6 +2565,9 @@ + } else + #endif + { ++ if ( sendMouseEventToInputContext( e ) ) ++ return; ++ + QTextCursor c1 = *cursor; + QTextCursor c2 = *cursor; + #if defined(Q_OS_MAC) +@@ -2668,10 +2743,15 @@ + */ + void QTextEdit::contentsContextMenuEvent( QContextMenuEvent *e ) + { ++ e->accept(); ++#ifndef QT_NO_IM ++ if ( d->composeMode() ) ++ return; ++#endif ++ + clearUndoRedo(); + mousePressed = FALSE; + +- e->accept(); + #ifndef QT_NO_POPUPMENU + QGuardedPtr that = this; + QGuardedPtr popup = createPopupMenu( e->pos() ); +@@ -2823,6 +2823,12 @@ + void QTextEdit::updateMicroFocusHint() + { + QTextCursor c( *cursor ); ++#if 0 ++ // Disabled for Asian input method that shows candidate ++ // window. This behavior is same as Qt/E 2.3.7 which supports ++ // Asian input methods. Asian input methods need start point of IM ++ // selection text to place candidate window as adjacent to the ++ // selection text. + if ( d->preeditStart != -1 ) { + c.setIndex( d->preeditStart ); + if(doc->hasSelection(QTextDocument::IMSelectionText)) { +@@ -2831,6 +2837,7 @@ + c.setIndex(index); + } + } ++#endif + + if ( hasFocus() || viewport()->hasFocus() ) { + int h = c.paragraph()->lineHeightOfChar( cursor->index() ); +@@ -2987,6 +3074,8 @@ + bool indent = insertionFlags & RedoIndentation; + bool checkNewLine = insertionFlags & CheckNewLines; + bool removeSelected = insertionFlags & RemoveSelected; ++ bool imComposition = insertionFlags & AsIMCompositionText; ++ bool imSelection = insertionFlags & WithIMSelection; + QString txt( text ); + drawCursor( FALSE ); + if ( !isReadOnly() && doc->hasSelection( QTextDocument::Standard ) && removeSelected ) +@@ -3026,7 +3115,10 @@ + formatMore(); + repaintChanged(); + ensureCursorVisible(); +- drawCursor( TRUE ); ++ // Asian users regard selection text as cursor on candidate ++ // selection phase of input method, so ordinary cursor should be ++ // invisible if IM selection text exists. ++ drawCursor( !imSelection ); + + if ( undoEnabled && !isReadOnly() && undoRedoInfo.type != UndoRedoInfo::IME ) { + undoRedoInfo.d->text += txt; +@@ -3048,7 +3140,13 @@ + doc->setSelectionEnd( QTextDocument::Standard, *cursor ); + repaintChanged(); + } +- updateMicroFocusHint(); ++ // updateMicroFocusHint() should not be invoked here when this ++ // function is invoked from imComposeEvent() because cursor ++ // postion is incorrect yet. imComposeEvent() invokes ++ // updateMicroFocusHint() later. ++ if ( !imComposition ) { ++ updateMicroFocusHint(); ++ } + setModified(); + emit textChanged(); + } +@@ -5529,6 +5627,13 @@ + #else + d->id[ IdSelectAll ] = popup->insertItem( tr( "Select All" ) + ACCEL_KEY( A ) ); + #endif ++ ++#ifndef QT_NO_IM ++ QInputContext *qic = getInputContext(); ++ if ( qic ) ++ qic->addMenusTo( popup ); ++#endif ++ + popup->setItemEnabled( d->id[ IdUndo ], !isReadOnly() && doc->commands()->isUndoAvailable() ); + popup->setItemEnabled( d->id[ IdRedo ], !isReadOnly() && doc->commands()->isRedoAvailable() ); + #ifndef QT_NO_CLIPBOARD +diff -urN qt-x11-free-3.3.5.orig/src/widgets/qtextedit.h qt-x11-free-3.3.5/src/widgets/qtextedit.h +--- qt-x11-free-3.3.5.orig/src/widgets/qtextedit.h 2005-09-02 21:43:14.000000000 +0900 ++++ qt-x11-free-3.3.5/src/widgets/qtextedit.h 2005-10-18 12:57:18.933195504 +0900 +@@ -211,7 +211,9 @@ + enum TextInsertionFlags { + RedoIndentation = 0x0001, + CheckNewLines = 0x0002, +- RemoveSelected = 0x0004 ++ RemoveSelected = 0x0004, ++ AsIMCompositionText = 0x0008, // internal use ++ WithIMSelection = 0x0010 // internal use + }; + + QTextEdit( const QString& text, const QString& context = QString::null, +@@ -439,6 +441,7 @@ + void contentsDropEvent( QDropEvent *e ); + #endif + void contentsContextMenuEvent( QContextMenuEvent *e ); ++ bool sendMouseEventToInputContext( QMouseEvent *e ); + bool focusNextPrevChild( bool next ); + QTextDocument *document() const; + QTextCursor *textCursor() const; +diff -urN qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindow.cpp qt-x11-free-3.3.5/tools/qtconfig/mainwindow.cpp +--- qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindow.cpp 2005-08-31 19:13:47.000000000 +0900 ++++ qt-x11-free-3.3.5/tools/qtconfig/mainwindow.cpp 2005-10-18 12:57:18.938194744 +0900 +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -361,13 +362,73 @@ + + rtlExtensions->setChecked( settings.readBoolEntry( "/qt/useRtlExtensions", FALSE ) ); + +-#ifdef Q_WS_X11 ++#if defined(Q_WS_X11) + inputStyle->setCurrentText( settings.readEntry( "/qt/XIMInputStyle", trUtf8( "On The Spot" ) ) ); + #else + inputStyle->hide(); + inputStyleLabel->hide(); + #endif + ++#if defined(Q_WS_X11) && !defined(QT_NO_IM_EXTENSIONS) ++ /* ++ This code makes it possible to set up default input method. ++ ++ The list of identifier names of input method which can be used ++ is acquired using QInputContextFactory::keys(). And it is ++ translated to display name and set to inputMethodCombo which ++ displays the list of input method. ++ */ ++ inputMethodIdentifiers = QInputContextFactory::keys(); ++ QStringList imDispNames; ++ { ++ // input method switcher should named with "imsw-" prefix to ++ // prevent to be listed in ordinary input method list. ++ QStringList::Iterator imIt = inputMethodIdentifiers.begin(); ++ while (imIt != inputMethodIdentifiers.end()) { ++ if ((*imIt).find("imsw-") == 0) ++ imIt = inputMethodIdentifiers.remove(imIt); ++ else ++ imIt++; ++ } ++ // we should not sort the list ++ //inputMethodIdentifiers.sort(); ++ for (imIt = inputMethodIdentifiers.begin(); ++ imIt != inputMethodIdentifiers.end(); ++ imIt++) { ++ QString dispName = QInputContextFactory::displayName(*imIt); ++ if (dispName.isNull() || dispName.isEmpty()) ++ dispName = *imIt; ++ imDispNames << dispName; ++ } ++ } ++ //inputMethodCombo->insertStringList(inputMethodIdentifiers); ++ inputMethodCombo->insertStringList(imDispNames); ++ ++ /* ++ input method set up as a default in the past is chosen. ++ If nothing is set up, default input method in the platform is chosen. ++ */ ++ // default input method is XIM in X11. ++ QString currentIM = settings.readEntry("/qt/DefaultInputMethod", "xim"); ++ { ++ int index = inputMethodIdentifiers.findIndex(currentIM); ++ // set up Selected input method. ++ if (0 <= index && index < inputMethodIdentifiers.count()) { ++ inputMethodCombo->setCurrentItem(index); ++ } else { ++ // Give up. this part is executed when specified IM is not ++ // installed. ++ QString dispName = tr("Unknown Input Method") + " (" + currentIM + ")"; ++ inputMethodCombo->insertItem(dispName); ++ inputMethodCombo->setCurrentItem(inputMethodCombo->count() - 1); ++ inputMethodIdentifiers << currentIM; ++ } ++ } ++#else ++ inputMethodCombo->hide(); ++ inputMethodLabel->hide(); ++#endif ++ + fontembeddingcheckbox->setChecked( settings.readBoolEntry("/qt/embedFonts", TRUE) ); + fontpaths = settings.readListEntry("/qt/fontPath", ':'); + fontpathlistbox->insertStringList(fontpaths); +@@ -444,6 +505,13 @@ + else if ( style == trUtf8( "Root" ) ) + str = "Root"; + settings.writeEntry( "/qt/XIMInputStyle", inputStyle->currentText() ); ++ ++#if !defined(QT_NO_IM_EXTENSIONS) ++ QString imSwitcher = settings.readEntry("/qt/DefaultInputMethodSwitcher", "imsw-multi"); ++ settings.writeEntry("/qt/DefaultInputMethodSwitcher", imSwitcher); ++ int imIndex = inputMethodCombo->currentItem(); ++ settings.writeEntry("/qt/DefaultInputMethod", inputMethodIdentifiers[imIndex]); ++#endif + #endif + + QStringList effects; +diff -urN qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindow.h qt-x11-free-3.3.5/tools/qtconfig/mainwindow.h +--- qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindow.h 2005-08-31 19:17:53.000000000 +0900 ++++ qt-x11-free-3.3.5/tools/qtconfig/mainwindow.h 2005-10-18 12:57:18.940194440 +0900 +@@ -83,6 +83,7 @@ + QPalette editPalette, previewPalette; + QStyle *previewstyle; + QStringList fontpaths; ++ QStringList inputMethodIdentifiers; + bool modified; + }; + +diff -urN qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindowbase.ui qt-x11-free-3.3.5/tools/qtconfig/mainwindowbase.ui +--- qt-x11-free-3.3.5.orig/tools/qtconfig/mainwindowbase.ui 2003-11-12 05:01:02.000000000 +0900 ++++ qt-x11-free-3.3.5/tools/qtconfig/mainwindowbase.ui 2005-10-18 12:57:18.947193376 +0900 +@@ -1016,6 +1016,19 @@ + 0 + + ++ ++ ++ inputMethodLabel ++ ++ ++ Default Input Method: ++ ++ ++ ++ ++ inputMethodCombo ++ ++ + + + spacer5 +@@ -1029,7 +1042,7 @@ + + + 20 +- 40 ++ 30 + + + +@@ -1705,6 +1718,12 @@ + somethingModified() + + ++ inputMethodCombo ++ activated(int) ++ MainWindowBase ++ somethingModified() ++ ++ + gstylecombo + activated(const QString&) + MainWindowBase --- qt-x11-free-3.3.6.orig/debian/libqt3-mt.links +++ qt-x11-free-3.3.6/debian/libqt3-mt.links @@ -0,0 +1,5 @@ +/usr/lib/libqui.so.1.0.0 /usr/lib/libqui.so.1 +/usr/lib/libqui.so.1.0.0 /usr/share/qt3/lib/libqui.so.1 +/usr/lib/libqui.so.1.0.0 /usr/share/qt3/lib/libqui.so.1.0 +/usr/lib/libqt-mt.so.3.3.6 /usr/share/qt3/lib/libqt-mt.so.3 +/usr/lib/libqt-mt.so.3.3.6 /usr/share/qt3/lib/libqt-mt.so.3.3 --- qt-x11-free-3.3.6.orig/debian/libqt3-mt-ibase.install +++ qt-x11-free-3.3.6/debian/libqt3-mt-ibase.install @@ -0,0 +1 @@ +usr/lib/qt3/plugins/sqldrivers/libqsqlibase.so --- qt-x11-free-3.3.6.orig/debian/copyright +++ qt-x11-free-3.3.6/debian/copyright @@ -0,0 +1,129 @@ +This is Debian GNU/Linux's prepackaged version of the Qt GUI Development +library. + +This package was put together originally by me, Heiko Schlittermann +, from the sources, which I obtained from +ftp.troll.no. The changes were very minimal to nothing, - merely +adding support for the Debian package maintenance scheme, by adding +various debian/* files and by changing the propagate script to fit the +Debian GNU/Linux filesystem structure. + +This package has since been temporarily taken over by Ivan Moore + until Heiko has time to work on it all again. + +In Jul 2002, Martin Loschwitz overtook the package +maintenance for the QT3-packages. + +Qt 3.3 is dual licensed under the QPL and the GPL + +Please refer to /usr/share/common-licenses/GPL for complete GPL license. + + THE Q PUBLIC LICENSE + version 1.0 + + Copyright (C) 1999-2000 Troll Tech AS, Norway. + Everyone is permitted to copy and + distribute this license document. + +The intent of this license is to establish freedom to share and change the +software regulated by this license under the open source model. + +This license applies to any software containing a notice placed by the +copyright holder saying that it may be distributed under the terms of +the Q Public License version 1.0. Such software is herein referred to as +the Software. This license covers modification and distribution of the +Software, use of third-party application programs based on the Software, +and development of free software which uses the Software. + + Granted Rights + +1. You are granted the non-exclusive rights set forth in this license + provided you agree to and comply with any and all conditions in this + license. Whole or partial distribution of the Software, or software + items that link with the Software, in any form signifies acceptance of + this license. + +2. You may copy and distribute the Software in unmodified form provided + that the entire package, including - but not restricted to - copyright, + trademark notices and disclaimers, as released by the initial developer + of the Software, is distributed. + +3. You may make modifications to the Software and distribute your + modifications, in a form that is separate from the Software, such as + patches. The following restrictions apply to modifications: + + a. Modifications must not alter or remove any copyright notices in + the Software. + + b. When modifications to the Software are released under this + license, a non-exclusive royalty-free right is granted to the + initial developer of the Software to distribute your modification + in future versions of the Software provided such versions remain + available under these terms in addition to any other license(s) of + the initial developer. + +4. You may distribute machine-executable forms of the Software or + machine-executable forms of modified versions of the Software, provided + that you meet these restrictions: + + a. You must include this license document in the distribution. + + b. You must ensure that all recipients of the machine-executable forms + are also able to receive the complete machine-readable source code + to the distributed Software, including all modifications, without + any charge beyond the costs of data transfer, and place prominent + notices in the distribution explaining this. + + c. You must ensure that all modifications included in the + machine-executable forms are available under the terms of this + license. + +5. You may use the original or modified versions of the Software to + compile, link and run application programs legally developed by you + or by others. + +6. You may develop application programs, reusable components and other + software items that link with the original or modified versions of the + Software. These items, when distributed, are subject to the following + requirements: + + a. You must ensure that all recipients of machine-executable forms of + these items are also able to receive and use the complete + machine-readable source code to the items without any charge + beyond the costs of data transfer. + + b. You must explicitly license all recipients of your items to use + and re-distribute original and modified versions of the items in + both machine-executable and source code forms. The recipients must + be able to do so without any charges whatsoever, and they must be + able to re-distribute to anyone they choose. + + + c. If the items are not available to the general public, and the + initial developer of the Software requests a copy of the items, + then you must supply one. + + Limitations of Liability + +In no event shall the initial developers or copyright holders be liable +for any damages whatsoever, including - but not restricted to - lost +revenue or profits or other direct, indirect, special, incidental or +consequential damages, even if they have been advised of the possibility +of such damages, except to the extent invariable law, if any, provides +otherwise. + + No Warranty + +The Software and this license document are provided AS IS with NO WARRANTY +OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. + Choice of Law + +This license is governed by the Laws of Norway. Disputes shall be settled +by Oslo City Court. + + The Qt GUI Toolkit is Copyright (C) 1994-2000 Trolltech AS. + + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU General Public License version 2, which is display below. + --- qt-x11-free-3.3.6.orig/debian/qt3-qtconfig.install +++ qt-x11-free-3.3.6/debian/qt3-qtconfig.install @@ -0,0 +1 @@ +usr/bin/qtconfig --- qt-x11-free-3.3.6.orig/debian/qt3-assistant.menu +++ qt-x11-free-3.3.6/debian/qt3-assistant.menu @@ -0,0 +1,6 @@ +?package(qt3-assistant):\ + needs="X11"\ + section="Apps/System"\ + hints="KDE"\ + title="Qt3 Assistant"\ + command="/usr/bin/assistant-qt3" --- qt-x11-free-3.3.6.orig/debian/libqt3-mt.docs +++ qt-x11-free-3.3.6/debian/libqt3-mt.docs @@ -0,0 +1,4 @@ +README +README.immodule +README-QT.TXT +PLATFORMS --- qt-x11-free-3.3.6.orig/debian/qt3-linguist.install +++ qt-x11-free-3.3.6/debian/qt3-linguist.install @@ -0,0 +1,4 @@ +usr/bin/linguist +usr/share/qt3/phrasebooks/* +usr/share/qt3/doc/html/linguist*html +usr/share/qt3/doc/html/linguist*dcf --- qt-x11-free-3.3.6.orig/debian/qt3-dev-tools.install +++ qt-x11-free-3.3.6/debian/qt3-dev-tools.install @@ -0,0 +1,9 @@ +usr/share/qt3/mkspecs/* +usr/share/qt3/doc/html/qmake*html +usr/share/qt3/doc/html/qmake*dcf +usr/bin/qmake +usr/bin/lupdate +usr/bin/lrelease +usr/bin/uic +usr/bin/moc +usr/bin/qembed