Hjemmeside » hvordan » Slik binder Global HotKeys til et WINE-program under Linux

    Slik binder Global HotKeys til et WINE-program under Linux

    Har du noen gang installert et Windows-program i Linux under WINE, bare for å oppdage at det ikke binder systembrede hurtigtaster lenger? HTG har det arbeidet du har latt etter.

    Bilde av djeucalyptus

    Oversikt

    Alle som selv har tenkt på ideen om å bytte til Linux, har sannsynligvis svært raskt støtt på problemet at det er denne Windows-appen du trenger å fungere. Vi har allerede vist deg at du kan oppnå dette ved hjelp av WINE.

    For denne forfatteren var søknaden en tekst-til-tale-applikasjon som benytter Microsoft SAPI4-motoren. Installering av programmet under WINE var en bris, men etter ferdigstillelse har jeg raskt funnet ut at hurtignøklene som brukes til å utløse de forskjellige handlinger av programmet (begynner å lese, stoppe lesing, osv.) Ikke fungerte, og at dette er kjent problem med vin.

    Jeg er glad for å si at etter eons of searching, har jeg endelig funnet løsningen i form av et GNU-verktøy som kan manipulere X.org-grensesnittet ved hjelp av innfødte funksjoner. Selv om det ikke er det eneste i sitt slag, er xdotool det som var det enkleste å få jobbe og var allerede i Ubuntu / Mint repositories.

    xdotool

    Xdotool programmet kan gjøre mange vindu relaterte oppgaver fra CLI, med det sagt, de eneste to vi skal bruke er "søk" og "nøkkel". Funksjonen "søk" gjør nettopp det, søker etter et vindu / s-ID i henhold til parametere du angir for det. Med "tasten" -funksjonen kan du simulere et tastetrykk til et vindu-ID.

    Installasjon og konfigurasjon

    Det antas at du allerede har installert WINE og programmet du trenger under det. I dette eksempelet bruker vi Balabolka som "Windows" -applikasjonen fordi det er en god freeware-kopi av det opprinnelige programmet jeg trengte denne løsningen for (2. talesenter).

    Hvis du har valgt å bruke Balabolka, må du aktivere hurtigtastens evne.
    Merk: Du vil kanskje installere enten TTSReader eller 2. talesenter selv i demomodus, slik at SAPI-stemmer blir installert. 

    Åpne programmet og gå til innstillinger (Shift + F6) under "Options" -> "Settings".

    Gå til hurtigtast-fanen og merk av i avkrysningsruten for "Bruk globale hurtigtaster".

    Klikk på OK.

    La det løpe i bakgrunnen slik at det kan gjøre jobben sin når vi henger tastetrykkene til den.

    Installer xdotool ved å utstede:

    sudo apt-get install xdotool

    Global binding

    Xdotool-programmet i seg selv hjelper oss ikke med å binde globalt til hurtigtaster, men vi kan bruke det allerede eksisterende operativsystemet for hurtigtaster. Hva vi skal gjøre er å lage et enkelt skript som bruker xdotool til å sende tastetrykkene vi ønsker å Balabolka-programmet og kalle det fra OS-hurtigtastsystemet.

    Opprett et skript kalt "start_read.sh" med følgende innhold:

    xdotool key --window $ (xdotool search --limit 1 --all --pid $ (pgrep balabolka) - navn Balabolka) "ctrl + alt + F9"

    Opprett et nytt skript denne gangen kalt "stop_read.sh" med følgende innhold:

    xdotool key --window $ (xdotool search --limit 1 --all --pid $ (pgrep balabolka) - navn Balabolka) "ctrl + alt + F7"

    Merk: Jeg vet at dette er en liner som ikke krever et skript, men programmet Mint / Ubuntu "Tastaturgenveier", samarbeidte ikke med å bare anrope det direkte. Hvis du vet hvordan du gjør det, vennligst del i kommentarene nedenfor.

    Bremsing denne kommandoen til komponentene, det vi ser er:

    • Den "-pid $ (pgrep balabolka)" delen, utfører en "pgrep" på programmet vi vil bruke for å fastslå sin prosess ID. Dette vil begrense xdotolen arkivert av "søk" til bare den PID.
    • Den "xdotool search -limit 1 -all ... -name Balabolka" -delen, innsnevrer søknaden om xdotool enda mer og begrenser de returnerte svarene til 1. Som i vårt tilfelle spiller det ingen rolle hvilken av vinduets ID-er som er returnert av program, begrenser resultatet fungerer som en formatter for "nøkkel" kommandoen. Du må kanskje finne at du må massere denne delen mer hvis det betyr noe for det programmet du bruker.
    • "Xdotool-nøkkelen -vind% WINDOW_ID%" ctrl + alt + F7 "" delen, sender ønsket tastetrykk til vinduetID som ble oppnådd av de forrige delene.

    Gjør skriptene kjørbare.

    Linux Mint Keyboard snarveier

    Under Linux Mint er de globale hurtigtaster satt i "Tastaturgenveier" -programmet.

    Når åpnet Klikk på "Legg til" for å opprette en ny egendefinert snarvei:

    Gi det et navn og under "Kommando" gi hele banen til et av skriptene vi har opprettet over. Gjenta prosessen for det andre skriptet.

    Nå, i "Snarveier" -kolonnen, klikk på "Disabled" ordet for å få muligheten til å sette en ny nøkkelkombinasjon.
    Merk: Du kan, hvis du ønsker, bruke noe annet enn programmets standard. På en måte å skape en "remap" til nøkkelbindinger som ellers vil være ute av kontroll, avhengig av hvilket program du bruker.

    Hit den kombinasjonsboksen du har valgt og høre den magiske.

    Ubuntu-tastatur

    Under Ubuntu blir programmet som setter de globale hurtigtasterne bare kalt "Tastatur".

    Bytt til "Snarveier" -fanen og velg "Tilpassede snarveier".

    Klikk på plustegnet for å legge til en snarvei. Gi det et navn og under "Kommando" gi hele banen til et av skriptene vi har opprettet over. Gjenta prosessen for det andre skriptet.
    Klikk nå på "Disabled" ordet for å få muligheten til å sette en ny nøkkelkombinasjon.

    Merk: Gjenta på notatet fra Mint-delen, kan du, hvis du ønsker, bruke noe annet enn programmets standard. På en måte å skape en "remap" til nøkkelbindinger som ellers vil være ute av kontroll, avhengig av hvilket program du bruker.

    Forfatterens notater

    Hver gang jeg seriøst vurdert å flytte til Linux, var dette problemet det første på listen over problemer. Det er ikke at Linux ikke har problemer, men dette var den virkelige hindringen, for meg. Jeg har prøvd gang på gang, spurte venner / folk i feltet og til og med gjort det til en god pris ... Jeg er glad denne historien er over, og at min sjel endelig kan hvile.
    Det er mitt håp at jeg har hjulpet noen der ute for ikke å gå gjennom samme prøvelse.


    Doc Brown: Det har tatt meg nesten tretti år og hele familien min for å realisere visjonen om den dagen. Min Gud, har det vært så lenge?