Cum de a lega Global HotKeys la un program WINE sub Linux
Ați instalat vreodată un program Windows în Linux sub WINE, doar pentru a descoperi că nu mai leagă cheile de la distanță? HTG are munca pe care o căutați.
Imagine prin djeucalipt
Prezentare generală
Oricine se gândește chiar la ideea trecerii la Linux, probabil că a întâmpinat foarte repede problema că există o aplicație Windows pe care trebuie să o utilizați. V-am arătat deja că puteți realiza acest lucru utilizând WINE.
Pentru acest scriitor, aplicația a fost o aplicație Text-To-Speech care utilizează motorul Microsoft SAPI4. Instalarea programului sub WINE a fost o briza, dar la finalizare am constatat rapid că tastele fierbinți folosite pentru declanșarea diferitelor acțiuni ale programului (citirea de la început, oprirea lecturii etc.) nu au funcționat și că acesta este un lucru cunoscut problema cu WINE.
Mă bucur să spun că, după eoni de căutare, am găsit soluția sub forma unui utilitar GNU care poate manipula interfața X.org utilizând funcții native. În timp ce nu este singurul de acest fel, xdotool este cel care a fost cel mai ușor de lucrat și se afla deja în repozitoriile Ubuntu / Mint.
xdotool
Programul xdotool poate face mai multe sarcini legate de ferestre din CLI, cu care a spus că singurele două pe care le vom utiliza sunt "căutare" și "cheie". Funcția de căutare caută doar căutarea unui ID de fereastră în funcție de parametrii pe care îi stabiliți. Funcția "cheie" vă permite să simulați un curs-cheie la un ID de fereastră.
Instalare și configurare
Se presupune că ați instalat deja programul WINE și programul de care aveți nevoie în cadrul acestuia. În acest exemplu, vom folosi Balabolka ca aplicație "Windows", deoarece este o bună replică freeware a programului original pe care am avut nevoie de această soluție pentru (al doilea centru de vorbire).
Dacă ați optat să utilizați și Balabolka, trebuie să activați abilitățile sale rapide.
Notă: Poate doriți să instalați fie TTSReader, fie cel de-al doilea centru de vorbire, chiar și în modul demo, astfel încât vocile SAPI să fie instalate.
Deschideți programul și accesați setările (Shift + F6) în "Opțiuni" -> "Setări".
Accesați fila cu taste rapide și bifați caseta de selectare pentru "Utilizați chei rapide globale".
Faceți clic pe OK.
Lăsați-l să ruleze în fundal, pentru a-și putea face treaba când l-am atașat pe tastatură.
Instalați xdotool emise:
sudo apt-get instala xdotool
Legarea globală
Programul xdotool pe cont propriu nu ne ajută să se leagă global la tastele rapide, dar putem folosi sistemul de taste hotkey deja existent. Ceea ce vom face este să creați un script simplu care să folosească xdotool pentru a trimite intrările de taste dorite programului Balabolka și apelați-l din sistemul de taste hotkey OS.
Creați un script numit "start_read.sh" cu următorul conținut:
cheie xdotool - fereastră $ (xdotool căutare --limit 1 - toate - $ $ (pgrep balabolka) - nume Balabolka) "ctrl + alt + F9"
Creați un alt script numit "stop_read.sh" cu următorul conținut:
cheie xdotool - fereastră $ (xdotool căutare --limit 1 - toate - $ $ (pgrep balabolka) - nume Balabolka) "ctrl + alt + F7"
Notă: Știu că este vorba despre un singur liner care nu necesită un script, dar programul "Mint / Ubuntu" Shortcuts Keyboard "nu a cooperat cu invocarea directă. Dacă știți cum să faceți acest lucru, vă rugăm să distribuiți comentariile de mai jos.
Frânarea acestei comenzi la componentele sale, ceea ce vedem este:
- Partea "-pid $ (pgrep balabolka)" execută un "pgrep" pe programul pe care dorim să-l folosim pentru a-și stabili ID-ul procesului. Aceasta va îngusta fișierul xdotool al "căutării" doar la acel PID.
- Partea "xdotool search -limit 1 -all ... -name Balabolka", restrânge chiar mai mult fișierul de căutare al xdotool și limitează răspunsurile returnate la 1. Ca și în cazul nostru, nu contează care dintre ID-urile ferestrei au revenit program, limitarea rezultatului acționează ca un formatator pentru comanda "cheie". S-ar putea să găsiți că trebuie să masați această parte mai mult dacă este important pentru programul pe care îl utilizați.
- Cheia "xdotool -window% WINDOW_ID%" ctrl + alt + F7 "", trimite tastatura dorită în fereastra ID obținută de părțile anterioare.
Faceți scripturile executabile.
Linux Mint Keyboard Comenzi rapide
Sub Linux Mint, tastele rapide globale sunt setate în programul "Shortcuts Keyboard".
După deschidere Faceți clic pe "Adăugați" pentru a crea o comandă rapidă personalizată nouă:
Dați-i un nume și, sub "Command", dați calea completă la unul dintre scenariile pe care le-am creat mai sus. Repetați procesul pentru al doilea scenariu.
Acum, în coloana "Comenzi rapide", faceți clic pe cuvântul "Dezactivat" pentru a obține opțiunea de a seta o combinație nouă de taste.
Notă: Puteți, dacă doriți, să utilizați altceva decât programul implicit. Într-un sens creând un "remap" la legăturile cheie care, în funcție de programul pe care îl folosești, altfel ar fi în afara controlului tău.
Apăsați combinația pe care ați selectat-o și auziți magia.
Tastatura Ubuntu
În cadrul programului Ubuntu, programul care stabilește taste rapide globale se numește doar "tastatură".
Treceți la fila "Comenzi rapide" și selectați "Comenzi rapide personalizate".
Faceți clic pe semnul plus pentru a adăuga o comandă rapidă. Dați-i un nume și, sub "Command", dați calea completă la unul dintre scenariile pe care le-am creat mai sus. Repetați procesul pentru al doilea scenariu.
Acum faceți clic pe cuvântul "Dezactivat" pentru a obține opțiunea de a seta o combinație nouă de taste.
Notă: Repetând nota din secțiunea Ment, puteți utiliza, dacă doriți, ceva diferit de programul implicit. Într-un sens creând un "remap" la legăturile cheie care, în funcție de programul pe care îl folosești, altfel ar fi în afara controlului tău.
Notele autorului
De fiecare dată când am considerat serios că mă mut în Linux, această problemă a fost prima pe lista mea de probleme. Nu este faptul că Linux nu are probleme, dar acesta a fost un obstacol real pentru mine. Am încercat din când în când, i-am cerut prietenilor / oamenilor pe teren și chiar am făcut o recompensă ... Sunt fericit că această saga sa terminat și că sufletul meu poate să se odihnească în cele din urmă.
Speranța mea este că am ajutat pe cineva acolo să nu treacă prin aceeași încercare.
Doc Brown: Mi-a luat aproape treizeci de ani și toată averea mea de familie pentru a realiza viziunea acelei zile. Doamne, a fost atât de lung?