>&amarok; bruger tastaturgenveje ligesom de fleste andre programmer. Nedenfor er der en liste af disse genveje og deres respektive handlinger. De globale genveje kan indstilles ved at højreklikke i afspillervinduet og vælge <guimenuitem
>Indstil globale genveje...</guimenuitem
> &amarok;'s genveje kan indstilles ved at højreklikke i afspillerevinduet og vælge <guimenuitem
>Indstil genveje...</guimenuitem
></para>
<tip
><para
>Du kan knytte dine multimedie-taster til at virke som genveje for &amarok; og derved gøre dit tastatur til et kontrolcenter for &amarok;.</para
></tip>
<para
>De globale genveje er:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Spil</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Pause</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Stop</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Næste spor</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Forrige spor</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Højere lydstyrke</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Lavere lydstyrke</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Søg fremad</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Søg tilbage</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Tilføj medie</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Slå spilleliste til og fra</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>Vis OSD</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Slå lyd fra</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>&amarok;'s genveje er:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopiér</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>KP_Enter</keycap
></keycombo
></entry>
<entry
>Gå til nuværende</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Sæt markerede spor i kø</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Afslut</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Shift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Annullér fortryd</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Gem spilleliste</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Markér alle</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Vis menulinje</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Bland</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Fortryd</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Spilleliste-browserens genveje er:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycap
>Mellemrum</keycap
></entry>
<entry
>Indlæs spilleliste</entry>
</row>
<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Omdøb spilleliste</entry>
</row>
<row>
<entry
><keycap
>Backspace</keycap
></entry>
<entry
>Fjern spilleliste</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="the-dcop-interface">
<title
>DCOP-Grænsefladen</title>
<para
>Amarok's DCOP-grænseflade giver dig en nem måde at kontrollere Amarok med dine hjemmelavede scripter.</para>
<para
>DCOP-grænsefladen for Amarok har mange generiske kald der kan findes i andre af KDE's programmer. Dette afsnit er opdelt i seks tabeller og er beregnet til at beskrive DCOP-kald for samling, sammenhængsbrowser, afspiller, spilleliste, spillelistebrowser og scripter. Et eksempel på <quote
>pause</quote
> dcop-kaldet ville se sådan ud:</para>
<para
><prompt
>%</prompt
>dcop amarok player pause</para>
<sect2 id="dcop-collection">
<title
>dcop amarok-samling</title>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
>int totalAlbums()</entry>
<entry
>Returnerer det totale antal albummer i samlingen.</entry>
</row>
<row>
<entry
>int totalArtists()</entry>
<entry
>Returnerer det totale antal artister i samlingen.</entry>
</row>
<row>
<entry
>int totalCompilations()</entry>
<entry
>Returnerer det totale antal samlingsalbummer i samlingen.</entry>
</row>
<row>
<entry
>int totalGenres()</entry>
<entry
>Returnerer det totale antal genrer i samlingen.</entry>
</row>
<row>
<entry
>int totalTracks()</entry>
<entry
>Returnerer det totale antal spor i samlingen.</entry>
</row>
<row>
<entry
>QString query( QString sql)</entry>
<entry
>Sender en forespørgsel til databasen via SQL.</entry>
</row>
<row>
<entry
>QStringList similarArtists( int artister )</entry>
<entry
>Returnerer lignende artister som det nuværende spor, begrænset til antal givet af artister.</entry>
>Returnerer værdien af en indstillingsindgang fra AmarokConfig for angiven nøgle.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="cmd-line-options">
<title
>Kommandolinje-tilvalg</title>
<para
>Amarok understøtter brug af de sædvanlige Qt- og KDE-kommandolinjeflag. Amarok har også sine egne programspecifikke flag.</para>
<para
>Qt og kde flag:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tilvalg</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
>--help</entry>
<entry
>Vis hjælp om flag.</entry>
</row>
<row>
<entry
>--help-qt</entry>
<entry
>Vis Qt-specifikke flag.</entry>
</row>
<row>
<entry
>--help-kde</entry>
<entry
>Vis KDE-specifikke flag.</entry>
</row>
<row>
<entry
>--help-all</entry>
<entry
>is alle flag.</entry>
</row>
<row>
<entry
>--author</entry>
<entry
>Vis udviklerinformation.</entry>
</row>
<row>
<entry
>-v, --version</entry>
<entry
>Vis versionsinformation.</entry>
</row>
<row>
<entry
>--license</entry>
<entry
>Vis licensinformation.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Amarok-flag:</para>
<note
><para
>amarok's flag er designet til at blive brugt mens Amarok kører.</para
></note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Tilvalg</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>
<row>
<entry
>-r, --previous</entry>
<entry
>Spring over forrige spor på spillelisten.</entry>
</row>
<row>
<entry
>-p, --play</entry>
<entry
>Start med af spille den nuværende spilleliste.</entry>
</row>
<row>
<entry
>-s, --stop</entry>
<entry
>Stop afspilning.</entry>
</row>
<row>
<entry
>--pause</entry>
<entry
>Hold pause i afspilning.</entry>
</row>
<row>
<entry
>-f, --next</entry>
<entry
>Spring over det næste spor på spillelisten.</entry>
</row>
<row>
<entry
>-a, --append</entry>
<entry
>Vedlæg filer/URL'er i spillelisten.</entry>
</row>
<row>
<entry
>-e, --enqueue</entry>
<entry
>Se append, tilgængelig for bagudkompatibilitet.</entry>
</row>
<row>
<entry
>--queue</entry>
<entry
>Sætter filer/URL'er i kø efter det spor der afspilles nu.</entry>
</row>
<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Slå spillelistens vindue til og fra.</entry>
</row>
<row>
<entry
>--wizard</entry>
<entry
>Start førstekørselsguide.</entry>
</row>
<row>
<entry
>--engine "navn"</entry>
<entry
>Start &amarok; med "navn"-motoren.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="script-writing">
<title
>Skrive scripter</title>
<para
>At skrive scripter tillader dig nemt at udvide &amarok; uden at ændre den egentlige kodebase. Scripter ligner plugin, men i stedet for en særlig programmeringsgrænseflade bruger de &amarok;s DCOP-grænseflade til kommunikation. Det gør det muligt at skrive scripter i næsten hvilket som helst programsprog, såsom Ruby, Python eller PHP. Du kan ikke kun oprette scripter med klassiske scriptsprog, men også med kompilerede sprog såsom C++ eller almindelig C. Desuden kan &amarok; underrette scripter om særlige begivenheder og få dem til at reagere i overensstemmelse med dem. Systemet med underretninger forklares senere i afsnittet.</para>
<sect2 id="script-bindings">
<title
>Bindinger</title>
<para
>Det er muligt at skrive enkle scripter som ikke kræver indblanding af brugeren, og det er også muligt at oprette scripter med bekvemme grafiske grænseflader som fungerer som små program i sig selv. For programmering af den grafiske grænseflade kan en af de mange bindinger som KDE sørger for bruges, for eksempel RubyQt, en binding til Qt-biblioteket for Ruby. Det er dog værd at notere at ikke alle brugere har installeret alle tilgængelige bindinger. Hvis du bestemmer dig for at bruge en binding, så forsøg at bruge en af dem som er relativt udbredte (f.eks. RubyQt eller PyQt).</para>
<para
>For at give nogen tilbagemelding når et script mislykkes at køre på grund af en afhængighed som mangler, skal du kontrollere i scriptet om modulet du vil inkludere virkelig findes. Hvis afhængigheder mangler, bør du fange fejlen og vise en informationsdialog med kommandolinjeværktøjet "kdialog", så brugeren får rede på hvorfor scriptet mislykkes at køre.</para>
<para
>Følgende eksempel viser hvordan en afhængighed som mangler kan fanges i Ruby:</para>
>&amarok; sørger for skabelonscripter for flere sprog i mappen <filename class="directory"
>scripts/templates/</filename
>. Du kan bruge disse scripter som en basis for dine egne, og udvide dem med funktioner du behøver. Du vil bemærke at det i virkeligheden er ganske ligetil at skrive scripter. Hvis du for eksempel véd en del om hvordan man programmerer i Python, tager det ikke lang tid at oprette dit eget script.</para>
</sect2>
<sect2 id="script-controlling-amarok">
<title
>Kontrollér &amarok; med DCOP</title>
<para
>Scripter kan styre Amarok ved at kalde visse af dets DCOP-funktioner. Den enkleste måde at udføre en DCOP-funktion er ved at bruge kommandolinjeværktøjet "dcop", som indgår i alle distributioner af KDE.</para>
<para
>Her er et eksempel på hvordan hovedlydstyrken øges:</para>
<programlisting
>dcop amarok player volumeUp</programlisting>
<para
>De fleste scriptsprog tillader at eksterne programmer køres, med en funktion såsom exec(). På den måde kan værktøjet "dcop" nemt kaldes. Her er et enkelt eksempel i Python:</para>
<programlisting
>import os
os.system("dcop amarok player volumeDown")
</programlisting>
</sect2>
<sect2 id="script-notifications">
<title
>Underretninger</title>
<para
>&amarok; sender underretninger til alle scripter som kører ved at skrive strenge til deres standardindtastning. Scripterne bør derfor hele tiden overvåge standardindtastningen og reagere på passende måde på hver af de mulige begivenheder. Scripter kan også vælge at ignorere alle begivenheder de ikke har nogen nytte af.</para>
<para
>Følgende underretninger sendes af &amarok;:</para>
<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Fortæller scriptet at dets indstillingsdialog skal vises. Scriptet
skal håndtere lagring og indlæsning af indstillingstilvalg selv.
Når et script startes, indstiller Amarok dets arbejdsmappe til mappen
hvor al data skal opbevares.
</programlisting>
<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Signalerer en ændring af grænsefladens tilstand.
</programlisting>
<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Signalerer start af et nyt spor. Scriptet kan derefter bruge DCOP-funktioner
til at spørge efter yderligere information om sporet, f.eks. metadata og længde.
</programlisting>
<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>ny-volym</arg
></cmdsynopsis>
Signalerer en ændring af hovedlydstyrken. Lydstyrken er et heltal med
intervallet 0 - 100.
</programlisting>
<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>undermenu objektnavn søgestier</arg
></cmdsynopsis>
Returnerer søgestier til markerede filer i spillelisten når det egne tilvalg
i spillelistens sammenhængsafhængige menu klikkes. Undermenuen og objektnavnet returneres
også i identifieringsformål i tilfældet hvor et script lytter efter flere underretninger.
Brug DCOP-kaldet 'dcop amarok script addCustomMenuItem( undermenu objektnavn )'
til at indsætte et objekt i den sammenhængsafhængige menu. Anvend
til at fjerne et objekt fra den sammenhængsafhængige menu.
</programlisting>
</sect2>
<sect2 id="script-termination">
<title
>Afslutning af script</title>
<para
>Inden &amarok; afsluttes, eller når brugeren stopper et script i scripthåndteringen, sender &amarok; signalet SIGTERM til scriptet. Signalet kan indfanges for at udføre oprensningsarbejde, såsom at gemme data eller indstillinger.</para>
</sect2>
<sect2 id="script-packaging">
<title
>Pakning</title>
<para
>Scripthåndteringen i &amarok; kan installere scriptpakker som brugeren har hentet ned fra en webserver. Pakker er blot sædvanlige arkiver (.tar), valgfrit komprimerede med bzip2 (.bz2). Vi anbefaler stærkt at bruge et filnavn såsom mit-script.amarokscript.tar.bz2, så brugeren læt kan identificere pakken som et script for Amarok.</para>
<note
><para
>&amarok; 1.3 accepterer kun scriptpakker med filendelsen amarokscript, det er altså bedre at bruge det lige fra begyndelsen.</para
></note>
<para
>Filens indhold skal være organiseret på følgende vis:</para>
<programlisting
>mit-script/
README
mit-script.py (kørbar fil)
en-modul.py
fil.data
...
</programlisting>
</sect2>
<sect2 id="script-permissions">
<title
>Filrettigheder</title>
<para
>Hovedscriptet skal have kørerettigheder (+x) indstillede,mens yderligere moduler som scriptet indlæser ikke skal have kørerettigheder. For at bevare filrettigheder i arkivet, skal du bruge tar med flaget -p.</para>