XServer: Key-Events werden bei bestimmten Anwendungen geblockt.

H

HobbyTuxer

Grünschnabel
Moin!

Ich bin auf der suche nach einer Lösung für folgendes Problem:
Auf meiner Tastatur sind ein paar Multimedia tasten, die auch so im "normalen" betrieb unter KDE Problemlos funktionieren. Wenn ich jetzt aber z.B. ein Spiel laufen haben (z.B. RtCW:ET) dann funktionieren diese Tasten nicht mehr, da anscheinend die Anwendung die ganze Key-Events abfängt, oder alle Key-Events nur an die eine Anwendung gesendet werden.

Meine frage jetzt: Wie bekomme ich es hin das die Multimedia tasten (oder auch bestimmte Tastenkombinationen) "funktionieren" wenn die Anwendung(en) (spiele) läufen. ?

Ich nutze im mom. Kubuntu 8.04 in der Standardausführung. Also keinen angepassten Kernel oder ähnliches.

MfG
 
Hallo,

suche mal hier den Beitrag "Lineak Sound lauter leiser". Da sollte ein passender Link dabei sein.

cu
 
Ein Workaround wäre es vielleicht auch amarok (da du kde gesagt hast nehme ich mal an, dass du amarok verwendest...) aus der Konsole fernzusteuern. Laut "man amarok" sollte das möglich sein:
Code:
    Options:
        -r, --previous
               Skip backwards in playlist
 
        -p, --play
               Start playing current playlist
 
        -s, --stop
               Stop playback
 
        --pause
               Pause playback
 
        -f, --next
               Skip forwards in playlist
(Also auf virtuelle Konsole via strg-alt-f[1-6] wechseln und danach wieder zurück zum x-Server (strg-alt-f7))
Scheint aber keine Lautstärkenanpassung möglich zu sein, deswegen vielleicht Lautstärke via cvar in ET anpassen (s_volume eventuell?) und dann am "Hardware-Mixer" (Volume Knopf der Anlage) den Gesamtpegel regulieren. Halt so als Notlösung.
 
Also mit dem Link zum Wiki eintrag von Gentoo, der im Thread "Lineak Sound lauter leiser" angegeben ist, kann ich irgendwie nicht so richtig was mit anfangen. Da werden ja Hauptsächlich nur Lösungsmöglichkeiten genannt, wenn die Tasten erst garnicht Funktioniren. Aber die Tasten Funktionieren ja bei mir, halt nur nicht mehr wenn bestimmte Anwendungen laufen.

Den genannte Workround nutze ich ja schon. Ich habe mir ein Script erstellt, über welches ich den Player steuere. Nur mache ich das über dcop.
Aber das ständige wechseln des Virtuellen Bildschirm ist etwas nervig. Deswgen bin ich ja auf der Suche nach einer anderen Möglichkeit.


Evt. noch eine andere Idee wie ich es hinbekomme das nicht alle Key-Events an nur eine Anwendung geleitet werden?
 
Hallo,

ich nahm an, dass du die Multimedia-Tasten momentan über das zugehörige KDE-Dienstprogramm zuordnest. Probiert hätte ich, dass du die Tastenkombinationen direkt über X zuordnest. Denn der X-Server sollte auch wenn das Spiel noch läuft - als dem Spiel übergeordnete Instanz - zuerst die Key-Events abgreifen können. Wenn das natürlich nicht funktioniert/funktionieren sollte, fällt mir dazu auch nichts ein.

cu
 
Ja ich habe die Tasten über das Dienstprogramm von KDE zugeordnet. Ich habe das gerade noch mal mit xbindkeys versucht. Die Testen werden dann aber schon von KDE abgefangen und komme so erst garnicht zu xbindkeys durch. Ein Möglichkeit wäre, mit der ich auch leben könnte, eine Tastenkombination aus z.B. control+XF86AudioMute. Das ganze Funktioniert zwar auch, aber nur solange die Anwendung (gerade beim testen war es ET) nicht läuft.
Aber ich habe gerade etwas Interessantes entdeckt. Wenn ich ET nicht im Vollbildmodus betreibe, dann Funktionieren die Tasten. Aber nur wenn ich die Console vom Spiel offen habe. Im Vollbild geht das ganze aber wieder nicht.
 
Also ich könnte mir vorstellen, dass die quake-Engine alle xevents abfängt im Fullscreen-Modus. Vielleicht gibts ja eine Anwendung, die bestimmte events abfängt (sprich an windowmanager oder so "übergibt") und andere wiederum durchlässt. Quasi ein Filter. Kann aber gut sein, dass das schlicht unmöglich ist :)
Ein anderer Workaround (etwas angenehmer) könnte es vielleicht sein, deinen Mediaplayer via quake-Console zu steuern. Bei mir landet consolen-Output erstmal auf stdout vom terminal (edit: tatsächlich landet er auf stderr, siehe weiter unten). Das könnte man dann ja in ein Script pipen, welche gewisse Kommandos versteht. Dann müsstest du nicht immer zur virtuellen Konsole wechseln.

edit:
Ich hab mir mal eins für xmms geschrieben:
Code:
#!/usr/bin/env perl
use strict;
use warnings;

# controll xmms via quake-console output from the terminal

while (<STDIN>) {
    next if !m{^]/%};
  SWITCH: {
        if (m{^]/%toggle})       { system 'xmms -t'; last SWITCH; }
        if (m{^]/%next})         { system 'xmms -f'; last SWITCH; }
        if (m{^]/%prev(?:ious)}) { system 'xmms -r'; last SWITCH; }
    }
}
Aufruf:
Code:
./quake3.x86 2>&1 | ./quake-xmms-control.pl
Der Konsolen-Output landet auf stderr, deswegen die Umleitung.
Mit "/%toggle" kann man jetzt xmms togglen, mit "/%next" das nächste Lied in der Playlist spielen und mit "/%prev" oder "/%previous" das vorherige.
Musst nur aufpassen, dass keiner diese "geheimen" Kommandos rausfindet, sonst kann nämlich jeder mit deinem Mediaplayer rumpfuschen =)

edit: wenn man gegen m{^]/%} matcht ist man auf der sicheren Seite. Dann kann keiner den mediaplayer beeinflussen. (Weil afaik nur die eigenen Eingaben mit "]" starten.)
 
Zuletzt bearbeitet:
Sind die Hotkeys überhaupt als Global vergeben?
Wie meinst du das genau? Als bei Amarok, den ich im mom. verwende, sind die Hotkeys bei den Globalen Hotkeys definiert. Oder meinst du was anderes?


Das mit den Script und steuern über die "Log-Ausgabe" vom Spiel ist eine nette Idee. Glaube das probiere ich bei nächster Gelegenheit mal aus :)
 
Zurück
Oben