Come associare Global HotKeys a un programma WINE su Linux
Hai mai installato un programma Windows in Linux con WINE, solo per scoprire che non associa più hot-key a livello di sistema? HTG ha il lavoro che stai cercando.
Immagine di djeucalyptus
Panoramica
Chiunque abbia persino pensato all'idea di passare a Linux, probabilmente ha riscontrato molto rapidamente il problema che esiste questa app per Windows che è necessario FUNZIONARE. Ti abbiamo già mostrato che puoi farlo usando WINE.
Per questo autore, l'applicazione era un'applicazione di sintesi vocale che utilizza il motore Microsoft SAPI4. L'installazione del programma sotto WINE è stata semplicissima, tuttavia al termine ho scoperto che i tasti di scelta rapida utilizzati per attivare le varie azioni del programma (iniziare a leggere, interrompere la lettura, ecc.) Non funzionavano e che questo è noto problema con il vino.
Sono lieto di poter dire che, dopo eoni di ricerca, ho finalmente trovato la soluzione sotto forma di una utility GNU in grado di manipolare l'interfaccia X.org usando le funzioni native. Sebbene non sia l'unico nel suo genere, xdotool è quello che è stato il più facile da lavorare ed era già presente nei repository di Ubuntu / Mint.
xdotool
Il programma xdotool può eseguire molti compiti relativi alle finestre dalla CLI, con ciò detto, gli unici due che utilizzeremo sono "search" e "key". La funzione "cerca" fa proprio questo, cerca l'ID di una finestra in base ai parametri impostati per esso. La funzione "chiave" consente di simulare un tratto chiave con un ID di finestra.
Installazione e configurazione
Si presume che tu abbia già installato WINE e il programma che ti serve sotto. In questo esempio utilizzeremo Balabolka come applicazione "Windows" perché è una buona replica freeware del programma originale che mi serviva per questa soluzione (2 ° centro vocale).
Se hai scelto di usare Balabolka, devi attivare la sua abilità di tasti di scelta rapida.
Nota: è possibile installare TTSReader o 2nd speech center anche in modalità demo, in modo che vengano installate le voci SAPI.
Apri il programma e vai alle impostazioni (Shift + F6) sotto "Opzioni" -> "Impostazioni".
Vai alla scheda tasti di scelta rapida e seleziona la casella di controllo "Usa tasti di scelta rapida globali".
Clicca OK.
Lascialo in esecuzione in background in modo che possa fare il suo lavoro quando si agganciano i tasti su di esso.
Installa xdotool emettendo:
sudo apt-get install xdotool
Associazione globale
Il programma xdotool da solo non ci aiuta a legare globalmente a tasti di scelta rapida, ma possiamo usare il sistema di hotkey OS già esistente. Quello che faremo è creare un semplice script che utilizzi xdotool per inviare le sequenze di tasti che vogliamo al programma Balabolka e chiamarlo dal sistema di tasti di scelta rapida del sistema operativo.
Crea uno script chiamato "start_read.sh" con il seguente contenuto:
xdotool key --window $ (xdotool search --limit 1 --all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F9"
Crea un altro script questa volta chiamato "stop_read.sh" con il seguente contenuto:
xdotool key --window $ (xdotool search --limit 1 --all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F7"
Nota: so che si tratta di un one liner che non richiede uno script, ma il programma Mint / Ubuntu "Keyboard Shortcuts", non stava cooperando con il solo richiamo diretto. Se sai come farlo, si prega di condividere i commenti qui sotto.
Frenando questo comando ai suoi componenti, ciò che vediamo è:
- La parte "-pid $ (pgrep balabolka)" esegue un "pgrep" sul programma che vogliamo utilizzare per accertare il suo ID di processo. Questo restringerà il file xdotool archiviato di "ricerca" solo a quel PID.
- La parte "xdotool search -limit 1 -all ... -name Balabolka", restringe ulteriormente il campo di ricerca di xdotool e limita le risposte restituite a 1. Come nel nostro caso, non importa quale ID della finestra restituisce del programma, limitando il risultato funge da formattatore per il comando "chiave". Potresti scoprire che devi massaggiare questa parte di più se è importante per il programma che stai utilizzando.
- La parte "xdotool key -window% WINDOW_ID%" ctrl + alt + F7 "", invia il tasto desiderato al windowID che è stato ottenuto dalle parti precedenti.
Rendi eseguibili gli script.
Tastiera Linux Mint scorciatoie
Sotto Linux Mint, i tasti di scelta rapida globali sono impostati nel programma "Tasti di scelta rapida".
Una volta aperto Fare clic su "Aggiungi" per creare una nuova scorciatoia personalizzata:
Dagli un nome e sotto "Comando" fornisci il percorso completo di uno degli script che abbiamo creato sopra. Ripeti il processo per il secondo script.
Ora, nella colonna "Scorciatoie", fai clic sulla parola "Disabilitato" per ottenere l'opzione per impostare una nuova combinazione di tasti.
Nota: è possibile, se lo si desidera, utilizzare qualcosa di diverso dal valore predefinito del programma. In un certo senso, creare una "rimappatura" per i collegamenti chiave che, a seconda del programma che si usa, sarebbe altrimenti fuori dal vostro controllo.
Colpisci la combo che hai selezionato e ascolta la magia.
Tastiera di Ubuntu
Sotto Ubuntu, il programma che imposta i tasti di scelta rapida globali si chiama semplicemente "Tastiera".
Passa alla scheda "Scorciatoie" e seleziona "Scorciatoie personalizzate".
Fai clic sul segno più per aggiungere una scorciatoia. Dagli un nome e sotto "Comando" fornisci il percorso completo di uno degli script che abbiamo creato sopra. Ripeti il processo per il secondo script.
Ora fai clic sulla parola "Disabilitato" per ottenere l'opzione per impostare una nuova combinazione di tasti.
Nota: Ripetendo la nota dalla sezione Mint, puoi, se lo desideri, utilizzare qualcosa di diverso dal valore predefinito del programma. In un certo senso, creare una "rimappatura" per i collegamenti chiave che, a seconda del programma che si usa, sarebbe altrimenti fuori dal vostro controllo.
Note dell'autore
Ogni volta che ho preso seriamente in considerazione il passaggio a Linux, questo problema è stato il primo della mia lista di problemi. Non è che Linux non abbia problemi, ma questo è stato il vero ostacolo, per me. Ho provato più e più volte, ho chiesto ad amici / persone sul campo e ho persino trasformato un premio ... Sono felice che questa saga sia finita e che la mia anima possa finalmente riposare.
La mia speranza è che abbia aiutato qualcuno là fuori a non dover passare attraverso lo stesso calvario.
Doc Brown: mi ci sono voluti quasi trent'anni e tutta la mia fortuna di famiglia per realizzare la visione di quel giorno. Mio Dio, è passato così tanto tempo?