Wie Ihr vielleicht schon bemerkt habt, gibt es bei kde4 (kde4.0 bis kde-4.3.4) eion Problem mit den Xf86-Keys.
Die meisten davon werden einfach nicht erkannt, die Meldung lautet:
"The key you just pressed isn't supported by Qt." bzw. "Die gerade gedrückte taste wird von Qt nicht unterstützt"
Das Problem besteht aus 2 Teilen:
1.) qt-gui hatte nur sehr wenige in X definierte Tasten im Namespace
index.php?page=Attachment&attachmentID=2679
2.) die kdelibs hatten daher diesen Tasten auch keine Kaction zugeordnet.
index.php?page=Attachment&attachmentID=2678
LÖSUNG:
zu 1.) gibt es einen qt-Upstream Bugreport, mich zugehörigen patch für qt-gui-4.5*, qt-gui-4.6.0 benötigt diesen Patch nichtmehr.
zu 2.) gibt es von dem Kubuntu Team einen Patch für die kdelibs (welchen ich nur mit den kdelibs-4.3.4 zum laufen gebracht habe)
Als erstes rate ich euch ein
lokales Portage-Overlay anzulegen.
!! Wenn ihr qt-gui-4.6.0 installiert habt könnt ihr euch diesen Punkt sparen !!
1.) QT-GUI:
Falls ihr qt-*-4.6.0 nicht installieren wollt/könnt, dann müsst ihr qt-gui patchen:
.) im lokalen Overlay die Verzeichnisse für qt-gui anlegen und das ebuild aus dem Portage hineinkopieren
|
Quellcode
|
1
2
3
|
# cd /Pfad/zum/Overlay
# mkdir x11-libs
# cp -r /usr/portage/x11-libs/qt-gui /pfad/zum/overlay/x11-libs/
|
.) anschliessend muss noch der Patch in das Verzeichnis qt-gui/files kopiert werden.
|
Quellcode
|
1
|
# cp 0288-more-x-keycodes.patch /pfad/zum/overlay/x11-libs/qt-gui/files/
|
.) damit es eindeutig bleibt erstelle ich mittels Kopie ein neues qt-gui ebuild , damit es keine Verwechslung mit den offiziellen gibt.
|
Quellcode
|
1
|
# cp /pfad/zum/overlay/x11-libs/qt-4.5.3-r2.ebuild /pfad/zum/overlay/x11-libs/qt-4.5.3-r99.ebuild
|
.) nun öffne ich mit einem editor das soeben kopierte ebuild und füge dem ebuild den patch hinzu:
aus:
|
Quellcode
|
1
2
3
|
PATCHES=(
"${FILESDIR}/qt-${PV}-glib-event-loop.patch"
)
|
wird:
|
Quellcode
|
1
2
3
4
|
PATCHES=(
"${FILESDIR}/qt-${PV}-glib-event-loop.patch"
"${FILESDIR}/0288-more-x-keycodes.patch"
)
|
.) nun muss noch das Manifest für das neue ebuild erstellt werden
|
Quellcode
|
1
2
|
# ebuild /pfad/zum/overlay/qt-4.5.3-r99.ebuild manifest
# ebuild /pfad/zum/overlay/qt-4.5.3-r99.ebuild digest
|
.) jetzt sollte sich das neue ebuild mit emerge installieren lassen
|
Quellcode
|
1
|
# emerge =x11-libs/qt-gui-4.5.3-r99
|
2.) KDELIBS
.) analog zu qt-gui , kopiere ich mir nun das Verzeichnis /usr/portage/kde-base/kdelibs in mein lokals Overlay:
|
Quellcode
|
1
2
|
# mkdir /pfad/zum/overlay/kde-base
# cp -r /usr/portage/kde-base/kdelibs /pfad/zum/overlay/kde-base/
|
.) jetzt muss wieder ein neues ebuild mittels kopieren erstellt werden
|
Quellcode
|
1
|
# cp /pfad/zum/overlay/kde-base/kdelibs-4.3.4.ebuild /pfad/zum/overlay/kde-base/kdelibs-4.3.4-r99.ebuild
|
.) den Patch kopiere ich wieder in das Verzeichnis files:
|
Quellcode
|
1
|
# cp kubuntu_80_kaction_qt_keys.patch /pfad/zum/overlay/kde-base/kdelibs/files/
|
.) damit dieser Verwendet wird, muss er dem ebuild auch bekannt gemacht werden, dazu öffnen wir das neue ebuild wieder in einem editor:
aus:
|
Quellcode
|
1
2
3
4
5
|
PATCHES=(
"${FILESDIR}/dist/01_gentoo_set_xdg_menu_prefix.patch"
"${FILESDIR}/dist/02_gentoo_append_xdg_config_dirs.patch"
"${FILESDIR}/dist/23_solid_no_double_build.patch"
)
|
wird:
|
Quellcode
|
1
2
3
4
5
6
|
PATCHES=(
"${FILESDIR}/dist/01_gentoo_set_xdg_menu_prefix.patch"
"${FILESDIR}/dist/02_gentoo_append_xdg_config_dirs.patch"
"${FILESDIR}/dist/23_solid_no_double_build.patch"
"${FILESDIR}/kubuntu_80_kaction_qt_keys.patch"
)
|
.) Das Manifest muss wieder erstellt werden:
|
Quellcode
|
1
2
|
# ebuild /pfad/zum/overlay/kde-base/kdelibs/kdelibs-4.3.4-r99.ebuild manifest
# ebuild /pfad/zum/overlay/kde-base/kdelibs/kdelibs-4.3.4-r99.ebuild digest
|
-) jetzt ist das ebuild bereit und kann installiert werden:
|
Quellcode
|
1
|
# emerge =kde-base/kdelibs-4.3.4-r99
|
Wenn beide emerge prozesse (bzw kdelibs , falls qt-gui-4.6.0 installiert ist) fertig sind, und Ihr das nächste mal KDE startet sollten nun alle Xf86-Keys voll und ganz in KDE4 verfügbar sein.