2Sep

Wie man globale HotKeys an ein WINE-Programm unter Linux bindet

Haben Sie jemals ein Windows-Programm unter Linux unter WINE installiert, um festzustellen, dass es keine systemweiten Hotkeys mehr bindet? HTG hat die Arbeit, nach der Sie gesucht haben.

Bild von djeucalyptus

Übersicht

Wer schon einmal an die Idee des Linux-Umstiegs gedacht hat, hat wahrscheinlich schnell das Problem, dass es diese eine Windows-App gibt, die man braucht. Wir haben Ihnen bereits gezeigt, dass Sie dies mit WINE erreichen können.

Für diesen Schreiber war die Anwendung eine Text-To-Speech-Anwendung, die die SAPI4-Engine von Microsoft verwendet. Die Installation des Programms unter WINE war ein Kinderspiel, aber nach der Fertigstellung habe ich schnell festgestellt, dass die Hot-Keys, die zum Auslösen der verschiedenen Aktionen des Programms verwendet wurden( Starten des Lesens, Stoppen des Lesens usw.) nicht funktionierten und dass dies bekannt istProblem mit Wein.

Ich freue mich sagen zu können, dass ich nach einigen Jahren der Suche endlich die Lösung in Form eines GNU-Dienstprogramms gefunden habe, das die X.org-Oberfläche mit nativen Funktionen manipulieren kann. Xdotool ist zwar nicht das einzige seiner Art, aber es ist das am einfachsten zu bedienende und war bereits in den Ubuntu / Mint-Repositories.

xdotool

Das xdotool-Programm kann viele Fenster-bezogene Aufgaben von der CLI aus erledigen, wobei die zwei einzigen, die wir verwenden werden, "Suche" und "Schlüssel" sind. Die "Suche" -Funktion sucht genau nach einer Fenster-ID, entsprechend den von Ihnen festgelegten Parametern. Mit der Funktion "Schlüssel" können Sie einen Tastenanschlag zu einer Fenster-ID simulieren.

Installation &Konfiguration

Es wird vorausgesetzt, dass Sie WINE und das Programm, das Sie benötigen, bereits installiert haben. In diesem Beispiel werden wir Balabolka als "Windows" -Anwendung verwenden, da es sich um ein gutes Freeware-Replikat des ursprünglichen Programms handelt, für das ich diese Lösung benötigte( zweites Sprachzentrum).

Wenn Sie sich für die Verwendung von Balabolka entschieden haben, müssen Sie die Hotkeys aktivieren.
Hinweis: Sie können TTSReader oder das zweite Sprachcenter auch im Demo-Modus installieren, damit die SAPI-Stimmen installiert werden.

Öffnen Sie das Programm und gehen Sie zu den Einstellungen( Umschalt + F6) unter "Optionen" - & gt;"Die Einstellungen".

Gehen Sie zum Hotkeys-Tab und markieren Sie das Kontrollkästchen "Globale Hotkeys verwenden".

Klicken Sie auf OK.

Lass es im Hintergrund laufen, damit es seine Arbeit machen kann, wenn wir die Tastenanschläge anhängen.

Installieren Sie xdotool, indem Sie Folgendes ausgeben:

sudo apt-get installieren xdotool

Globale Bindung

Das Programm xdotool alleine hilft uns nicht, global an Hotkeys zu binden, aber wir können das bereits vorhandene Betriebssystem-Hotkey-System verwenden. Was wir tun werden, ist ein einfaches Skript zu erstellen, das xdotool verwendet, um die Tastenanschläge, die wir wollen, an das Balabolka-Programm zu senden und es vom Betriebssystem-Hotkey-System aus aufzurufen.

Erstelle ein Skript namens "start_read.sh" mit folgendem Inhalt:

xdotool Schlüssel --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka) --name Balabolka) "ctrl + alt +F9 "

Erstelle diesmal ein anderes Skript namens" stop_read.sh "mit folgendem Inhalt:

xdotool Schlüssel --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka) --name Balabolka)"Strg + Alt + F7 "

Hinweis: Ich weiß, dass dies ein Liner ist, der kein Skript benötigt, aber das Mint / Ubuntu" Tastaturkürzel "-Programm hat nicht mit dem Aufruf direkt kooperiert. Wenn Sie wissen, wie es geht, teilen Sie uns bitte die folgenden Kommentare mit.

Der Befehl "-pid $( pgrep balabolka)", der diesen Befehl an seine Komponenten abbremst, zeigt Folgendes:

  • Der Teil "-pid $( pgrep balabolka)" führt ein "pgrep" für das Programm aus, das wir zur Ermittlung seiner Prozess-ID verwenden möchten. Dies wird das xdotool-Feld von "Suche" auf genau diese PID eingrenzen.
  • Der Teil "xdotool search -limit 1 -all. .. -name Balabolka" verengt das Feld der Suche nach xdotool noch mehr und begrenzt die zurückgegebenen Antworten auf 1. Wie in unserem Fall spielt es keine Rolle, von welcher der Fenster-IDs zurückgegeben wirdDas Programm, das das Ergebnis begrenzt, fungiert als Formatierer für den "Schlüssel" -Befehl. Sie können feststellen, dass Sie diesen Teil mehr massieren müssen, wenn es für das von Ihnen verwendete Programm von Bedeutung ist.
  • Der "xdotool key -window% WINDOW_ID%" ctrl + alt + F7 "" -Teil sendet den gewünschten Tastenanschlag an die windowID, die von den vorherigen Teilen erhalten wurde.

Machen Sie die Skripte ausführbar.

Linux Mint Tastatur Abkürzungen

Unter Linux Mint sind die globalen Hotkeys im Programm "Tastaturkürzel" eingestellt.

Einmal geöffnet Klicken Sie auf "Hinzufügen", um eine neue benutzerdefinierte Verknüpfung zu erstellen:

Geben Sie ihr einen Namen und geben Sie unter "Befehl" den vollständigen Pfad zu einem der oben erstellten Skripte ein. Wiederholen Sie den Vorgang für das zweite Skript.

Klicken Sie nun in der Spalte "Shortcuts" auf das Wort "Disabled", um die Option zum Festlegen einer neuen Tastenkombination zu erhalten.
Hinweis: Sie können, wenn Sie möchten, etwas anderes als das Standardprogramm des Programms verwenden. In gewissem Sinne eine "Neuabbildung" für Tastenbelegungen, die, abhängig von dem Programm, das Sie verwenden, sonst außerhalb Ihrer Kontrolle wäre.

Triff die Combo, die du ausgewählt hast, und höre die Magie.

Ubuntu Keyboard

Unter Ubuntu wird das Programm, das die globalen Hotkeys einstellt, einfach "Keyboard" genannt.

Wechseln Sie zur Registerkarte "Shortcuts" und wählen Sie "Custom Shortcuts".

Klicken Sie auf das Pluszeichen, um eine Verknüpfung hinzuzufügen. Geben Sie ihm einen Namen und geben Sie unter "Befehl" den vollständigen Pfad zu einem der oben erstellten Skripte ein. Wiederholen Sie den Vorgang für das zweite Skript.
Klicken Sie nun auf das Wort "Disabled", um die Option zum Festlegen einer neuen Tastenkombination zu erhalten.

Hinweis: Wenn Sie die Notiz aus dem Mint-Bereich wiederholen, können Sie, falls Sie dies wünschen, etwas anderes als das Standardprogramm des Programms verwenden. In gewissem Sinne eine "Neuabbildung" für Tastenbelegungen, die, abhängig von dem Programm, das Sie verwenden, sonst außerhalb Ihrer Kontrolle wäre.

Anmerkungen des Autors

Jedes Mal, wenn ich ernsthaft über den Wechsel zu Linux nachgedacht habe, war dieses Problem der erste auf meiner Liste von Problemen. Es ist nicht so, dass Linux keine Probleme hat, aber das war die wirkliche Hürde für mich. Ich habe es immer wieder versucht, Freunde / Leute auf dem Feld gefragt und es sogar zu einer Prämie gemacht. .. Ich bin froh, dass diese Saga vorbei ist und dass meine Seele endlich Ruhe finden kann.
Es ist meine Hoffnung, dass ich jemandem da draußen geholfen habe, nicht durch die gleiche Tortur gehen zu müssen.

Doc Brown: Ich brauchte fast dreißig Jahre und mein ganzes Familienvermögen, um die Vision dieses Tages zu verwirklichen. Mein Gott, ist es so lange her?