Hoe AutoKey te gebruiken om Linux-spellen te automatiseren

How Use Autokey Automate Linux Games



AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACRO-functionaliteit kunt u toetsaanslagen, muisklikken en de meeste delen van een desktopinterface automatiseren. Als u op zoek bent naar een alternatief voor het Windows-programma Autosneltoets , AutoKey is de beste optie die vandaag beschikbaar is voor Linux-gebruikers.

Merk op dat dit alleen een X11-applicatie is, Wayland-ondersteuning is op het moment van schrijven van dit artikel nog niet aan de applicatie toegevoegd.







Enkele van de AutoKey-functies zijn:



  • Ondersteunt afkortingen die automatisch een paar karakters kunnen uitbreiden tot een van uw veelgebruikte zinnen en tekstblokken.
  • Ondersteunt het verzenden van willekeurige toetsaanslagen en muisklikken.
  • Ondersteunt het specificeren van regels voor een specifiek toepassingsvenster.
  • Python 3-scripts kunnen worden gebruikt voor het schrijven van automatiseringsregels.
  • Mogelijkheid om vensterfuncties te besturen, zoals maximaliseren, vergroten of verkleinen en verplaatsen.
  • Wordt geleverd met een set vooraf geconfigureerde voorbeelden voor eenvoudiger scripten.
  • Mogelijkheid om aangepaste menu-pop-ups weer te geven met een lijst met keuzes.
  • Mogelijkheid om toetsaanslagen en muisklikken op te nemen.
  • Mogelijkheid om sneltoetsen in te stellen zonder modificatietoetsen.
  • Automatiseringsscripts zijn overdraagbaar en kunnen eenvoudig worden gedeeld met andere gebruikers.

Deze gids laat u enkele AutoKey-voorbeelden zien die handig zijn voor Linux-gamers. Laten we om te beginnen Autokey Ubuntu-pakketten installeren vanaf de GitHub-pagina. Download de onderstaande bestanden van hier



  • autokey-common_x.xx.x-x_all.deb
  • autokey-gtk_x.xx.x-x_all.deb of autokey-qt_x.xx.x-x_all.deb (slechts één downloaden)

Voer na het downloaden van de bestanden de volgende opdrachten in volgorde uit:





$sudogeschiktinstalleren./autokey-common_0.95.8-0_all.deb
$sudogeschiktinstalleren./autokey-gtk_0.95.8-0_all.deb

Het is gebruikelijk om veel pc-games te zien die de sleutel gebruiken om snel op te slaan en om snel te laden. Veel andere pc-games, vooral consolepoorten, hebben echter een vervelende manier om games op te slaan waarbij je door meerdere menu-opties moet navigeren. Hier is een snelle mockup die ik heb getekend die dit illustreert (excuseer mijn tekenvaardigheden):



Het spel wil dat je op de toets drukt om het spel te pauzeren, dan op de pijltoets, dan op de toets om het spel op te slaan, gevolgd door nogmaals op de toets om terug te keren naar het spel. Dit hele proces kan eenvoudig worden geautomatiseerd en aan de sleutel worden toegewezen met behulp van AutoKey. Bekijk de scriptcode hieronder:

importerentijd
toetsenbord.send_key('')
tijd.slaap(0,25)
toetsenbord.send_key('')
tijd.slaap(0,25)
toetsenbord.send_key('')
tijd.slaap(0,25)
toetsenbord.send_key('')

Om dit script aan AutoKey toe te voegen, start u de app en klikt u vervolgens op een zichtbare map of klikt u op een door u gemaakte aangepaste map om deze te markeren. Klik op Bestand > Nieuw > Script menu-optie om een ​​nieuw script in die map te maken, zoals weergegeven in de onderstaande schermafbeelding:

Hernoem dit script naar Quicksave en plaats de bovenstaande code erin. Klik vervolgens onderaan op de sneltoetsknop, zoals weergegeven in de onderstaande schermafbeelding:

Klik in het volgende scherm op de knop Druk om in te stellen en druk vervolgens op de toets om het aan het script toe te wijzen.

Toets:(Geen)verandert in Sleutel:<f5>.

Klik op OK en druk op om het script op te slaan. Onthoud altijd om het script op te slaan, anders wordt er niets uitgevoerd wanneer u op de toegewezen sneltoets drukt.

Quicksave keymapping is nu klaar voor gebruik. De volgende keer dat u op een toets drukt, wordt een reeks toetsaanslagen in volgorde uitgevoerd.

Houd er rekening mee dat we de functionaliteit van de sleutel wereldwijd hebben gewijzigd in het hele besturingssysteem, zolang AutoKey actief is en is gekoppeld aan het systeemvak. Om het te beperken tot een bepaald venster of toepassing, moet u vensterregels specificeren door onderaan op de knop Vensterfilter te klikken.

U kunt hetzelfde script hierboven gebruiken om ook een script te maken voor snel laden. U hoeft alleen de regel voor de pijltoets te verwijderen en vervolgens het script aan de toets toe te wijzen.

Als u op zoek bent naar de juiste sleutelnamen om te gebruiken in AutoKey Python 3-scripts, vindt u een lijst met alle speciale sleutelcodes die in AutoKey kunnen worden gebruikt hier . Elke sleutel die niet op de bovenstaande pagina wordt genoemd, kan worden ingevoegd met enkele of dubbele aanhalingstekens. Voorbeeld: keyboard.send_key(‘5’), keyboard.send_key(‘p’) enzovoort.

Voorbeeld 2: Drink twee gezondheidsdrankjes achter elkaar in een rollenspel

Ervan uitgaande dat de sneltoets om gezondheidsdrank in je spel te drinken is, zou het script zijn:

toetsenbord.send_key('H',herhalen=2)

De waarde van de herhaalvariabele kan ook worden gewijzigd in een ander getal. U kunt de stappen in het eerste voorbeeld volgen om het script toe te wijzen aan uw gewenste sneltoets.

Voorbeeld 3: Burst-modus voor geweer in een schietspel

Met behulp van de onderstaande code kun je de sleutel toewijzen om driemaal achter elkaar met een pistool te schieten. De originele manier om in het spel te schieten is door eenmaal met de linkermuisknop te klikken.

# muisknoppen: links=1, midden=2, rechts=3
mouse.click_relative_self(0,0,1)
mouse.click_relative_self(0,0,1)
mouse.click_relative_self(0,0,1)

Het bovenstaande script voert de linkermuisklik drie keer achter elkaar uit. Extra instructies kunnen worden toegevoegd als u meer dan drie keer met de linkermuisknop wilt klikken.

U kunt de stappen in het eerste voorbeeld volgen om het script aan de sneltoets toe te wijzen.

Voorbeeld 4: Maak een aangepast spelmenu / Verander een realtime spel in een beurtgebaseerd spel

Met behulp van de lijstmenufunctionaliteit van AutoKey zullen we een menu tonen als een overlay bovenop een lopend spel. Dit menu zal de focus van het spel stelen en het teruggeven nadat een muisklik op een van de menu-items is uitgevoerd. Zodra de focus is teruggekeerd, wordt een geautomatiseerde toetsaanslag uitgevoerd die een functie in het spel oproept.

Kijk eens naar deze foto:

In de map GameMenu heb ik een submap gemaakt met de naam Show. Zowel de GameMenu- als de Show-map hebben onderliggende items. Hier is de code die ik in elk kinditem heb geplaatst:

  • Inventaris: keyboard.send_key(‘i’)
  • Kaart: keyboard.send_key(‘m’)
  • Terug naar het spel: keyboard.send_key(‘’)
  • Schakel over naar Assault Rifle: keyboard.send_key(‘2’)
  • Schakel over naar SMG: keyboard.send_key(‘1’)

Hier is de map GameMenu toegewezen aan de sleutel en dit is hoe het eruit ziet in een lopend spel:

Elk menu-item heeft een prefix voor het label. U kunt elk menu-item oproepen door op de bijbehorende cijfertoets op uw toetsenbord te drukken. Als u hier bijvoorbeeld op de toets drukt, schakelt het pistool over naar het aanvalsgeweer.

Een kleine GIF-demo van dit voorbeeld (klik op de afbeelding of klik met de rechtermuisknop en open de GIF in een nieuw tabblad als de animatie hieronder stopt):

Deze methode werkt mogelijk niet met alle games, afhankelijk van de manier waarop ze met vensters en weergave op volledig scherm omgaan. Sommige games pauzeren niet wanneer de focus wordt gestolen, terwijl andere dat wel doen. Als het spel pauzeert wanneer de focus verloren is, heb je in wezen een realtime spel omgezet in een turn-based spel met behulp van dit AutoKey-script.

Dit voorbeeld werkt per geval met games. Tijdens mijn tests heb ik echter behoorlijk goede resultaten behaald met zowel native als Steam Proton / Wine-games.

Conclusie

Alle hier genoemde voorbeelden zijn eenvoudig, voornamelijk gericht op Linux-gamers. Ze dekken slechts een deel van de krachtige API van AutoKey. AutoKey kan een groot deel van uw workflow automatiseren met behulp van de scriptfuncties voor alledaagse of complexe software. Nog enkele voorbeelden zijn beschikbaar in de officiële documentatie van de applicatie.