Jak powiązać globalne HotKey z programem WINE pod Linuksem
Czy kiedykolwiek instalowałeś program 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ą "search" i "key". Funkcja "szukaj" właśnie to wyszukuje identyfikator okna / s 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 Balabolki jako aplikacji "Windows", ponieważ jest to dobra bezpłatna replika oryginalnego programu Potrzebowałem tego rozwiązania dla (drugiego 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, dzięki czemu głosy SAPI zostaną zainstalowane.
Otwórz program i przejdź do ustawień (Shift + F6) w "Opcje" -> "Ustawienia".
Przejdź do karty skrótów i zaznacz pole wyboru "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 w globalnym powiązaniu z klawiszami skrótów, ale możemy użyć już istniejącego systemu skrótu systemu operacyjnego. To, co zrobimy, to stworzyć prosty skrypt wykorzystujący xdotool do wysłania naciśnięć klawiszy do programu Balabolka i wywołania go za pomocą skrótu systemu OS.
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 składnikó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. Jak w naszym przypadku nie ma znaczenia, które z okien ID zwróconych program, ograniczenie wyniku działa jak formater dla komendy "key". 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 Keyboard skróty
W mennicy systemu Linux globalne klawisze skrótów są ustawione w programie "Skróty klawiszowe".
Po otwarciu Kliknij "Dodaj", aby utworzyć nowy niestandardowy skrót:
Nadaj mu nazwę, a pod "Poleceniem" 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
Pod Ubuntu program, który ustawia globalne skróty klawiszowe, nazywa się właśnie "Keyboard".
Przejdź na kartę "Skróty" i wybierz "Skróty własne".
Kliknij znak plus, aby dodać skrót. Nadaj mu nazwę, a pod "Poleceniem" 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 Mennicy, 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 zrobiłem z tego nagrodę ... Cieszę się, że ta saga się skończyła i 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ę, aby zrealizować wizję tego dnia. Mój Boże, to było tak długo?