Ich kenne eine Reihe von Möglichkeiten, Tastenkombinationen in Ubuntu global neu zuzuordnen (z. B. globales Neuzuordnen von Strg + S, um Strg + D oder etwas anderes zu senden), wie z. B. die Anwendung xbindkeys . Was ich jedoch brauche, ist eine Möglichkeit, dies nur für eine bestimmte Anwendung zu tun . Zum Beispiel so etwas wie "Remap Strg + S, um Strg + D zu senden, aber nur in Chrome ". Gibt es eine Möglichkeit, dies zu erreichen?
shortcut-keys
x11
Derek Thurn
quelle
quelle
Antworten:
Ihre Idee, xbindkeys zu verwenden, klingt gut:
.xbindkeysrc
Fügen Sie eine neue Tastenkombination hinzu:Dies wird ausgeführt,
"app_specific_keys.sh"
wenn Sie drückenctrl+s
.Jetzt müssen Sie das Skript definieren. Es sollte das aktive Fenster erhalten und daraus der Name der App, die aktuell den Fokus hat:
Dies würde den Trick machen: Es fragt xdotool nach dem aktiven Fenster, fragt dann xprop nach allen Eigenschaften des Fensters mit der angegebenen ID und reduziert dann die sehr ausführliche Ausgabe auf den Namen der Anwendung (tatsächlich deren Klasse). Wenn Sie dies in einem Gnome-Terminal ausführen, erhalten Sie
Jetzt müssen Sie Aktionen für Ihre Anwendungen definieren:
Zusammen
"app_specific_keys.sh"
könnte das Skript also so aussehen:Das sollte funktionieren, aber wie bei dieser Frage muss ich zugeben, dass dies nicht der Fall ist. Wahrscheinlich, weil eines von Compiz, Unity, Global Menu mit der
--clearmodifiers
Option xdotool nicht gut funktioniert. Eine Problemumgehung wäre, einen Schlaf vor Ihrem Skript hinzuzufügen, um die Schlüssel selbst freigeben zu können: In Ihrer.xbindkeysrc
Änderung an dieser Tastenkombination:Als Randnotiz: Dies funktioniert nicht, wenn Sie die Schlüssel für Programme ändern möchten, die in einem Terminal ausgeführt werden (z. B. vi oder emacs im Konsolenmodus). Die zurückgegebene Anwendungsklasse wäre weiterhin "Gnome-Terminal".
Hoffentlich hilft das.
quelle
xvkbd -xsendevent -text "\Cs"
. Dies scheint nicht unter den Problemen zu leiden, die Sie mit xdotool hatten.f
Anrufxdotool key f
. Immer noch auf der Suche nach einem Weg, dies zu tun.xdotool type --window $(xdotool getwindowfocus) [keys]
Das Verwenden der Option --window und das Senden an das derzeit aktive Fenster führt NICHT zu rekursivem Verhalten.Autokey ist wie AutoHotkey für Ubuntu. Sie können Skripte in Python schreiben und sie über eine Tastenkombination und einen Windows-Filter ausführen lassen (wodurch sie pseudoanwendungsspezifisch werden). Ihr Skript kann Tastatur- und Mausereignisse steuern und sogar Fenster als zusätzliche Berührung verschieben.
quelle
autokey
ist viel schneller alsxbindkeys
, auch wenn der Fenstererkennungsmodus aktiviert ist - sofortige Maßnahmen werden ergriffen. Nachteil: Maustastenbelegungen scheinen nicht zu funktionieren (ich denke, es ist ein Fehler)