If-Koubou

Cum se leagă Global HotKeys la un program WINE în Linux

Cum se leagă Global HotKeys la un program WINE în Linux (Cum să)

Ați instalat vreodată un program Windows în Linux sub WINE, doar pentru a descoperi că nu mai leagă cheile de acces la sistemul de operare? HTG are munca pe care o căutați.

Imagine de djeucalyptus

Prezentare generală

Oricine se gândește chiar 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 (începerea lecturii, oprirea citirii, etc) nu au funcționat și că acesta este un lucru cunoscut problema cu WINE.

Mă bucur să spun că după veacuri 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. 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 multe 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ă.

Instalare și 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 de taste rapide.
Notă: Poate doriți să instalați TTSReader sau 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) sub "Opțiuni" -> "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 emise:

sudo apt-get instala xdotool

Legarea globală

Programul xdotool pe cont propriu nu ne ajută să ne angajăm la nivel global la tastele rapide, dar putem folosi sistemul de taste rapide 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 search --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 doar 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 program "pgrep" pe programul pe care dorim să-l folosim pentru a stabili ID-ul procesului. Aceasta va îngusta fișierul xdotool al "căutării" doar la acel PID.
  • Căutarea "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, care limitează rezultatul 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ă la ID fereastră care a fost obținută de părțile anterioare.

Faceți scripturile executabile.

Linux Mint KeyboardComenzi 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ă: 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 combinația pe care ați selectat-o ​​și auziți magia.

Tastatura Ubuntu

Sub Ubuntu, programul care stabilește tastele 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 al programului. Î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ă se îndreaptă spre 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.
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. Dumnezeule, a fost așa de mult?