>&amarok; använder snabbtangenter som de flesta andra program. Nedan finns en lista över dessa snabbtangenter och deras olika funktioner. De globala snabbtangenterna kan ställas in genom att högerklicka i spelarfönstret och välja <guimenuitem
>Anpassa globala genvägar...</guimenuitem
> Snabbtangenterna i &amarok; kan anpassas genom att högerklicka i spelarfönstret och välja <guimenuitem
>Anpassa genvägar...</guimenuitem
></para>
<tip
><para
>Du kan tilldela multimediatangenter att fungera som snabbtangenter i &amarok;, för att låta tangentbordet styra &amarok;.</para
></tip>
<para
>De globala genvägarna är:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Spela</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Paus</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Stanna</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Nästa spår</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Föregående spår</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Numeriskt tangentbord +</keycap
></keycombo
></entry>
<entry
>Öka volym</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Numeriskt tangentbord -</keycap
></keycombo
></entry>
<entry
>Minska volym</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Skift</keycap
><keycap
>numeriskt +</keycap
></keycombo
></entry>
<entry
>Sök framåt</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Skift</keycap
><keycap
>numeriskt -</keycap
></keycombo
></entry>
<entry
>Sök bakåt</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Lägg till media</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Växla spellista</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>Aktivera skärmvisning</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Tysta volym</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Genvägarna i &amarok; är:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopiera</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Numeriskt tangentbord Enter</keycap
></keycombo
></entry>
<entry
>Gå till nuvarande</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Köa markerade spår</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Avsluta</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Skift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Gör om</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Spara spellista</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Markera alla</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Visa menyrad</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Blanda</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Ångra</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Spellistebläddrarens genvägar är:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycap
>Mellanslag</keycap
></entry>
<entry
>Ladda spellista</entry>
</row>
<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Byt namn på spellista</entry>
</row>
<row>
<entry
><keycap
>Backsteg</keycap
></entry>
<entry
>Ta bort spellista</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="the-dcop-interface">
<title
>DCOP-gränssnittet</title>
<para
>Amaroks DCOP-gränssnitt tillhandahåller ett enkelt sätt att styra Amarok med dina egna skript.</para>
<para
>DCOP-gränssnittet i Amarok har många generella funktioner som också finns i andra KDE-program. Det här avsnittet är uppdelat i sex tabeller och är avsett att beskriva DCOP-anrop för samlingen, sammanhangsbläddraren, spelaren, spellistan, spellistebläddraren och skript. Ett exempel på DCOP-funktionen <quote
>pause</quote
> skulle se ut så här:</para>
<para
><prompt
>%</prompt
>dcop amarok player pause</para>
<sect2 id="dcop-collection">
<title
>dcop amarok collection</title>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
>int totalAlbums()</entry>
<entry
>Returnerar det totala antalet album i samlingen.</entry>
</row>
<row>
<entry
>int totalArtists()</entry>
<entry
>Returnerar det totala antalet artister i samlingen.</entry>
</row>
<row>
<entry
>int totalCompilations()</entry>
<entry
>Returnerar det totala antalet samlingsalbum i samlingen.</entry>
</row>
<row>
<entry
>int totalGenres()</entry>
<entry
>Returnerar det totala antalet genrer i samlingen.</entry>
</row>
<row>
<entry
>int totalTracks()</entry>
<entry
>Returnerar det totala antalet spår i samlingen.</entry>
</row>
<row>
<entry
>QString query( QString sql)</entry>
<entry
>Skickar en fråga till databasen via SQL.</entry>
</row>
<row>
<entry
>QStringList similarArtists( int artister )</entry>
<entry
>Returnera liknande artister som det nuvarande spåret, begränsat till antal givet av artister.</entry>
>Returnerar värdet av en inställningspost från AmarokConfig för angiven nyckel.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="cmd-line-options">
<title
>Kommandoradsalternativ</title>
<para
>Amarok stöder användning av de vanliga Qt- och KDE-kommandoradsväljarna. Amarok har också sina egna programspecifika väljare.</para>
<para
>Väljarna för Qt och KDE:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Väljare</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
>--help</entry>
<entry
>Visa hjälp om väljare.</entry>
</row>
<row>
<entry
>--help-qt</entry>
<entry
>Visa Qt-specifika väljare.</entry>
</row>
<row>
<entry
>--help-kde</entry>
<entry
>Visa KDE-specifika väljare.</entry>
</row>
<row>
<entry
>--help-all</entry>
<entry
>Visa alla väljare.</entry>
</row>
<row>
<entry
>--author</entry>
<entry
>Visa information om upphovsman.</entry>
</row>
<row>
<entry
>-v, --version</entry>
<entry
>Visa versionsinformation.</entry>
</row>
<row>
<entry
>--license</entry>
<entry
>Visa licensinformation.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Amarok-väljare:</para>
<note
><para
>&amarok;-väljarna är avsedda att användas medan &amarok; kör.</para
></note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Väljare</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>
<row>
<entry
>-r, --previous</entry>
<entry
>Gå till föregående spår i spellistan.</entry>
</row>
<row>
<entry
>-p, --play</entry>
<entry
>Börja spela nuvarande spellista.</entry>
</row>
<row>
<entry
>-s, --stop</entry>
<entry
>Stoppa uppspelning.</entry>
</row>
<row>
<entry
>--pause</entry>
<entry
>Gör paus i uppspelning.</entry>
</row>
<row>
<entry
>-f, --next</entry>
<entry
>Gå till nästa spår i spellistan.</entry>
</row>
<row>
<entry
>-a, --append</entry>
<entry
>Lägg till filer eller webbadresser sist i spellistan.</entry>
</row>
<row>
<entry
>-e, --enqueue</entry>
<entry
>Se append, tillgänglig för att fungera ihop med tidigare versioner.</entry>
</row>
<row>
<entry
>--queue</entry>
<entry
>Köa filer eller webbadresser efter spåret som för närvarande spelas.</entry>
</row>
<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Växla spellistans fönster.</entry>
</row>
<row>
<entry
>--wizard</entry>
<entry
>Kör startguiden.</entry>
</row>
<row>
<entry
>--engine "namn"</entry>
<entry
>Starta &amarok; med gränssnittet "namn".</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="script-writing">
<title
>Skriva skript</title>
<para
>Att skriva skript låter dig enkelt utöka &amarok; utan att ändra den huvudsakliga kodbasen. Skript liknar insticksprogram, men istället för ett särskilt programmeringsgränssnitt använder de &amarok;s DCOP-gränssnitt för kommunikation. Det gör det möjligt att skriva skript i nästan vilket programspråk som helst, som Ruby, Python eller PHP. Du kan inte bara skapa skript med klassiska skriptspråk, utan också med kompilerade språk som C++ eller vanlig C. Dessutom kan &amarok; underrätta skript om särskilda händelser och få dem att reagera i enlighet med dem. Systemet med underrättelser förklaras senare i avsnittet.</para>
<sect2 id="script-bindings">
<title
>Kopplingar</title>
<para
>Det är möjligt att skriva enkla skript som inte kräver inblandning av användaren, och det är också möjligt att skapa skript med bekväma grafiska gränssnitt som fungerar som små program i sig själv. För programmering av det grafiska gränssnittet kan en av de många kopplingarna som KDE tillhandahåller användas, till exempel RubyQt, en koppling till Qt-biblioteket för Ruby. Det är dock värt att notera att inte alla användare har installerat alla tillgängliga kopplingar. Om du bestämmer dig för att använda en koppling, försök att använda någon av dem som är relativt spridda (t.ex. RubyQt eller PyQt).</para>
<para
>För att ge något gensvar när ett skript misslyckas köra på grund av ett beroende som saknas, kontrollera i skriptet om modulen du vill inkludera verkligen finns. Om beroendet saknas, bör du fånga felet och visa en informationsdialogruta med kommandoradverktyget "kdialog", så att användaren får reda på varför skriptet misslyckas med att köra.</para>
<para
>Följande exempel visar hur ett beroende som saknas kan fångas i Ruby:</para>
>&amarok; tillhandahåller mallskript för flera språk i katalogen <filename class="directory"
>scripts/templates/</filename
>. Du kan använda dessa skript som en bas för dina egna, och utöka dem med funktioner du behöver. Du kommer att märka att det i själva verket är ganska rättframt att skriva skript. Om du till exempel vet en del om hur man programmerar i Python, tar det inte lång tid att skapa ditt eget skript.</para>
</sect2>
<sect2 id="script-controlling-amarok">
<title
>Styra &amarok; med DCOP</title>
<para
>Skript kan styra Amarok genom att anropa vissa av dess DCOP-funktioner. Det enklaste sättet att utföra en DCOP-funktion är genom att använda kommandoradsverktyget "dcop", som ingår i alla distributioner av KDE.</para>
<para
>Här är ett exempel på hur huvudvolymen ökas:</para>
<programlisting
>dcop amarok player volumeUp</programlisting>
<para
>De flesta skriptspråk tillåter att yttre program körs, med en funktion som exec(). På så sätt kan verktyget "dcop" enkelt anropas. Här är ett enkelt exempel i Python:</para>
<programlisting
>import os
os.system("dcop amarok player volumeDown")
</programlisting>
</sect2>
<sect2 id="script-notifications">
<title
>Underrättelser</title>
<para
>&amarok; skickar underrättelser till alla skript som kör genom att skriva strängar till deras standardinmatning. Skripten bör därför hela tiden bevaka standardinmatningen och reagera på lämpligt sätt på var och en av de möjliga händelserna. Skript kan också välja att ignorera alla händelser de inte har någon nytta av.</para>
<para
>Följande underrättelser skickas av &amarok;:</para>
<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Talar om för skriptet att dess inställningsdialogruta ska visas. Skriptet
måste hantera lagring och inläsning av inställningsalternativ självt.
När ett skript startas, ställer Amarok in dess arbetskatalog till katalogen
där all data ska lagras.
</programlisting>
<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Signalerar en ändring i gränssnittets tillstånd.
</programlisting>
<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Signalerar start av ett nytt spår. Skriptet kan därefter använda DCOP-funktioner
för att fråga efter ytterligare information om spåret, t.ex. metadata och längd.
</programlisting>
<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>ny-volym</arg
></cmdsynopsis>
Signalerar en ändring av huvudvolymen. Volymen är ett heltal med
intervallet 0 - 100.
</programlisting>
<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>undermeny objektnamn sökvägar</arg
></cmdsynopsis>
Returnerar sökvägar till markerade filer i spellistan när det egna alternativet
i spellistans sammanhangsberoende meny klickas. Undermenyn och objektnamnet returneras
också i identifieringssyfte i fallet då ett skript lyssnar på flera underrättelser.
för att ta bort ett objekt från den sammanhangsberoende menyn.
</programlisting>
</sect2>
<sect2 id="script-termination">
<title
>Avslutning av skript</title>
<para
>Innan &amarok; avslutas, eller när användaren stoppar ett skript i skripthanteringen, skickar &amarok; signalen SIGTERM till skriptet. Signalen kan fångas för att utföra upprensningsarbete, som att spara data eller inställningar.</para>
</sect2>
<sect2 id="script-packaging">
<title
>Paketering</title>
<para
>Skripthanteringen i &amarok; kan installera skriptpaket som användaren har laddat ner från en webbserver. Paketen är bara normala arkiv (.tar), valfritt komprimerade med bzip2 (.bz2). Vi rekommenderar starkt att använda ett filnamn som mitt-skript.amarokscript.tar.bz2, så att användaren lätt kan identifiera paketet som ett skript för Amarok.</para>
<note
><para
>&amarok; 1.3 accepterar bara skriptpaket med filändelsen amarokscript, det är alltså bättre att använda det ända från början.</para
></note>
<para
>Arkivets innehåll måste vara organiserat på följande sätt:</para>
<programlisting
>mitt-skript/
README
mitt-skript.py (körbar fil)
en-modul.py
fil.data
...
</programlisting>
</sect2>
<sect2 id="script-permissions">
<title
>Filrättigheter</title>
<para
>Huvudskriptet måste har körrättigheter (+x) inställda,medan ytterligare moduler som skriptet laddar inte ska ha körrättigheter. För att bevara filrättigheter i arkivet, ska du använda tar med väljaren -p.</para>