If-Koubou

Jak powiązać globalne HotKey z programem WINE pod Linuksem

Jak powiązać globalne HotKey z programem WINE pod Linuksem (Jak)

Czy kiedykolwiek instalowałeś system Windows w Linuksie pod WINE, tylko po to, aby odkryć, że nie wiąże się już z systemowymi skrótami klawiszowymi? HTG ma pracę, której szukałeś.

Zdjęcie: djeucalyptus

Przegląd

Każdy, kto nawet pomyślał o pomyśle przejścia na Linuksa, prawdopodobnie bardzo szybko napotkał problem, że istnieje ta jedna aplikacja Windows, którą POTRZEBUJESZ funkcjonować. Pokazaliśmy już, że możesz to zrobić za pomocą WINE.

Dla tego autora aplikacja była aplikacją Text-To-Speech, która wykorzystuje silnik Microsoft SAPI4. Zainstalowanie programu pod WINE było proste, jednak po jego zakończeniu szybko odkryłem, że klawisze skrótów używane do uruchamiania różnych działań programu (czytanie początkowe, zatrzymanie czytania itp.) Nie działały i że jest to znane problem z WINE.

Cieszę się, że po latach poszukiwań znalazłem rozwiązanie w postaci narzędzia GNU, które może manipulować interfejsem X.org przy użyciu natywnych funkcji. Choć nie jest to jedyny tego rodzaju, to xdotool jest najłatwiejszy do uzyskania i już znajduje się w repozytoriach Ubuntu / Mint.

xdotool

Program xdotool może wykonywać wiele zadań związanych z oknem z poziomu interfejsu CLI, z tym, że jedynymi dwoma, które będziemy wykorzystywać, są "szukaj" i "klucz". Funkcja "szukaj" właśnie to wyszukuje identyfikator okna zgodnie z ustawionymi dla niego parametrami. Funkcja "klucz" pozwala symulować naciśnięcie klawisza do identyfikatora okna.

Instalacja i konfiguracja

Zakłada się, że już zainstalowałeś WINE i program, którego potrzebujesz. W tym przykładzie użyjemy Balabolka jako aplikacji "Windows", ponieważ jest to dobra bezpłatna replika oryginalnego programu, dla którego potrzebowałem tego rozwiązania (drugie centrum mowy).

Jeśli zdecydowałeś się użyć także Balabolka, musisz aktywować jej klawisze skrótu.
Uwaga: Możesz zainstalować TTSReader lub drugie centrum mowy nawet w trybie demo, aby zainstalować głosy SAPI.

Otwórz program i przejdź do ustawień (Shift + F6) w "Opcje" -> "Ustawienia".

Przejdź do karty skrótów i zaznacz pole "Użyj globalnych skrótów klawiszowych".

Kliknij OK.

Pozostaw to w tle, aby mogło wykonać swoją pracę, gdy przechwycimy do niego naciśnięcia klawiszy.

Zainstaluj xdotool, wydając:

sudo apt-get install xdotool

Globalne powiązanie

Sam program xdotool nie pomaga nam globalnie wiązać skrótów klawiszowych, ale możemy użyć już istniejącego systemu skrótu systemu operacyjnego. To, co zrobimy, to stworzyć prosty skrypt wykorzystujący xdotool do przesłania naciśnięć klawiszy do programu Balabolka i wywołania go z systemu skrótu systemu operacyjnego.

Utwórz skrypt o nazwie "start_read.sh" z następującą treścią:

klucz xdotool --window $ (wyszukiwanie xdotool - limit 1 - all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F9"

Stwórz kolejny skrypt o nazwie "stop_read.sh" z następującą treścią:

klucz xdotool --window $ (wyszukiwanie xdotool - limit 1 - all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F7"

Uwaga: Wiem, że jest to jedna liniówka, która nie wymaga skryptu, ale program "Mint / Ubuntu" Skróty klawiaturowe nie współpracował z bezpośrednim wywoływaniem. Jeśli wiesz, jak to zrobić, podziel się poniższymi komentarzami.

Hamując to polecenie do jego komponentów, widzimy:

  • Część "-pid $ (pgrep balabolka)" uruchamia "pgrep" na programie, którego chcemy użyć, aby ustalić jego identyfikator procesu. Spowoduje to zawężenie zbioru xdotool "search" do właśnie tego PID.
  • Opcja "xdotool search -limit 1 -all ... -name Balabolka" zawęża pole wyszukiwania xdotool jeszcze bardziej i ogranicza zwrócone odpowiedzi do 1. Tak jak w naszym przypadku nie ma znaczenia, które z okien ID zwróconych program, ograniczenie wyniku działa jak formater dla komendy "klucz". Może się okazać, że musisz masować tę część bardziej, jeśli ma to znaczenie dla programu, którego używasz.
  • Klawisz "xdotool -window% WINDOW_ID%" ctrl + alt + F7 "" wysyła żądane naciśnięcie klawisza do windowID, który został uzyskany przez poprzednie części.

Spraw, aby skrypty były wykonywalne.

Linux Mint Keyboardskróty

Pod Mennicą Linuksową globalne skróty klawiszowe są ustawione w programie "Skróty klawiszowe".

Po otwarciu Kliknij "Dodaj", aby utworzyć nowy niestandardowy skrót:

Nadaj mu nazwę, a pod "Command" podaj pełną ścieżkę do jednego ze skryptów, które stworzyliśmy powyżej. Powtórz proces dla drugiego skryptu.

Teraz w kolumnie "Skróty" kliknij słowo "Wyłączone", aby uzyskać opcję ustawienia nowego kombinowania klawiszy.
Uwaga: Możesz, jeśli chcesz, użyć czegoś innego niż domyślny program. W pewnym sensie tworzenie "remap" do powiązań klawiszy, które w zależności od programu, którego używasz, w innym przypadku byłyby poza twoją kontrolą.

Uderz w wybraną kombinację i usłysz magię.

Klawiatura systemu Ubuntu

W Ubuntu program, który ustawia globalne skróty klawiszowe, jest nazywany "Klawiaturą".

Przejdź do zakładki "Skróty" i wybierz "Skróty własne".

Kliknij znak plus, aby dodać skrót. Nadaj mu nazwę, a pod "Command" podaj pełną ścieżkę do jednego ze skryptów, które stworzyliśmy powyżej. Powtórz proces dla drugiego skryptu.
Teraz kliknij słowo "Wyłączone", aby uzyskać opcję ustawienia nowego kombinowania klawiszy.

Uwaga: Powtarzając notatkę z sekcji Mennica, możesz, jeśli chcesz, użyć czegoś innego niż domyślny program. W pewnym sensie tworzenie "remap" do powiązań klawiszy, które w zależności od programu, którego używasz, w innym przypadku byłyby poza twoją kontrolą.

Uwagi autora

Za każdym razem, gdy poważnie rozważałem przejście na Linuksa, ten problem był pierwszym na mojej liście problemów. Nie chodzi o to, że Linux nie ma problemów, ale dla mnie to była prawdziwa przeszkoda. Próbowałem raz po raz, pytałem znajomych / ludzi w terenie, a nawet udało mi się zdobyć nagrodę ... Cieszę się, że ta saga się skończyła i że moja dusza wreszcie może odpocząć.
Mam nadzieję, że pomogłem komuś, aby nie musiała przejść przez tę samą próbę.

Doc Brown: Zajęło mi to prawie trzydzieści lat i całą rodzinną fortunę, by zrealizować wizję tego dnia. Mój Boże, czy to było tak długo?