• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 1 Hlas(ů) - 5 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Mapování tlačítek DO - tipy a triky
Pomůcka k testování DO

Množství DO, které mi prošly rukama a Kodi, pro které jsme je zprovozňoval, už je nemalé. Už před časem jsme si vytvořil jednoduchou pomůcku a když jsem se v posledních dnech tématu kolem DO a Kodi věnoval zvlášť intenzivně, trochu jsem onu pomůcku doladil. Co je jejím principem a obsahem?

Princip je jendoduchý. Je jím vytvořený mapovací soubo 99_keymap.xml, pak uživatelsky definované okno v modifikovaném skinu Estuary Custom_1199_Keymap.xml a nakonec doplnění možnosti spuštění testování z menu Kodi. Uživatelsky definované okno a doplnění možnosti spuštění testování, to jsou už jen takové třešničky na dortu. Zásadní je mapovací soubor. Mám ho vytvořený pro většinu známých tlačítek, pro které pro keyboard i remote existují v Kodi příslušné metakódy. Vynechal jsme ta zřejmá (písmena, i jjeich modifikace ctrl, alt, shift). V souboru se ale nemapují žádé funkce, pouze se zobrazí notitikace Kodi s příslušnou identifikací. V notifikaci se zobrazí nejen označení typu (keyboard nebo remote), ale i případný příznak longpress a pak metakód stiknutého tlačítka.

Vypadá to asi tako:
           

To, co je na tomto řešení nejdůležitější, to je vlastní mapovací soubor. Ostatní věci jsou už hodně závislé na vaší instalaci a jejich použití vyžadují hlubší znalosti. Proto je neuvádím. Ale mapovací soubor přikládám jak v textové formě tak i jako skutečný soubor, protože se dá (při rozumném použití) použít i bez toho zbytku.
 
Kód:
<?xml version="1.0" encoding="UTF-8"?>
            <!-- <xxx>Notification(Test/keyboard,xxx,500)</xxx> -->
            <!-- <xxx mod="longpress">Notification(Test/eyboard,[COLOR red]longpress[/COLOR] xxx,500)</xxx> -->

            <!-- <xxx>Notification(Test/remote,xxx,500)</xxx> -->
            <!-- <xxx mod="longpress">Notification(Test/remote,[COLOR red]longpress[/COLOR] xxx,500)</xxx> -->
<keymap> <!-- 99_keymap.xml Test mapping file - 2022-04-22 by JiRo -->
    <!-- <global> -->
        <!-- <keyboard> -->
            <!-- <key id="251">Notification(Global/keyboard,Id=251 red,500)</key> -->
        <!-- </keyboard> -->
    <!-- </global> -->
    <!-- <fullscreenlivetv> -->
        <!-- <keyboard> -->
            <!-- <key id="251">Notification(fullscreenlivetv/keyboard,Id=251 red,500)</key> -->
        <!-- </keyboard> -->
    <!-- </fullscreenlivetv> -->
    <window1199>
        <keyboard>
            <voicecommand>Notification(Test/keyboard,voicecommand,500)</voicecommand>

            <power>Notification(Test/keyboard,power,500)</power>
            <power mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] power,500)</power>
            <sleep>Notification(Test/keyboard,sleep,500)</sleep>
            <sleep mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] sleep,500)</sleep>

            <browser_back>Notification(Test/keyboard,browser_back,500)</browser_back>
            <browser_back mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_back,500)</browser_back>
            <browser_home>Notification(Test/keyboard,browser_home,500)</browser_home>
            <browser_home mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_home,500)</browser_home>
            <browser_forward>Notification(Test/keyboard,browser_forward,500)</browser_forward>>
            <browser_forward mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_forward,500)</browser_forward>>
            <browser_refresh>Notification(Test/keyboard,browser_refresh,500)</browser_refresh>
            <browser_refresh mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_refresh,500)</browser_refresh>
            <browser_stop>Notification(Test/keyboard,browser_stop,500)</browser_stop>
            <browser_stop mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_stop,500)</browser_stop>
            <browser_search>Notification(Test/keyboard,browser_search,500)</browser_search>
            <browser_search mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_search,500)</browser_search>
            <browser_favorites>Notification(Test/keyboard,browser_favorites,500)</browser_favorites>
            <browser_favorites mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] browser_favorites,500)</browser_favorites>

            <red>Notification(Test/keyboard,red,500)</red>
            <red mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] red,500)</red>
            <green>Notification(Test/keyboard,green,500)</green>
            <green mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] green,500)</green>
            <yellow>Notification(Test/keyboard,yellow,500)</yellow>
            <yellow mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] yellow,500)</yellow>
            <blue>Notification(Test/keyboard,blue,500)</blue>
            <blue mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] blue,500)</blue>

            <menu>Notification(Test/keyboard,menu,500)</menu>
            <menu mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] menu,500)</menu>
            <homepage>Notification(Test/keyboard,homepage,500)</homepage>
            <homepage mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] homepage,500)</homepage>
            <epg>Notification(Test/keyboard,epg,500)</epg>
            <epg mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] epg,500)</epg>

            <left>Notification(Test/keyboard,left,500)</left>
            <left mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] left,500)</left>
            <right>Notification(Test/keyboard,right,500)</right>
            <right mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] right,500)</right>
            <up>Notification(Test/keyboard,up,500)</up>
            <up mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] up,500)</up>
            <down>Notification(Test/keyboard,down,500)</down>
            <down mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] down,500)</down>

            <insert>Notification(Test/keyboard,insert,500)</insert>
            <insert mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] insert,500)</insert>
            <delete>Notification(Test/keyboard,delete,500)</delete>
            <delete mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] delete,500)</delete>

            <home>Notification(Test/keyboard,home,500)</home>
            <home mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] home,500)</home>
            <end>Notification(Test/keyboard,end,500)</end>
            <end mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] end,500)</end>

            <pageup>Notification(Test/keyboard,pageup,500)</pageup>
            <pageup mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] pageup,500)</pageup>
            <pagedown>Notification(Test/keyboard,pagedown,500)</pagedown>
            <pagedown mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] pagedown,500)</pagedown>

            <return>Notification(Test/keyboard,return,500)</return>
            <return mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] return,500)</return>
            <enter>Notification(Test/keyboard,enter,500)</enter>
            <enter mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] enter,500)</enter>
            <backspace>Notification(Test/keyboard,backspace,500)</backspace>
            <backspace mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] backspace,500)</backspace>
            <escape>Notification(Test/keyboard,escape,500)</escape>
            <escape mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] escape,500)</escape>
            <tab>Notification(Test/keyboard,tab,500)</tab>
            <tab mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] tab,500)</tab>
            
            <period>Notification(Test/keyboard,period,500)</period>
            <period mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] period,500)</period>
            <numpadperiod>Notification(Test/keyboard,numpadperiod,500)</numpadperiod>
            <numpadperiod mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadperiod,500)</numpadperiod>

            <volume_mute>Notification(Test/keyboard,volume_mute,500)</volume_mute>
            <volume_mute mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] volume_mute,500)</volume_mute>
            <volume_down>Notification(Test/keyboard,volume_down,500)</volume_down>
            <volume_down mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] volume_down,500)</volume_down>
            <volume_up>Notification(Test/keyboard,volume_up,500)</volume_up>
            <volume_up mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] volume_up,500)</volume_up>

            <next_track>Notification(Test/keyboard,next_track,500)</next_track>
            <next_track mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] next_track,500)</next_track>
            <prev_track>Notification(Test/keyboard,prev_track,500)</prev_track>
            <prev_track mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] prev_track,500)</prev_track>
            <stop>Notification(Test/keyboard,stop,500)</stop>
            <stop mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] stop,500)</stop>
            <play>Notification(Test/keyboard,play,500)</play>
            <play mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] play,500)</play>
            <pause>Notification(Test/keyboard,pause,500)</pause>
            <pause mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] pause,500)</pause>
            <play_pause>Notification(Test/keyboard,play_pause,500)</play_pause>
            <play_pause mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] play_pause,500)</play_pause>
            <fastforward>Notification(Test/keyboard,fastforward,500)</fastforward>
            <fastforward mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] fastforward,500)</fastforward>
            <rewind>Notification(Test/keyboard,rewind,500)</rewind>
            <rewind mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] rewind,500)</rewind>
            <record>Notification(Test/keyboard,record,500)</record>
            <record mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] record,500)</record>

            <zero>Notification(Test/keyboard,zero,500)</zero>
            <zero mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] zero,500)</zero>
            <one>Notification(Test/keyboard,one,500)</one>
            <one mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] one,500)</one>
            <two>Notification(Test/keyboard,two,500)</two>
            <two mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] two,500)</two>
            <three>Notification(Test/keyboard,three,500)</three>
            <three mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] three,500)</three>
            <four>Notification(Test/keyboard,four,500)</four>
            <four mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] four,500)</four>
            <five>Notification(Test/keyboard,five,500)</five>
            <five mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] five,500)</five>
            <six>Notification(Test/keyboard,six,500)</six>
            <six mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] six,500)</six>
            <seven>Notification(Test/keyboard,seven,500)</seven>
            <seven mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] seven,500)</seven>
            <eight>Notification(Test/keyboard,eight,500)</eight>
            <eight mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] eight,500)</eight>
            <nine>Notification(Test/keyboard,nine,500)</nine>
            <nine mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] nine,500)</nine>

            <numpadzero>Notification(Test/keyboard,numpadzero,500)</numpadzero>
            <numpadzero mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadzero,500)</numpadzero>
            <numpadone>Notification(Test/keyboard,numpadone,500)</numpadone>
            <numpadone mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadone,500)</numpadone>
            <numpadtwo>Notification(Test/keyboard,numpadtwo,500)</numpadtwo>
            <numpadtwo mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadtwo,500)</numpadtwo>
            <numpadthree>Notification(Test/keyboard,numpadthree,500)</numpadthree>
            <numpadthree mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadthree,500)</numpadthree>
            <numpadfour>Notification(Test/keyboard,numpadfour,500)</numpadfour>
            <numpadfour mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadfour,500)</numpadfour>
            <numpadfive>Notification(Test/keyboard,numpadfive,500)</numpadfive>
            <numpadfive mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadfive,500)</numpadfive>
            <numpadsix>Notification(Test/keyboard,numpadsix,500)</numpadsix>
            <numpadsix mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadsix,500)</numpadsix>
            <numpadseven>Notification(Test/keyboard,numpadseven,500)</numpadseven>
            <numpadseven mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadseven,500)</numpadseven>
            <numpadeight>Notification(Test/keyboard,numpadeight,500)</numpadeight>
            <numpadeight mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadeight,500)</numpadeight>
            <numpadnine>Notification(Test/keyboard,numpadnine,500)</numpadnine>
            <numpadnine mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] numpadnine,500)</numpadnine>

            <f1>Notification(Test/keyboard,f1,500)</f1>
            <f1 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f1,500)</f1>
            <f2>Notification(Test/keyboard,f2,500)</f2>
            <f2 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f2,500)</f2>
            <f3>Notification(Test/keyboard,f3,500)</f3>
            <f3 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f3,500)</f3>
            <f4>Notification(Test/keyboard,f4,500)</f4>
            <f4 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f4,500)</f4>
            <f5>Notification(Test/keyboard,f5,500)</f5>
            <f5 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f5,500)</f5>
            <f6>Notification(Test/keyboard,f6,500)</f6>
            <f6 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f6,500)</f6>
            <f7>Notification(Test/keyboard,f7,500)</f7>
            <f7 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f7,500)</f7>
            <f8>Notification(Test/keyboard,f8,500)</f8>
            <f8 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f8,500)</f8>
            <f9>Notification(Test/keyboard,f9,500)</f9>
            <f9 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f9,500)</f9>
            <f10>Notification(Test/keyboard,f10,500)</f10>
            <f10 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f10,500)</f10>
            <f11>Notification(Test/keyboard,f11,500)</f11>
            <f11 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f11,500)</f11>
            <f12>Notification(Test/keyboard,f12,500)</f12>
            <f12 mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] f12,500)</f12>

            <!-- <key id="251">Notification(Test/keyboard,Id=251 red,500)</key> -->
            <!-- <key id="251" mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] Id=251 red,500)</key> -->
            <!-- <key id="252">Notification(Test/keyboard,Id=252 green,500)</key> -->
            <!-- <key id="252" mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] Id=252 green,500)</key> -->
            <!-- <key id="253">Notification(Test/keyboard,Id=253 yellow,500)</key> -->
            <!-- <key id="253" mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] Id=253 yellow,500)</key> -->
            <!-- <key id="254">Notification(Test/keyboard,Id=254 blue,500)</key> -->
            <!-- <key id="254" mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] Id=254 blue,500)</key> -->

            <!-- <key id="249">Notification(Test/keyboard,Id=249 exit,500)</key> -->
            <!-- <key id="249" mod="longpress">Notification(Test/keyboard,[COLOR red]longpress[/COLOR] Id=249 exit,500)</key> -->
        </keyboard>
        <remote>
            <play>Notification(Test/remote,play,500)</play>
            <pause>Notification(Test/remote,pause,500)</pause>
            <stop>Notification(Test/remote,stop,500)</stop>
            <forward>Notification(Test/remote,forward,500)</forward>
            <reverse>Notification(Test/remote,reverse,500)</reverse>

            <left>Notification(Test/remote,left,500)</left>
            <right>Notification(Test/remote,right,500)</right>
            <up>Notification(Test/remote,up,500)</up>
            <down>Notification(Test/remote,down,500)</down>

            <select>Notification(Test/remote,select,500)</select>
            <enter>Notification(Test/remote,enter,500)</enter>
            <pageplus>Notification(Test/remote,pageplus,500)</pageplus>
            <pageminus>Notification(Test/remote,pageminus,500)</pageminus>
            <back>Notification(Test/remote,back,500)</back>
            <menu>Notification(Test/remote,menu,500)</menu>
            <contentsmenu>Notification(Test/remote,contentsmenu,500)</contentsmenu>
            <rootmenu>Notification(Test/remote,rootmenu,500)</rootmenu>
            <title>Notification(Test/remote,title,500)</title>
            <info>Notification(Test/remote,info,500)</info>
            
            <skipplus>Notification(Test/remote,skipplus,500)</skipplus>
            <skipminus>Notification(Test/remote,skipminus,500)</skipminus>

            <display>Notification(Test/remote,display,500)</display>
            <start>Notification(Test/remote,start,500)</start>
            <record>Notification(Test/remote,record,500)</record>
            <eject>Notification(Test/remote,eject,500)</eject>
            <volumeplus>Notification(Test/remote,volumeplus,500)</volumeplus>
            <volumeminus>Notification(Test/remote,volumeminus,500)</volumeminus>
            <mute>Notification(Test/remote,mute,500)</mute>
            <power>Notification(Test/remote,power,500)</power>

            <myvideo>Notification(Test/remote,myvideo,500)</myvideo>
            <mymusic>Notification(Test/remote,mymusic,500)</mymusic>
            <mypictures>Notification(Test/remote,mypictures,500)</mypictures>
            <mytv>Notification(Test/remote,mytv,500)</mytv>

            <guide>Notification(Test/remote,guide,500)</guide>
            <livetv>Notification(Test/remote,livetv,500)</livetv>
            <liveradio>Notification(Test/remote,liveradio,500)</liveradio>
            <recordedtv>Notification(Test/remote,recordedtv,500)</recordedtv>
            <epgsearch>Notification(Test/remote,epgsearch,500)</epgsearch>

            <red>Notification(Test/remote,red,500)</red>
            <green>Notification(Test/remote,green,500)</green>
            <yellow>Notification(Test/remote,yellow,500)</yellow>
            <blue>Notification(Test/remote,blue,500)</blue>

            <zero>Notification(Test/remote,zero,500)</zero>
            <one>Notification(Test/remote,one,500)</one>
            <two>Notification(Test/remote,two,500)</two>
            <three>Notification(Test/remote,three,500)</three>
            <four>Notification(Test/remote,four,500)</four>
            <five>Notification(Test/remote,five,500)</five>
            <six>Notification(Test/remote,six,500)</six>
            <seven>Notification(Test/remote,seven,500)</seven>
            <eight>Notification(Test/remote,eight,500)</eight>
            <nine>Notification(Test/remote,nine,500)</nine>
            
            <print>Notification(Test/remote,print,500)</print>

            <clear>Notification(Test/remote,clear,500)</clear>
            <star>Notification(Test/remote,star,500)</star>
            <hash>Notification(Test/remote,hash,500)</hash>
        </remote>
    </window1199>
</keymap>
V mapování jsou vidět i mé poslední pokusy při řešení jednoho konkrétního porblému, ty jsem zakomentoval.

Ke stažení je soubor zde:

.xml   99_keymap.xml (Velikost: 17,47 KB / Stažení: 14)

Nyní mám ještě v plánu vyrobit jednoduchý addon, který by mi vypisoval action Id a button code stisknutých tlačítek. Bude to celkem triviální funkce, ale umožní mi se obejít bez Keymap Editoru. Funkčně je to celkem jednoduchá úloha, ale já chci vymyslet nějaké smysluplné ovládání a pak i nějaký způsob, jak výstup z addon použít pro další práci s mapováním.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
@JiRo: Diky, ja som sa tiez este nedostal k tomu, aby som vyskusal tvoje prve alebo toto druhe odporucanie, tak to este upresnim: V tomto pripade, o ktorom sa bavime mam Kodi priamo v Android TV (v blizkej dobe planujem kupit box), takze sa nejedna o HDMI-CEC, proste Kodi je priamo v TV a ovladam ho cez original ovladac dodany k TV.
Inak nie som si isty, ale predpokladam, ze pod DO je myslene dialkove ovladanie, je to tak?
 
Citovat
@streamex Ano, DO je dálkové ovládání. 4 Android TV? Tak pak jsou asi jasné ty id. Já bohuže Android TV žádnou nemám k dispozici, takže to nemohu vyzkoušet. Zkusím ještě něco pohledat, co se tohoto tématu v Android TV týká.

Víte že... Lze jednoduše poznat zda DO je typu keyboard nebo remote?

Dá se to zjistit celke snadno. Stačí nějaký seznam položek v Kodi. Například hlavní menu. Pak stačí stisknou klávesu s kurzorovou šipku a držet ji. Seznam začne rolovat a
  • pokud je DO typu keyboard, tak se po dojetí na konec nebo začátek seznamu posun v něm zastaví. Chcete-li pokračovat stačí klávesu pustit a znova stisknout (a držet),
  • pokud je DO typu remote, tak se rolování menu po dojetí na konec nebo začátek neustále opakuje dokola do té doby, dokud klávesu držíte stisknutou.
Neplatí to v případě zobrazení EPG, ale to je proto, že toto zobrazení není klasický seznam položek. Je konstruován jinak. Tam zobrazení rotuje dokolečka bez ohledu na to, zda je DO remote nebo keyboard.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
"Levná" a rychlá funkce "Comskip".

Jedním z důvodů, proč stále ještě používám Tvheadend je možnost jednoduchého nahrávání více programů a hlavně to, že pak při přehrávání nahraných pořadů mohu bez potíží přeskakovat reklamy. A to je, v současné době, kdy reklamní bloky některých pořadů dosahují až 9 minut, docela zajímavý bonus.

Pravdou bohužel je, že i vlastní přeskakování reklam je někdy pěkný "opruz". Funkce pro posouvání přehrávaného videa jsou v Kodi docela vychytané, ale i tak to docela otravuje. Laborování s tradičním Comskip v Tvheadend také zatím nepřineslo kýžené výsledky, a tak jsme přemýšlel, jak to (byť dočasně a provizorně) vyřešit. Nakonec jsme zvolil to nejjednodušší a, jak píši v nadpisu, levné a rychlé řešení (levné myslím to, že jsem do něj nemusel investovat příliš úsilí).

Obětoval jsem mu funkci zadání času, na který v přehrávaném videu chci skočit, protože jsme si uvědomil, že ji stejně nepoužívám. Na číselné klávesy [1..9] dálkového ovladače jsem pak namapoval skoky o počet minut odpovídající danému číslu klávesy.
Kód:
keymap>
    <FullscreenVideo>
        <keyboard>
            <one>Seek(60)</one>
            <two>Seek(120)</two>
            <three>Seek(180)</three>
            <four>Seek(240)</four>
            <five>Seek(300)</five>
            <six>Seek(360)</six>
            <seven>Seek(420)</seven>
            <eight>Seek(640)</eight>
            <nine>Seek(540)</nine>
            <zero></zero>
        </keyboard>
    </FullscreenVideo>
</keymap>

Většinou je to tak, že délka reklamních bloků je +/- stejná pro daný kanál či skupinu kanálů. U Novy je to cca 6 minut, u Primy nyní až 8-9 minut. Tohle musím mít samozřejmě v hlavě a vybrat vždy to správné tlačítko. Nicméně po několika měsících co jsem mapování vyrobil, se s tím rodina naučila docela pracovat a používají to.

Ještě mě napadlo napsat jednoduchý script, který by si zjistil, z jakého kanálu byla nahrávka pořízena (tedy pokud to půjde) a podle toho nastavil počet přeskočených minut (součástí scriptu by byla tabulka kanálů a pro každý kanály by v ní byl předdefinovaný počet minut). Volání tohoto scriptu bych si pak namapoval na tlačítko 0. Ale k tomu jsem se zatím ještě nedostal. Až se tak stane a bude to fungovat, popíši to tu také...
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
    První verze scriptu Comskip...

Prozatím tedy jen pracovní verze pro ověření principu funkce.
Kód:
import xbmc, xbmcgui, xbmcaddon, xbmcvfs
import os

__addon__           = xbmcaddon.Addon()
__addon_id__        = __addon__.getAddonInfo('id')
__addon_name__      = __addon__.getAddonInfo('name')
__addon_lang__      = __addon__.getLocalizedString
__addon_version__   = __addon__.getAddonInfo('version')

__addon_path__      = xbmcvfs.translatePath(__addon__.getAddonInfo('path'))
__addon_profile__   = xbmcvfs.translatePath(__addon__.getAddonInfo('profile'))

_icon_ = xbmcvfs.translatePath(os.path.join(__addon_path__ + '/resources', 'icon.png' ))

def log(msg, level=xbmc.LOGDEBUG):
    if type(msg).__name__=='unicode':
        msg = msg.encode('utf-8')
    xbmc.log("[%s] %s" % (__addon_name__,msg.__str__()), level)

def logNot(msg):
    log(msg,level=xbmc.LOGINFO)

def logWrn(msg):
    log(msg,level=xbmc.LOGWARNING)

def logDbg(msg):
    log(msg,level=xbmc.LOGDEBUG)

def logErr(msg):
    log(msg,level=xbmc.LOGFATAL)
    
skipDef = {
'Nova' : '360',
'Nova Action' : '360',
'Nova Cinema' : '360',
'Nova Fun' : '360',
'Nova Gold' : '360',
'Nova Lady' : '360',
'Prima' : '480',
'Prima COOL' : '480',
'Prima KRIMI' : '480',
'Prima Love' : '480',
'Prima MAX' : '480',
'Prima ZOOM' : '480',
'Prima Show' : '480',
'Prima Star' : '480',
'Paramount Network' : '480'
}
    
if (__name__ == "__main__"):
    logNot('Start')
    channelName = xbmc.getInfoLabel('VideoPlayer.ChannelName')
    logDbg('channelName: %s' % channelName)
    try:
        seekTime = skipDef[channelName]
    except:
        logNot('Skip time for channelName %s isn\'t defined' % channelName)
    else:
        xbmc.executebuiltin('Seek(%s)' % seekTime)
    logNot('Finish')
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
Off topic @JiRo: Vcera som ti odpisal na PM
 
Citovat
@JiRo: Mas PM s udajmi
 
Citovat
Efektivnější pohyb v Guide

Od verze 19 Kodi bylo okno TV a RadioGuide doplněno o možnost rychlejšího pohybu po zobrazeném EPG. Funkce se standardně aktivuje prostřednictvím ContextMenu, položky Přejdi...
   
a vypadá následovně (zobrazuje se dialogové okno pvrguidecontrols definované ve skinu v DialogPVRGuideControls.xml:
   
Volba zobrazení přes ContextMenu je ale otravná a tak trochu celý efekt "rychlého pohybu" degraduje. Najdete-li ale ve svém mapování "volnou díru", kterou budete moci využít, je možné zobrazení výše uvedeného okna provést jednodušeji a rychleji. Já pro to používám dlouhý stisk tlačítka OK (Enter/Return). Na něj je v Kodi standardně mapováno (shodou okolností) právě  zobrazení ContextMenu, ale pro ten já mám na DO vlastní tlačítko, takže se tohoto default mapování mohu vzdát a využít ho (v obou oknech Guide) právě pro zobrazení dialogového okna pvrguidecontrols. Do mapování jsem, kromě zobrazení okna pvrguidecontrols doplnil i jeho uzavření, které je mapováno opět na dlouhý stisk OK. Okno se dá samozřejmě také zavřít pomocí tlačítka Back (zpět, backspace, ...).

Všechna uvedená mapování mám definované ve zvláštním souboru, jehož obsah je tento:
 
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <TVGuide>
    <keyboard>
      <return mod="longpress">ActivateWindow(pvrguidecontrols)</return>
      <enter mod="longpress">ActivateWindow(pvrguidecontrols)</enter>
    </keyboard>
  </TVGuide>
  <RadioGuide>
    <keyboard>
      <return mod="longpress">ActivateWindow(pvrguidecontrols)</return>
      <enter mod="longpress">ActivateWindow(pvrguidecontrols)</enter>
    </keyboard>
  </RadioGuide>
  <pvrguidecontrols>
    <keyboard>
      <return mod="longpress">back</return>
      <enter mod="longpress">back</enter>
    </keyboard>
  </pvrguidecontrols>
</keymap>
Zatímco dříve u nás doma i u mých známých okno pvrguidecontrols skoro nikdo nevyužíval (BFU vůbec, a já vlastně také moc ne), od doby doplnění uvedeného mapování je využíváno velmi často.

Pro hračičky mám ještě jeden tip. Je možné mapovat samostatně i jednotlivé funkce (pokud tedy pro ně najdete "volná tlačítka"), které nabízí okno pvrguidecontrols. Pro ty, kteří si to chtějí vyzkoušet doporučím podívat se na obsah definice tohoto okna, tedy na soubor DialogPVRGuideControls.xml. Tam najdou v tagu <onclick></onclick> definované všechny potřebné funkce (PVR.EpgGridControl(FirstProgramme), PVR.EpgGridControl(CurrentProgramme), ...). Myslím, že je to poměrně "samo ilustrativní".

A nakonec této session ještě jeden tip na mapování související s PVR. Týká se okna TV a RadioChannel. V nich je možné použít rychlou volbu zobrazení a volby ze seznamu skupin kanálů. S výhodou je pro to možné použít opět dlouhý stisk OK (Enter/Return).
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <TVChannels>
    <keyboard>
      <return mod="longpress">SendClick(28)</return>
      <enter mod="longpress">SendClick(28)</enter>
    </keyboard>
  </TVChannels>
  <RadioChannels>
    <keyboard>
      <return mod="longpress">SendClick(28)</return>
      <enter mod="longpress">SendClick(28)</enter>
    </keyboard>
  </RadioChannels>
</keymap>
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
Oblíbené

přiznám se, že funkci Oblíbené používám nejčastěji jen jedním, a to specifickým způsobem. To když si chci odchytit adresu nějakého vstupního bodu v nějakém seznamu Kodi a pak ho použít např. ve skinu, jiném addon apod.

Jak se ale ukazuje, jiní uživatelé to vidí jinak, a u nich je použití této funkce poměrně časté. Však také, ale jen na některých isntalacích, jsou i u nás Oblíbené sdílené (typicky obývák, ložnice, kuchyně). A tak mě ani moc nepřekvapilo, když se objevil názor, že když už je možné mít jednoduchý a rychlý spol.ečným přístup ke sdíleným Oblíbeným z různých Kodi, bylo by dobré mít možnost se v každém Kodi do Oblíbených dostat odkudkoliv, bez nutnosti se vždy vrátit na Home stránku a tam si na položku oblíbených v menu "dojet".

U nás doma jsem pro přechod na Oblíbené použil jednu z posledních volných voleb na DO, dlouhý stisk tlačítka PLAY:
 
Kód:
<play_pause mod="longpress">ActivateWindow(favourites)</play_pause>

Volba otevře dialogové okno, takže neporuší kontext toho, co jsme prováděli před tím a po výběru a skončení přehrávání se do něj i vrátíme.
   
Tato možnost mi zároveň ulehčila rozhodování, zda přijmout nové řešení zobrazení Oblíbených v Estuary Kodi 20. Původně jsem se chtěl vrátit právě k dialogovému oknu z předchozích verzí, ale takhle jsme nový způsob ve svém modifikaci skinu ponechal. Uživatel tak má dvě možnosti. Buď použít volbu přes Home stránku a jeho menu, kde má jak widgety, tak zcela standardní okno s možností dalších voleb - typu zobrazení, řazení položek, filtr, ... Nebo použije rychlou volbu přes tlačítko DO a tam se mu zobrazí původní dialogové okno.

Jsem překvapen, jak dobře uživetelé tuto možnost rychlé volby přivítali. Je to asi tím že oni, na rozdíl ode mne, Oblíbené používají skutečně hodně často.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
Další kroky v mapování PVR funkcí

Mapování uvedené v jednom z předchozích příspěvků, Efektivnější pohyb v Guide, jsem poněkud rozšířil, abych tím zjednodušil ovládání přímo z dálkového ovaladače. Týká se to hlavně návratů z okna PVRGuideControls, které uživatele dost otravovalo, protože na zavření okna zapomínali.

Abych měl kompletní obsluhu PVR pohromadě, vyjmul jsem všechny definice z jiných souborů a umístil je jednoho souboru. Ten pak vypadá následovně:
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<keymap>
    <TVChannels>
        <keyboard>
            <return mod="longpress">SendClick(28)</return>
            <enter mod="longpress">SendClick(28)</enter>
            <next_track mod="longpress">NextChannelGroup</next_track>
            <prev_track mod="longpress">PreviousChannelGroup</prev_track>
        </keyboard>
    </TVChannels>
    <TVGuide>
        <keyboard>
            <return mod="longpress">ActivateWindow(pvrguidecontrols)</return>
            <enter mod="longpress">ActivateWindow(pvrguidecontrols)</enter>
            <e>ActivateWindow(RadioGuide,return)</e>
            <epg>ActivateWindow(RadioGuide,return)</epg>
            <next_track mod="longpress">NextChannelGroup</next_track>
            <prev_track mod="longpress">PreviousChannelGroup</prev_track>
        </keyboard>
    </TVGuide>
    <RadioChannels>
        <keyboard>
            <return mod="longpress">SendClick(28)</return>
            <enter mod="longpress">SendClick(28)</enter>
            <next_track mod="longpress">NextChannelGroup</next_track>
            <prev_track mod="longpress">PreviousChannelGroup</prev_track>
        </keyboard>
    </RadioChannels>
    <RadioGuide>
        <keyboard>
            <return mod="longpress">ActivateWindow(pvrguidecontrols)</return>
            <enter mod="longpress">ActivateWindow(pvrguidecontrols)</enter>
            <e>ActivateWindow(TVGuide,return)</e>
            <epg>ActivateWindow(TVGuide,return)</epg>
            <next_track mod="longpress">NextChannelGroup</next_track>
            <prev_track mod="longpress">PreviousChannelGroup</prev_track>
        </keyboard>
    </RadioGuide>
    <PVRGuideControls>
        <keyboard>
            <up>back</up>
            <down>back</down>
            <pageup>back</pageup>
            <pagedown>back</pagedown>
            <c>back</c>
            <c mod="longpress">back</c>
            <return mod="longpress">PVR.EpgGridControl(SelectGroup)</return>
            <enter mod="longpress">PVR.EpgGridControl(SelectGroup)</enter>
        </keyboard>
    </PVRGuideControls>
</keymap>
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
Předání povelu dálkového ovládání operačnímu systému - z Kodi pomocí Keymap souboru gen.xml voláním scriptu.
Rozhodl jsem se vytvořit samostatné téma Spuštění vypínacího scriptu místo Shutdown v Kodi

Případné následující připomínky zde k tomu uvedené @JiRo: se tedy vztahují na nové téma.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
@meda: Tak popis obsáhlý, ale mapování tlačítek se týká jen okrajově. Nehledě na to, že výchozí premisa, proč jsi se do toho pustil, se nejspíše zakládá na špatném pochopení významu built-in příkazu Kodi Shutdown. Tyto příkazy ti přeci poskytnout všechny obvyklé možnosti, tedy i včetně toho, co ty řešíš složitě, jinak ale dobře popsaným postupem.

Můžeš se podívat List of built-in functions, konkrétně sekci System built-in's, tam je to popsané poměrně detailně.

A tak se na závěr jen zmíním o tom příkazu Shutdown o kterém píšeš, že končí na tvém PC jako Suspend. Tento příkaz končí tak, jak je nastaveno v Kodi, v Nastavení > System > Úspora energie > Funkce vypínání. Vybrat si tam můžeš z příkazů, které má daný typ instalace Kodi k dispozici. Asi nejrošířenější množinu jich má Windows instalace, kde si můžeš vybrat z množiny Vypnout, Hibernovat, Uspat, Ukončit a Minimalizovat. Jiné typy instalcí tam těch možností mají méně. Je to v relaci s hodnotou logických parametrů System.CanPowerDown, System.CanHibernate, System.CanSuspend. Mimochodem, u Linux based systémů je hodnota Funkce vypínání defaultně nastavena na Uspat, což je zřejmě i tvůj případ.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
@JiRo: Ano. A to script řeší a využije mapování tlačítek DO. Nevím, jak odpovědě, než Bez komentáře.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
@meda: No, a když si hodnotu Funkce vypínání nastavíš na Vypnout?

Jinak ale, tenhle postup je určitě správný. Já mám takhle řešený např. restart Kodi u systémů, které ho nativně nepodporují a nebo jsem ho používal pro ovládání ZAP/VYP TV přes HDMI ze systému u Kodi (protože CEC built-in povely Kodi to nešlo), které běželo 24/7 a DO místo boxu jen vypínalo a zapínalo Kodi aplikaci a TV.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
@JiRo: Zkouška řešení byla reakcí na téma od @gusto1:
https://www.xbmc-kodi.cz/prispevek-dekod...#pid137066
takže jeho nastavení v Kodi jsou tam také uvedena. Teď musí bádat on.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
@meda: Já tomu všem rozumím. Už jsem Tvůj záměr, týkající se porblémů @gusto1: s YT, pochopil, I když bych raději, aby se řešila příčina, ne následky. Ale budiž, to je jen věc názoru. Ale co mi skutečně vadí, že v případě, když se uživateli stane to, co tobě, tedy že:
Citace:Proč nejde využít nabízený příkaz z menu Keymap editoru Shutdown. (Další jsou Hibernate, Suspend, Restart Kodi, Quit Kodi, ...)
Protože zkouška příkazu Shutdown končí na mém PC jako Suspend. LED Power na PC rychle bliká, takže pohotovostní stav, ze kterého lze PC probudit.
že dostane návod jak to, poměrně složitě, vyřešit. Nic proti tomu, návod je to užitečný, ale komu je určený? Někomu, kdo neví, že v takovém případě, když se po stisku tlačítka POWER na dálkovém ovladači jeho BOX/PC pouze uspí, místo toho, aby se vypnulo, stačí jen v nastavení Kodi změnit na stránce Nastavení > System > Úspora energie > Funkce vypínání hodnotu z Uspat na Vypnout. Tohle by měl udělat v prvním případě. A a no, jestli se ani potom BOX/PC nezačne po stisku POWER tlačítka vypínat (což se mi ale ještě na žádném systému nestalo), tak je čas na Tebou popsané řešení.

Já si myslím, že zásadou by mělo být nabídnou nejdříve to nativní řešení, v duchu možností funkcí Kodi a jejich nastavení, a teprve, když ta k dispozici nejsou nebo nefungují, či nefungují tak, jak si uživatel představuje, tak přichází čas na nějaká ta udělátka. Když nic jiného, tak bys v tom tvém popisu, který jsem tu výše citoval, měl zmínit.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
@JiRo: Podle odkazu uvedeném v mém #115 jsem ukázal na příspěvek, kde @gusto1: uveřejnil screenshot, kde natívní řešení používá, ale neuspěšně.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
@meda: Ale v tom spor není, u @gusta1: je tohle řešení v pořádku. Ale v jeho případě to nefunguje proto, že mu to Kodi padá, tudíž to mapování Kodi v keymap už nemá šanci se uplatnit a v tom okamžiku interpretuje stisk POWER tlačítka systém a ten to má evidentně nastavené na uspání.

Já ale reaguji na tvou vlastní zkušenost (citovat už to nebudu) kterou popisuješ. Pro vypnutí boxu tlačítkem POWER z Kodi nemusíš používat ten externí script, ale mělo by ti stačit:
  • buď změnit to nastavení v System (z tvého popisu alespoň nevyplynulo, že bys tu změnu v nastavení zkusil provést),
  • nebo místo povelu Shutdown použít povel Powerdown.
Obě varianty jsou v konečném důsledku totožné, protože obě nakonec vedou k tomu, že se systém vypne.

Já se prostě jen snažím vžít se do role nováčka, který si pořídí box, horkotěžko nainstaluej CoreELEC, nastaví nějak DO, všechno to rozchodí, ale při stisku POWER tlačítka na DO se mu místo vypnutí box jenom uspí. Začne hledat a najde tvůj návod, který ho pochopitelně vyděsí, protože z něj získá dojem, že bez toho externího scriptu DO tlačítkem POWER jednoduše box nevypne.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
@JiRo: Pak tu probíráme něco, co ani jeden z nás nepotřebuje opravit. Já se snažil simulovat jednu z možností vypnutí pro @.gusto1.
Sám používám DO s instalací generic x86 LibreElec a tam všechny potřebné povely fungují dobře.
Dávám ti za pravdu, že na PC @.gusto1 je to chybové chování a to se snažme řešit v jeho tématu.

Teď jsme tu tvé téma zaplnili OT. Možná bysme měli vše vyprázdnit a nechat jen text "offtopic"
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
@meda: Jen o tu nech. To do mapování také patří. Jde o to, aby si lidé uvědomili, že je důležité nejen to, jak (ne)mapovat, ale také, co (ne)mapovat a v neposlední řadě i proč (ne)mapovat.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)