2Sep

Så här binds Global HotKeys till ett WINE-program under Linux

Har du någonsin installerat ett Windows-program i Linux under WINE, bara för att upptäcka att det inte binder systembrett snabbtangenter längre? HTG har det arbete du letat efter.

Bild av djeucalyptus

Översikt

Var och en som ens tänkt på idén att byta till Linux har antagligen mycket snabbt stött på problemet att det finns den här Windows-appen som du behöver fungera. Vi har redan visat att du kan uppnå detta med WINE.

För den här författaren var applikationen en text-till-tal-applikation som använder Microsoft SAPI4-motorn. Installationen av programmet under WINE var en bris, men efter avslutad tid har jag snabbt upptäckt att de snabbnycklar som används för att utlösa programmets olika åtgärder( börja läsa, sluta läsa osv.) Fungerade inte och att detta är en kändproblem med vin.

Jag är glad att säga att efter eons of search har jag äntligen hittat lösningen i form av ett GNU-verktyg som kan manipulera X.org-gränssnittet med hjälp av inbyggda funktioner. Medan inte det enda i sitt slag är xdotool den som var lättast att få jobba och var redan i Ubuntu / Mint-repositoriesna.

xdotool

Xdotool-programmet kan göra många fönsterrelaterade uppgifter från CLI, med det sagt, de enda två som vi ska använda är "sök" och "nyckel"."Sök" -funktionen gör just det, söker efter ett fönster / s-ID enligt parametrar du ställt in för det. Med "key" -funktionen kan du simulera en nyckel-stroke till ett fönster-ID.

Installation &konfiguration

Det antas att du redan har installerat WINE och det program du behöver under det. I det här exemplet använder vi Balabolka som "Windows" -programmet eftersom det är en bra freeware-replik av det ursprungliga programmet jag behövde denna lösning för( 2: e talcenter).

Om du har valt att använda Balabolka måste du aktivera dess snabbtangenter.
Obs! Du kanske vill installera antingen TTSReader eller 2nd speech center, även i demoläge, så att SAPI-rösterna kommer att installeras.

Öppna programmet och gå till inställningar( Shift + F6) under "Options" - & gt;"Inställningar".

Gå till snabbtangentfliken och markera kryssrutan för "Använd globala snabbtangenter".

Klicka på OK.

Låt det springa i bakgrunden så att det kan göra jobbet när vi hakar tangenttryckningarna till det.

Installera xdotool genom att utfärda:

sudo apt-get install xdotool

Global bindning

xdotool-programmet på egen hand hjälper oss inte att binda globalt till snabbtangenter, men vi kan använda det redan existerande operativsystemet för snabbtangentbord. Vad vi ska göra är att skapa ett enkelt skript som använder xdotool för att skicka de tangenttryckningar vi vill ha till Balabolka-programmet och kalla det från operativsystemet OS.

Skapa ett skript som heter "start_read.sh" med följande innehåll:

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

Skapa ett annat skript den här gången heter" stop_read.sh "med följande innehåll:

xdotool nyckel --vind $( xdotool search --limit 1 --all --pid $( pgrep balabolka) --namn Balabolka)"ctrl + alt + F7 "

Obs! Jag vet att det här är en en liner som inte kräver ett manus, men programmet Mint / Ubuntu" Keyboard Shortcuts ", samarbetade inte med att bara anropa det direkt. Om du vet hur du gör det, vänligen dela i kommentarerna nedan.

Bromsar det här kommandot till dess komponenter, det vi ser är:

  • Den "-pid $( pgrep balabolka)" delen utförs en "pgrep" på det program vi vill använda för att fastställa dess process ID.Detta kommer att begränsa xdotolen som är arkiverad av "sök" till bara den PID.
  • Den "xdotool search -limit 1 -all. .. -name Balabolka" delen, smalar in sökningen av xdotool ännu mer och begränsar de returnerade svaren till 1. Som i vårt fall spelar det ingen roll vilken av fönstret ID-erna returnerade avProgrammet, som begränsar resultatet, fungerar som en formaterare för "nyckel" -kommandot. Det kan hända att du behöver massera den här delen mer om det spelar roll för det program du använder.
  • "xdotool-tangenten -window% WINDOW_ID%" ctrl + alt + F7 "", skickar önskad knapptryckning till windowID som erhölls av tidigare delar.

Gör skriptna körbara.

Linux Mint-tangentbord genvägar

Under Linux Mint sätts de globala snabbtangenterna i "Tangentbordsgenvägar" -programmet.

En gång öppnad Klicka på "Lägg till" för att skapa en ny anpassad genväg:

Ge det ett namn och under "Kommando" ge hela sökvägen till ett av de skript som vi skapat ovan. Upprepa processen för det andra skriptet.

Klicka på "Disabled" ordet i "Shortcuts" kolumnen för att få möjlighet att ställa in en ny nyckelkombination.
Obs! Du kan, om du vill, använda något annat än programmets standard. På ett sätt som skapar en "remap" till nyckelbindningar som annars skulle vara oberoende av det program du använder.

Håll den kombinationsruta du har valt och hör den magiska.

Ubuntu-tangentbord

Under Ubuntu kallas programmet som sätter de globala snabbtangenterna bara "Keyboard".

Byt till fliken "Genvägar" och välj "Anpassade genvägar".

Klicka på plustecknet för att lägga till en genväg. Ge det ett namn och under "Kommando" ge hela sökvägen till ett av de skript som vi skapat ovan. Upprepa processen för det andra skriptet.
Klicka nu på "Disabled" ordet för att få möjlighet att ställa in en ny nyckelkombination.

Obs! Upprepa på anteckningen från Mint-sektionen kan du, om du vill, använda något annat än programmets standard. På ett sätt som skapar en "remap" till nyckelbindningar som annars skulle vara oberoende av det program du använder.

Författarens anteckningar

Varje gång jag seriöst övervägt att flytta till Linux var den här problemet den första på min lista över problem. Det är inte att Linux inte har problem, men det var den verkliga hinderen, för mig. Jag har provat gång på gång, frågade vänner / personer på fältet och till och med gjort det till en bounty. .. Jag är glad den här sagan är över och att min själ äntligen kan vila.
Det är mitt hopp att jag har hjälpt någon där ute för att inte behöva gå igenom samma prövning.

Doc Brown: Det har tagit mig nästan trettio år och hela familjen förmögenhet att förverkliga visionen av den dagen. Min Gud, har det varit så länge?