Ich habe ein kleines Problem. Ich wollte einige Hotkeys neu zuordnen, die ich von meinem vorherigen System gewohnt bin, aber ich kann es nicht richtig zum Laufen bringen xbindkeys
.
xbindkeys
erkennt die Kombination, aber irgendwie wird der Befehl nicht ausgelöst.
Wenn ich den Befehl benutze
xdotool key braceleft
Es gibt mir das richtige {
Zeichen in der Konsole aus. Wenn ich jedoch denselben Befehl in xbindkeys verwende, passiert nichts. Wenn ich den Befehl durch firefox
ihn ersetze , funktioniert er ordnungsgemäß und öffnet Firefox, also denke ich, xbindkeys
funktioniert.
Ich möchte Folgendes erreichen:
Ich möchte das Zeichen {
mit Alt_R+ 7oder Alt_Left+ Ctrl+ in das aktive Fenster
eingeben, 7damit ich beide verwenden kann. Ich weiß, dass Alt_R(AltGr) der richtige Weg ist, aber auf deutschen Tastaturen ist es irgendwie schwierig, das Braceleft mit der AltGr(Alt_R) -Taste einzugeben, sodass ich stattdessen Alt_L+ Control+ 7verwenden muss (wie ich es in meinem vorherigen System gewohnt war). Ich habe es irgendwie in 12.04 zum Laufen gebracht, aber ich kann es in 14.04 nicht zum Laufen bringen.
Irgendwelche Vorschläge? Ich habe mehrere Befehle ausprobiert. Alle von ihnen arbeiteten in der Konsole, aber keiner von ihnen funktionierte, wenn sie von xbindkeys ausgeführt wurden
xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'
Dies ist meine Konfiguration, die nicht funktioniert
"xdotool key braceleft"
Control+Alt + 7
Dies funktioniert jedoch:
"firefox"
Control+Alt + 7
Lösungsbearbeitung
Als ich einige andere Dinge ausprobierte, bemerkte ich, dass xdotool zu früh auszulösen scheint. Ich habe die Konfiguration folgendermaßen geändert:
"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7
JETZT sendet es das richtige {Zeichen an das aktive Fenster. Jetzt müssen Sie nur noch den Schlaf und die Verzögerung auf einen brauchbaren Wert reduzieren, da 1 Sekunde etwas zu lang erscheint :)
** Zusatzinfo ** Nun habe ich es geschafft, geeignete Werte zu finden. Dies funktioniert jedoch nur, wenn Sie die Tasten loslassen, bis die Schlafdauer abgelaufen ist. Wenn Sie zu langsam sind, funktioniert es nicht.
Dies ist meine aktuelle Konfiguration für alle unbequemen deutschen AltGr-Zeichen
"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7
"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q
"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e
"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8
"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9
"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0
"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus
Wenn Sie jedoch (zum Beispiel) mehrere @ -Zeichen eingeben möchten, müssen Sie Strg + Alt + Q wie vorgesehen drücken, aber alle Tasten loslassen und dann erneut drücken. Dies ist jedoch viel, viel besser, als nicht die Option Strg + Alt anstelle von AltGr zu haben, aber es ist nicht so effektiv, wie ich es auch verwendet habe. Vielleicht finde ich auch dafür eine Lösung.
xdotool
die Taste bei gedrückter Taste wiederholen können?xdotool getactivewindow key Home
Antworten:
Das Problem dabei
xdotool
ist, dass Xorg beim Drücken der realen Tasten wiederholt Tastendruckereignisse sendet (siehexev
Ausgabe). Um dies zu überwinden, müssen Sie die Wiederholungsfunktion vorübergehend deaktivieren und dann ein KeyRelease-Ereignis für einen Schlüssel generieren, der nicht verfügbar war.Anstatt
Versuche Folgendes:
quelle
Als ich einige andere Dinge ausprobierte, bemerkte ich, dass xdotool zu früh auszulösen scheint. Ich habe die Konfiguration folgendermaßen geändert:
JETZT sendet es das richtige {Zeichen an das aktive Fenster. Jetzt müssen Sie nur noch den Schlaf und die Verzögerung auf einen brauchbaren Wert reduzieren, da 1 Sekunde etwas zu lang erscheint :)
** Zusatzinfo ** Nun habe ich es geschafft, geeignete Werte zu finden. Dies funktioniert jedoch nur, wenn Sie die Tasten loslassen, bis die Schlafdauer abgelaufen ist. Wenn Sie zu langsam sind, funktioniert es nicht.
Dies ist meine aktuelle Konfiguration für alle unbequemen deutschen AltGr-Zeichen
Wenn Sie jedoch (zum Beispiel) mehrere @ -Zeichen eingeben möchten, müssen Sie Strg + Alt + Q wie vorgesehen drücken, aber alle Tasten loslassen und dann erneut drücken. Dies ist jedoch viel, viel besser, als nicht die Option Strg + Alt anstelle von AltGr zu haben, aber es ist nicht so effektiv, wie ich es auch verwendet habe. Vielleicht finde ich auch dafür eine Lösung.
quelle
sleep
denke ich, dass Sie+ release
zu den Schlüsselkombinationen hinzufügen möchten . Das sagtxbindkeys
, dass Sie warten müssen, bis die Taste losgelassen wird, bevor Sie den Befehl auslösen.Wie in ähnlichen Fragen dokumentiert ( ? Warum in Terminal dieser xte Befehle funktionieren, aber wenn sie nicht mit xbindkeys gebunden ), können Sie fragen ,
xbindkeys
um Triggerereignisse auf Release (auf Taste nach oben):Auf diese Weise besteht kein Konflikt zwischen den für die Verknüpfung verwendeten und den gesendeten Tasten.
quelle
Vor kurzem hatte ich dieses Problem, wo ich versuchte , die Medien Play / Pause (XF86AudioPlay) Taste Strg + G. Nach einigen Recherchen zu simulieren, schien es nicht nur ich brauche die auszulöschen Kontrolle , aber auch die g - Taste (die was brauchte die
sleep 0.1
Verzögerung zu Beginn). Wenn ich beide Schlüssel mitkeyup
xdotool sowie mit dem Schalter --clearmodifiers aufhebe, funktioniert dies. Dies ist mein neuer Befehl in meiner .xbindkeys.rc-Datei:quelle
xbindkeys
Ich bin mir nicht sicher, warum es nicht funktioniert . Ich vermute, Sie müssen das Fenster angeben, in das geschrieben werden soll. Als Problemumgehung können Siexvkbd
stattdessen verwenden.Installieren
xvkbd
Fügen Sie dies Ihrer
.xbindkeysrc
Datei hinzuDas sollte funktionieren.
ANMERKUNGEN
Aus irgendeinem Grund wird auf meinem Computer
xvkbd
eines meiner sekundären Layouts (Spanisch) anstelle meines Hauptlayouts (US-Englisch) verwendet, und dies führt{
dazu, dass tatsächlich gedruckt wird"
. Wenn Sie auch dieses Problem haben, spielen Sie einfach ein wenig herum, um herauszufinden, welche Taste{
dem verwendeten Layout entspricht. Alternativ können Sie tiefer graben und herausfinden, woherxvkbd
dielocale
Einstellungen stammen.quelle