2Sep

Cum se leagă Global HotKeys la un program WINE în 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 de către djeucalyptus

Prezentare generală

Fiecare dintre cei care chiar a gândit la ideea de a trece la Linux, a întâmpinat probabil 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, cu toate acestea la finalizare am constatat rapid că tastele fierbinți folosite pentru declanșarea diferitelor acțiuni ale programului( citirea citirii, stoparea citirii etc.) nu au funcționat și că acesta este un lucru cunoscutproblema cu WINE.

Mă bucur să spun că, după eons de căutare, am găsit în sfârșit soluția sub forma unui utilitar GNU care poate manipula interfața X.org utilizând funcții native. Deși nu este singurul de acest fel, xdotool este cel care a fost cel mai ușor să lucreze și se afla deja în depozitele Ubuntu / Mint.

xdotool

Programul xdotool poate face numeroase sarcini legate de ferestre din CLI, cu care a spus că singurele două pe care le vom folosi sunt "căutare" și "cheie".Funcția de căutare caută numai o căutare pentru un 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ă.Instalarea

&configurare

Se presupune că ați instalat deja WINE și programul de care aveți nevoie sub el.În acest exemplu vom folosi Balabolka ca aplicație "Windows", deoarece este o replică freeware a programului original, 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 TTSReader sau 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) sub "Opțiuni" - & gt;„Setări“.

Accesați fila cu taste rapide și bifați caseta de selectare pentru "Utilizați taste 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.

Instalați xdotool prin lansarea:

sudo apt-get install xdotool

Legarea globală

Programul xdotool pe cont propriu nu ne ajută să se leagă global la tastele rapide, dar putem folosi sistemul de operare rapidă deja existent. Ceea ce vom face este să creați un script simplu care să folosească xdotool pentru a trimite apăsările de taste pe care le dăm programului Balabolka și să-l sunăm de la sistemul de operare rapidă a sistemelor de operare.

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 search --limit 1 - tot --pid $( pgrep balabolka) - nume Balabolka)"ctrl + alt + F7 "

Notă: Știu că acesta este un 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 pe 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 s-au întors deprogramul, limitând rezultatul acționează ca un formator 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.
  • Partea "xdotool key -window% WINDOW_ID%" ctrl + alt + F7 "", trimite tastatura dorită în fereastra ID obținută de părțile anterioare.

Faceți scripturile executabile.

Tastatură Linux Mint shortcuts

Sub Linux Mint, tastele rapide globale sunt setate în programul "Shortcuts Keyboard".

După ce a fost deschisă Faceți clic pe "Adăugați" pentru a crea o comandă rapidă nouă personalizată:

Dați-i un nume și sub "Command" dați calea completă la unul din scenariile create 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ă: Dacă doriți, puteți folosi 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 combo-ul pe care l-ați selectat și auziți magia.

Tastatura Ubuntu

Sub Ubuntu, programul care stabileste tastele rapide globale se numeste doar "tastatura".

Comutaț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 într-o recompensă. .. Sunt fericit că această saga sa terminat și că sufletul meu se poate odihni.
Sper că am ajutat pe cineva acolo să nu treacă prin aceeași încercare.

Doc Brown: Mi-a luat aproape treizeci de ani și întreaga mea avere de familie pentru a realiza viziunea acelei zile. Dumnezeule, a fost așa de mult?